Browse Source

NICE Tuning of instr FM

main
heck 8 months ago
parent
commit
233d85d833
  1. 17
      src/instr_fm.cc

17
src/instr_fm.cc

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

Loading…
Cancel
Save