( x = { arg gate=1; var sum, snd0, snd1, snd2, env, gen, faderosc, numosc; numosc = 10; env = Env.adsr(20, 0, 1, 30, 1, \sin); gen = EnvGen.kr(env, gate, doneAction:2); faderosc = SinOsc.ar(1/60).range(-1,2).min(1).max(0); snd0 = Array.fill(numosc, { var freq, local; freq = [100,150,300,400] * 0.5; local = Saw.ar(rrand(freq, freq * 1.03 ) * LFNoise1.kr(0.3).range(1, 1.03), -10.dbamp); local = Mix(local); }); snd0 = Splay.ar(snd0); snd0 = faderosc * snd0; snd0 = LPF.ar(snd0, LFNoise1.ar(0.06).exprange(300,10000)); snd0 = CombL.ar(snd0, 1, LFNoise1.ar(0.05).range([0.5,0.65],[0.53,0.68]), 15, -1.dbamp) + snd0; snd1 = Array.fill(numosc, { var freq, local; freq = [100,150,300,400] * 0.8; local = Saw.ar(rrand(freq, freq * 1.03 ) * LFNoise1.kr(0.3).range(1, 1.03), -10.dbamp); local = Mix(local); }); snd1 = Splay.ar(snd1); snd1 = (0-faderosc+1) * snd1; snd1 = LPF.ar(snd1, LFNoise1.ar(0.07).exprange(300,10000)); snd1 = CombL.ar(snd1, 1, LFNoise1.ar(0.05).range([0.77,0.65],[0.80,0.68]), 15, -1.dbamp) + snd1; snd2 = WhiteNoise.ar * LFPulse.ar(0.06, width:0.02) * -25.dbamp; snd2 = HPF.ar(snd2, 2000); snd2 = snd2 + Dust.ar(LFNoise1.ar(0.1).range(1,100), mul:0.2); sum = snd0 + snd1; sum = sum * gen + snd2; }.play ) x.set(\gate,0); // fadeout