Minim core | ugens | analysis |
Instrument noteOn | Description Start playing a note. This is called by AudioOutput when this Instrument's note should begin, based on the values passed to playNote. Typically you will patch your UGen chain to your AudioOutput here. Signature
    void noteOn(float duration)
Parameters duration — float: how long the note will last (i.e. noteOff will be called after this many seconds) Returns None Related Instrument noteOff ( ) Example
    /**
      * This sketch demonstrates how to create synthesized sound with Minim using an AudioOutput and
      * an Instrument we define. By using the playNote method you can schedule notes to played
      * at some point in the future, essentially allowing to you create musical scores with code.
      * Because they are constructed with code, they can be either deterministic or different every time.
      * This sketch creates a deterministic score, meaning it is the same every time you run the sketch.
      * <p>
      * For more complex examples of using playNote check out algorithmicCompExample and compositionExample
      * in the Synthesis folder.
      * <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;

    // to make an Instrument we must define a class
    // that implements the Instrument interface.
    class SineInstrument implements Instrument
    {
      Oscil wave;
      Line  ampEnv;

      SineInstrument( float frequency )
      {
        // make a sine wave oscillator
        // the amplitude is zero because
        // we are going to patch a Line to it anyway
        wave   = new Oscil( frequency, 0, Waves.SINE );
        ampEnv = new Line();
        ampEnv.patch( wave.amplitude );
      }

      // this is called by the sequencer when this instrument
      // should start making sound. the duration is expressed in seconds.
      void noteOn( float duration )
      {
        // start the amplitude envelope
        ampEnv.activate( duration, 0.5f, 0 );
        // attach the oscil to the output so it makes sound
        wave.patch( out );
      }

      // this is called by the sequencer when the instrument should
      // stop making sound
      void noteOff()
      {
        wave.unpatch( out );
      }
    }

    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();

      // when providing an Instrument, we always specify start time and duration
      out.playNote( 0.0, 0.9, new SineInstrument( 97.99 ) );
      out.playNote( 1.0, 0.9, new SineInstrument( 123.47 ) );

      // we can use the Frequency class to create frequencies from pitch names
      out.playNote( 2.0, 2.9, new SineInstrument( Frequency.ofPitch( "C3" ).asHz() ) );
      out.playNote( 3.0, 1.9, new SineInstrument( Frequency.ofPitch( "E3" ).asHz() ) );
      out.playNote( 4.0, 0.9, new SineInstrument( Frequency.ofPitch( "G3" ).asHz() ) );
    }

    void draw()
    {
      background(0);
      stroke(255);

      // draw the waveforms
      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 );
      }
    }
Usage Web & Application