From fb103da044fbf4f6f23bbd239d2557758f64ddfd Mon Sep 17 00:00:00 2001 From: Damien Zammit Date: Sun, 27 Jan 2019 15:12:29 +1100 Subject: [PATCH] Try to fix params --- distrho/src/DistrhoPluginAU.cpp | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/distrho/src/DistrhoPluginAU.cpp b/distrho/src/DistrhoPluginAU.cpp index 7600f523..c31e9c08 100644 --- a/distrho/src/DistrhoPluginAU.cpp +++ b/distrho/src/DistrhoPluginAU.cpp @@ -164,15 +164,31 @@ public: return AUEffectBase::GetProperty (inID, inScope, inElement, outData); } - void SetParameter(AudioUnitParameterID paramID, + void SetParameter(AudioUnitParameterID index, AudioUnitParameterValue value) override { - fPlugin.setParameterValue(paramID, (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); + } + + fPlugin.setParameterValue(index, value); + //printf("SET: id=%d val=%f\n", index, value); } - AudioUnitParameterValue GetParameter(AudioUnitParameterID paramID) override + AudioUnitParameterValue GetParameter(AudioUnitParameterID index) override { - return fPlugin.getParameterValue(paramID); + AudioUnitParameterValue value = AUEffectBase::GetParameter(index); + //printf("GET: id=%d val=%f\n", index, value); + return value; } bool SupportsTail() override @@ -199,6 +215,10 @@ public: destBuffer[i] = (Float32 *)outBuffer.mBuffers[i].mData; } + for (i = 0; i < fPlugin.getParameterCount(); i++) { + SetParameter(i, GetParameter(i)); + } + fPlugin.run((const float **)srcBuffer, (float **)destBuffer, inFramesToProcess); ioActionFlags &= ~kAudioUnitRenderAction_OutputIsSilence;