diff --git a/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp b/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp index 587babb6885f..9f64711c3a77 100644 --- a/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp +++ b/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp @@ -594,19 +594,13 @@ class JuceVST3EditController : public Vst::EditController, bool setNormalized (Vst::ParamValue v) override { - Vst::ParamValue program = v * info.stepCount; - - if (! isPositiveAndBelow ((int) program, owner.getNumPrograms())) + if (! isPositiveAndBelow ((int) toPlain (v), owner.getNumPrograms()) + || v == valueNormalized) return false; - if (valueNormalized != v) - { - valueNormalized = v; - changed(); - return true; - } - - return false; + valueNormalized = v; + changed(); + return true; } void toString (Vst::ParamValue value, Vst::String128 result) const override @@ -954,7 +948,10 @@ class JuceVST3EditController : public Vst::EditController, if (paramValue != EditController::getParamNormalized (JuceAudioProcessor::paramPreset)) { - EditController::setParamNormalized (JuceAudioProcessor::paramPreset, paramValue); + beginEdit (JuceAudioProcessor::paramPreset); + paramChanged (JuceAudioProcessor::paramPreset, (float) paramValue); + endEdit (JuceAudioProcessor::paramPreset); + flags |= Vst::kParamValuesChanged; } }