Skip to content

Commit 69c4b38

Browse files
authored
Merge pull request #6 from MiguelVCarvalho/main
Sub-oscillator pitch is now a parameter.
2 parents 3d6c9ed + bf4b8ea commit 69c4b38

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed

lib/Engine_Icarus.sc

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

lib/icarus.lua

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ function Icarus:new(args)
2525

2626
local debounce_delaytime=0
2727

28-
params:add_group("ICARUS",19)
28+
params:add_group("ICARUS",20)
2929
local filter_freq=controlspec.new(40,18000,'exp',0,18000,'Hz')
3030
params:add_option("polyphony","polyphony",{"monophonic","polyphonic"},2)
3131
params:add {
@@ -60,6 +60,14 @@ function Icarus:new(args)
6060
params:set_action("sub",function(v)
6161
engine.sub(v)
6262
end)
63+
params:add {
64+
type='control',
65+
id="subpitch",
66+
name="sub pitch",
67+
controlspec=controlspec.new(0,3,'lin',0.01,1,'oct',-0.003333)}
68+
params:set_action("subpitch",function(v)
69+
engine.subpitch(v)
70+
end)
6371
params:add {
6472
type='control',
6573
id="pan",

0 commit comments

Comments
 (0)