feat: lag in granulator (smooth operator)
This commit is contained in:
@ -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;
|
||||
Reference in New Issue
Block a user