// title: First substractive synth // author: pierrealain.bourdil // description: // In the process of learing abstract algorithm // https://soundcloud.com/pierrealainbourdil/substractive-synthesis // code: ( SynthDef("partial2",{|gate=1,att,dec,rel,freq,cut,req,fenv,amp| var a = Mix.new(LFSaw.ar([freq,freq*3],[0,pi],mul:[0.5,0.5])*EnvGen.kr(Env.adsr(att,dec,releaseTime:rel),gate,levelScale:0.3,doneAction:2)); var b = RLPF.ar(a,SinOsc.kr(fenv,mul:cut/2,add:cut/2)*EnvGen.kr(Env.perc,gate,doneAction:2),req); Out.ar(0,b*amp!2); }).add(); ) ~f={|deg,freq,root=50| Scale.minorPentatonic.degreeToFreq(deg,root.midicps,1)*freq} Pbind(\instrument,\partial2,\amp,0.3,\scale,Scale.minorPentatonic,\dur,Pseq([1.5,1,0.5,1],inf),\mtranspose,-10,\degree,Pseq([Pseq([[1,7],[4,6],[2,5],[3,1]],3),Pseq([[6,5],[2,7],[1,3],[8,2]],1)],inf),\cut,Prand(Array.fill(8,{|i| ~f.value(rrand(1,7),i+1)}),inf),\req,Prand([0.7,0.5],inf),\att,Pseq([0.02,0.04],inf),\dec,Prand([0.1],inf),\rel,Pseq([1],inf),\fenv,Pseq([0.01,2,0.05,4],inf)).play;