// synthesis SinOsc foo => dac; // variables for interp float prevFreq; float currFreq; // time between new events/notes 500::ms => dur DURATION; // number of steps for interp (try playing with this) 60 => int numSteps; // main loop while( true ) { // remember the previous currFreq => prevFreq; // generate and set current freq Math.random2( 12, 56 )*2 => Std.mtof => currFreq; // difference between two endpoints currFreq - prevFreq => float diff; // duration between interp steps DURATION / numSteps => dur RATE; // the amount to increment diff / numSteps => float increment; // set the starting point prevFreq => float theFreq; // assert the freq in steps for( int i; i < numSteps; i++ ) { // compute the next intermediate freq theFreq + increment*i => foo.freq; // time step RATE => now; } }