Fixe VCO merging

This commit is contained in:
Christian Colglazier 2022-01-22 17:48:38 -05:00
parent 7ce6e2781c
commit 618ada7a3c
2 changed files with 41 additions and 27 deletions

View File

@ -5,37 +5,12 @@ VCODroplet::VCODroplet(DaisyPatch* m_patch,
float sample_rate) :
Droplet(m_patch,
m_state) {
int num_waves = Oscillator::WAVE_LAST;
SetAnimationRate(10);
osc.Init(sample_rate);
wave = Oscillator::WAVE_SAW;
DaisyPatch::Ctrl freq, fine;
switch (GetState()){
default:
case DropletState::kFull:
wavectrl.Init(Patch()->controls[Patch()->CTRL_3], 0.0,
num_waves, Parameter::LINEAR);
ampctrl.Init(Patch()->controls[Patch()->CTRL_4], 0.0,
0.5f, Parameter::LINEAR);
freq = Patch()->CTRL_1;
fine = Patch()->CTRL_2;
SetWaveShape(wavectrl.Process());
break;
case DropletState::kLeft:
freq = Patch()->CTRL_1;
fine = Patch()->CTRL_2;
break;
case DropletState::kRight:
freq = Patch()->CTRL_3;
fine = Patch()->CTRL_4;
break;
}
freqctrl.Init(Patch()->controls[freq], 10.0,
110.0f, Parameter::LINEAR);
finectrl.Init(Patch()->controls[fine], 0.f,
7.f, Parameter::LINEAR);
SetControls();
}
VCODroplet::~VCODroplet() {
@ -145,4 +120,38 @@ void VCODroplet::SetWaveShape(int ws) {
last_wave_ctrl = ws;
}
void VCODroplet::UpdateStateCallback() {}
void VCODroplet::UpdateStateCallback() {
SetControls();
}
void VCODroplet::SetControls() {
DaisyPatch::Ctrl freq, fine;
switch (GetState()){
default:
case DropletState::kFull:
wavectrl.Init(Patch()->controls[Patch()->CTRL_3],
0.0,
Oscillator::WAVE_LAST,
Parameter::LINEAR);
ampctrl.Init(Patch()->controls[Patch()->CTRL_4],
0.0,
0.5f,
Parameter::LINEAR);
freq = Patch()->CTRL_1;
fine = Patch()->CTRL_2;
SetWaveShape(wavectrl.Process());
break;
case DropletState::kLeft:
freq = Patch()->CTRL_1;
fine = Patch()->CTRL_2;
break;
case DropletState::kRight:
freq = Patch()->CTRL_3;
fine = Patch()->CTRL_4;
break;
}
freqctrl.Init(Patch()->controls[freq], 10.0,
110.0f, Parameter::LINEAR);
finectrl.Init(Patch()->controls[fine], 0.f,
7.f, Parameter::LINEAR);
}

View File

@ -87,6 +87,11 @@ public:
* @param ws wave shape
*/
void SetWaveShape(int ws);
/*
* Set up the controls for the droplet.
*/
void SetControls();
};
#endif // DROPLETS_VCO_DROPLET_H_