I am currently trying to port VST2 plug-ins to VST3. I am using JUCE and I test with REAPER.
The plug-ins are Ambisonic plug-ins up to 7th order (64 channels of audio), and one of them also supports encoding up to 64 audio signals into Ambisonics. So what I did with VST was creating a bus layout ‘discreteChannels(64)’ for both input and output, as there is not yet a 7th order Ambisonic layout defined in VST3.
There are now two problems when I create a VST3 plug-in with it:
- the default channel layout must not be a discrete layout, at least, that’s what JUCE tells me with an assertion
- REAPER will only give 24 channels of audio, despite of 64 channels bus width. Seems to me that this is a 22.2 loudspeaker layout.
I am not sure if this is an issue with the VST3 standard, JUCE’s wrappers, or in this case REAPER. However, in MAX8 I get 32 channels, not more.
When I add another input or output bus to my plug-in, I get 48 channels in REAPER: 2 * 24.
So my questions:
How would I set up the plug-in’s supported channel layout to support up to 64 channels for each input and output? The inputs are indeed discrete channels, as they don’t have to be a standard layout.
Is this something I can’t do with VST3 as the standard layouts are somehow important to use? (see JUCE assertion). Or is this just a problem with JUCE and/or REAPER?
It worked very well with VST2 by the way. Reaper giving me up to 64 channels, no problem with discrete layouts. I am having quite a hard time figuring out what the actual problem is, if it’s the SDK, my code, JUCE or simply the DAWs not yet fully supporting VST3?