summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Zammit <damien@zamaudio.com>2019-01-27 18:32:27 +1000
committerFilipe Coelho <falktx@falktx.com>2019-01-27 09:32:27 +0100
commit797140d1ca54b176cc01b4a28d07f6b98edba031 (patch)
tree1580cf3a455f13fb8cfea61fa7e5a32dd37467f1
parent3a75e272d8f91bd28978ed24c4f1f8916cb519d6 (diff)
AU fixes 2 (#118)
* AU fixes 2 * Try to fix params
-rw-r--r--Makefile.plugins.mk6
-rw-r--r--distrho/src/DistrhoPluginAU.cpp29
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;