From 797140d1ca54b176cc01b4a28d07f6b98edba031 Mon Sep 17 00:00:00 2001 From: Damien Zammit Date: Sun, 27 Jan 2019 18:32:27 +1000 Subject: AU fixes 2 (#118) * AU fixes 2 * Try to fix params --- Makefile.plugins.mk | 6 +++--- distrho/src/DistrhoPluginAU.cpp | 29 +++++++++++++++++++++++++++-- 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/Makefile.plugins.mk b/Makefile.plugins.mk index 4fb5c3e2..e3fad401 100644 --- a/Makefile.plugins.mk +++ b/Makefile.plugins.mk @@ -79,8 +79,6 @@ AU_LINK_FLAGS = \ -bundle \ -framework AudioToolbox \ -framework AudioUnit \ - -framework CoreAudio \ - -framework CoreServices \ -exported_symbols_list $(DPF_PATH)/distrho/src/DistrhoPluginAU.exp # not needed yet @@ -88,7 +86,8 @@ AU_LINK_FLAGS = \ # -I$(DPF_PATH)/distrho/src/CoreAudio106/AudioUnits/AUPublic/AUInstrumentBase # -I$(DPF_PATH)/distrho/src/CoreAudio106/AudioUnits/AUPublic/AUViewBase # -I$(DPF_PATH)/distrho/src/CoreAudio106/AudioUnits/AUPublic/OtherBases - +# -framework CoreAudio \ +# -framework CoreServices \ # --------------------------------------------------------------------------------------------------------------------- # Handle UI stuff, disable UI support automatically @@ -319,6 +318,7 @@ $(BUILD_DIR)/step1.rsrc: $(DPF_PATH)/distrho/src/DistrhoPluginAU.r $(BUILD_DIR)/ -i $(DPF_PATH)/distrho/src/CoreAudio106/AudioUnits/AUPublic/OtherBases \ -i $(DPF_PATH)/distrho/src/CoreAudio106/AudioUnits/AUPublic/Utility \ -i $(DPF_PATH)/distrho/src/CoreAudio106/PublicUtility \ + ${REZFLAGS} \ -I /System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Versions/A/Headers \ -o $@ diff --git a/distrho/src/DistrhoPluginAU.cpp b/distrho/src/DistrhoPluginAU.cpp index 015d01ac..c31e9c08 100644 --- a/distrho/src/DistrhoPluginAU.cpp +++ b/distrho/src/DistrhoPluginAU.cpp @@ -164,10 +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 index) override + { + AudioUnitParameterValue value = AUEffectBase::GetParameter(index); + //printf("GET: id=%d val=%f\n", index, value); + return value; } bool SupportsTail() override @@ -194,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; -- cgit v1.2.3