Minim core | ugens | analysis |
Delay Fields audio delAmp delTime Methods channelCount ( ) getLastValues ( ) patch ( ) printInputs ( ) sampleRate ( ) setChannelCount ( ) setDelAmp ( ) setDelTime ( ) setSampleRate ( ) tick ( ) unpatch ( ) | The Delay UGen is used to create delayed repetitions of the input audio. One can control the delay time and amplification of the repetition. One can also choose whether the repetition is fed back and/or the input is passed through. Constructors
    Constructs a Delay. Maximum delay time will be 0.25 seconds,
     amplitude will be 0.5, and feedback will be off.
    Delay()
    Constructs a Delay. Amplitude will be 0.5 and feedback will be off.
    Delay(float maxDelayTime)
    Constructs a Delay. Feedback will be off.
    Delay(float maxDelayTime, float amplitudeFactor)
    Constructs a Delay.
    Delay(float maxDelayTime, float amplitudeFactor, boolean feedBackOn)
    Delay(float maxDelayTime, float amplitudeFactor, boolean feedBackOn, boolean passAudioOn)
Parameters maxDelayTime — float: is the maximum delay time for any one echo and the default echo time. amplitudeFactor — float: is the amplification factor for feedback and should generally be from 0 to 1. feedBackOn — float: is a boolean flag specifying if the repetition continue to feed back. passAudioOn — float: is a boolean value specifying whether to pass the input audio to the output as well. Related Example
    /* delayExample<br/>
     * is an example of using the Delay UGen in a continuous sound example.
     * <p>
     * For more information about Minim and additional features,
     * visit http://code.compartmental.net/minim/
     * <p>
     * author: Anderson Mills<br/>
     * Anderson Mills's work was supported by numediart (www.numediart.org)
     */

    // 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;
    Delay myDelay;

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

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

      // initialize myDelay with continual feedback and audio passthrough
      myDelay = new Delay( 0.4, 0.5, true, true );

      // sawh will create a Sawtooth wave with the requested number of harmonics.
      // like with Waves.randomNHarms for sine waves,
      // you can create a richer sounding sawtooth this way.
      Waveform saw = Waves.sawh( 15 );
      // create the Blip that will be used
      Oscil myBlip = new Oscil( 245.0, 0.3, saw );

      // Waves.square will create a square wave with an uneven duty-cycle,
      // also known as a pulse wave. a square wave has only two values,
      // either -1 or 1 and the duty cycle indicates how much of the wave
      // should -1 and how much 1. in this case, we are asking for a square
      // wave that is -1 90% of the time, and 1 10% of the time.
      Waveform square = Waves.square( 0.9 );
      // create an LFO to be used for an amplitude envelope
      Oscil myLFO = new Oscil( 1, 0.3, square );
      // offset the center value of the LFO so that it outputs 0
      // for the long portion of the duty cycle
      myLFO.offset.setLastValue( 0.3 );

      myLFO.patch( myBlip.amplitude );

      // and the Blip is patched through the delay into the output
      myBlip.patch( myDelay ).patch( out );
    }

    // draw is run many times
    void draw()
    {
      // erase the window to dark grey
      background( 64 );
      // draw using a light gray stroke
      stroke( 192 );
      // 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( "Delay time is " + myDelay.delTime.getLastValue(), 5, 15 );
      text( "Delay amplitude (feedback) is " + myDelay.delAmp.getLastValue(), 5, 30 );
    }

    // when the mouse is moved, change the delay parameters
    void mouseMoved()
    {
      // set the delay time by the horizontal location
      float delayTime = map( mouseX, 0, width, 0.0001, 0.5 );
      myDelay.setDelTime( delayTime );
      // set the feedback factor by the vertical location
      float feedbackFactor = map( mouseY, 0, height, 0.99, 0.0 );
      myDelay.setDelAmp( feedbackFactor );
    }
Usage Web & Application