So from my experience MacOS has no issue with multiple programs using the same MIDI input device at the same time.
After recently migrating to Windows 10 I found out that annoyingly it seems Windows MIDI drivers only allow one application to listen to a MIDI input at a time.
Here is how you can work around this by creating virtual MIDI ports to fan-out the device to multiple applications.
Create virtual ports with loopMIDI
This program lets you create as many virtual MIDI “loopback” ports as you want.
If you want to understand how these work, imagine connecting a MIDI USB cable to your computer but connecting the MIDI IN of the cable to the MIDI out of the cable to form a loop.
What this means is anything your computer sends to the OUT of these devices gets “looped back” to the IN of the device.
Here I’m creating one loopback device for each program to use.
Route the MIDI device input to the virtual ports using MIDIOX
MIDIOX is a general purpose MIDI program that does a lot of stuff. We can use it to route the MIDI device input we’re interested in to the output of the loopback devices.
The interface is a little cryptic but what you want to do is go to
MIDI Devices and select the input you’re interested in as well as the output of the loopback devices you created in the previous section.
Make sure to check “Automatically attach Inputs to Outputs during selection.” before clicking OK. This will create a routing similar to the one shown below.
In the picture above the “mio” device is split and sent to the output of the loopback devices. The signal then loops back to the input port of each device where it can be consumed by the respective programs.
Just open each program and select the virtual port input as the midi input.
As shown in this example here I’m able to use a single MIDI controller to control both Ableton and the desktop Keyscape plugin at the same time without having to close one while the other is running.
6 thoughts on “How to use the same MIDI device on Windows across multiple programs at the same time”
Thnak you so much for this simple tutorial, i want to know if i have to keep the midox and loopmidi running in windows when I use my 2 audio software?
Thanks for sharing. I used this to Run Resolume and Synesthesia (VJ) apps. I lost the ability to have the midi keys light up though. Not sure what setting I can use to fix this, as during a show seeing what is on helps in the dark.
THANK YOU SO MUCH!!
I was hoping you could clarify something related to virtual MIDI ports and the Cubase 8.5 DAW I use. There is a plugin called ‘ctrlr’ which lets you edit the sounds on hardware MIDI synths (I want to use it on my old Korg X5). I have the X5 set up in Cubase as an ‘external VST instrument’ which allows you to treat it as a software synth within Cubase. This means it ‘takes over’ MIDI channel 1 (the hardware MIDI port the X5 is connected to). The Ctrlr plugin runs as another software synth within Cubase, and it needs to use the same MIDI channel that the X5 is connected to to edit the sounds on it. I use a MOTU MIDI interface which unfortunately is not Multi Client capable. As you mention it is not possible for two applications (the X5 and ctrlr) to access the same MIDI port under Windows so I think I need to do something similar to your setup above, using loopMIDI. Looking at your settings in MIDIox, I take it that the MIO is your hardware MIDI interface? So in my situation would I for example have my MOTU channel 1 where you have the MIO, and a loopMIDI instance ‘KORG X5’ where you have Ableton and Keyscape? Do I have to also make a loopMIDI port for Cubase or is that not necessary? Anything else you can suggest to get it working?
If you can help it would be greatly appreciated!
I’m Big on video, I hope you make video tutorial classes with this information.
Dryl From Chicago
Straight to the point and exactly what i needed! Works like a charm thanks.