(DEPRECATED) The ultimate JUCE 4.1 MultiBus Guide

it’s not clean, but this fixes it for cubase making my synth work again and keeping all the output channels enabled and functioning (not suffering the mute problem):

bool getSpeakerArrangement (VstSpeakerArrangement** pluginInput, VstSpeakerArrangement** pluginOutput) override
{
    *pluginInput = 0;
    *pluginOutput = 0;

    if (! AudioEffectX::allocateArrangement (pluginInput, busUtils.findTotalNumChannels (true)))
        return false;

    if (! AudioEffectX::allocateArrangement (pluginOutput, busUtils.findTotalNumChannels (false)))
    {
        AudioEffectX::deallocateArrangement (pluginInput);
        *pluginInput = 0;
        return false;
    }

    if (pluginHasSidechainsOrAuxs())
    {
        if ((JucePlugin_IsSynth) != 0 && PluginHostType().isCubase7orLater())
            return false;

        int numIns  = busUtils.findTotalNumChannels (true);
        int numOuts = busUtils.findTotalNumChannels (false);

        AudioChannelSet layout = AudioChannelSet::canonicalChannelSet (numIns);
        SpeakerMappings::channelSetToVstArrangement (layout,  **pluginInput);

        layout = AudioChannelSet::canonicalChannelSet (numOuts);
        SpeakerMappings::channelSetToVstArrangement (layout,  **pluginOutput);
    }
    else
    {
        SpeakerMappings::channelSetToVstArrangement (busUtils.getChannelSet (true,  0), **pluginInput);
        SpeakerMappings::channelSetToVstArrangement (busUtils.getChannelSet (false, 0), **pluginOutput);
    }

    return true;
}

obviously this needs more testing, but it’s a starting point. food for thoughts.