Logic failing to load surround formats AU

I’m aware there are several similar topics running, but none are quite what I’m seeing:

Some surround formats of my AU plugin are not available in Logic, despite being allowed by my isBusesLayoutSupported(). Basically, the “add plugin” menu only shows multi-mono in some cases.

Using JUCE 6.1.3 I found that logic would “see” my 5.1 and Quad versions, but not the 7.1 or 7.1.2. Using the current JUCE develop branch (2022-04-21), Logic now sees the 7.1.2 version, but still not the 7.1.

Testing in Logic is incredibly slow and painful due to their caching and fussy validation nonsense, so it’s been really difficult to figure out why it’s failing. To make matters worse, the validation tool reports are inconsistent with the formats I specified in my plugin, inconsistent with what is available in Logic, different between juice 6.1.3 and ‘develop’, and difficult to actually read.

Here’s my isBusesLayoutSupported and the auval reports when using 6.1.3 and current develop:

bool SLJAudioProcessor::isBusesLayoutSupported (const AudioProcessor::BusesLayout& layouts) const
{
    const AudioChannelSet& mainInput  = layouts.getMainInputChannelSet();
    const AudioChannelSet& mainOutput = layouts.getMainOutputChannelSet();
    
    if (mainInput.isDisabled()) {  return false;  } // do not allow disabling the main buses
        
    auto isFormatSupported = [](const AudioChannelSet& fmt)
    {
        if(     fmt == AudioChannelSet::mono()
           ||   fmt == AudioChannelSet::stereo()
           ||   fmt == AudioChannelSet::createLCR()
           ||   fmt == AudioChannelSet::quadraphonic()
           ||   fmt == AudioChannelSet::create5point0()
           ||   fmt == AudioChannelSet::create5point1()
           ||   fmt == AudioChannelSet::create7point0()
           ||   fmt == AudioChannelSet::create7point1()
           ||   fmt == AudioChannelSet::create7point0point2()
           ||   fmt == AudioChannelSet::create7point1point2()
           )    {   return true;    }
        else    {   return false;   }
    };

    return isFormatSupported(mainInput) && isFormatSupported(mainOutput);
}

SlapperValidationComparison.zip (5.5 KB)

Logic 10.7.3
Monterey 12.2
Arm64

I see the same thing with Logic 10.6.3 on 10.15 (Intel) and Logic 10.7.4 on 12.3 (Arm). The plugin fails to open in 7.1 layout, but 7.1 SDDS works correctly.

I tested a few other plugins on 10.6.3 - Izotope Neutron 3 fails to load as 7.1, as does the IPlug2 Surround demo, and FabFilter ProQ 3. However, some other plugins (Voxengo Span Plus, Bute Loudness Analyzer, NUGEN VisLM) are able to load correctly as 7.1.

When I check these plugins in auval, it looks like the main difference is that the failing ones publish supported channel layouts, but the working ones do not.

Given that the issue seems to affect non-JUCE plugins, my guess is that Logic has a bug preventing it from properly configuring plugins with this specific channel layout.

@mfritze do you know whether this issue is known to the Logic team, and/or whether there’s a workaround for plugins?

I’ll suggest to use the ProAudio Seed program to provide a bug report.

Take a look at my attached auval outputs, in the “Reported Channel Capabilities (explicit):”
The JUCE6.1.3 version reports a large set of I/O configs, whereas the JUCE6.1.6_develop version reports only [-1, -2] . Same code in every way, other than the JUCE upgrades.

It’s also interesting that the j6.1.3 version reports many I/O configs, but not all of them - the 9 and 10 channel formats 7.0.2 and 7.1.2 and obviously not represented.