diff --git a/fm_pulsar.scd b/fm_pulsar.scd new file mode 100644 index 0000000..0bfbaeb --- /dev/null +++ b/fm_pulsar.scd @@ -0,0 +1,48 @@ +// 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 * \gain.kr(0.1)); + +}).add; +)