Browse Source

Improve trigger handling for VST2 and VST3

Signed-off-by: falkTX <falktx@falktx.com>
pull/443/head
falkTX 1 year ago
parent
commit
43aeb8bc4e
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
2 changed files with 11 additions and 8 deletions
  1. +6
    -5
      distrho/src/DistrhoPluginVST2.cpp
  2. +5
    -3
      distrho/src/DistrhoPluginVST3.cpp

+ 6
- 5
distrho/src/DistrhoPluginVST2.cpp View File

@@ -1167,7 +1167,7 @@ private:


void updateParameterOutputsAndTriggers() void updateParameterOutputsAndTriggers()
{ {
float curValue;
float curValue, defValue;


for (uint32_t i=0, count=fPlugin.getParameterCount(); i < count; ++i) for (uint32_t i=0, count=fPlugin.getParameterCount(); i < count; ++i)
{ {
@@ -1193,17 +1193,18 @@ private:
} }
else if ((fPlugin.getParameterHints(i) & kParameterIsTrigger) == kParameterIsTrigger) 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); curValue = fPlugin.getParameterValue(i);


if (d_isEqual(curValue, fPlugin.getParameterRanges(i).def))
if (d_isEqual(curValue, defValue))
continue; continue;


#if DISTRHO_PLUGIN_HAS_UI #if DISTRHO_PLUGIN_HAS_UI
if (fVstUI != nullptr) if (fVstUI != nullptr)
setParameterValueFromPlugin(i, curValue);
setParameterValueFromPlugin(i, defValue);
#endif #endif
fPlugin.setParameterValue(i, curValue);
fPlugin.setParameterValue(i, defValue);
} }
else else
{ {


+ 5
- 3
distrho/src/DistrhoPluginVST3.cpp View File

@@ -2870,7 +2870,7 @@ private:
{ {
DISTRHO_SAFE_ASSERT_RETURN(outparamsptr != nullptr,); DISTRHO_SAFE_ASSERT_RETURN(outparamsptr != nullptr,);


float curValue;
float curValue, defValue;
double normalized; double normalized;


#if DPF_VST3_USES_SEPARATE_CONTROLLER #if DPF_VST3_USES_SEPARATE_CONTROLLER
@@ -2897,12 +2897,14 @@ private:
} }
else if (fPlugin.isParameterTrigger(i)) 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); curValue = fPlugin.getParameterValue(i);


if (d_isEqual(curValue, fPlugin.getParameterDefault(i)))
if (d_isEqual(curValue, defValue))
continue; continue;


curValue = defValue;
fPlugin.setParameterValue(i, curValue); fPlugin.setParameterValue(i, curValue);
} }
else if (fParameterValuesChangedDuringProcessing[kVst3InternalParameterBaseCount + i]) else if (fParameterValuesChangedDuringProcessing[kVst3InternalParameterBaseCount + i])


Loading…
Cancel
Save