{
   "labels" : [
      "fm",
      "instrument",
      "synthesis",
      "synthdef",
      "synthesis techniques",
      "frequency modulation",
      "sound design"
   ],
   "id" : "1-5f7",
   "is_private" : null,
   "code" : "// https://recarteblog.wordpress.com/\r\n//gongFM_SC\r\n\r\n// 1. Añadir al servidor\r\n\r\n(\r\nSynthDef(\\gongFM, {\r\n\targ ratio1=0.9, ratio2=0.55, ratio3=1.03, index2=2, index3=4, amp=0.7, dur=7, pan=0;\r\n\tvar sig, op1, op2, op3, env1, env2, env3;\r\n\tenv3 = EnvGen.kr(Env.new([0, 1, 1, 0], [0.4, 0.3, dur]), doneAction:2);\r\n\tenv2 = EnvGen.kr(Env.new([0, 1, 1, 0], [0, 0.3, dur]), doneAction:2);\r\n\tenv1 = EnvGen.kr(Env.new([0, 1, 1, 0], [0.003, 0.3, dur - 0.5]), doneAction:2);\r\n\top3 = SinOsc.ar(([67, 70, 74].midicps * ratio3), mul:[67, 70, 74].midicps * ratio3 * index3) * env3;\r\n\top2 = SinOsc.ar((([67, 70, 74].midicps * ratio2) + op3), mul:[67, 70, 74].midicps * ratio2 * index2) * env2;\r\n\top1 = SinOsc.ar(([67, 70, 74].midicps * ratio1) + op2);\r\n\tsig = op1 * env1 * amp;\r\n\tsig = Splay.ar(sig);\r\n\tsig = Balance2.ar(sig[0], sig[1], pan);\r\n\tOut.ar(0, sig);\r\n}).add;\r\n)\r\n\r\n\r\n// 2. Ejecutar los Synths\r\n\r\nSynth(\\gongFM);\r\n\r\nSynth(\\gongFM, [\\ratio1, 0.503, \\ratio2, 0.50, \\ratio3, 1.35, \\index2, 1.53, \\index3, 4.33]);\r\n\r\nSynth(\\gongFM, [\\ratio1, 0.59, \\ratio2, 0.17, \\ratio3, 0.75, \\index2, 1.54, \\index3, 3.29]);\r\n\r\nSynth(\\gongFM, [\\ratio1, 0.49, \\ratio2, 0.17, \\ratio3, 0.34, \\index2, 1.33, \\index3, 4.31]);\r\n\r\nSynth(\\gongFM, [\\ratio1, 1.11, \\ratio2, 0.2, \\ratio3, 0.80, \\index2, 1.97, \\index3, 5.06]);",
   "name" : "gongFM_SC",
   "author" : "Oscar Recarte",
   "ancestor_list" : [],
   "description" : "Various gong-like sounds using FM synthesis.\r\nMore detailed info (in Spanish) at https://recarteblog.wordpress.com/2021/05/05/gongfm_sc/"
}
