MidiIn min; MidiMsg msg; min.open(0); 10 => float procSecs; 120::second => dur masterDur; float probVal; dur procDur; fun void fm1() { sinosc c => BiQuad bi => pan2 p => dac; //carrier sqrosc m => blackhole; sawosc op3 => blackhole; //modulator 0.04 => c.gain; 40 => float cf; 80 => float mf => m.freq; 1 => float iBase; //base mod index 100 => float iMul; //base mod multiplier //200 => int harmMax; //max harmonics 5 => float index; 1.5 => float panI; //pan intensity 0.9999 => bi.prad; 5050 => bi.pfreq; 1 => bi.eqzs; std.rand2f(0.02, 0.04) => op3.freq; std.rand2f(-panI,panI) * 3. => p.pan; 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 10::ms => now; } } now + masterDur => time masterLater; while (now < masterLater) { while( min.recv( msg )) //format prob float { if ( msg.data2 == 21 ) msg.data3 / 128.0 => probVal; if ( msg.data2 == 20 ) ((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; }