Host Channel-Setup behavior

I like to design my plugins to be suitable for multichannel-processing (up to 8 channels I/O)

My Plugin Channel Configuration is {1,1},{2,2},{3,3},{4,4},{5,5},{6,6},{7,7},{8,8}

The problem is that many hosts not open the right number of channels, which is wasting much CPU-time

This is should be a overview table, so if you now any other hosts behavior please let me know.


--> Host opens the plugin with right number of channels  :-)

Logic (AU)

GarageBand (AU)

Cubase (VST)

Wavelab (VST)

ProTools (AAX) 


--> Hosts that open plugin with maximum channels available :-(

Tracktion (VST, AU)

Ableton Live (VST, AU)


Bitwig (VST) be continued...

I believe this is a limitation of the DAW and not something that JUCE (or any other plug-in frameword) can solve.

I'm not sure if this is related but I've seen many Plug-In vendors ship multiple versions of their plug-ins (as in "several dll/comonent files") for different channel configurations often having different suffixes in their file name (for example "My Filter (Mono).vst" and "My Filter (Stereo).vst") etc. I'm not sure about the DAWs you mention but I know that this sort of setup is needed for FXpansion's VST to RTAS adapter.

Does anybody else have experience with this?

>I believe this is a limitation of the DAW and not something that JUCE (or any other plug-in framework) can solve

Yes from the plugin-side, but this is something somebody who is developing a host should consider!

Its complicated enough to be plugin-developer 32/64/mac/win/vst/au/aax etc........ == 12 different Builds

If i make separate versions for all possible channels-configurations, they need to have different Plugin-IDs too, which makes presets incompatible.



Now i use a internal number of active-channels in my plugins which can be adjusted manually in the GUI. Unused channel  just returning silence.

Thats why i try to collect information how every host is doing it.

For example

If the plugins is opened in Tracktion it use 2 channels, if its opened in Cubase it uses jmin(getNumberOfInputChannels(), getNumberofOutputChannels) etc...

- updated -


... list updated...