commit 43aeb8bc4ea3fa3f0b5c80cd76aa0144bbedf838
parent ee3d794e09a51b1f63782cbc61da83ed8745b0fa
Author: falkTX <falktx@falktx.com>
Date: Wed, 11 Oct 2023 14:39:26 +0200
Improve trigger handling for VST2 and VST3
Signed-off-by: falkTX <falktx@falktx.com>
Diffstat:
2 files changed, 11 insertions(+), 8 deletions(-)
diff --git 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
@@ -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])