No audio on Studio One with VST3 and J7

Hi guys,

on a plugin I’m working on, some testers found that the VST3 version doesn’t process audio on both Studio One 5.5 and Studio One 6. We rolled back to the last working version of this plugin and looks like this was introduced once we switched to JUCE 7.

Debugging we hit an assert:

I’m unable to find out what’s causing this. Any clue?

EDIT: if I set the channel configurations the “old way” ({1,2},{2,2}) it works.

Thanks,
Luca

Do you see the same problem in any of the example plug-ins? If not, it would be helpful if you could show how you’re configuring your buses (ideally providing an minimal AudioProcessor so that demonstrates the issue) so that we can debug this efficiently.

Hi reuk,

basically, i’ve replicated the issue with the Gain plugin by changing its Buses layout with the one I use in our plugins:

The problem arises with the mono->stereo configuration.

We never had any issues before upgrading to J7, so I’m pretty much clueless.

ah forgot to mention: closing the plugin window will hit another assert in checkSizeConstraint. That’s happening on the unmodified Gain plugin too.

@reuk I further tested the issue rebuilding a plugin updated on early december, before we moved to J7. Nothing changed in this plugin, which was perfectly working on all DAWs, just JUCE. After building with J7, we hit the same assert on getBlankBuffer, while with the release build we get just silence for mono->stereo, since we are now dealing with a blank buffer sent by that method.

The buses configuration for this plugin is this one:

I don’t want to go back on the preferred channels configuration for over 30 products, considering we have some with sidechain busses.

EDIT: is there a way to treat the buses layout like an access list? I mean, explicitly disabling all buses and then enabling only the one we need and set the channels configuration.

Basically, it looks like Studio One accepts stereo only plugins on mono tracks, by processing only a single channel. Imho, this is a weird way to deal with channels and they should conform to what other DAWs do. A workaround is to check if the host il studioOne and set false the mono->stereo channel configuration.

Since I need mono->stereo for my plugin, I had to explicitly return the bool this way.

This looks to me like a Studio One bug.

According to the Steinberg VST3 docs, the host is supposed to call setBusArrangements with the desired channel layouts. In the test case, the host requests mono in/out. Then, the plugin can check the arrangement, and return true if the arrangement is supported, or false otherwise. In the test case, the plugin returns false. If the plugin cannot support the requested arrangement, the host is supposed to call getBusArrangements to find the layout that was actually applied, but Studio One doesn’t do that.

I get this assert in Studio One all the time. I think it’s a Studio One bug, I just ignore it.

Yep, this is a known issue:

Thanks for reporting. I’ve not heard anything back from Presonus so far.

I’ve added a change on the develop branch to improve VST3 support for unexpected channel layouts:

With this change in place, VST3 plug-ins should continue to process as long as there’s a VST3 channel for each JUCE channel.

1 Like