You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1006 B
Plaintext
49 lines
1006 B
Plaintext
// Written by Alik Rustamoff
|
|
// src: https://youtu.be/j0leDcRS21M?si=AuLBTZQixsdxBp5x
|
|
// https://github.com/alikthename/Musical-Design-in-Supercollider
|
|
|
|
(
|
|
z = SynthDef("fm_pulsar",{
|
|
var a,e,f;
|
|
var t, overlap, carfreq, modfreq, mInd, vel, vel_;
|
|
|
|
f = \freq.kr(100);
|
|
// f = f + SinOsc.ar(LFNoise1.kr(0.3!2).range(1,4));
|
|
|
|
vel = \kel.kr(0.5);
|
|
vel_ = vel.clip(0,1.0).linlin( 0, 1, 2, 0.7);
|
|
|
|
e = EnvGen.kr(
|
|
Env.adsr(
|
|
\att.kr(0.025) * vel_,
|
|
\dec.kr(0.02) * vel_,
|
|
\susl.kr(0.7),
|
|
\rel.kr(4),
|
|
curve: \curve.kr(-4)
|
|
),
|
|
gate: \gate.kr(1),
|
|
doneAction:2
|
|
) * vel;
|
|
|
|
// e = e * PinkNoise.ar(1!2).range( 0.1, 1 ).lag(0.2);
|
|
|
|
carfreq = f * \cf.kr(2) + LFNoise1.kr(3).range(0,50);
|
|
modfreq = carfreq * \mf.kr(2) + LFNoise1.kr(3).range(0,100);
|
|
|
|
t = Impulse.ar(f);
|
|
|
|
mInd = e.pow(3.3);
|
|
overlap = 1.1 - e.pow(0.5);
|
|
d = overlap/f;
|
|
|
|
a = Mix([
|
|
SinOsc.ar(f),
|
|
GrainFM.ar( 1, t, d, carfreq, modfreq, mInd ),
|
|
]);
|
|
|
|
a = LeakDC.ar(a * e) ;
|
|
Out.ar(\outBus.kr(0), a.dup * \gain.kr(0.1));
|
|
|
|
}).play;
|
|
)
|