Browse Source

AU fixes 2 (#118)

* AU fixes 2

* Try to fix params
pull/119/head
Damien Zammit Filipe Coelho <falktx@falktx.com> 7 years ago
parent
commit
797140d1ca
2 changed files with 30 additions and 5 deletions
  1. +3
    -3
      Makefile.plugins.mk
  2. +27
    -2
      distrho/src/DistrhoPluginAU.cpp

+ 3
- 3
Makefile.plugins.mk View File

@@ -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 $@



+ 27
- 2
distrho/src/DistrhoPluginAU.cpp View File

@@ -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;


Loading…
Cancel
Save