Separating MIDI Inputs By Hardware Input (in AudioProcessorGraph)


I've copied and modified AudioProcessorPlayer (APP) in order to make a sequencer capable of routing realtime and sequenced events and audio through an audio processor graph. However, IIUC, the audio processor graph is only able to pass on midi events from the parent of the audio graph (in my case, the APP), so that a AudioProcessorGraph::AudioGraphIOProcessor::midiInputNode only accepts input at the global resolution, i.e. I can't split incoming MIDI events by hardware source.

Am I correct that I will need to "roll my own" if I want to do this? Ideally, I'd like to be able to connect some VST to, say, "MPK Mini", and another VST to "Babyface MIDI In", and the beams wouldn't cross, so to speak.

I should end by saying -- as always -- juce rocks.


You'll need to roll your own solution.  I believe in the least you'd you have to create a graph player that would have multiple midi input callbacks to register with the device manager and also modify the audio processor graph to handle connecting to midi on separate channels.  Currently there is only one global midi channel identifier.

That said, I've never been able to find a programmatic means to configure a VST or AU to listen to a specific midi input channel (actual midi channel, not the graph midi channel) so even if you did get this routing implemented, you might still be left with the need to manually configure the midi device and the VST (from within the VST plugin editor) to be on the same channel (or "all channels" setting).  I'd love to be wrong about that though.