Browse Source

Fix VST values from host if parameter if integer or boolean

pull/64/head
falkTX 5 years ago
parent
commit
3bbbef19fe
1 changed files with 14 additions and 1 deletions
  1. +14
    -1
      distrho/src/DistrhoPluginVST.cpp

+ 14
- 1
distrho/src/DistrhoPluginVST.cpp View File

@@ -906,9 +906,22 @@ public:
return ranges.getNormalizedValue(fPlugin.getParameterValue(index));
}

void vst_setParameter(const int32_t index, const float value)
void vst_setParameter(const int32_t index, float value)
{
const uint32_t hints(fPlugin.getParameterHints(index));
const ParameterRanges& ranges(fPlugin.getParameterRanges(index));

if (hints & kParameterIsBoolean)
{
const float midRange = ranges.min + (ranges.max - ranges.min) / 2.0f;

value = value > midRange ? ranges.max : ranges.min;
}
else if (hints & kParameterIsInteger)
{
value = std::round(value);
}

const float realValue(ranges.getUnnormalizedValue(value));
fPlugin.setParameterValue(index, realValue);



Loading…
Cancel
Save