From d8a29a68bf11cae588750e96384ed935dcb7e978 Mon Sep 17 00:00:00 2001 From: falkTX Date: Thu, 31 Jan 2019 11:51:53 +0000 Subject: [PATCH] AU: working number of audio channels --- distrho/src/DistrhoPluginAU.cpp | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/distrho/src/DistrhoPluginAU.cpp b/distrho/src/DistrhoPluginAU.cpp index 9fad0e75..572104e8 100644 --- a/distrho/src/DistrhoPluginAU.cpp +++ b/distrho/src/DistrhoPluginAU.cpp @@ -49,7 +49,6 @@ public: : AUEffectBase(component), fLastValuesInit(), fPlugin(this, writeMidiCallback), - fNumChannels(0), fLastParameterValues(nullptr) { CreateElements(); @@ -213,13 +212,14 @@ protected: AudioBufferList& outBuffer, UInt32 inFramesToProcess) override { - const float* srcBuffer[fNumChannels]; - /* */ float* destBuffer[fNumChannels]; + const float* srcBuffer[DISTRHO_PLUGIN_NUM_INPUTS]; + /* */ float* destBuffer[DISTRHO_PLUGIN_NUM_OUTPUTS]; - for (uint32_t i = 0; i < fNumChannels; ++i) { + for (uint32_t i = 0; i < DISTRHO_PLUGIN_NUM_INPUTS; ++i) srcBuffer[i] = (const float*)inBuffer.mBuffers[i].mData; + + for (uint32_t i = 0; i < DISTRHO_PLUGIN_NUM_OUTPUTS; ++i) destBuffer[i] = (float *)outBuffer.mBuffers[i].mData; - } updateParameterInputs(); @@ -243,18 +243,23 @@ protected: fPlugin.activate(); - // FIXME this does not seem right - fNumChannels = GetNumberOfChannels(); - d_stdout("fNumChannels %u", fNumChannels); - DISTRHO_SAFE_ASSERT(fNumChannels == DISTRHO_PLUGIN_NUM_INPUTS); - return noErr; } void Cleanup() override { - AUEffectBase::Cleanup(); fPlugin.deactivate(); + AUEffectBase::Cleanup(); + } + + UInt32 SupportedNumChannels(const AUChannelInfo** outInfo) override + { + static const AUChannelInfo sChannels[1] = {{ DISTRHO_PLUGIN_NUM_INPUTS, DISTRHO_PLUGIN_NUM_OUTPUTS }}; + + if (outInfo != nullptr) + *outInfo = sChannels; + + return 1; } // ------------------------------------------------------------------- @@ -262,7 +267,6 @@ protected: private: LastValuesInit fLastValuesInit; PluginExporter fPlugin; - uint32_t fNumChannels; // Temporary data float* fLastParameterValues;