From 03f5515c8f59d748ef6ae2654ab235f19b6ae00e Mon Sep 17 00:00:00 2001 From: adminoo Date: Mon, 2 Mar 2026 17:11:02 +0100 Subject: [PATCH] feat: lag in granulator (smooth operator) --- synthdefs/granulator.scd | 49 ++++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 22 deletions(-) diff --git a/synthdefs/granulator.scd b/synthdefs/granulator.scd index 9f3f180..3019c16 100644 --- a/synthdefs/granulator.scd +++ b/synthdefs/granulator.scd @@ -1,28 +1,33 @@ -/* Generic modulable buffer granulator */ -SynthDef(\grainoo, { - |buf, gate = 1| - var sig, env; - env = EnvGen.ar( - Env.asr( - \attack.kr(0.0), - \decay.kr(1.0), - \release.kr(1.0)), - gate, - // doneAction: Done.freeSelf - ); +/* 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: Impulse.ar(\trig_rate.kr(20)), - dur: \gdur.kr(0.5), + trigger: trig, + dur: \gdur.kr(0.18), sndbuf: buf, - rate: \rate.kr(0.5) * (0.01 + env), - pos: \gpos.kr(0), - pan: \gpan.kr(0), - + rate: rate, + pos: pos, + pan: \gpan.kr(0) ); - sig = RLPF.ar(sig, \ff.kr(6000), \rq.kr(1)); - sig = sig * env; - sig = sig * \amp.kr(1); - sig = Limiter.ar(sig); + + 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; \ No newline at end of file