// title: droneFM01 // author: Oscar Recarte // description: // Polyrhythmic and dynamic FM drone. // // More detailed info (in Spanish) at https://recarteblog.wordpress.com/2021/02/23/example-post-2/ // code: // https://recarteblog.wordpress.com/ //droneFM01 // 1. AƱadir al servidor ( SynthDef(\droneFM, { arg f1Freq=0.1, f2Freq=1.1, f3Freq=2.2, nFreq=440, m1Ratio=1, m2Ratio=2, m3Ratio=3, amp=0.1, dur=55, ampM=0.84 , pan=0; var sig, car1, mod1, car2, mod2, car3, mod3, env, index; index = LFNoise1.kr(0.2).range(2, 12); env = EnvGen.kr(Env.new([0, 0.70, 0.70, 0], [dur*0.333, dur*0.333, dur*0.333]), doneAction:2); mod1 = SinOsc.ar([nFreq * m1Ratio, nFreq+0.7 * m1Ratio], mul:nFreq * m1Ratio * index) * ampM; car1 = SinOsc.ar(f1Freq + mod1); mod2 = SinOsc.ar([nFreq * m2Ratio, nFreq+1.4 * m2Ratio], mul:nFreq * m2Ratio * index) * ampM; car2 = SinOsc.ar(f2Freq + mod2); mod3 = SinOsc.ar([nFreq * m3Ratio, nFreq+0.35 * m3Ratio], mul:nFreq * m3Ratio * index) * ampM; car3 = SinOsc.ar(f3Freq + mod3) * 0.4; sig = car1 + car2 + car3 * env * amp; sig = Pan2.ar(sig, pan); Out.ar(0, sig); }).add; ) // 2. Ejecutar los Synths ( Synth(\droneFM, [\nFreq, 50.midicps]); Synth(\droneFM, [\nFreq, 57.midicps]); Synth(\droneFM, [\nFreq, 41.midicps]); )