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 271f0f8e59..4ee29755d5 100644 --- a/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp +++ b/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp @@ -614,15 +614,21 @@ public: { auto programValue = roundToInt (toPlain (v)); - if (! isPositiveAndBelow (programValue, owner.getNumPrograms()) - || programValue == owner.getCurrentProgram()) - return false; + if (isPositiveAndBelow (programValue, owner.getNumPrograms())) + { + if (programValue != owner.getCurrentProgram()) + owner.setCurrentProgram (programValue); - valueNormalized = v; - owner.setCurrentProgram (programValue); - changed(); + if (valueNormalized != v) + { + valueNormalized = v; + changed(); - return true; + return true; + } + } + + return false; } void toString (Vst::ParamValue value, Vst::String128 result) const override