SawOsc saw1 => ADSR env => LPF lpf => NRev rev => Gain g1 => dac; SawOsc saw2 => env => lpf => rev => g1 => dac; SawOsc saw3 => env => lpf => rev => g1 => dac; TriOsc sin1 => lpf => g1 => dac; 0.01 => g1.gain; 0.1 => rev.mix; Std.mtof(48) => saw1.freq; Std.mtof(52) => saw2.freq; Std.mtof(55) => saw3.freq; Std.mtof(24) => sin1.freq; env.set(50::ms, 50::ms, 0.0, 2::second); 0.0 => float multiplier; while (true) { env.keyOn(); 1000 * multiplier => lpf.freq; 10::ms => now; 0.001 +=> multiplier; if (multiplier >= 1) break; } now + 2::second => time later; spork~ quite(); SinOsc sqr1 => ADSR env2 => Echo echo => NRev rev2 => LPF lpf2 => Gain g2 => dac; 0.01 => rev2.mix; 0.0 => echo.mix; 1000 => lpf2.freq; env2.set(0::ms, 50::ms, 0.0, 0::ms); TriOsc tri1 => ADSR env3 => HPF hpf => rev2 => Gain g3 => dac; 1500 => hpf.freq; Std.mtof(60) => tri1.freq; 0.2 => g3.gain; 1000::ms => dur envtimes; env3.set(0::ms, envtimes, 0.0, 0::ms); 3 => g2.gain; Std.mtof(60) => sqr1.freq; [ 1, 3, 5, 6, 8, 10, 12 ] @=> int notes[]; 1::second => dur timeinterval; 0 => int count; now => time l8r; while (true) { env2.keyOn(); env3.keyOn(); Std.mtof(notes[Math.random2(0, 6)] + 60) => sqr1.freq; timeinterval => now; if(timeinterval > 300::ms) { 25::ms -=> timeinterval; 25::ms -=> envtimes; env3.set(0::ms, envtimes, 0.0, 0::ms); } if(timeinterval > 100::ms) { 12.5::ms -=> timeinterval; 12.5::ms -=> envtimes; env3.set(0::ms, envtimes, 0.0, 0::ms); } else { if(count == 0){ spork~ rise(); now + 3200::ms => l8r; } 1 => count; if (now > l8r) break; } if(timeinterval < 500::ms) { 0.1 => echo.mix; } } env.set(0::ms, 2::second, 0.0, 2::second); 0.01 => g1.gain; spork~ quite(); 4::second => now; fun void rise() { Noise n => LPF lpf => Gain g4 => dac; 1200 => lpf.freq; 0 => g4.gain; 0.0 => float temp2; while (true) { 0.00007 +=> temp2; <<>>; temp2 => g4.gain; 2.5::ms => now; if(temp2 > 0.1) { 0.0 => g4.gain; break; } } 0.1 => temp2; while (true) { 0.005 -=> temp2; <<>>; temp2 => g4.gain; 2.5::ms => now; if(temp2 < 0.0) { 0.0 => g4.gain; break; } } } fun void quite() { 0.01 => float temp; while (true) { 0.00001 -=> temp; <<>>; temp => g1.gain; 2.5::ms => now; if(temp < 0) { 0.0 => g1.gain; break; } } 0.0 =>g1.gain; }