1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-02-08 04:20:09 +00:00

Improve Multi channel AudioUnit code

This commit is contained in:
hogliux 2015-09-14 11:25:57 +01:00
parent cee5a77123
commit 28c2bd9d74

View file

@ -509,21 +509,29 @@ public:
AudioChannelLayout *outLayoutPtr,
Boolean &outWritable)
{
if (element == 0)
if (element == 0 && (scope == kAudioUnitScope_Output || scope == kAudioUnitScope_Input))
{
outWritable = true;
if (scope == kAudioUnitScope_Output)
const int numChannels = (scope == kAudioUnitScope_Output) ? findNumOutputChannels()
: findNumInputChannels();
if (outLayoutPtr != nullptr)
{
return static_cast<UInt32> (findNumOutputChannels());
}
else if (scope == kAudioUnitScope_Input)
{
#if JucePlugin_IsSynth
return 0;
#else
return static_cast<UInt32> (findNumInputChannels());
#endif
zeromem (outLayoutPtr, numChannels * sizeof (AudioChannelLayout));
for (int i = 0; i < numChannels; ++i)
{
AudioChannelLayout& layout = outLayoutPtr [i];
layout.mChannelLayoutTag = kAudioChannelLayoutTag_UseChannelDescriptions;
layout.mNumberChannelDescriptions = 1;
layout.mChannelDescriptions[0].mChannelLabel = kAudioChannelLabel_Unused;
layout.mChannelDescriptions[0].mChannelFlags = kAudioChannelFlags_AllOff;
}
}
return numChannels * sizeof (AudioChannelLayout);
}
return JuceAUBaseClass::GetAudioChannelLayout(scope, element, outLayoutPtr, outWritable);