VST3/AU3 multiple midi ports

With VST3 and AU3 plugins, it is possible to expose more than 16 input and output midi channels for the plugin. They appear to the host as multiple ports. VST3 supports many ports, I think maybe 48. AU3 in LogicPro currently supports 8 midi ports.

Is it possible with JUCE to create a VST3/AU3 plugin that makes those additional ports available to the host? And how can we access those ports from inside processBlock?

As an example, Vienna Ensemble Pro.vst3, when instantiated into Cubase, then provides 48 midi ports available to all midi tracks in Cubase as a destination.

I would like to make a JUCE vst3/au3 plugin which can expose these additional midi ports, but I can’t seem to find any information about that, nor does it appear obvious to me about how I would access them through processBlock processing in my plugin.

1 Like

Hi @dewdman42

I just wanted to second this. :slight_smile:

I’m currently trying to add an AUv3 implementation of our Wotja product.

Wotja is many things, but at its core it is a rich generator of MIDI messages.

So: Wotja (in standalone app mode) creates a load of Virtual MIDI Ports to allow the user to easily tap-in to the particular output they want (per Wotja Track, per MIDI channel, Omni etc.)

However, I’ve found that AUv3 extensions (at least on iOS) don’t allow Virtual MIDI ports to be created.

I’m therefore reliant on the MIDI output capabilities of the AUv3 implementation, for our MIDI output routing in the AUv3 implementation.

I can see that AUv3 supports more than one MIDI Output Channel (see AU MIDI Plugins – Ruismaker); however, from what I can see, the Juce AUv3 implementation supports only 1 MIDI Output Channel.

Has anybody hacked Juce to work around this limitation?

Best wishes to all,


I’ve been requesting it for years now and zero response from anyone about it. Haven’t heard about anyone that has hacked JUCE this way. I am not qualified to do so or else I would.

Hi @dewdman42,

Just FYI, we’re about to submit our AUv3 implementations of Wotja.

On the macOS side, our AUv3 creates macOS style virtual MIDI ports itself, that the AUv3 can optionally also send its MIDI output to; so that gives the user a lot more routing options. We also give the option to optionally route MIDI from Wotja AUv3 to any MIDI ports available at the system level, such as Network MIDI or IAC Bus ports the user creates with Audio MIDI Setup.

On the iOS side, AUv3 implementations cannot create iOS style virtual MIDI ports, so that simply wasn’t an option. However, we give the option to optionally route MIDI from Wotja AUv3 to any MIDI ports available at the system level, such as Network MIDI.

Hoping that info helps.


Glad to hear that you found a workaround that is satisfactory for your product. I just want to emphasize, however, in case anyone on the JUCE team is listening; that this is not really solving the problem mentioned here in this thread…which is specifically to have AU3 midi Ports available WITHOUT going through IAC as a work around.

True AU3/VST3 multipart is needed in order to properly route things around inside DAW’s like LogicPro and Cubase.

Anyone know if this limitation was improved in Juce 6.1 with VST3 additions they made?