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 21f72ec698..5f326a8009 100644 --- a/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp +++ b/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp @@ -705,9 +705,22 @@ public: //============================================================================== tresult PLUGIN_API setComponentState (IBStream* stream) override { - // Cubase and Nuendo need to inform the host of the current parameter values - for (auto vstParamId : audioProcessor->vstParamIDs) - setParamNormalized (vstParamId, audioProcessor->getParamForVSTParamID (vstParamId)->getValue()); + if (auto* pluginInstance = getPluginInstance()) + { + for (auto vstParamId : audioProcessor->vstParamIDs) + { + auto paramValue = [&] + { + if (vstParamId == JuceAudioProcessor::paramPreset) + return EditController::plainParamToNormalized (JuceAudioProcessor::paramPreset, + pluginInstance->getCurrentProgram()); + + return (double) audioProcessor->getParamForVSTParamID (vstParamId)->getValue(); + }(); + + setParamNormalized (vstParamId, paramValue); + } + } if (auto* handler = getComponentHandler()) handler->restartComponent (Vst::kParamValuesChanged);