MidiIn min; MidiMsg msg; min.open(0); 10 => float procSecs; 120::second => dur masterDur; float probVal; dur procDur; fun void fm1() { sinosc c => pan2 p => dac; //carrier sqrosc m => blackhole; sawosc op3 => blackhole; //modulator triosc pMod => blackhole; //panmod 0.1 => c.gain; 82.2 => float cf; 7 => float mf => m.freq; 1 => float iBase; //base mod index 100 => float iMul; //base mod multiplier float index; 1 => float panI; //pan intensity 2 => pMod.freq; std.rand2f(0.01, 0.02) => op3.freq; now + procDur => time procLater; while( now < procLater ) { (1.-((op3.last()/2) + 0.5)) * iMul + iBase => index; //mod index cf + (index * mf * m.last()) => c.freq; //mod carrier pMod.last() * panI => p.pan; 2::ms => now; } } //(procSecs / 10)::second => procDur; now + masterDur => time masterLater; while (now < masterLater) { while( min.recv( msg )) //format prob, proc dur floats { if ( msg.data2 == 27 ) msg.data3 / 128.0 => probVal; if ( msg.data2 == 26 ) ((msg.data3 / 128.0)*procSecs)::second => procDur; } if (std.rand2f(0.0,1.0) < probVal) //trigger shred spork ~ fm1();// @=> Shred @ f; (150.0)::ms => now; }