( SynthDef(\bgrain, { |out = 0, gate = 1, amp = 0, bufnum, gfreq=90, rate=0.5, amplag=5| var snd, pan, env, freqdev; amp = Lag.kr(amp, amplag); pan = LFNoise1.kr(0.1).range(-1, 1) * LFNoise0.kr(gfreq).range(0.2,1); env = EnvGen.kr( Env([0, 1, 0], [1, 1], \sin, 1), gate, doneAction: Done.freeSelf); snd = GrainBuf.ar( numChannels:2, trigger:Impulse.kr(LFNoise1.kr(gfreq).range(0.8,1) * gfreq), dur: 0.2 * LFNoise0.kr(gfreq).range(1,1.2), sndbuf: bufnum, rate: [rate * LFNoise1.kr.range(0.99, 1), rate * LFNoise1.kr.range(0.99, 1)], pos: LFNoise2.kr(0.05).range(0, 1) * LFNoise0.kr(gfreq).range(1,1.02), //pos: LFTri.kr(0.25), interp: 2, pan: pan); snd = RLPF.ar(snd, freq: LFNoise2.kr(0.1).exprange(400,10000)); snd = snd * LFTri.ar(0.073).range(0.1,1); snd = snd * env * amp; Out.ar(out, snd); }).add; );