Multi-Input Multibus

Hi @fabian and all interested ones,

my plan is a plugin that will mix 32 stereo buses into one stereo output.
I tried the obvious and added

MyAudioProcessor::MyAudioProcessor()
     : AudioProcessor (BusesProperties()
                       .withInput  ("Input #1", AudioChannelSet::stereo(), true)
                       .withInput  ("Input #2", AudioChannelSet::stereo(), true)
                       .withInput  ("Input #3", AudioChannelSet::stereo(), true)
                       // [...]
                       .withInput  ("Input #32", AudioChannelSet::stereo(), true)
                       .withOutput ("Output",   AudioChannelSet::stereo(), true)
                       )

But that doesn’t work. I understand that is also a matter if the host supports that. So my question:

  1. Is this supported by JUCE (5.0.1)?
  2. Which host supports that?

I realised, that Pro Tools does not, I think I read that only one mono side chain is supported. Is that correct?
I also tried Adobe Audition, no luck with neither VST3 nor AU.
Garageband didn’t show any routing options at all, but I think that was to expect, given that they want to sell logic.
Speaking of, unfortunately I don’t have logic at hand… would that support multi stereo input buses?

Thanks for all hints, have a good rest-weekend!

Daniel

1 Like

Bumping: is this actually the right way, or should I rather call addBus later?
And in which host is this setup supported? Where can I check this?
I think it is the way how ReaSurround in Reaper plugin works e.g.

Hi @daniel,

JUCE does support this but I don’t think you will have any luck with any of the major DAWs. I know that Logic Pro only supports max one sidechain bus. The same is with ProTools and Cubase. I think the only host that supports 32 input buses is Reaper and JUCE’s audio plugin host :frowning:.

Also, you don’t need to list all 32 input buses in your constructor. You can also do something like this:

class MyAudioProcessor
{

     MyAudioProcessor()
         : AudioProcessor (getBusesProperties())
    {
        .
        .
        .
    }

private:
     static BusesProperties getBusesProperties()
     {
         BusesProperties buses;
         buses.addBus (false, "Output", AudioChannelSet::stereo());

         for (int i = 0; i < 32; ++i)
             buses.addBus (true, "Input #" + String (i + 1), AudioChannelSet::stereo());

         return buses;
     }
};

Thanks @fabian, good to know how it is meant to work. Nice idea using the static method.

Too bad, that there is (almost) no support in hosts.
Might end up writing a host just because of this :frowning:

Cheers