getMainBusNumInputChannels() returns unreliable number on Adobe Premiere

On Adobe Premiere, processor.getMainBusNumInputChannels() returns 6 even if I use a track with 16 channels. Since our plugin supports input channels of more than 6. this would be a problem for us.

This symptom is only observed in VST3 format. Au works correctly (tested on MacOS BigSur / Win + Premiere Pro 2022)

I return always true in isBusesLayoutSupported(). I would appreciate any feedback. Thanks!

I’ve tested this a bit, and at the moment I’m inclined to say that the problem is with Premiere’s VST3 implementation, rather than with JUCE (although I’ve been testing with some upcoming VST3 channel-mapping changes in place, so that might be helping things a little).

I’m not that familiar with Premiere, so my test procedure might not be exactly the same as yours. Here’s what I’m doing:

  • Open a new project
  • File → New → Sequence
  • On the “Tracks” pane, set the “Mix” to “Multichannel” with 16 channels, and set the “Track Type” to “Adaptive” for each audio track
  • In the mixer pane, expand the FX rack and then add an instance of SurroundPlugin VST3 (one of the JUCE demo plugins) on one track, and SurroundPlugin AU on another track.

I can see that the AU plugin is automatically created with a discrete 16-channel layout. Great!

For the VST3 plugin, when I stick a breakpoint in setBusArrangements (the function called by the host to request a particular layout), the host is requesting a 6 channel layout (5.1 Surround). It doesn’t request or check any other layouts, so I think the host is at fault. It seems like Premiere should be requesting a 16-channel layout instead.

If I open the “channel map editor” for the loaded VST3 plugin, I’m presented with a window that allows me to adjust the channel mapping. However, this seems quite broken. The “Request Layout” button allows me to create a new 16-channel layout to use on the input and output of the plugin. After setting up this layout, clicking “Request” doesn’t seem to actually request the layout from the plugin (setBusArrangements isn’t called at all), and instead the dialog displays a message saying that “the effect does not support the requested channel layout”. To be completely clear, there is nothing that JUCE can do in this situation. The host is failing to inform the plugin about the correct channel layout.

Some custom layouts seem to work (I got a 7.1 layout with L R C LFE Ls Rs Lc Rc to open), but the layouts that Premiere actually allows seem quite inconsistent. I couldn’t find a working 16-channel layout.

As far as I know, VST3 doesn’t really support “discrete” multichannel layouts, so I don’t think it’ll ever be possible to get the AU and VST3 plugin to behave in exactly the same way (the VST3 layout will use “named” rather than “discrete” channels). However, I’m surprised that Premiere doesn’t allow 16-channel non-discrete layouts. I’d recommend contacting Adobe to see whether they can clarify the expected behaviour for VST3 plugins in this case.

Thank you for your detailed answer. We will try to contact Adobe then. It seems like there is nothing we can do more on this.