I’ve been studying some patches by Alik Rustamoff. His work is incredible, and I’ve learned a great deal from his ideas.
//1.
(
SynthDef("fm_pulsar",{
var a,e,f;
var t, overlap, carfreq, modfreq, mInd, vel, vel_;
f = \freq.kr(250);
f = f + SinOsc.ar(LFNoise1.kr(0.6!2).range(3,6));
vel = \vel.kr(0.6);
vel_ = vel.clip(0,1.0).linlin( 0, 1, 2.5, 0.75);
e = EnvGen.kr(
Env.adsr(
\att.kr(2.5) * vel_,
\dec.kr(0.03) * vel_,
\susl.kr(0.85),
\rel.kr(6.0),
curve: \curve.kr(-3.5)
),
gate: \gate.kr(1),
doneAction:2
) * vel;
carfreq = f * \cf.kr(2.5) + LFNoise1.kr(3.5).range(0,55);
modfreq = carfreq * \mf.kr(2.5) + LFNoise1.kr(3.5).range(0,110);
t = Impulse.ar(f);
mInd = e.pow(3.5) * LFNoise2.kr(5.5!2).range(\mIndMin.kr(0.15),\mIndMax.kr(2.5));
overlap = 1.15 - e.pow(0.55) * LFNoise1.kr(0.35!2).range(\olapMin.kr(1.5),\olapMax.kr(8.5));
d = overlap/f;
a = Mix([
SinOsc.ar(f),
GrainFM.ar( 1, t, d, carfreq, modfreq, mInd ),
]);
a = LeakDC.ar(a * e) ;
a = BLowPass4.ar(a, 1350, 1.0);
Out.ar(\outBus.kr(0), a * \gain.kr(0.15));
}).add
)
//2.
(
~reverbBus = Bus.audio(s, 2);
Ndef(\reverb).set(\inBus, ~reverbBus);
)
//3.
(
Pbind(
\instrument, \fm_pulsar,
\dur, Pseq ([0.15, 0.9], inf),
\degree, Pseq([0,4,6,8,10,12].scramble, inf),
\octave, Pdup(3, Pseq([4,5,6], inf) ),
\vel, Pdup(6, Pseq([ 0.25, 1.05, 1.3 ].scramble, inf)),
\cf, 8/7,
\mf, 4/3,
\mIndMax, 2.25,
\outBus, ~reverbBus
).play;
)
//4.
(
Ndef(\reverb, {
var in, a, n;
in = In.ar(\inBus.ir, 2);
a = in;
n = 3;
n.collect { |i|
a = AllpassC.ar(
a,
delaytime: LFNoise1.kr(0.035!2).range(0.015 , 0.025 * (i+1)),
decaytime: (i+1.5)
).tanh
}.mean;
Mix([
in * LFNoise1.kr(3.5).range(0,1),
a * 0.55
]);
}).play;
)