plugin cutoff range
This commit is contained in:
parent
f0bc568030
commit
bb5e064e1a
|
@ -164,13 +164,13 @@ void DistrhoPluginNekobi::initParameter(uint32_t index, Parameter& parameter)
|
||||||
parameter.midiCC = 75;
|
parameter.midiCC = 75;
|
||||||
break;
|
break;
|
||||||
case paramCutoff:
|
case paramCutoff:
|
||||||
parameter.hints = kParameterIsAutomatable; // modified x2.5
|
parameter.hints = kParameterIsAutomatable;
|
||||||
parameter.name = "Cutoff";
|
parameter.name = "Cutoff";
|
||||||
parameter.symbol = "cutoff";
|
parameter.symbol = "cutoff";
|
||||||
parameter.unit = "%";
|
parameter.unit = "%";
|
||||||
parameter.ranges.def = 25.0f;
|
parameter.ranges.def = 63.0f;
|
||||||
parameter.ranges.min = 0.0f;
|
parameter.ranges.min = 0.0f;
|
||||||
parameter.ranges.max = 100.0f;
|
parameter.ranges.max = 127.0f;
|
||||||
parameter.midiCC = 74;
|
parameter.midiCC = 74;
|
||||||
break;
|
break;
|
||||||
case paramResonance:
|
case paramResonance:
|
||||||
|
@ -270,8 +270,8 @@ void DistrhoPluginNekobi::setParameterValue(uint32_t index, float value)
|
||||||
break;
|
break;
|
||||||
case paramCutoff:
|
case paramCutoff:
|
||||||
fParams.cutoff = value;
|
fParams.cutoff = value;
|
||||||
fSynth.cutoff = value/2.5f;
|
fSynth.cutoff = value;
|
||||||
DISTRHO_SAFE_ASSERT(fSynth.cutoff >= 0.0f && fSynth.cutoff <= 40.0f);
|
DISTRHO_SAFE_ASSERT(fSynth.cutoff >= 0.0f && fSynth.cutoff <= 127.0f);
|
||||||
break;
|
break;
|
||||||
case paramResonance:
|
case paramResonance:
|
||||||
fParams.resonance = value;
|
fParams.resonance = value;
|
||||||
|
|
|
@ -63,9 +63,9 @@ DistrhoUINekobi::DistrhoUINekobi()
|
||||||
fKnobCutoff = new ImageKnob(this, knobImage, ImageKnob::Vertical);
|
fKnobCutoff = new ImageKnob(this, knobImage, ImageKnob::Vertical);
|
||||||
fKnobCutoff->setId(DistrhoPluginNekobi::paramCutoff);
|
fKnobCutoff->setId(DistrhoPluginNekobi::paramCutoff);
|
||||||
fKnobCutoff->setAbsolutePos(185, 43);
|
fKnobCutoff->setAbsolutePos(185, 43);
|
||||||
fKnobCutoff->setRange(0.0f, 100.0f);
|
fKnobCutoff->setRange(0.0f, 127.0f);
|
||||||
fKnobCutoff->setDefault(25.0f);
|
fKnobCutoff->setDefault(50.0f);
|
||||||
fKnobCutoff->setValue(25.0f);
|
fKnobCutoff->setValue(50.0f);
|
||||||
fKnobCutoff->setRotationAngle(305);
|
fKnobCutoff->setRotationAngle(305);
|
||||||
fKnobCutoff->setCallback(this);
|
fKnobCutoff->setCallback(this);
|
||||||
|
|
||||||
|
|
|
@ -96,17 +96,30 @@ void vco(nekobee_synth_t *synth, uint32_t count) {
|
||||||
osc->delay = delay;
|
osc->delay = delay;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void vcf(nekobee_synth_t *synth, uint32_t count) {
|
||||||
|
// run a 4-pole ladder filter over a block
|
||||||
|
// this is a crude implementation that only approximates the complex
|
||||||
|
// behaviour of the "real" ladder filter
|
||||||
|
|
||||||
|
nekobee_voice_t *voice = synth->voice;
|
||||||
|
printf("cutoff set to %f\n", synth->cutoff);
|
||||||
|
(void)voice;
|
||||||
|
(void)count;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void nekobee_voice_render(nekobee_synth_t *synth, float *out, uint32_t count) {
|
void nekobee_voice_render(nekobee_synth_t *synth, float *out, uint32_t count) {
|
||||||
// generate "count" samples into the buffer at out
|
// generate "count" samples into the buffer at out
|
||||||
|
|
||||||
vco(synth, count);
|
vco(synth, count);
|
||||||
|
|
||||||
|
vcf(synth, count);
|
||||||
|
|
||||||
for(uint32_t i=0; i<count; i++) {
|
for(uint32_t i=0; i<count; i++) {
|
||||||
out[i] = synth->voice->osc_audio[i];
|
out[i] = synth->voice->osc_audio[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
(void)synth;
|
|
||||||
(void)out;
|
|
||||||
(void)count;
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue