|
|
@ -7,13 +7,13 @@ namespace Heck { |
|
|
|
void FM::init() |
|
|
|
{ |
|
|
|
osc.Init(samplerate); |
|
|
|
osc.SetFrequency(100); |
|
|
|
osc.SetFrequency(40); |
|
|
|
osc.SetRatio(0.); |
|
|
|
osc.SetIndex(0.); |
|
|
|
|
|
|
|
volEnv.Init(samplerate); |
|
|
|
volEnv.SetTime(dsp::ADENV_SEG_ATTACK, .0001); |
|
|
|
volEnv.SetTime(dsp::ADENV_SEG_DECAY, 1.); |
|
|
|
volEnv.SetTime(dsp::ADENV_SEG_DECAY, 0.7); |
|
|
|
volEnv.SetMax(1); |
|
|
|
volEnv.SetMin(0); |
|
|
|
} |
|
|
@ -21,26 +21,25 @@ namespace Heck { |
|
|
|
void FM::trigger() |
|
|
|
{ |
|
|
|
volEnv.Trigger(); |
|
|
|
osc.Reset(); |
|
|
|
} |
|
|
|
|
|
|
|
void FM::ctl(unsigned int ctl_nr, float val) |
|
|
|
{ |
|
|
|
float width = 0.1; |
|
|
|
|
|
|
|
switch (ctl_nr) { |
|
|
|
case 0: |
|
|
|
osc.SetFrequency(val * 200.); |
|
|
|
osc.SetFrequency(31 + (val * 320.)); |
|
|
|
break; |
|
|
|
case 1: |
|
|
|
volEnv.SetTime(dsp::ADENV_SEG_DECAY, val * 2.); |
|
|
|
break; |
|
|
|
case 2: |
|
|
|
osc.SetRatio(val * 1.); |
|
|
|
osc.SetRatio(1 - (width / 2.) + val * width); |
|
|
|
break; |
|
|
|
case 3: |
|
|
|
osc.SetIndex(val * 1.); |
|
|
|
break; |
|
|
|
case 4: |
|
|
|
break; |
|
|
|
case 5: |
|
|
|
osc.SetIndex(val * 0.1); |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|