From fd392ecf56c8a625d8339b954ba1c801a03cb105 Mon Sep 17 00:00:00 2001 From: Gordon JC Pearce Date: Thu, 25 Dec 2025 23:21:12 +0000 Subject: [PATCH] proper parameter for chorus --- plugin/DistrhoPluginInfo.h | 2 +- plugin/parameters.cpp | 80 ++++++++++++++++++++++++-------------- plugin/ui.cpp | 8 ++-- 3 files changed, 55 insertions(+), 35 deletions(-) diff --git a/plugin/DistrhoPluginInfo.h b/plugin/DistrhoPluginInfo.h index 6370ea0..85daadc 100644 --- a/plugin/DistrhoPluginInfo.h +++ b/plugin/DistrhoPluginInfo.h @@ -63,7 +63,7 @@ pSustain, pRelease, - pChorus, + pChorusMode, parameterCount }; diff --git a/plugin/parameters.cpp b/plugin/parameters.cpp index bdc23ec..a73b9a3 100644 --- a/plugin/parameters.cpp +++ b/plugin/parameters.cpp @@ -23,7 +23,7 @@ void Peacock::initParameter(uint32_t index, Parameter& parameter) { case pLFORate: parameter.hints = kParameterIsAutomatable; parameter.name = "LFO Rate"; - parameter.symbol = "ch_lforate"; + parameter.symbol = "pfau_lforate"; parameter.ranges.min = 0.0f; parameter.ranges.max = 127.0f; parameter.ranges.def = 48.0f; @@ -33,7 +33,7 @@ void Peacock::initParameter(uint32_t index, Parameter& parameter) { case pLFODelay: parameter.hints = kParameterIsAutomatable; parameter.name = "LFO Delay"; - parameter.symbol = "ch_lfodelay"; + parameter.symbol = "pfau_lfodelay"; parameter.ranges.min = 0.0f; parameter.ranges.max = 127.0f; parameter.ranges.def = 0.0f; @@ -43,7 +43,7 @@ void Peacock::initParameter(uint32_t index, Parameter& parameter) { case pVCORange: parameter.hints = kParameterIsAutomatable | kParameterIsInteger; parameter.name = "Range"; - parameter.symbol = "ch_vcorange"; + parameter.symbol = "pfau_vcorange"; parameter.ranges.min = 0.0f; parameter.ranges.max = 2.0f; parameter.ranges.def = 1.0f; @@ -66,7 +66,7 @@ void Peacock::initParameter(uint32_t index, Parameter& parameter) { case pLFODepth: parameter.hints = kParameterIsAutomatable; parameter.name = "LFO"; - parameter.symbol = "ch_lfo"; + parameter.symbol = "pfau_lfo"; parameter.ranges.min = 0.0f; parameter.ranges.max = 127.0f; parameter.ranges.def = 10.0f; @@ -76,7 +76,7 @@ void Peacock::initParameter(uint32_t index, Parameter& parameter) { case pPWMDepth: parameter.hints = kParameterIsAutomatable; parameter.name = "PWM"; - parameter.symbol = "ch_pwm"; + parameter.symbol = "pfau_pwm"; parameter.ranges.min = 0.0f; parameter.ranges.max = 127.0f; parameter.ranges.def = 48.0f; @@ -86,7 +86,7 @@ void Peacock::initParameter(uint32_t index, Parameter& parameter) { case pPWMMode: parameter.hints = kParameterIsAutomatable | kParameterIsBoolean; parameter.name = "PWM Mode"; - parameter.symbol = "ch_pwmmode"; + parameter.symbol = "pfau_pwmmode"; parameter.ranges.min = 0.0f; parameter.ranges.max = 1.0f; parameter.ranges.def = 1.0f; @@ -107,7 +107,7 @@ void Peacock::initParameter(uint32_t index, Parameter& parameter) { case pSaw: parameter.hints = kParameterIsAutomatable | kParameterIsBoolean; parameter.name = "Saw"; - parameter.symbol = "ch_saw"; + parameter.symbol = "pfau_saw"; parameter.ranges.min = 0.0f; parameter.ranges.max = 1.0f; parameter.ranges.def = 1.0f; @@ -117,7 +117,7 @@ void Peacock::initParameter(uint32_t index, Parameter& parameter) { case pSqr: parameter.hints = kParameterIsAutomatable | kParameterIsBoolean; parameter.name = "Square"; - parameter.symbol = "ch_sqr"; + parameter.symbol = "pfau_sqr"; parameter.ranges.min = 0.0f; parameter.ranges.max = 1.0f; parameter.ranges.def = 1.0f; @@ -127,7 +127,7 @@ void Peacock::initParameter(uint32_t index, Parameter& parameter) { case pSubLevel: parameter.hints = kParameterIsAutomatable; parameter.name = "Sub Osc"; - parameter.symbol = "ch_sub"; + parameter.symbol = "pfau_sub"; parameter.ranges.min = 0.0f; parameter.ranges.max = 127.0f; parameter.ranges.def = 0.0f; @@ -137,7 +137,7 @@ void Peacock::initParameter(uint32_t index, Parameter& parameter) { case pNoiseLevel: parameter.hints = kParameterIsAutomatable; parameter.name = "Noise"; - parameter.symbol = "ch_noise"; + parameter.symbol = "pfau_noise"; parameter.ranges.min = 0.0f; parameter.ranges.max = 127.0f; parameter.ranges.def = 0.0f; @@ -147,7 +147,7 @@ void Peacock::initParameter(uint32_t index, Parameter& parameter) { case pHPF: parameter.hints = kParameterIsAutomatable | kParameterIsInteger; parameter.name = "HPF"; - parameter.symbol = "ch_hpf"; + parameter.symbol = "pfau_hpf"; parameter.ranges.min = 0.0f; parameter.ranges.max = 3.9f; parameter.ranges.def = 0.0f; @@ -157,7 +157,7 @@ void Peacock::initParameter(uint32_t index, Parameter& parameter) { case pCutoff: parameter.hints = kParameterIsAutomatable; parameter.name = "Freq"; - parameter.symbol = "ch_freq"; + parameter.symbol = "pfau_freq"; parameter.ranges.min = 0.0f; parameter.ranges.max = 127.0f; parameter.ranges.def = 60.0f; @@ -166,7 +166,7 @@ void Peacock::initParameter(uint32_t index, Parameter& parameter) { case pRes: parameter.hints = kParameterIsAutomatable; parameter.name = "Res"; - parameter.symbol = "ch_reso"; + parameter.symbol = "pfau_reso"; parameter.ranges.min = 0.0f; parameter.ranges.max = 127.0f; parameter.ranges.def = 0.0f; @@ -175,7 +175,7 @@ void Peacock::initParameter(uint32_t index, Parameter& parameter) { case pVCFPol: parameter.hints = kParameterIsAutomatable | kParameterIsInteger; parameter.name = "Polarity"; - parameter.symbol = "ch_vcfmode"; + parameter.symbol = "pfau_vcfmode"; parameter.ranges.min = 0.0f; parameter.ranges.max = 1.0f; parameter.ranges.def = 0.0f; @@ -195,7 +195,7 @@ void Peacock::initParameter(uint32_t index, Parameter& parameter) { case pEnv: parameter.hints = kParameterIsAutomatable; parameter.name = "Env"; - parameter.symbol = "ch_vcfenv"; + parameter.symbol = "pfau_vcfenv"; parameter.ranges.min = 0.0f; parameter.ranges.max = 127.0f; parameter.ranges.def = 46.0f; @@ -204,7 +204,7 @@ void Peacock::initParameter(uint32_t index, Parameter& parameter) { case pLfo: parameter.hints = kParameterIsAutomatable; parameter.name = "LFO"; - parameter.symbol = "ch_vcflfo"; + parameter.symbol = "pfau_vcflfo"; parameter.ranges.min = 0.0f; parameter.ranges.max = 127.0f; parameter.ranges.def = 0.0f; @@ -213,7 +213,7 @@ void Peacock::initParameter(uint32_t index, Parameter& parameter) { case pKyb: parameter.hints = kParameterIsAutomatable; parameter.name = "Kybd"; - parameter.symbol = "ch_vcfkey"; + parameter.symbol = "pfau_vcfkey"; parameter.ranges.min = 0.0f; parameter.ranges.max = 127.0f; parameter.ranges.def = 71.0f; @@ -223,7 +223,7 @@ void Peacock::initParameter(uint32_t index, Parameter& parameter) { case pAttack: parameter.hints = kParameterIsAutomatable; parameter.name = "Attack"; - parameter.symbol = "ch_attack"; + parameter.symbol = "pfau_attack"; parameter.ranges.min = 0.0f; parameter.ranges.max = 127.0f; parameter.ranges.def = 27.0f; @@ -233,7 +233,7 @@ void Peacock::initParameter(uint32_t index, Parameter& parameter) { case pDecay: parameter.hints = kParameterIsAutomatable; parameter.name = "Decay"; - parameter.symbol = "ch_decay"; + parameter.symbol = "pfau_decay"; parameter.ranges.min = 0.0f; parameter.ranges.max = 127.0f; parameter.ranges.def = 57.0f; @@ -243,7 +243,7 @@ void Peacock::initParameter(uint32_t index, Parameter& parameter) { case pSustain: parameter.hints = kParameterIsAutomatable; parameter.name = "Sustain"; - parameter.symbol = "ch_sustain"; + parameter.symbol = "pfau_sustain"; parameter.ranges.min = 0.0f; parameter.ranges.max = 127.0f; parameter.ranges.def = 57.0f; @@ -253,7 +253,7 @@ void Peacock::initParameter(uint32_t index, Parameter& parameter) { case pRelease: parameter.hints = kParameterIsAutomatable; parameter.name = "Release"; - parameter.symbol = "ch_release"; + parameter.symbol = "pfau_release"; parameter.ranges.min = 0.0f; parameter.ranges.max = 127.0f; parameter.ranges.def = 48.0f; @@ -263,7 +263,7 @@ void Peacock::initParameter(uint32_t index, Parameter& parameter) { case pEnvGate: parameter.hints = kParameterIsAutomatable | kParameterIsInteger; // | kParameterIsBoolean; parameter.name = "Env-Gate"; - parameter.symbol = "ch_envgate"; + parameter.symbol = "pfau_envgate"; parameter.ranges.min = 0.0f; parameter.ranges.max = 1.0f; parameter.ranges.def = 0.0f; @@ -283,17 +283,39 @@ void Peacock::initParameter(uint32_t index, Parameter& parameter) { case pVCALevel: parameter.hints = kParameterIsAutomatable; parameter.name = "VCA Level"; - parameter.symbol = "ch_vcalevel"; + parameter.symbol = "pfau_vcalevel"; parameter.ranges.min = 0.0f; parameter.ranges.max = 127.0f; parameter.ranges.def = 40.0f; parameter.midiCC = 26; break; + + case pChorusMode: + parameter.hints = kParameterIsAutomatable | kParameterIsInteger; + parameter.name = "Chorus"; + parameter.symbol = "pfau_chorus"; + parameter.ranges.min = 0.0f; + parameter.ranges.max = 2.0f; + parameter.ranges.def = 1.0f; + parameter.midiCC = 12; + parameter.enumValues.count = 3; + parameter.enumValues.restrictedMode = true; + { + ParameterEnumerationValue* const enumValues = new ParameterEnumerationValue[3]; + enumValues[0].value = 0.0f; + enumValues[0].label = "Off"; + enumValues[1].value = 1.0f; + enumValues[1].label = "Slow"; + enumValues[2].value = 2.0f; + enumValues[2].label = "Fast"; + parameter.enumValues.values = enumValues; + } + /* case pModWheel: parameter.hints = kParameterIsAutomatable | kParameterIsHidden; parameter.name = "Mod wheel"; - parameter.symbol = "ch_modwheel"; + parameter.symbol = "pfau_modwheel"; parameter.ranges.min = 0.0f; parameter.ranges.max = 127.0f; parameter.ranges.def = 0.0f; @@ -379,9 +401,9 @@ void Peacock::setParameterValue(uint32_t index, float value) { m->patchRam.switch1 |= (value >= 0.5) << 4; break; - case pChorus: + case pChorusMode: m->patchRam.switch1 &= 0x9f; - + switch ((int)value) { case 0: m->patchRam.switch1 |= 0x60; // both off @@ -506,8 +528,8 @@ float Peacock::getParameterValue(uint32_t index) const { case pVCALevel: return m->patchRam.vca; break; - case pChorus: - + case pChorusMode: + switch (m->patchRam.switch1 & 0x60) { case 0x60: return 0; @@ -518,8 +540,6 @@ float Peacock::getParameterValue(uint32_t index) const { default: break; } - - } return 0; } diff --git a/plugin/ui.cpp b/plugin/ui.cpp index 53819f4..c15ad38 100644 --- a/plugin/ui.cpp +++ b/plugin/ui.cpp @@ -268,7 +268,7 @@ void DistrhoUIPeacock::parameterChanged(uint32_t index, float value) { sw1 |= (value > 0.5) << 4; break; - case pChorus: + case pChorusMode: sw1 &= 0x9f; // 60, 40, 00 switch ((int)value) { @@ -325,15 +325,15 @@ void DistrhoUIPeacock::imageButtonClicked(ImageButton* imgBtn, int) { break; case btnCh0: sw1 = (sw1 & 0x9f) | 0x20; - setParameterValue(pChorus, 0); + setParameterValue(pChorusMode, 0); break; case btnCh1: sw1 = (sw1 & 0x9f) | 0x40; - setParameterValue(pChorus, 1); + setParameterValue(pChorusMode, 1); break; case btnCh2: sw1 = (sw1 & 0x9f); - setParameterValue(pChorus, 2); + setParameterValue(pChorusMode, 2); break; default: