@@ -17,14 +17,14 @@ Engine_Icarus : CroneEngine {
1717 (0 ..5 ).do({arg i;
1818 SynthDef ("icarussynth" ++i,{
1919 arg amp=0.5 , hz=220 , pan=0 , envgate=0 ,
20- pulse=0 ,saw=0 ,bend=0 ,
20+ pulse=0 ,saw=0 ,bend=0 ,subpitch= 1 ,
2121 attack=0.015 ,decay=1 ,release=2 ,sustain=0.9 ,
2222 lpf=20000 ,resonance=0 ,portamento=0.1 ,tremelo=0 ,destruction=0 ,
2323 pwmcenter=0.5 ,pwmwidth=0.05 ,pwmfreq=10 ,detuning=0.1 ,
2424 feedback=0.5 ,delaytime=0.25 , delaytimelag=0.1 , sublevel=0 ;
2525
2626 // vars
27- var ender,snd,local,in,ampcheck,hz_dream,hz_sub;
27+ var ender,snd,local,in,ampcheck,hz_dream,hz_sub,subdiv ;
2828
2929 // envelope stuff
3030 ender = EnvGen .ar(
@@ -45,7 +45,8 @@ Engine_Icarus : CroneEngine {
4545 mul: 0.5
4646 );
4747 // add suboscillator
48- hz_sub=(Lag .kr(hz/2 +(SinOsc .kr(LFNoise0 .kr(1 ))*(((hz/2 ).cpsmidi+1 ).midicps-(hz/2 ))*detuning),portamento).cpsmidi + bend).midicps;
48+ subdiv=2 **subpitch;
49+ hz_sub=(Lag .kr(hz/subdiv+(SinOsc .kr(LFNoise0 .kr(1 ))*(((hz/subdiv).cpsmidi+1 ).midicps-(hz/subdiv))*detuning),portamento).cpsmidi + bend).midicps;
4950 in = in + Pulse .ar(hz_sub,
5051 width:
5152 LFTri .kr(pwmfreq+rrand(0.1 ,0.3 ),mul: pwmwidth/2 ,add: pwmcenter),
@@ -255,6 +256,11 @@ Engine_Icarus : CroneEngine {
255256 icarusPlayer[i].set(\bend ,msg[1 ]);
256257 });
257258 });
259+ this .addCommand("subpitch" ,"f" , { arg msg;
260+ (0 ..5 ).do({arg i;
261+ icarusPlayer[i].set(\subpitch ,msg[1 ]);
262+ });
263+ });
258264
259265 }
260266
0 commit comments