VST3 <-> JUCE layout conversion error

when testing the GainPlugin demo plugin (vst3 on mac) with pluginVal:
the following assertion fails with a channelType of 19 :

// VST3 <-> JUCE layout conversion error: report this bug to the JUCE forum
jassert (channelType >= 33);

We’re getting exactly the same. In most recent PluginVal release this jassert has been hitting for a couple weeks or so now.

Stack trace shown below. Also this is the bus layout code we’re using (basically it’s the same as {2,2}{1,1}):

bool isBusesLayoutSupported(const BusesLayout& layouts) const
    // Only mono/stereo and input/output must have same layout
    const auto& mainOutput = layouts.getMainOutputChannelSet();
    const auto& mainInput  = layouts.getMainInputChannelSet();

    // input and output layout must either be the same or the input must be disabled altogether
    if (! mainInput.isDisabled() && mainInput != mainOutput)
        return false;

    // do not allow disabling the main buses
    if (mainOutput.isDisabled())
        return false;

    // only allow stereo and mono
    if (mainOutput.size() > 2)
        return false;

    return true;

Have you tried this with the tip of the develop branch? I can’t reproduce it here when building the GainPlugin VST3 on macOS and testing against the latest pluginval release (v0.2.1).

oh… I was a few commits behind and using projucer 5.4.1.
using the latest tip I could not reproduce either, so that seems to be fixed. Sorry for the noise Ed.
does updating to the latest tip fixes it for you RustyPine?

Hmm I’m still hitting this. Here’s what I’ve recently done to test in a brand new test folder just a few minutes ago:

macOS 10.13.6 | Xcode 9.4.1

  • clone the JUCE develop branch (dc1cf29cae85992f282af5d6519ccdaf73b7f6af)
  • build Projucer
  • download latest VST3 SDK from Steinberg site & set VST3 SDK path in the Projucer to this
  • download latest PluginVal binary
  • open GainPlugin example & build, launch and attach to PluginVal

Exact same assert gets hit with a value of 19.

It doesn’t seem to cause any issues out in the field. Only when testing with PluginVal and debugger attached.

I was just skimming this post, rather than trying things out, but why are you downloading the VST3 SDK? The latest version of JUCE comes with the VST3 SDK included.

Yeah, for compatibility with JUCE it’s best to use the embedded VST3 SDK. Try clearing the VST3 SDK path setting in the Projucer and it’ll use the embedded one. I can’t reproduce the crash using this version.

Is there any reason for anybody to ever supply their own VST3 SDK?
I’ve seen a few posts where people are trying to do this but I can only see problems that route.

1 Like

I have the same problem when using the AudioPluginHost that comes with Juce/extra: It asserts with a channelType of 19. My input/output setup is more complex: ambisonics(1) as main input/output and four additional mono input buses. I’ve tried to reduce to ambisonics or quadrophonic only, but I still get that assert. I use latest Juce (5.4.3), Visual Studio 2017 and embedded VST3. The assert fails also when attaching to the latest pluginval in debug, but there are no errors when running in pluginval without attach/debug.

OK, I was able to reproduce the problem and I’ve pushed a fix to the develop branch here. Thanks for reporting!

Brilliant. It works for me now. Thanks!