/* Ambient-friendly modulable buffer granulator */ SynthDef(\grainoo, { |buf, gate=1| var sig, env, trig, pos, rate; // nonzero attack env = EnvGen.ar(Env.asr(\attack.kr(0.05), 1.0, \release.kr(3.0)), gate, doneAction: 2); trig = Impulse.kr(\trig_rate.kr(18)); // Smooth discontinuous control changes pos = Lag.kr(\gpos.kr(0.2), \posLag.kr(0.25)); rate = Lag.kr(\rate.kr(1.0), \rateLag.kr(0.25)); sig = GrainBuf.ar( numChannels: 2, trigger: trig, dur: \gdur.kr(0.18), sndbuf: buf, rate: rate, pos: pos, pan: \gpan.kr(0) ); sig = BLowPass4.ar(sig, \ff.kr(3800), \rq.kr(0.9)); sig = LPF.ar(sig, \aircut.kr(6500)); sig = HPF.ar(sig, 25); sig = LeakDC.ar(sig); sig = sig * env * \amp.kr(0.2); sig = Limiter.ar(sig, 0.98); Out.ar(\out.kr(0), sig); }).add;