// title: phase modulation dx11 algoritms // author: gentleclockdivider // description: // All dx11 algoritms // code: //All 8 algoritms of the dx11 opamt defines the output level and thus the amount of phase modulation going into the carrier ( SynthDef(\dex11algo1,///op4--->op3-->op2--->op1 { | pitch=60, op1att=0.001,op1dec=5.250,op1amt=1,op1tune=0, op2att=0.001,op2dec=1.250,op2amt=1,op2tune=0, op3att=0.001,op3dec=1.250,op3amt=3,op3tune=0, op4att=0.001,op4dec=1.250,op4amt=1,op4tune=0,feedbackamt=0| var env1,env2,env3,env4,op1,op2,op3,op4,pan=(0.0),signal; env4=EnvGen.ar(Env([0,1,0],[op4att,op4dec],[0,-5]),doneAction:0); op4=SinOscFB.ar((pitch+op4tune).midicps,env4*feedbackamt); op4=op4*env4; op4=op4*op4amt; op4; env3=EnvGen.ar(Env([0,1,0],[op3att,op3dec],[0,-5]),doneAction:0); op3=SinOsc.ar((pitch+op3tune).midicps,op4); op3=op3*env3; op3=op3*op3amt; env2=EnvGen.ar(Env([0,1,0],[op2att,op2dec],[0,-5]),doneAction:0); op2=SinOsc.ar((pitch+op2tune).midicps,op3); op2=op2*env2; op2=op2*op2amt; env1=EnvGen.ar(Env([0,1,0],[op1att,op1dec],[0,-5]),doneAction:2); op1=SinOsc.ar((pitch+op1tune).midicps,op2); op1=op1*env1; signal=op1*op1amt; signal=Pan2.ar(signal,pos:pan); Out.ar(0,signal); }).add ) ///// Synth(\dex11algo1) ///////////////////// ///////////////////// ( SynthDef(\dex11algo2,//op4+op3--->op2--->op1 { | pitch=60, op1att=0.001,op1dec=5.250,op1amt=1,op1tune=0, op2att=0.001,op2dec=1.250,op2amt=1,op2tune=0, op3att=0.001,op3dec=1.250,op3amt=3,op3tune=0, op4att=0.001,op4dec=1.250,op4amt=1,op4tune=0,feedbackamt=0| var env1,env2,env3,env4,op1,op2,op3,op4,pan=(0.0),signal; env4=EnvGen.ar(Env([0,1,0],[op4att,op4dec],[0,-5]),doneAction:0); op4=SinOscFB.ar((pitch+op4tune).midicps,env4*feedbackamt); op4=op4*env4; op4=op4*op4amt; op4; env3=EnvGen.ar(Env([0,1,0],[op3att,op3dec],[0,-5]),doneAction:0); op3=SinOsc.ar((pitch+op3tune).midicps); op3=op3*env3; op3=op3*op3amt; env2=EnvGen.ar(Env([0,1,0],[op2att,op2dec],[0,-5]),doneAction:0); op2=SinOsc.ar((pitch+op2tune).midicps,op3+op4); op2=op2*env2; op2=op2*op2amt; env1=EnvGen.ar(Env([0,1,0],[op1att,op1dec],[0,-5]),doneAction:2); op1=SinOsc.ar((pitch+op1tune).midicps,op2); op1=op1*env1; signal=op1*op1amt; signal=Pan2.ar(signal,pos:pan); Out.ar(0,signal); }).add ) ///// Synth(\dex11algo2) //////////////// /////////////// ( SynthDef(\dex11algo3,//op3-->op2-->op1<--op4 { | pitch=60, op1att=0.001,op1dec=5.250,op1amt=1,op1tune=0, op2att=0.001,op2dec=1.250,op2amt=1,op2tune=0, op3att=0.001,op3dec=1.250,op3amt=1,op3tune=0, op4att=0.001,op4dec=1.250,op4amt=1,op4tune=0,feedbackamt=0| var env1,env2,env3,env4,op1,op2,op3,op4,pan=(0.0),signal; env4=EnvGen.ar(Env([0,1,0],[op4att,op4dec],[0,-5]),doneAction:0); op4=SinOscFB.ar((pitch+op4tune).midicps,env4*feedbackamt); op4=op4*env4; op4=op4*op4amt; op4; env3=EnvGen.ar(Env([0,1,0],[op3att,op3dec],[0,-5]),doneAction:0); op3=SinOsc.ar((pitch+op3tune).midicps); op3=op3*env3; op3=op3*op3amt; env2=EnvGen.ar(Env([0,1,0],[op2att,op2dec],[0,-5]),doneAction:0); op2=SinOsc.ar((pitch+op2tune).midicps,op3); op2=op2*env2; op2=op2*op2amt; env1=EnvGen.ar(Env([0,1,0],[op1att,op1dec],[0,-5]),doneAction:2); op1=SinOsc.ar((pitch+op1tune).midicps,op2+op4); op1=op1*env1; signal=op1*op1amt; signal=Pan2.ar(signal,pos:pan); Out.ar(0,signal); }).add ) ///// Synth(\dex11algo3) /////////////////// ////////////////// ( SynthDef(\dex11algo4,//op2-->op1<--op3<--op4 { | pitch=60, op1att=0.001,op1dec=0.4,op1amt=1,op1tune=0, op2att=0.001,op2dec=0.50,op2amt=1,op2tune=12, op3att=0.001,op3dec=0.5,op3amt=0,op3tune=12.1, op4att=0.001,op4dec=0.050,op4amt=1,op4tune=0.1,feedbackamt=1| var env1,env2,env3,env4,op1,op2,op3,op4,pan=(0),signal; env4=EnvGen.ar(Env([0,1,0],[op4att,op4dec],[0,-5]),doneAction:0); op4=SinOscFB.ar((pitch+op4tune).midicps,env4*feedbackamt); op4=op4*env4; op4=op4*op4amt; op4; env3=EnvGen.ar(Env([0,1,0],[op3att,op3dec],[0,-5]),doneAction:0); op3=SinOsc.ar((pitch+op3tune).midicps,op4); op3=op3*env3; op3=op3*op3amt; env2=EnvGen.ar(Env([0,1,0],[op2att,op2dec],[0,-5]),doneAction:0); op2=SinOsc.ar((pitch+op2tune).midicps); op2=op2*env2; op2=op2*op2amt; env1=EnvGen.ar(Env([0,1,0],[op1att,op1dec],[0,-5]),doneAction:2); op1=SinOsc.ar((pitch+op1tune).midicps,op2+op3); op1=op1*env1; signal=op1*op1amt; signal=Pan2.ar(signal,pos:pan); Out.ar(0,signal); }).add ) ///// Synth(\dex11algo4) ////////////// ////////////// ( SynthDef(\dex11algo5,//op2-->op1 op4-->op3 { | pitch=60, op1att=0.001,op1dec=5.250,op1amt=1,op1tune=0, op2att=0.001,op2dec=1.250,op2amt=1,op2tune=0, op3att=0.001,op3dec=1.250,op3amt=1,op3tune=0, op4att=0.001,op4dec=1.250,op4amt=1,op4tune=0,feedbackamt=0| var env1,env2,env3,env4,op1,op2,op3,op4,pan=(0.0),signal; env4=EnvGen.ar(Env([0,1,0],[op4att,op4dec],[0,-5]),doneAction:0); op4=SinOscFB.ar((pitch+op4tune).midicps,env4*feedbackamt); op4=op4*env4; op4=op4*op4amt; op4; env3=EnvGen.ar(Env([0,1,0],[op3att,op3dec],[0,-5]),doneAction:0); op3=SinOsc.ar((pitch+op3tune).midicps,op4); op3=op3*env3; op3=op3*op3amt; env2=EnvGen.ar(Env([0,1,0],[op2att,op2dec],[0,-5]),doneAction:0); op2=SinOsc.ar((pitch+op2tune).midicps); op2=op2*env2; op2=op2*op2amt; env1=EnvGen.ar(Env([0,1,0],[op1att,op1dec],[0,-5]),doneAction:2); op1=SinOsc.ar((pitch+op1tune).midicps,op2); op1=op1*env1; op1=op1*op1amt; signal=(op1+op3)/2; signal=Pan2.ar(signal,pos:pan); Out.ar(0,signal); }).add ) ///// Synth(\dex11algo5) /////////////////// /////////////////// ( SynthDef(\dex11algo6,// op4--->ALL { | pitch=60, op1att=0.001,op1dec=5.250,op1amt=1,op1tune=0, op2att=0.001,op2dec=1.250,op2amt=1,op2tune=0, op3att=0.001,op3dec=1.250,op3amt=1,op3tune=0, op4att=0.001,op4dec=1.250,op4amt=1,op4tune=0,feedbackamt=0| var env1,env2,env3,env4,op1,op2,op3,op4,pan=(0.0),signal; env4=EnvGen.ar(Env([0,1,0],[op4att,op4dec],[0,-5]),doneAction:0); op4=SinOscFB.ar((pitch+op4tune).midicps,env4*feedbackamt); op4=op4*env4; op4=op4*op4amt; op4; env3=EnvGen.ar(Env([0,1,0],[op3att,op3dec],[0,-5]),doneAction:0); op3=SinOsc.ar((pitch+op3tune).midicps,op4); op3=op3*env3; op3=op3*op3amt; env2=EnvGen.ar(Env([0,1,0],[op2att,op2dec],[0,-5]),doneAction:0); op2=SinOsc.ar((pitch+op2tune).midicps,op4); op2=op2*env2; op2=op2*op2amt; env1=EnvGen.ar(Env([0,1,0],[op1att,op1dec],[0,-5]),doneAction:2); op1=SinOsc.ar((pitch+op1tune).midicps,op4); op1=op1*env1; op1=op1*op1amt; signal=(op1+op2+op3)/3; signal=Pan2.ar(signal,pos:pan); Out.ar(0,signal); }).add ) ///// Synth(\dex11algo6) ////////////////// ///////////////// ( SynthDef(\dex11algo7,// op4--->op3 op2+op1-->out { | pitch=60, op1att=0.001,op1dec=5.250,op1amt=1,op1tune=0, op2att=0.001,op2dec=1.250,op2amt=1,op2tune=0, op3att=0.001,op3dec=1.250,op3amt=1,op3tune=0, op4att=0.001,op4dec=1.250,op4amt=1,op4tune=0,feedbackamt=0| var env1,env2,env3,env4,op1,op2,op3,op4,pan=(0.0),signal; env4=EnvGen.ar(Env([0,1,0],[op4att,op4dec],[0,-5]),doneAction:0); op4=SinOscFB.ar((pitch+op4tune).midicps,env4*feedbackamt); op4=op4*env4; op4=op4*op4amt; op4; env3=EnvGen.ar(Env([0,1,0],[op3att,op3dec],[0,-5]),doneAction:0); op3=SinOsc.ar((pitch+op3tune).midicps,op4); op3=op3*env3; op3=op3*op3amt; env2=EnvGen.ar(Env([0,1,0],[op2att,op2dec],[0,-5]),doneAction:0); op2=SinOsc.ar((pitch+op2tune).midicps); op2=op2*env2; op2=op2*op2amt; env1=EnvGen.ar(Env([0,1,0],[op1att,op1dec],[0,-5]),doneAction:2); op1=SinOsc.ar((pitch+op1tune).midicps); op1=op1*env1; op1=op1*op1amt; signal=(op1+op2+op3)/3; signal=Pan2.ar(signal,pos:pan); Out.ar(0,signal); }).add ) ///// Synth(\dex11algo7) //////////////////// ////////////////////// ( SynthDef(\dex11algo8,// all out { | pitch=60, op1att=0.001,op1dec=5.250,op1amt=1,op1tune=0, op2att=0.001,op2dec=1.250,op2amt=1,op2tune=0, op3att=0.001,op3dec=1.250,op3amt=1,op3tune=0, op4att=0.001,op4dec=1.250,op4amt=1,op4tune=0,feedbackamt=0| var env1,env2,env3,env4,op1,op2,op3,op4,pan=(0.0),signal; env4=EnvGen.ar(Env([0,1,0],[op4att,op4dec],[0,-5]),doneAction:0); op4=SinOscFB.ar((pitch+op4tune).midicps,env4*feedbackamt); op4=op4*env4; op4=op4*op4amt; op4; env3=EnvGen.ar(Env([0,1,0],[op3att,op3dec],[0,-5]),doneAction:0); op3=SinOsc.ar((pitch+op3tune).midicps ); op3=op3*env3; op3=op3*op3amt; env2=EnvGen.ar(Env([0,1,0],[op2att,op2dec],[0,-5]),doneAction:0); op2=SinOsc.ar((pitch+op2tune).midicps ); op2=op2*env2; op2=op2*op2amt; env1=EnvGen.ar(Env([0,1,0],[op1att,op1dec],[0,-5]),doneAction:2); op1=SinOsc.ar((pitch+op1tune).midicps ); op1=op1*env1; op1=op1*op1amt; signal=(op1+op2+op3+op4)/4; signal=Pan2.ar(signal,pos:pan); Out.ar(0,signal); }).add ) ///// Synth(\dex11algo8)