# Logic X - AU - Channel list incorrect

**URL:** <https://forum.juce.com/t/logic-x-au-channel-list-incorrect/44403>\
**Category:** Audio Plugins\
**Created:** [February 13, 2021, 9:25am UTC](https://forum.juce.com/t/logic-x-au-channel-list-incorrect/44403 "2021-02-13T09:25:46Z")\
**Posts on this page:** 20\
**Page:** 2

<div class="post-metadata">

**Author:** ![bobthedog](https://avatars.discourse-cdn.com/v4/letter/b/977dab/32.png) [@bobthedog](https://forum.juce.com/u/bobthedog)\
**Post date:** [February 23, 2021, 10:30am UTC](https://forum.juce.com/t/logic-x-au-channel-list-incorrect/44403/21 "2021-02-23T10:30:31Z")

</div>

I really don’t understand what is going on here!

I know have auval showing this:

```auto
--------------------------------------------------
FORMAT TESTS:

Reported Channel Capabilities (explicit):
      [0, 1] [0, 2] [0, 3] [0, 4] [0, 5] [0, 6] [0, 7] [0, 8]  

No Input, Output Chans:
0-1 0-2 0-4 0-5 0-6 0-7 0-8
X X X X X X X     

ChannelLayout is Writable: T
The Unit publishes the following Channel Layouts:
  0x640001, 0x650002, 0x710003, 0x750005, 0x790006, 0x7D0007, 0x7E0008, 0x6C0004, 0x660002, 0x670002, 0x6A0002, 0x720003, 0x760005, 0x770005, 0x780005, 0x7A0006, 0x7B0006, 0x7C0006, 0x7F0008, 0x810008, 0x840004, 0x8E0007, 0x960003, 0x9D0007, 0x9E0007, 0xA10008, 0xB60007, 0xB10008, 0x930000, 

Is Audio Channel Layout Available:
Mono Stereo Binau. AU_4 Ambi. AU_5 AU_5_0 AU_6 AU_6_0 AU_7_0 AU_7_0F AU_8 AU_5_1 AU_6_1 AU_7_1 AU_7_1F 
X X X X X X X X       

```

And logic 10.5.1 thinking it supports only mono and stereo.

---

<div class="post-metadata">

**Author:** ![bobthedog](https://avatars.discourse-cdn.com/v4/letter/b/977dab/32.png) [@bobthedog](https://forum.juce.com/u/bobthedog)\
**Post date:** [February 23, 2021, 12:24pm UTC](https://forum.juce.com/t/logic-x-au-channel-list-incorrect/44403/22 "2021-02-23T12:24:21Z")

</div>

So I’m trying to get my head around channel layouts without dynamic buses.

I took the AudioPluginExample and changed:

```auto
    bool isBusesLayoutSupported (const BusesLayout& layouts) const override
    {
        // Only mono/stereo and input/output must have same layout
        const auto& mainOutput = layouts.getMainOutputChannelSet();
        const auto& mainInput = layouts.getMainInputChannelSet();
      
        // no inputs allowed
        if(mainInput.size() != 0)
          return false;
      
        // only allow stereo and eight channel outputs
        if(mainOutput != AudioChannelSet::create7point1SDDS() && mainOutput != AudioChannelSet::stereo())
          return false;
      
        return true;
    }

```

and

```auto
    static BusesProperties getBusesProperties()
    {
      return BusesProperties().withOutput ("Output", AudioChannelSet::create7point1SDDS(), true);
    }

```

So we should have 2 and 8 channel output, looks good in auval:

```auto
FORMAT TESTS:

Reported Channel Capabilities (explicit):
      [0, 2] [0, 8]  

No Input, Output Chans:
0-1 0-2 0-4 0-5 0-6 0-7 0-8
      X X     

ChannelLayout is Writable: T
The Unit publishes the following Channel Layouts:
  0x650002, 0x7E0008, 0x660002, 0x670002, 0x6A0002, 0x7F0008, 0x810008, 0xA10008, 0xB10008, 

Is Audio Channel Layout Available:
Mono Stereo Binau. AU_4 Ambi. AU_5 AU_5_0 AU_6 AU_6_0 AU_7_0 AU_7_0F AU_8 AU_5_1 AU_6_1 AU_7_1 AU_7_1F 
        X X X       

```

So I then tried in some hosts:

AudioPluginHost : Opens as 8 channels, allows change to 2 channels.

Waveform 11.5 : Opens as 8 channels, allows change to 2 channels but crashes in AUBufferList::CopyBufferContentsTo

Ableton Live 10 & 11 : Stereo only.

Bidule: Allows choice of 2 and 8 channels on instantiation.

Logic 10.5.1 : Stereo only.

Reaper : creates 8 only

So to me it looks like Live and Logic are not supporting channel layouts, or am I getting something totally wrong here?

---

<div class="post-metadata">

**Author:** ![reuk](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/reuk/32/21494_2.png) [@reuk](https://forum.juce.com/u/reuk)\
**Post date:** [February 23, 2021, 1:23pm UTC](https://forum.juce.com/t/logic-x-au-channel-list-incorrect/44403/23 "2021-02-23T13:23:37Z")

</div>

Edit: I thought I was seeing different behaviour on different OS versions, but it turned out I had the Surround “Advanced Tools” option disabled on one of my machines, so this was user error on my part.

---

<div class="post-metadata">

**Author:** ![bobthedog](https://avatars.discourse-cdn.com/v4/letter/b/977dab/32.png) [@bobthedog](https://forum.juce.com/u/bobthedog)\
**Post date:** [February 23, 2021, 2:57pm UTC](https://forum.juce.com/t/logic-x-au-channel-list-incorrect/44403/24 "2021-02-23T14:57:20Z")

</div>

Yeah here on 10.14.6/10.5.1 unless you have a stereo format the plugin doesn’t appear in the menu but does appear in plugin manager. So it is like it is only supporting stereo channel layouts, same in Ableton live.

I have a M1 machine with Big Sur/10.6.1 here and a VM Running Catalina, I will boot them up and have a look…

---

<div class="post-metadata">

**Author:** ![bobthedog](https://avatars.discourse-cdn.com/v4/letter/b/977dab/32.png) [@bobthedog](https://forum.juce.com/u/bobthedog)\
**Post date:** [February 23, 2021, 3:39pm UTC](https://forum.juce.com/t/logic-x-au-channel-list-incorrect/44403/26 "2021-02-23T15:39:37Z")

</div>

I have been changing the component version which forces a scan and update of channels.

With my 2/8 channel plugin I still only get stereo in Catalina/10.6.1 and Big Sur/10.6.0.

I’m trying to update to 10.6.1 on Big Sur but something is going wrong!

@reuk could you give me the exact buses properties and isBusesLayoutSupported for your 5.1 format and I will try it here…

Edit: got 10.6.1 on big sur going, still only stereo. At least it is consistent here!

Edit2: Got stereo and 5.1 going on BigSur, it must not like 7point1SDDS. Will look on other machines now…

---

<div class="post-metadata">

**Author:** ![reuk](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/reuk/32/21494_2.png) [@reuk](https://forum.juce.com/u/reuk)\
**Post date:** [February 23, 2021, 3:52pm UTC](https://forum.juce.com/t/logic-x-au-channel-list-incorrect/44403/27 "2021-02-23T15:52:02Z")

</div>

Sure, my AudioPluginDemo has this in `isBusesLayoutSupported`:

```auto
        const auto& mainOutput = layouts.getMainOutputChannelSet();
        const auto& mainInput = layouts.getMainInputChannelSet();

        if (! mainInput.isEmpty())
          return false;

        return mainOutput == AudioChannelSet::create5point1();

```

getBusesProperties looks like this:

```auto
    static BusesProperties getBusesProperties()
    {
        return BusesProperties().withOutput ("Output", AudioChannelSet::create5point1(), true);
    }

```

auval output:

```auto
Reported Channel Capabilities (explicit):
      [0, 6]  

No Input, Output Chans:
0-1 0-2 0-4 0-5 0-6 0-7 0-8
                        X                 
# # AudioChannelLayouts (4), Output Scope:
ChannelLayout is Writable: T
The Unit publishes the following Channel Layouts:
  0x790006, 0x7A0006, 0x7B0006, 0x7C0006, 

Is Audio Channel Layout Available:
Mono Stereo Binau. AU_4 Ambi. AU_5 AU_5_0 AU_6 AU_6_0 AU_7_0 AU_7_0F AU_8 AU_5_1 AU_6_1 AU_7_1 AU_7_1F 
                                                                                                X                               

Current Format:AudioStreamBasicDescription: 6 ch, 44100 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved
Current Format Tag = 0x790006, New Format Tag = 0x790006, Successsful

```

---

<div class="post-metadata">

**Author:** ![bobthedog](https://avatars.discourse-cdn.com/v4/letter/b/977dab/32.png) [@bobthedog](https://forum.juce.com/u/bobthedog)\
**Post date:** [February 23, 2021, 4:02pm UTC](https://forum.juce.com/t/logic-x-au-channel-list-incorrect/44403/28 "2021-02-23T16:02:58Z")

</div>

Thanks.

With a stereo/5.1 setup I see both stereo and 5.1 on both catalina and big sur. So working fine.

On 10.5.1 on Mojave I only see stereo. So not working.

Which does lead to the question what is the difference between our Catalinas!

Also I wonder why Logic doesn’t like: AU\_7\_1F

---

<div class="post-metadata">

**Author:** ![reuk](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/reuk/32/21494_2.png) [@reuk](https://forum.juce.com/u/reuk)\
**Post date:** [February 23, 2021, 4:10pm UTC](https://forum.juce.com/t/logic-x-au-channel-list-incorrect/44403/29 "2021-02-23T16:10:19Z")

</div>

Ah, I just discovered the ‘Surround’ option in the ‘Advanced Tools’ from the preference pane. I had this disabled on Catalina but enabled on Big Sur. With it enabled on both, the plugin can be found on both OS versions. Is there a chance you have this setting disabled on your Mojave machine?

---

<div class="post-metadata">

**Author:** ![bobthedog](https://avatars.discourse-cdn.com/v4/letter/b/977dab/32.png) [@bobthedog](https://forum.juce.com/u/bobthedog)\
**Post date:** [February 23, 2021, 4:22pm UTC](https://forum.juce.com/t/logic-x-au-channel-list-incorrect/44403/30 "2021-02-23T16:22:43Z")

</div>

Good catch, that was exactly the problem.

Thanks, time for a beer now 🙂

---

<div class="post-metadata">

**Author:** ![bobthedog](https://avatars.discourse-cdn.com/v4/letter/b/977dab/32.png) [@bobthedog](https://forum.juce.com/u/bobthedog)\
**Post date:** [February 23, 2021, 4:38pm UTC](https://forum.juce.com/t/logic-x-au-channel-list-incorrect/44403/31 "2021-02-23T16:38:47Z")

</div>

So now it is making a bit more sense, taking this stereo/5.1 and allowing buses to be added we get:

![screenshot_704](https://us1.discourse-cdn.com/flex026/uploads/juce/original/2X/7/758528e27d160152bed6ef205e3c78d19c34268d.png)

So Logic seems to allow you to create single bus versions of the channel layouts and also multi-bus layouts for stereo.

---

<div class="post-metadata">

**Author:** ![buncker](https://avatars.discourse-cdn.com/v4/letter/b/4af34b/32.png) [@buncker](https://forum.juce.com/u/buncker)\
**Post date:** [February 25, 2021, 11:12am UTC](https://forum.juce.com/t/logic-x-au-channel-list-incorrect/44403/32 "2021-02-25T11:12:34Z")

</div>

BTW - here is some info from SuperiorDrummer3  
 ![image](https://us1.discourse-cdn.com/flex026/uploads/juce/original/2X/1/1e85fbc0d9e6bc1f8c81f8091612f164e9660bd3.png)

AUVAL log:

validating Audio Unit Superior Drummer 3 by Toontrack:

```
AU Validation Tool
Version: 1.7.0 
Copyright 2003-2019, Apple Inc. All Rights Reserved.
Specify -h (-help) for command options

```

* * *

## VALIDATING AUDIO UNIT: ‘aumu’ - ‘SD3a’ - ‘Toon’

Manufacturer String: Toontrack  
AudioUnit Name: Superior Drummer 3  
Component Version: 3.2.3 (0x30203)

- 
  - PASS

* * *

TESTING OPEN TIMES:  
COLD:  
Time to open AudioUnit: 294.437 ms  
WARM:  
Time to open AudioUnit: 27.292 ms  
FIRST TIME:  
Time for initialization: 0.139 ms

- 
  - PASS

* * *

VERIFYING DEFAULT SCOPE FORMATS:  
Input Scope Bus Configuration:  
Default Bus Count:0

Output Scope Bus Configuration:  
Default Bus Count:16  
Bus Name: S1/2  
Format Bus 0: AudioStreamBasicDescription: 2 ch, 44100 Hz, ‘lpcm’ (0x00000029) 32-bit little-endian float, deinterleaved  
Bus Name: S3/4  
Format Bus 1: AudioStreamBasicDescription: 2 ch, 44100 Hz, ‘lpcm’ (0x00000029) 32-bit little-endian float, deinterleaved  
Bus Name: S5/6  
Format Bus 2: AudioStreamBasicDescription: 2 ch, 44100 Hz, ‘lpcm’ (0x00000029) 32-bit little-endian float, deinterleaved  
Bus Name: S7/8  
Format Bus 3: AudioStreamBasicDescription: 2 ch, 44100 Hz, ‘lpcm’ (0x00000029) 32-bit little-endian float, deinterleaved  
Bus Name: S9/10  
Format Bus 4: AudioStreamBasicDescription: 2 ch, 44100 Hz, ‘lpcm’ (0x00000029) 32-bit little-endian float, deinterleaved  
Bus Name: S11/12  
Format Bus 5: AudioStreamBasicDescription: 2 ch, 44100 Hz, ‘lpcm’ (0x00000029) 32-bit little-endian float, deinterleaved  
Bus Name: S13/14  
Format Bus 6: AudioStreamBasicDescription: 2 ch, 44100 Hz, ‘lpcm’ (0x00000029) 32-bit little-endian float, deinterleaved  
Bus Name: S15/16  
Format Bus 7: AudioStreamBasicDescription: 2 ch, 44100 Hz, ‘lpcm’ (0x00000029) 32-bit little-endian float, deinterleaved  
Bus Name: S17/18  
Format Bus 8: AudioStreamBasicDescription: 2 ch, 44100 Hz, ‘lpcm’ (0x00000029) 32-bit little-endian float, deinterleaved  
Bus Name: S19/20  
Format Bus 9: AudioStreamBasicDescription: 2 ch, 44100 Hz, ‘lpcm’ (0x00000029) 32-bit little-endian float, deinterleaved  
Bus Name: S21/22  
Format Bus 10: AudioStreamBasicDescription: 2 ch, 44100 Hz, ‘lpcm’ (0x00000029) 32-bit little-endian float, deinterleaved  
Bus Name: S23/24  
Format Bus 11: AudioStreamBasicDescription: 2 ch, 44100 Hz, ‘lpcm’ (0x00000029) 32-bit little-endian float, deinterleaved  
Bus Name: S25/26  
Format Bus 12: AudioStreamBasicDescription: 2 ch, 44100 Hz, ‘lpcm’ (0x00000029) 32-bit little-endian float, deinterleaved  
Bus Name: S27/28  
Format Bus 13: AudioStreamBasicDescription: 2 ch, 44100 Hz, ‘lpcm’ (0x00000029) 32-bit little-endian float, deinterleaved  
Bus Name: S29/30  
Format Bus 14: AudioStreamBasicDescription: 2 ch, 44100 Hz, ‘lpcm’ (0x00000029) 32-bit little-endian float, deinterleaved  
Bus Name: S31/32  
Format Bus 15: AudioStreamBasicDescription: 2 ch, 44100 Hz, ‘lpcm’ (0x00000029) 32-bit little-endian float, deinterleaved  
Bus 0, Has Channel Layouts: 0x650002 0x660002 0x670002 0x6A0002  
Default Layout (bus 0):  
Tag=0x650002, Num Chan Descs=0  
Bus 1, Has Channel Layouts: 0x650002 0x660002 0x670002 0x6A0002  
Default Layout (bus 1):  
Tag=0x650002, Num Chan Descs=0  
Bus 2, Has Channel Layouts: 0x650002 0x660002 0x670002 0x6A0002  
Default Layout (bus 2):  
Tag=0x650002, Num Chan Descs=0  
Bus 3, Has Channel Layouts: 0x650002 0x660002 0x670002 0x6A0002  
Default Layout (bus 3):  
Tag=0x650002, Num Chan Descs=0  
Bus 4, Has Channel Layouts: 0x650002 0x660002 0x670002 0x6A0002  
Default Layout (bus 4):  
Tag=0x650002, Num Chan Descs=0  
Bus 5, Has Channel Layouts: 0x650002 0x660002 0x670002 0x6A0002  
Default Layout (bus 5):  
Tag=0x650002, Num Chan Descs=0  
Bus 6, Has Channel Layouts: 0x650002 0x660002 0x670002 0x6A0002  
Default Layout (bus 6):  
Tag=0x650002, Num Chan Descs=0  
Bus 7, Has Channel Layouts: 0x650002 0x660002 0x670002 0x6A0002  
Default Layout (bus 7):  
Tag=0x650002, Num Chan Descs=0  
Bus 8, Has Channel Layouts: 0x650002 0x660002 0x670002 0x6A0002  
Default Layout (bus 8):  
Tag=0x650002, Num Chan Descs=0  
Bus 9, Has Channel Layouts: 0x650002 0x660002 0x670002 0x6A0002  
Default Layout (bus 9):  
Tag=0x650002, Num Chan Descs=0  
Bus 10, Has Channel Layouts: 0x650002 0x660002 0x670002 0x6A0002  
Default Layout (bus 10):  
Tag=0x650002, Num Chan Descs=0  
Bus 11, Has Channel Layouts: 0x650002 0x660002 0x670002 0x6A0002  
Default Layout (bus 11):  
Tag=0x650002, Num Chan Descs=0  
Bus 12, Has Channel Layouts: 0x650002 0x660002 0x670002 0x6A0002  
Default Layout (bus 12):  
Tag=0x650002, Num Chan Descs=0  
Bus 13, Has Channel Layouts: 0x650002 0x660002 0x670002 0x6A0002  
Default Layout (bus 13):  
Tag=0x650002, Num Chan Descs=0  
Bus 14, Has Channel Layouts: 0x650002 0x660002 0x670002 0x6A0002  
Default Layout (bus 14):  
Tag=0x650002, Num Chan Descs=0  
Bus 15, Has Channel Layouts: 0x650002 0x660002 0x670002 0x6A0002  
Default Layout (bus 15):  
Tag=0x650002, Num Chan Descs=0

- 
  - PASS

* * *

VERIFYING REQUIRED PROPERTIES:

- 
  - PASS

* * *

VERIFYING RECOMMENDED PROPERTIES:  
VERIFYING PROPERTY: Latency  
PASS

- 
  - PASS

* * *

VERIFYING OPTIONAL PROPERTIES:  
VERIFYING PROPERTY Tail Time  
PASS  
VERIFYING PROPERTY Bypass Effect  
PASS

- 
  - PASS

* * *

VERIFYING SPECIAL PROPERTIES:

VERIFYING CUSTOM UI  
Cocoa Views Available: 1  
JUCE\_AUCocoaViewClass\_3c4416ffde16275  
PASS

HAS FACTORY PRESETS

VERIFYING CLASS INFO  
PASS

TESTING HOST CALLBACKS  
PASS

- 
  - PASS

* * *

PUBLISHED PARAMETER INFO:

# # # 100 Global Scope Parameters:

WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set  
WARNING: retrievedValue = 0.000000 (was 1.000000), Parameter did not retain maximum value when set

- 
  - PASS

* * *

FORMAT TESTS:

Reported Channel Capabilities (explicit):  
[0, 2]

No Input, Output Chans:  
0-1 0-2 0-4 0-5 0-6 0-7 0-8  
X

# # AudioChannelLayouts (4), Output Scope:

ChannelLayout is Writable: T  
The Unit publishes the following Channel Layouts:  
0x650002, 0x660002, 0x670002, 0x6A0002,

Is Audio Channel Layout Available:  
Mono Stereo Binau. AU\_4 Ambi. AU\_5 AU\_5\_0 AU\_6 AU\_6\_0 AU\_7\_0 AU\_7\_0F AU\_8 AU\_5\_1 AU\_6\_1 AU\_7\_1 AU\_7\_1F  
X X

Current Format:AudioStreamBasicDescription: 2 ch, 44100 Hz, ‘lpcm’ (0x00000029) 32-bit little-endian float, deinterleaved  
Current Format Tag = 0x650002, New Format Tag = 0x650002, Successsful

Current Format:AudioStreamBasicDescription: 2 ch, 44100 Hz, ‘lpcm’ (0x00000029) 32-bit little-endian float, deinterleaved  
Current Format Tag = 0x650002, New Format Tag = 0x6A0002, Successsful

- 
  - PASS

* * *

RENDER TESTS:

Output Format: AudioStreamBasicDescription: 2 ch, 44100 Hz, ‘lpcm’ (0x00000029) 32-bit little-endian float, deinterleaved  
Render Test at 512 frames  
Slicing Render Test at 64 frames  
PASS

Render Test at 64 frames, sample rate: 22050 Hz  
Render Test at 137 frames, sample rate: 96000 Hz  
Render Test at 4096 frames, sample rate: 48000 Hz  
Render Test at 4096 frames, sample rate: 192000 Hz  
Render Test at 4096 frames, sample rate: 11025 Hz  
Render Test at 512 frames, sample rate: 44100 Hz  
PASS

Bad Max Frames - Render should fail  
PASS

Checking parameter setting  
Using AudioUnitSetParameter  
Using AudioUnitScheduleParameter  
PASS

Checking ramped parameter scheduling  
PASS

Test MIDI  
PASS

- 
  - PASS

* * *

## AU VALIDATION SUCCEEDED.

validation result: successfully validated

updating properties of AU Superior Drummer 3 by Toontrack…

---

<div class="post-metadata">

**Author:** ![bobthedog](https://avatars.discourse-cdn.com/v4/letter/b/977dab/32.png) [@bobthedog](https://forum.juce.com/u/bobthedog)\
**Post date:** [February 25, 2021, 11:29am UTC](https://forum.juce.com/t/logic-x-au-channel-list-incorrect/44403/33 "2021-02-25T11:29:00Z")

</div>

I’m guessing from that one that SuperiorDrummer3 doesn’t use dynamic buses, the bus count is pre-defined (0 to 15), each bus only supports stereo so Logic knows that there are 16 stereo outputs.

If it was dynamic bus we would also see the 25 stereo outputs I think.

---

<div class="post-metadata">

**Author:** ![Centau](https://avatars.discourse-cdn.com/v4/letter/c/ecb155/32.png) [@Centau](https://forum.juce.com/u/Centau)\
**Post date:** [February 26, 2021, 1:23am UTC](https://forum.juce.com/t/logic-x-au-channel-list-incorrect/44403/34 "2021-02-26T01:23:04Z")

</div>

I’m having the same problem with multi outs in Logic and as far as I understand, using a solution from post №10 would fix it for me? But i won’t have dynamic buses working? Here, pardon my ignorance, I would ask - what is dynamic buses in Logic and how they work and why i would need them? I tried to google, but there is basically zero info on that. I have Superior 3 and it has multiout menu looking fine. Multiouts there work exactly the same to Battery or Kontakt. @bobthedog wrote that it looks like Superior doesn’t have dynamic buses. The question then - what’s the difference? Because i see zero difference between Battery routing and Superior 3.

---

<div class="post-metadata">

**Author:** ![bobthedog](https://avatars.discourse-cdn.com/v4/letter/b/977dab/32.png) [@bobthedog](https://forum.juce.com/u/bobthedog)\
**Post date:** [February 26, 2021, 7:42am UTC](https://forum.juce.com/t/logic-x-au-channel-list-incorrect/44403/35 "2021-02-26T07:42:48Z")

</div>

@Centau

So with AU’s there are a couple of ways of doing multi-out.

1. You can have one bus that supports many channel layouts, where a channel layout may be stereo, quadraphonic or even 32 discrete channels.

2. You can have multiple buses each supporting channel layouts, so if you want 16 outs you could have 8 buses of stereo for example.

Dynamic buses allow the host to add and remove buses from your default setup, this can be enabled or disabled by the plugin.

You can use AudioPluginHost to if the plugin supports dynamic buses, so if you load up superior 3 and right click on it and choose “Configure Audio I/O”, here if the plugin supports dynamic buses you can add and remove buses with the “+” and “-” buttons.

As an example, battery by default supports a single bus and dynamic buses. In the next image I have clicked the “+” button 3 times to add another 3 stereo buses:

 ![screenshot_705](https://us1.discourse-cdn.com/flex026/uploads/juce/original/2X/4/4bfceb9c89beeaf06aec3122cafa031a9cd36502.jpeg)

You can see on the right that the channels are slightly separated and different colours.

In the next image I am using one bus with 8 outputs:

 ![screenshot_707](https://us1.discourse-cdn.com/flex026/uploads/juce/original/2X/3/33b965338bce0d17f093b467d139453e8dd5fbd9.png)

By default in juce dynamic buses are disabled for your plugin, you can override this behaviour.

---

<div class="post-metadata">

**Author:** ![bobthedog](https://avatars.discourse-cdn.com/v4/letter/b/977dab/32.png) [@bobthedog](https://forum.juce.com/u/bobthedog)\
**Post date:** [February 26, 2021, 8:12am UTC](https://forum.juce.com/t/logic-x-au-channel-list-incorrect/44403/36 "2021-02-26T08:12:46Z")

</div>

> [@bobthedog](#):
>
> OK, I have been looking at the internals a little surrounding hosting plugins.
> 
> I have taken an example of NI battery, if you do a getProperty of kAudioUnitProperty\_SupportedNumChannels it supports a single channel layout of (0, -32) so no inputs and up to 32 outputs. It also supports adding buses fo we can have multiples of these.
> 
> From the Juce world though this plugin has multiple channel layouts: (0,1), (0,2), (0,3), (0,4), (0,5), (0,6), (0,7) and (0,8). So the maximum channels on a single output bus is 8. You can see this by loading the plugin into AudioPluginHost.
> 
> You can also see it in Waveform, actually in Waveform you don’t seem to be able to add extra buses so the max output count is 8 channels! I could be missing something in waveform though I don’t know it too well.
> 
> So there is some issue here with juce, I guess something to do with taking layoutTags data at a higher precedence than the kAudioUnitProperty\_SupportedNumChannels, I’m looking into what is going on here…

@reuk I guess you are the AU guy at juce?

I have looked into this as well and juce definitely takes the layouts in precedence over the channel maps.

In juce\_AudioPluginFormat.mm isBusesLayoutSupported (const BusesLayout& layouts) before it looks at the channel maps we see:

```auto
               if (possible.size() > 0 && ! possible.contains (requested))
                    return false;

```

This will bail if the layout is not there without checking if the channel map supports it.

I have also noticed a few bits of strangeness:

In juce\_AU\_Shared.h getAUChannelInfo (const AudioProcessor& processor) :

```auto
auto maxNumChanToCheckFor = 9;

```

This has the effect of returning -1 when say you have more supported channels, shouldn’t this value be a bit higher.

In juce\_AudioPluginFormat.mm updateSupportedLayouts()

If AudioUnitGetPropertyInfo with kAudioUnitProperty\_SupportedNumChannels is not supported by the plugin juce will add a channel map of [-1, -1]. If AudioUnitGetProperty with kAudioUnitProperty\_SupportedNumChannels is not supported juce will not add a channel map. Wouldn’t it be better to not add a channel map for both cases?

---

<div class="post-metadata">

**Author:** ![reuk](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/reuk/32/21494_2.png) [@reuk](https://forum.juce.com/u/reuk)\
**Post date:** [February 26, 2021, 11:46am UTC](https://forum.juce.com/t/logic-x-au-channel-list-incorrect/44403/37 "2021-02-26T11:46:41Z")

</div>

> [@bobthedog](#):
>
> In juce\_AudioPluginFormat.mm isBusesLayoutSupported (const BusesLayout& layouts) before it looks at the channel maps we see:

This code is only used for hosting AudioUnits. It does not have any effect on AudioUnit clients. If you’re seeing issues with AudioUnit hosting, please start a new thread so that we can keep this one on-topic.

> [@bobthedog](#):
>
> This has the effect of returning -1 when say you have more supported channels, shouldn’t this value be a bit higher.

I’m not sure - perhaps this would be useful in hosts that support more than 9 channels on a single bus. This code has been stable for several years though, so I don’t think this should change unless there are concrete examples of plugin/host combinations which display incorrect channel layouts. Note that I don’t think this is the case for Logic, which only supports up to 7.1 layouts at time of writing. (It appears that Logic will only instantiate surround plugins if the channel configuration matches the surround format of the project - that is, if I modify the MultiOutSynthDemo to support 5.1 or 7.1SDDS, then Logic will only display the 5.1 option when the Surround Format of the project is 5.1, and will only display the 7.1SDDS version if the project’s Surround Format is 7.1SDDS.)

> [@bobthedog](#):
>
> If AudioUnitGetPropertyInfo with kAudioUnitProperty\_SupportedNumChannels is not supported by the plugin juce will add a channel map of [-1, -1]. If AudioUnitGetProperty with kAudioUnitProperty\_SupportedNumChannels is not supported juce will not add a channel map. Wouldn’t it be better to not add a channel map for both cases?

Again, note that this is hosting code. This will not affect AU clients. If you have examples of plugins which display incorrectly in JUCE hosts, please start a new topic.

* * *

On the topic of channel/bus counts in Logic, it seems that the main issue at this point is that Logic may allow users to instantiate plugins with more buses than they actually support, which results in a generic “failed to load plugin” error. A work-around is to make the plugin appear to support all bus counts (i.e. override canAddBus and canRemoveBus to return true), and to handle unnecessary buses gracefully (e.g. produce silence on those buses).

We’re in contact with developers at Apple to check the expected behaviour of plugins with writable bus counts. I’ll update this thread once I know more.

---

<div class="post-metadata">

**Author:** ![bobthedog](https://avatars.discourse-cdn.com/v4/letter/b/977dab/32.png) [@bobthedog](https://forum.juce.com/u/bobthedog)\
**Post date:** [February 26, 2021, 3:17pm UTC](https://forum.juce.com/t/logic-x-au-channel-list-incorrect/44403/38 "2021-02-26T15:17:23Z")

</div>

> [@reuk](#):
>
> I’m not sure - perhaps this would be useful in hosts that support more than 9 channels on a single bus. This code has been stable for several years though, so I don’t think this should change unless there are concrete examples of plugin/host combinations which display incorrect channel layouts. Note that I don’t think this is the case for Logic, which only supports up to 7.1 layouts at time of writing. (It appears that Logic will only instantiate surround plugins if the channel configuration matches the surround format of the project - that is, if I modify the MultiOutSynthDemo to support 5.1 or 7.1SDDS, then Logic will only display the 5.1 option when the Surround Format of the project is 5.1, and will only display the 7.1SDDS version if the project’s Surround Format is 7.1SDDS.)

Thanks for the reply.

You can see this issue in AudioPluginHost:

Just set the plugin to support say up to 16 channels on a single output bus:

```auto
bSupported = (numInputs == 0) && (numOutputs <= 16);

```

You will see :

 ![screenshot_708](https://us1.discourse-cdn.com/flex026/uploads/juce/original/2X/4/4b941f77d76803d7ef6b29fa2b9ce3af4dd8bec4.jpeg)

You can also load the VST and AU into live, the VST has the correct 8 stereo outs, the AU has incorrect 16 stereo outs which is the maximum channels live will use.

I guess in the end the whole thing is academic as most people will be creating the lowest common denominator, as you say Logic doesn’t support this.

I will make another post about the other points…

Edit: Sorry the bit about Live was incorrect so I deleted it, it was using multiple buses.

---

<div class="post-metadata">

**Author:** ![buncker](https://avatars.discourse-cdn.com/v4/letter/b/4af34b/32.png) [@buncker](https://forum.juce.com/u/buncker)\
**Post date:** [February 26, 2021, 4:37pm UTC](https://forum.juce.com/t/logic-x-au-channel-list-incorrect/44403/39 "2021-02-26T16:37:42Z")

</div>

Sorry for maybe a stupid question but I’ve got a little buried under all the info we got here (thanks for your hard work!)  
Could you please tell me how to turn off the dynamic bus for a Juce VI plugin?  
All I need is to have 1xStereo and 16xStereo options in logic, and it looks like I don’t need any dynamic bus features.

---

<div class="post-metadata">

**Author:** ![reuk](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.juce.com/reuk/32/21494_2.png) [@reuk](https://forum.juce.com/u/reuk)\
**Post date:** [February 26, 2021, 5:01pm UTC](https://forum.juce.com/t/logic-x-au-channel-list-incorrect/44403/40 "2021-02-26T17:01:41Z")

</div>

This works for me:

- Override `canAddBus` and `canRemoveBus` both to return false.
- Override `isBusesLayoutSupported` to allow either 1 or 16 stereo output buses:

```auto
  bool isBusesLayoutSupported (const BusesLayout& layout) const override
  {
      for (const auto& bus : layout.outputBuses)
          if (bus != AudioChannelSet::stereo())
              return false;

      return layout.inputBuses.isEmpty()
          && (1 == layout.outputBuses.size() || 16 == layout.outputBuses.size());
  }

```

- Initialise the plugin with 16 buses:

```auto
      : AudioProcessor (BusesProperties()
                        .withOutput ("Output #1", AudioChannelSet::stereo(), true)
                        .withOutput ("Output #2", AudioChannelSet::stereo(), false)
                        .withOutput ("Output #3", AudioChannelSet::stereo(), false)
                        .withOutput ("Output #4", AudioChannelSet::stereo(), false)
                        .withOutput ("Output #5", AudioChannelSet::stereo(), false)
                        .withOutput ("Output #6", AudioChannelSet::stereo(), false)
                        .withOutput ("Output #7", AudioChannelSet::stereo(), false)
                        .withOutput ("Output #8", AudioChannelSet::stereo(), false)
                        .withOutput ("Output #9", AudioChannelSet::stereo(), false)
                        .withOutput ("Output #10", AudioChannelSet::stereo(), false)
                        .withOutput ("Output #11", AudioChannelSet::stereo(), false)
                        .withOutput ("Output #12", AudioChannelSet::stereo(), false)
                        .withOutput ("Output #13", AudioChannelSet::stereo(), false)
                        .withOutput ("Output #14", AudioChannelSet::stereo(), false)
                        .withOutput ("Output #15", AudioChannelSet::stereo(), false)
                        .withOutput ("Output #16", AudioChannelSet::stereo(), false))

```

![Screenshot 2021-02-26 at 16.58.06](https://us1.discourse-cdn.com/flex026/uploads/juce/original/2X/d/d7c408b46bf7321e6efb4c6d93b0820c67db7d4c.png)

---

<div class="post-metadata">

**Author:** ![buncker](https://avatars.discourse-cdn.com/v4/letter/b/4af34b/32.png) [@buncker](https://forum.juce.com/u/buncker)\
**Post date:** [February 26, 2021, 5:20pm UTC](https://forum.juce.com/t/logic-x-au-channel-list-incorrect/44403/41 "2021-02-26T17:20:45Z")

</div>

BTW, in previous Juce version (4) I was able to define output busses in a plugin constructor conditionally: for example I could have 16 output busses for AU/Logic, and 20 output busses for VST.  
Like that:  
// The base class constructor will already add a main stereo output bus  
// If you want to add your own main channel then simply call clear the  
// output buses (busArrangement.outputBuses.clear()) and then add your own

Is there any way to do that with Juce 5/6 ?

[Previous page](https://forum.juce.com/t/logic-x-au-channel-list-incorrect/44403.md?page=1)

[Next page](https://forum.juce.com/t/logic-x-au-channel-list-incorrect/44403.md?page=3)
