Minim |
|
SAW |
Description A perfect sawtooth wave.Signature Wavetable SAW Related WavesWavetable Waveform Example /** * This sketch demonstrates how to create synthesized sound with Minim * using an AudioOutput and an Oscil. An Oscil is a UGen object, * one of many different types included with Minim. By using * the numbers 1 thru 5, you can change the waveform being used * by the Oscil to make sound. These basic waveforms are the * basis of much audio synthesis. * * For many more examples of UGens included with Minim, * have a look in the Synthesis folder of the Minim examples. * <p> * For more information about Minim and additional features, * visit http://code.compartmental.net/minim/ */ import ddf.minim.*; import ddf.minim.ugens.*; Minim minim; AudioOutput out; Oscil wave; void setup() { size(512, 200, P3D); minim = new Minim(this); // use the getLineOut method of the Minim object to get an AudioOutput object out = minim.getLineOut(); // create a sine wave Oscil, set to 440 Hz, at 0.5 amplitude wave = new Oscil( 440, 0.5f, Waves.SINE ); // patch the Oscil to the output wave.patch( out ); } void draw() { background(0); stroke(255); strokeWeight(1); // draw the waveform of the output for(int i = 0; i < out.bufferSize() - 1; i++) { line( i, 50 - out.left.get(i)*50, i+1, 50 - out.left.get(i+1)*50 ); line( i, 150 - out.right.get(i)*50, i+1, 150 - out.right.get(i+1)*50 ); } // draw the waveform we are using in the oscillator stroke( 128, 0, 0 ); strokeWeight(4); for( int i = 0; i < width-1; ++i ) { point( i, height/2 - (height*0.49) * wave.getWaveform().value( (float)i / width ) ); } } void mouseMoved() { // usually when setting the amplitude and frequency of an Oscil // you will want to patch something to the amplitude and frequency inputs // but this is a quick and easy way to turn the screen into // an x-y control for them. float amp = map( mouseY, 0, height, 1, 0 ); wave.setAmplitude( amp ); float freq = map( mouseX, 0, width, 110, 880 ); wave.setFrequency( freq ); } void keyPressed() { switch( key ) { case '1': wave.setWaveform( Waves.SINE ); break; case '2': wave.setWaveform( Waves.TRIANGLE ); break; case '3': wave.setWaveform( Waves.SAW ); break; case '4': wave.setWaveform( Waves.SQUARE ); break; case '5': wave.setWaveform( Waves.QUARTERPULSE ); break; default: break; } } Usage Web & Application |