Minim core | ugens | analysis |
Oscil frequency | Description Patch to this to control the frequency of the oscillator with another UGen. Signature
    UGen.UGenInput frequency
Related Oscil Example
    /* frequencyModulation
       <p>
       A simple example for doing FM (frequency modulation) using two Oscils.
       <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;

    // the Oscil we use for modulating frequency.
    Oscil fm;

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

      // initialize the minim and out objects
      minim = new Minim( this );
      out   = minim.getLineOut();

      // make the Oscil we will hear.
      // arguments are frequency, amplitude, and waveform
      Oscil wave = new Oscil( 200, 0.8, Waves.TRIANGLE );
      // make the Oscil we will use to modulate the frequency of wave.
      // the frequency of this Oscil will determine how quickly the
      // frequency of wave changes and the amplitude determines how much.
      // since we are using the output of fm directly to set the frequency
      // of wave, you can think of the amplitude as being expressed in Hz.
      fm   = new Oscil( 10, 2, Waves.SINE );
      // set the offset of fm so that it generates values centered around 200 Hz
      fm.offset.setLastValue( 200 );
      // patch it to the frequency of wave so it controls it
      fm.patch( wave.frequency );
      // and patch wave to the output
      wave.patch( out );
    }

    // 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( "Modulation frequency: " + fm.frequency.getLastValue(), 5, 15 );
      text( "Modulation amplitude: " + fm.amplitude.getLastValue(), 5, 30 );
    }

    // we can change the parameters of the frequency modulation Oscil
    // in real-time using the mouse.
    void mouseMoved()
    {
      float modulateAmount = map( mouseY, 0, height, 220, 1 );
      float modulateFrequency = map( mouseX, 0, width, 0.1, 100 );

      fm.setFrequency( modulateFrequency );
      fm.setAmplitude( modulateAmount );
    }
Usage Web & Application