feat: lag in granulator (smooth operator)
This commit is contained in:
@ -1,28 +1,33 @@
|
|||||||
/* Generic modulable buffer granulator */
|
/* Ambient-friendly modulable buffer granulator */
|
||||||
SynthDef(\grainoo, {
|
SynthDef(\grainoo, { |buf, gate=1|
|
||||||
|buf, gate = 1|
|
var sig, env, trig, pos, rate;
|
||||||
var sig, env;
|
|
||||||
env = EnvGen.ar(
|
// nonzero attack
|
||||||
Env.asr(
|
env = EnvGen.ar(Env.asr(\attack.kr(0.05), 1.0, \release.kr(3.0)), gate, doneAction: 2);
|
||||||
\attack.kr(0.0),
|
|
||||||
\decay.kr(1.0),
|
trig = Impulse.kr(\trig_rate.kr(18));
|
||||||
\release.kr(1.0)),
|
|
||||||
gate,
|
// Smooth discontinuous control changes
|
||||||
// doneAction: Done.freeSelf
|
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(
|
sig = GrainBuf.ar(
|
||||||
numChannels: 2,
|
numChannels: 2,
|
||||||
trigger: Impulse.ar(\trig_rate.kr(20)),
|
trigger: trig,
|
||||||
dur: \gdur.kr(0.5),
|
dur: \gdur.kr(0.18),
|
||||||
sndbuf: buf,
|
sndbuf: buf,
|
||||||
rate: \rate.kr(0.5) * (0.01 + env),
|
rate: rate,
|
||||||
pos: \gpos.kr(0),
|
pos: pos,
|
||||||
pan: \gpan.kr(0),
|
pan: \gpan.kr(0)
|
||||||
|
|
||||||
);
|
);
|
||||||
sig = RLPF.ar(sig, \ff.kr(6000), \rq.kr(1));
|
|
||||||
sig = sig * env;
|
sig = BLowPass4.ar(sig, \ff.kr(3800), \rq.kr(0.9));
|
||||||
sig = sig * \amp.kr(1);
|
sig = LPF.ar(sig, \aircut.kr(6500));
|
||||||
sig = Limiter.ar(sig);
|
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);
|
Out.ar(\out.kr(0), sig);
|
||||||
}).add;
|
}).add;
|
||||||
Reference in New Issue
Block a user