{
   "code" : "/**\r\nRequires:\r\n\r\nSuperCollider v3.8.0+\r\n\r\nFM7 (sc3 plugins)\r\n\r\nFeedback Quark\r\n\r\nTo run evaluate each of the numbered blocks\r\n**/\r\n\r\n////////////////////\r\n// 1\r\nTempoClock.default.tempo_(60/60);\r\n\r\n////////////////////\r\n// 2\r\n(\r\n~fm4 = NodeProxy.audio;\r\n~fm4.quant = 1.0;\r\n)\r\n\r\n////////////////////\r\n// 3\r\n(~fm4[0] = {\r\n\r\n\tvar freq = Vibrato.ar( K2A.ar(\\freq.kr(432).lag(\\lag.kr(0.0))),\r\n\t\t\\vrate.kr(6),\r\n\t\t\\vdepth.kr(0.02),\r\n\t\t\\vdelay.kr(0),\r\n\t\t\\vonset.kr(0),\r\n\t\t\\vrateVar.kr(0.04),\r\n\t\t\\vdepthVar.kr(0.1)\r\n\t);\r\n\r\n\tvar sig = {\r\n\r\n\t\tvar dur = \\dur.kr(1);\r\n\r\n\t\tvar trig = \\trig.tr(0);\r\n\r\n\t\tvar trig2 = \\trig2.tr(0);\r\n\r\n\t\tvar ctrls = [\r\n\t\t\t[freq,        0,1],\r\n\t\t\t[freq * 4.01, 0,1],\r\n\t\t\t[freq * 1.0,  0,1],\r\n\r\n\t\t\t[freq * 2.0,  0,1],\r\n\t\t\t[freq * 3.1,  0,1],\r\n\t\t\t[freq * 2.0,  0,1]\r\n\t\t];\r\n\r\n\t\tvar env1 = Env([1, 1, 0.001], [0, dur], -4).kr(gate:trig2);\r\n\r\n\t\tvar mods = [\r\n\t\t\t[0, env1, 0,       0, 0,        0],\r\n\t\t\t[0, 0,    1,       0, 0,        0],\r\n\t\t\t[0, 0,    0,       0, 0,        0],\r\n\t\t\t[0, 0,    0,       0, env1,     0],\r\n\t\t\t[0, 0,    0,       0, 0,        1],\r\n\t\t\t[0, 0,    0,       0, 0,        0.6]\r\n\t\t];\r\n\r\n\t\tvar sig = FM7.ar(ctrls, mods).slice([0,3]);\r\n\t\tvar env = Env.linen(\\atk.kr(0.01), \\sus.kr(0), \\rel.kr(1), curve:\\curve.kr(-4)).kr(gate:trig);\r\n\r\n\t\tsig = sig * env;\r\n\t};\r\n\r\n\tSplay.ar(sig.()) * \\amp.kr(0.1) * AmpCompA.kr(freq);\r\n})\r\n\r\n////////////////////\r\n// 4\r\n(~fm4[8] = \\set -> Pbind(\r\n\r\n\t\\delta, 0.125,\r\n\r\n\t\\vrate, 6,\r\n\t\\vdepth, 0.001,\r\n\t\\lag, 0.01,\r\n\r\n\t\\degree, Pseq([\r\n\t\tPpatlace([ Pseq([0,5], inf), Pwhite(1,4) ], 14),\r\n\t\tPseq([8,7,6,5,4,3,2,1], 1)\r\n\t], inf),\r\n\t\\scale, Scale.ritusen,\r\n\t\\octave, Prand([4,5], inf),\r\n\t\\ctranspose, Pstutter(16, Pseq([0, 2], inf))\r\n));\r\n\r\n////////////////////\r\n// 5\r\n(~fm4[10] = \\set -> Pbind(\r\n\r\n\t\\trig, 1,\r\n\t\\delta, 1,\r\n\t\\beatDur, Pfunc({thisThread.clock.beatDur}),\r\n\t\\dur, Pkey(\\beatDur) * Pkey(\\delta) * 0.4,\r\n\r\n\t\\env, #[0.01, 1, 1].normalizeSum,\r\n\t\\sus, Pkey(\\dur) * Pfunc({arg evt; evt[\\env][1] }),\r\n\t\\rel, Pkey(\\dur) * Pfunc({arg evt; evt[\\env][2] }),\r\n\t\\curve, -4\r\n));\r\n\r\n////////////////////\r\n// 6\r\n(~fm4[12] = \\set -> Pbind(\r\n\r\n\t\\trig2, 1,\r\n\t\\delta, Prand([1,3], inf)\r\n));\r\n\r\n////////////////////\r\n// 7\r\n(~fm4[16] = \\filter -> {arg in;\r\n\tvar sig = FbC({arg fb; fb * 0.3 + in;}, 1.5/4);\r\n\tvar sig2 = FbC({arg fb; fb * 0.4 + in;}, 4.5/4);\r\n\tsig + sig2;\r\n});\r\n\r\n////////////////////\r\n// 8\r\n(~fm4[17] = \\filter -> {arg in;\r\n\tvar sig = BLowPass.ar(in, SinOsc.kr(1/16).range(523,4186), 0.7);\r\n\tsig;\r\n});\r\n\r\n////////////////////\r\n// 9\r\n(~fm4[18] = \\filter -> {arg in; GVerb.ar(in, 50); });\r\n\r\n////////////////////\r\n// 10\r\n~fm4.set(\\wet16, 0.4, \\wet18, 0.3);\r\n\r\n////////////////////\r\n// 11\r\n~fm4.play(fadeTime:4);\r\n\r\n////////////////////\r\n// stop\r\n~fm4.stop(fadeTime:8);",
   "is_private" : null,
   "id" : "1-580",
   "labels" : [
      "fm",
      "frequency modulation"
   ],
   "description" : "",
   "ancestor_list" : [],
   "author" : "david_morgan",
   "name" : "FM7 Patch"
}
