Multi output with Logic

I can set multiple outputs to my project and it works well except in Logic and garage band.

code:

        AudioProcessorBus b1("Main stereo bus", AudioChannelSet::stereo());
        AudioProcessorBus b2("group 1", AudioChannelSet::stereo());
        AudioProcessorBus b3("group 2", AudioChannelSet::stereo());
        AudioProcessorBus b4("kick 1", AudioChannelSet::stereo());
        AudioProcessorBus b5("kick 2", AudioChannelSet::stereo());
        AudioProcessorBus b6("kick 3", AudioChannelSet::stereo());
        AudioProcessorBus b7("hihat 1", AudioChannelSet::stereo());
        AudioProcessorBus b8("hihat 2", AudioChannelSet::stereo());
        AudioProcessorBus b9("tom 1", AudioChannelSet::stereo());
        AudioProcessorBus b10("tom 2", AudioChannelSet::stereo());
        AudioProcessorBus b11("tom 3", AudioChannelSet::stereo());
        AudioProcessorBus b12("snare", AudioChannelSet::stereo());
        AudioProcessorBus b13("crash", AudioChannelSet::stereo());
        
        busArrangement.outputBuses = {b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13};

 

avual says
WARNING: Source AU supports multi-channel output but does not provide a channel layout

AU VALIDATION SUCCEEDED.

 

So it accepts the AU but trying to open it in Logic gives an error with "Failed to load audio unit .. contact manufacturer...."

What am I missing?

Hi davidguda,

Unfortunately, Logic only supports a limited set of bus configurations:

You should probably add a few more buses to your plug-in and simply disable them:

AudioProcessorBus b1("Main stereo bus", AudioChannelSet::stereo());
AudioProcessorBus b2("group 1", AudioChannelSet::stereo());
AudioProcessorBus b3("group 2", AudioChannelSet::stereo());
AudioProcessorBus b4("kick 1", AudioChannelSet::stereo());
AudioProcessorBus b5("kick 2", AudioChannelSet::stereo());
AudioProcessorBus b6("kick 3", AudioChannelSet::stereo());
AudioProcessorBus b7("hihat 1", AudioChannelSet::stereo());
AudioProcessorBus b8("hihat 2", AudioChannelSet::stereo());
AudioProcessorBus b9("tom 1", AudioChannelSet::stereo());
AudioProcessorBus b10("tom 2", AudioChannelSet::stereo());
AudioProcessorBus b11("tom 3", AudioChannelSet::stereo());
AudioProcessorBus b12("snare", AudioChannelSet::stereo());
AudioProcessorBus b13("crash", AudioChannelSet::stereo());
AudioProcessorBus b14("", AudioChannelSet::disabled());
AudioProcessorBus b15("", AudioChannelSet::disabled());
AudioProcessorBus b16("", AudioChannelSet::disabled());

busArrangement.outputBuses = {b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16};

This should then work with logic.

For more information please see the sticky on multibus development.

OT, but can this stuff be written more neatly with C++11, e.g.

busArrangement.outputBuses = 
{ 
    { "Main stereo bus", AudioChannelSet::stereo() },
    { "group 1", AudioChannelSet::stereo() },
    { "group 2", AudioChannelSet::stereo() },
    { "kick 1", AudioChannelSet::stereo() },
    { "kick 2", AudioChannelSet::stereo() }
..etc

?

Has someone succeeded in having multiple outputs with Logic Pro 9? AU validation tool sees my three mono additional outputs, though I can’t see them in Logic Pro 9 like it is shown in Logic Pro X (or version 9 doesn’t support it?) Or does it only exist for AU instruments, not effects?

Have you tried the MultiOutSynth example (JUCE/examples/PlugInSamples/MultiOutSynth)?