Using buses layout: What can you really do?


I’m developping a dynamic plugin that loads Pure Data patches and it let the user define its own buses layouts. Everything works fine when they use “common” situations:

  • A single main bus (for example 2 inputs / 2 outputs)
  • A single main bus with a side-chain (for example 2 inputs / 2 outputs and 1 side input)
  • A set of possible buses with no side-chain (for example 2 inputs / 2 outputs or 4 inputs / 4 outputs or 6 inputs / 6 outputs or etc.)

Jere is my situation:
I tested on macOS 10.13.4 with Reaper 5.78/64 and I’m on the last commit (2d9fc46).

If I want to have a set of possible buses with side-chains (for example 2 inputs / 2 outputs and 1 side input or 4 inputs / 4 outputs and 1 side input or 6 inputs / 6 outputs and 1 side input or etc.), the only one that is used is the 1st one (2 inputs / 2 outputs abd1 side input in this case). And in the host, if I change the number of channels I hit the assertion l. 1219 of juce_AudioProcessor.cpp because the current layout you supplied is not a valid layout.

So here are my questions:

  • In practice, can I use for example a main bus with several extra buses (not only one)?
  • In practice, can I define a set of possible main buses with each one several extra buses?
  • Is there any restriction about the audio buses that a plugin can support?
  • Is it stupid to tell I want my main bus with for 1 input / 2 ouputs and a 1st extra bus with 2 inputs / 2 outputs and a 2nd extra bus with 3 inputs / 4 outputs?


PS: Perhaps I missed or I don’t understand a really important thing in the documentation or elsewhere but I really tried to read everything I found on it on the forum and I also watched the Fabian video on the subject. Now any help would really help me for the future developements.


Have you had a chance to read the tutorial on bus layouts here?


The JUCE code tries not to limit the possibilities, however in reality there are a lot of limitations coming from the host, what routings they offer.
Some have complicated UX allowing a lot if not all options, other have a user friendly simplified UX, that offers only simple routings (ProTools and Reaper on one end and Logic on the other end of the scale IMHO).


Yes. I managed to set up every really useful “common” configurations using the Juce API. The question is for “extraordinary” configurations.

I understand. Even the Juce Plugin Host example does not allow me to create a plugin that only supports for example a layout with 3 inputs buses and 3 outputs buses.

Perhaps what I want to know is what should I do if none of the layouts my plugin accepts is supported by the host.

And how can I avoid to hit the assertion?
And do you know any host that would accepts such uncommon layouts?


You could try Usine…