// time 800::ms => dur T; T - (now % T) => now; // patch SqrOsc s => LPF f => ADSR e => JCRev r => dac; // set envelope e.set( 5::ms, 10::ms, .1, 5::ms ); .02 => r.mix; // infinite time loop int p; while( true ) { // play trigger( Std.rand2(3, 15)*12 => p, .2, 50::ms ); p * 50.0 => f.freq; 1 + 20.0/p => f.Q; // wait 50::ms => now; } fun void trigger( float pitch, float vel, dur T ) { // trigger pitch => Std.mtof => s.freq; vel => s.gain; // open e.keyOn(); // wait T - e.releaseTime() => now; // close e.keyOff(); // wait e.releaseTime() => now; }