Hey there,
We’re currently looking into supporting the new channel layouts above 8 speakers offered by the new Logic 10.7.0 update and are running into some issues.
As I understand from previous threads on multichannel support, the canonical way for this is to specify the default ioLayout in AudioProcessor and then override AudioProcessor::isBusesLayoutSupported which is what we use successfully for other DAWs like Reaper and Nuendo and also works for Logic 10.6 without issues.
Now, if I wanted to support the new layouts of Logic 10.7.0 exclusively (both ins and outs being 5.1.2, 5.1.4, 7.1.2 or 7.1.4) with the default layout 7.1.4in, 7.1.4out, I would do something like this:
with Processor : public juce::AudioProcessor
Processor.cpp
Processor::Processor(const juce::String& pluginName)
: AudioProcessor(juce::AudioProcessor::BusesProperties().withInput("Input",
juce::AudioChannelSet::create7point1point4(), true)
.withOutput("Output", juce::AudioChannelSet::create7point1point4(), true))
, pluginName_(pluginName)
{
}
and
bool Processor::isBusesLayoutSupported(const AudioProcessor::BusesLayout& busesLayout) const
{
if((busesLayout.getMainInputChannels() > 8) && (busesLayout.getMainInputChannels() > 8))
return true;
return false;
}
However, when I run this through auval, it does pass overall but I already get the following result, which already looks weird to me:
Reported Channel Capabilities (explicit):
[9, 1] [9, 2] [9, 3] [9, 4] [9, 5] [9, 6] [9, 7] [9, 8] [9, 9] [12, 12]
Input/Output Channel Handling:
1-1 1-2 1-4 1-5 1-6 1-7 1-8 2-2 2-4 2-5 2-6 2-7 2-8 4-4 4-5 5-5 6-6 7-7 8-8 12-12
X
ca_require: ValidFormat(inScope, inElement, newDesc) InvalidFormat ../ThirdParty/juce/modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUBase.cpp:870
From other threads in the forum, I know that auval can’t be trusted to translate 1:1 to Logic’s functionality but when I load the plugin in Logic 10.7.0, I cannot instantiate it for any of the new Surround configurations.
This is with Mac 10.6 x86 architecture
What’s even stranger:
When I load the same plugin on Mac 12.0.1 (Apple Silicon), I can instantiate the plugin for 7.1.4 but exclusively for this format. No success for 5.1.2, 5.1.4 and 7.1.2 as I would expect.
I know Logic 10.7.0 is very fresh, but I wanted to make sure there is no misunderstanding on my side for the best practice here.
Is there anything I missed?
Did Logic break compatibility with JUCE’s handling of channelLayouts?
In terms of JUCE versions, I tried the newest commit off of develop (8aabde768) as well as master (e6ec1819e) with the same results.
I would appreciate any more info on this.
Thanks a lot,
Simon
