From 0715b7ebdddcbe480f45a07b2bdb9ff3b107dfb0 Mon Sep 17 00:00:00 2001 From: ed Date: Tue, 5 Jan 2021 12:13:07 +0000 Subject: [PATCH] VST3: Wrap program parameter changes in begin/endEdit() calls to ensure that automation data is recorded correctly --- .../VST3/juce_VST3_Wrapper.cpp | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) 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 587babb688..9f64711c3a 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 @@ public: 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 @@ public: 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; } }