Minim |
|
MoogFilter Fields
audio Methods
channelCount ( ) |
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 filternormalizedResonance — 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 UGenExample /* 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 |