BusesLayout issue porting from VST2 to VST3


#1

This might rather address an issue with Reaper and/or Steinberg, but I thought I’ll give it a shot here, first. Maybe you guys have some insights!

I have a bunch of VST2 plug-ins for Ambisonics, supporting up to 7th order -> 64 channels. With my VST2 I created my BusesProperties with:

BusesProperties()
                 .withInput("Input", AudioChannelSet::stereo(), true)
                 .withOutput("Output", AudioChannelSet::discreteChannels (64), true)

So this one encodes Stereo into Ambisonics, up to 7th order, depending on how many channels the host will give to the plug-in. That worked very fine with VST2 and hosts like Reaper.

With VST3 I have some issues:

1 - no discrete channel layout for default

Apparently, the default channel layout must not be a discrete layout! It will trigger an assertion otherwise in the VST wrapper. So that’s kind of annoying, as there’s no Ambisonic layout for 7th order (“only” 5th order Ambisonics). However, it’s “just” an assertion, so maybe not that big of a deal right now

2 - Reaper won’t give me more than 24 channels

Compiling the plug-in as is as VST3 and using it in Reaper will only give me 24 audio channels, even if set to 64. I guess that’s a standard channel layout (22.2). If I add another bus:

BusesProperties()
                 .withInput("Input", AudioChannelSet::stereo(), true)
                 .withOutput("Output", AudioChannelSet::discreteChannels (64), true)
                 .withOutput("Output", AudioChannelSet::discreteChannels (64), false)

I get 48 channels: 2 * 24.
Even when I use ambisonic (5) instead, I also only get 24 channels.

So I suppose that might not be a JUCE issue, but maybe somebody has an idea what’s going on there? Should it work in general the way I intend it to do? Or do I need some kind of flag to set, that I would like to use non-standard channel-layouts?

Will appreciate any help or hint :slight_smile:

Edit: regarding #1: is that really a VST3 thing, that discrete layouts aren’t supposed to be used as a default layout? Does that make sense?!