Minim core | ugens | analysis |
MoogFilter Fields audio frequency resonance type Methods channelCount ( ) getLastValues ( ) patch ( ) printInputs ( ) sampleRate ( ) setChannelCount ( ) setSampleRate ( ) tick ( ) unpatch ( ) | MoogFilter is a digital model of a Moog 24 dB/octave resonant VCF. It can be set to low pass, high pass, or band pass using the MoogFilter.Type enumeration. More generally, a filter is used to remove certain ranges of the audio spectrum from a sound. A low pass filter will allow frequencies below the cutoff frequency to be heard, a high pass filter allows frequencies above the cutoff frequency to be heard, a band pass filter will allow frequencies to either side of the center frequency to be heard. With MoogFilter, the cutoff frequency and the center frequency are set using the `frequency` input. Because this is a resonant filter, it means that frequencies close to the cutoff of center frequency will become slighly emphasized, depending on the value of the `resonance` input. The resonance of the filter has a range from 0 to 1, where as the resonance approaches 1 the filter will begin to "ring" at the cutoff frequency. Constructors
    Creates a low pass filter.
    MoogFilter(float frequencyInHz, float normalizedResonance)
    Creates a filter of the type specified.
    MoogFilter(float frequencyInHz, float normalizedResonance, MoogFilter.Type filterType)
Parameters frequencyInHz — float: the cutoff frequency for the filter normalizedResonance — float: the resonance of the filter [0,1] filterType — the type of the filter: MoogFilter.Type.HP (high pass), MoogFitler.Type.LP (low pass), or MoogFilter.Type.BP (band pass) Related UGen Example
    /* moogFilterExample<br/>
     * is an example of using a MoogFilter to filter white noise.<br/>
     * Use the mouse to control the cutoff frequency and resonance of the filter.<br/>
     * Press 1 to set it to low pass<br/>
     * Press 2 to set it to high pass<br/>
     * Press 3 to set it to band pass<br/>
     * <p>
     * For more information about Minim and additional features,
     * visit http://code.compartmental.net/minim/
     * <p>
     * author: Damien Di Fede
     */

    // import everything necessary to make sound.
    import ddf.minim.*;
    import ddf.minim.ugens.*;

    // create all of the variables that will need to be accessed in
    // more than one methods (setup(), draw(), stop()).
    Minim       minim;
    AudioOutput out;
    MoogFilter  moog;

    // setup is run once at the beginning
    void setup()
    {
    // initialize the drawing window
      size(300, 300);

      // initialize the minim and out objects
      minim   = new Minim(this);
      out     = minim.getLineOut();
      // construct a law pass MoogFilter with a
      // cutoff frequency of 1200 Hz and a resonance of 0.5
      moog    = new MoogFilter( 1200, 0.5 );

      // we will filter a white noise source,
      // which will allow us to hear the result of filtering
      Noise noize = new Noise( 0.5f );

      // send the noise through the filter
      noize.patch( moog ).patch( out );
    }

    // we'll control the frequency and resonance of the filter
    // using the position of the mouse, in typical x-y controller fashion
    void mouseMoved()
    {
      float freq = constrain( map( mouseX, 0, width, 200, 12000 ), 200, 12000 );
      float rez  = constrain( map( mouseY, height, 0, 0, 1 ), 0, 1 );

      moog.frequency.setLastValue( freq );
      moog.resonance.setLastValue( rez  );
    }

    void keyPressed()
    {
      if ( key == '1' ) moog.type = MoogFilter.Type.LP;
      if ( key == '2' ) moog.type = MoogFilter.Type.HP;
      if ( key == '3' ) moog.type = MoogFilter.Type.BP;
    }

    // draw is run many times
    void draw()
    {
      // erase the window to black
      background( 0 );
      // draw using a white stroke
      stroke( 255 );
      // draw the waveforms
      for( int i = 0; i < out.bufferSize() - 1; i++ )
      {
        // find the x position of each buffer value
        float x1  =  map( i, 0, out.bufferSize(), 0, width );
        float x2  =  map( i+1, 0, out.bufferSize(), 0, width );
        // draw a line from one buffer position to the next for both channels
        line( x1, 50 + out.left.get(i)*50, x2, 50 + out.left.get(i+1)*50);
        line( x1, 150 + out.right.get(i)*50, x2, 150 + out.right.get(i+1)*50);
      }

      text( "Filter type: " + moog.type, 10, 225 );
      text( "Filter cutoff: " + moog.frequency.getLastValue() + " Hz", 10, 245 );
      text( "Filter resonance: " + moog.resonance.getLastValue(), 10, 265 );
    }
Usage Web & Application