diff --git a/distrho/src/DistrhoPluginVST2.cpp b/distrho/src/DistrhoPluginVST2.cpp index 1941b2bc..290e8e68 100644 --- a/distrho/src/DistrhoPluginVST2.cpp +++ b/distrho/src/DistrhoPluginVST2.cpp @@ -1167,7 +1167,7 @@ private: void updateParameterOutputsAndTriggers() { - float curValue; + float curValue, defValue; for (uint32_t i=0, count=fPlugin.getParameterCount(); i < count; ++i) { @@ -1193,17 +1193,18 @@ private: } else if ((fPlugin.getParameterHints(i) & kParameterIsTrigger) == kParameterIsTrigger) { - // NOTE: no trigger support in VST parameters, simulate it here + // NOTE: no trigger parameter support in VST2, simulate it here + defValue = fPlugin.getParameterDefault(i); curValue = fPlugin.getParameterValue(i); - if (d_isEqual(curValue, fPlugin.getParameterRanges(i).def)) + if (d_isEqual(curValue, defValue)) continue; #if DISTRHO_PLUGIN_HAS_UI if (fVstUI != nullptr) - setParameterValueFromPlugin(i, curValue); + setParameterValueFromPlugin(i, defValue); #endif - fPlugin.setParameterValue(i, curValue); + fPlugin.setParameterValue(i, defValue); } else { diff --git a/distrho/src/DistrhoPluginVST3.cpp b/distrho/src/DistrhoPluginVST3.cpp index 19ce5220..9df44ca7 100644 --- a/distrho/src/DistrhoPluginVST3.cpp +++ b/distrho/src/DistrhoPluginVST3.cpp @@ -2870,7 +2870,7 @@ private: { DISTRHO_SAFE_ASSERT_RETURN(outparamsptr != nullptr,); - float curValue; + float curValue, defValue; double normalized; #if DPF_VST3_USES_SEPARATE_CONTROLLER @@ -2897,12 +2897,14 @@ private: } else if (fPlugin.isParameterTrigger(i)) { - // NOTE: no trigger support in VST3 parameters, simulate it here + // NOTE: no trigger parameter support in VST3, simulate it here + defValue = fPlugin.getParameterDefault(i); curValue = fPlugin.getParameterValue(i); - if (d_isEqual(curValue, fPlugin.getParameterDefault(i))) + if (d_isEqual(curValue, defValue)) continue; + curValue = defValue; fPlugin.setParameterValue(i, curValue); } else if (fParameterValuesChangedDuringProcessing[kVst3InternalParameterBaseCount + i])