Virtual MIDI Router for Windows 10 x64

As many of you know Windows can only assign one MIDI device to one specific program at any given time.

With this behavior annoying things happen like:
Having to close & reopen Cubase when my MIDI keyboard was not already attached, even if no other program had been using the MIDI device before.
Not possible inputting notes in Dorico, minimizing it and then use the MIDI keyboard in Cubase without having to close Dorico.
Currently, I am setting up my nanoKontrol Studio, which takes some trial & error - trying things out in Cubase/Dorico then making some adjustments in the Korg Kontrol Editor. Until now, I always had to close one then open the other (&repeat), so I did some research.

A MIDI Thru connection resolves this issue, and it is questionable why Windows 10 has not implemented this feature by now.
For this I need a Virtual MIDI Cable and a Virtual MIDI Router. I think I have found a good cable called loopMIDI.
As a router I have experimented with Bome Midi Translator Classic, which works, but only allows one MIDI In & Out as far as I know.

Could anybody point me to other possible programs? I am looking for a program which I once set up with all my routings and then always auto-starts at startup, so I don’t have to worry pluging in my MIDI devices before I open Cubase/Dorico plus I can use my MIDI device with all the programs at the same time.

Any suggestions pointing in the right direction are appreciated!

I use LoopBe30. It functions as 30 virtual MIDI cables and there is also a freeware version called LoopBe1.


People still complain in year 2019?

There’s Tobias Erichsen and his brillant MIDI Software around since years… Google LoopMIDI for example…

I don’t think your initial assumption is correct. First I’m not sure what you mean by “Windows… assign”? To the best of my knowledge (and I’ve been using MIDI it’s entire existence) WIndows doesn’t assign anything. Windows is used to create the various MIDI Ports in the first place (e.g. when you install the drivers). But after that those MIDI Ports are available for use by any program that wants to use them and nothing restricts multiple programs accessing them. I just did a test and had 3 different programs (Cubase, and standalone versions of NI Kontakt & E/W Play) running at the same time while I played all three from my keyboard just fine (if you ignore the ugly racket this produced).

Also you should not need to restart Cubase if your keyboard is off when you launch Cubase. It used to be that you had too do this, but that got changed awhile back (C9.5 maybe?). Currently an already running Cubase should detect the new MIDI devices when they become available.

check out CopperLan. I use this and LoopBE

The Korg driver for their nano products is a bit of a mess. In order for this driver to work your Korg Devices need to be assigned to MIDI Ports 0 thru 10 when initially created. If they are on Ports > 10 lots of programs will not be able to access or even see those devices. The numbers get assigned at installation so if you already have devices on Ports 0-10 before installing the Korg it can be a problem. I had to uninstall most of my MIDI devices, then install the Korg nano driver before reinstalling the other devices in order for my nanoKontrol to become available.

Have you even read my entire post at all? I wrote that I already use loopMIDI (“For this I need a Virtual MIDI Cable and a Virtual MIDI Router. I think I have found a good cable called loopMIDI.”)
loopMIDI alone is not enough as it only provides the virtual cables. I also need a Virtual MIDI Router…
Please read next time before you post

By “Windows… assign” I mean that once the MIDI device is used in one program, then within the Windows platform generally this same MIDI device cannot be assigned to any other program at the same time. You are right, that Windows itself does not assign anything. Sorry if I was a bit unclear about that.
So after reading your post I did some more extensive testing and can give you the following analysis:
When I start Cubase with nothing attached and thereafter plug in my Roland F-20, it actually does show up and works correctly, so you were right about that, however, when I open Dorico or another DAW while Cubase is already opened it does not deliver any signals to the other programs even though it shows up (and is activated). After closing Cubase I can in fact use my Roland F-20 in the other program, but only after having to deactivate and then reactivate it in the respective program’s preferences. I want to add that I am forced to use the generic driver since there is no dedicated one for this particular MIDI keyboard.
Now with my nanoKontrol it is somehow the other way around. It does not get recognized if it was not plugged in before the DAW starts [thus my initial post], but when it had been plugged in before I can use it in as many programs as I want at the same time. This does not work cross platform (32 bit / 64 bit) though, so when I want to edit something in the Korg Kontrol Editor, there is no way other than the way described above. So clearly this means that on Windows it totally depends on the driver which is used and apparently it does not work with generic MIDI drivers. On macOS this problem does not exist whatsoever no matter what kind of driver is being used, because macOS handles MIDI routing differently in the first place. It seems that you are lucky with all of your devices/drivers, so I think unfortunately my initial assumption generally speaking remains correct. This also explains why a virtual MIDI port created with loopMIDI solves all of the described problems altogether, as it was well programmed with a good driver which can handle multiple programs. In addition I still need a program to route from Roland F-20 to loopMIDI port, of which I have meanwhile found a few.

The exact same problem applys to Windows ASIO drivers which also can only be used for one program at a time. Actually maybe this also depends on the specific driver. I tested my UR22 with the Yamaha Steinberg USB Driver and apparently the ASIO driver can only be used by one DAW at a time. But there is workarounds for this problem as well.

My Korg nanoKontorl2 is assigned to “midi1”, my nanoPad2 to “midi6”. Both work correctly in any number of programs on the same platform (64 bit OR 32 bit), but only when they were plugged in before any of the programs was started. My Roland F-20 is assigned to "midi17: Standard Driver [Roland Digital Piano].

Yes for the most part this is how ASIO drivers behave, and it is indeed driver dependent. One reason I use an RME interface is it does allow multiple simultaneous access. But MIDI isn’t supposed to behave that way.

For example my nanoKontrol has knobs assigned to controls in Cubase, controls in RME Totalmix interface and also my Helix hardware amp emulator - these all work fine together with all of them able to access the nanoKontrol simultaneously - nothing special needed.

I think you must have some other configuration issue because you should be able to have your MIDI controllers available system wide without resorting to virtual cables. The limitations you are encountering are not normal or typical. Right now I can’t think of any possible causes though.

Can you post a screen grab of Studio Setup/MIDI Port Setup and also the “sound video & game controllers” section of Device Manager.


since you are already using LoopMidi, perhaps MidiOX is a solution for you. (It is quite old software, but works without issues.)

In short:

  • In MidiOx, select the input from your midi controller as Midi Input Device (Menue item Midi Devices)

  • Select two virtual midi outputs (like LoopMidi) as Midi Output Device.

  • Within the “Router Window” of MidiOx, just place (draw) two connections. One each from the Input to the two Outputs.

Just one hint to this: It is recommended to start MidiOX before any DAW (… and iconify it). Otherwise, the DAW might block further use of the midi input device (like in your case). In that case, MidiOx my start with a strange error message (… not enough memory … ). To avoid this potential problem, I have set MidiOx to Autostart with Windows.

In general, MidiOX is much more powerful. E.g. you can modify (filter, transpose, block) midi notes, channels or CCs for each connection.

For Virtual Midi Cables, I am using Springbeats. It provides 8x virtual midi cables and is free.

LG, Juergi

1 Like

Thanks for trying to help me. I believe you that your setup does work in your specific case, though I would be surprised if you were able to access your nanoKontrol via the Korg Kontrol Editor (which is 32-bit) making changes which actually get written to the nanoKontrol, while all of your 64-bit programs are having access to it at the same time, using the dedicated driver from the Korg website.
I found this additional information:

Anyways eventually I got everything working perfectly using MidiOX - a great tool indeed.

Hello Juergi, I did some additional research and have come to the conclusion that MidiOX is in fact the only free program which can do this. Thanks for pointing me in the right direction! I also found “MIDI Tools” by Mountain Utilities, but could not get it to run properly. Meanwhile, I have got everything working with MidiOX. I set everything up and noticed that there is actually no need to select two virtual MIDI outputs, as the virtual cables from loopMIDI are multi-client capable, so routing one device through two separate virtual outputs would only make sense, if I wanted to translate/alter the two signals differently. By the way, what do you mean by “iconify”? (just out of curiosity)

Where did you set MidiOX to Autostart? I managed to make it always minimize into the tray which is one step in the right direction, but could not find the Autostart option in the various menus. That’s the only thing to make my MIDI setup complete once and for all. :smiley:

Hi Doricardo,

This is, what I meant. :slight_smile:
Then, the tray shows this kind of traffic light with three green dots.

Place a shortcut to the MidiOx executable into the following folder: %AppData%\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

No special command line options needed.

Another thing to keep in mind is the following: Midi-Ox saves its settings when “cleanly” exiting it. In other words, if you have added/midified/deleted certain things and your system crashes for what ever reason, all the changes are lost. So once you have changed things, exit MidiOX and restart it right afterwards. On the next system boot, also the changes will be there. Shutdown of a system without exiting Midi-Ox before works fine for me.

It is also a good idea, to here and then save settings as a Profile in Midi-Ox, especially if you are using or even experimenting with different setups. One thing I was not able to find so far (to work reliably) is to start Midi-Ox with a special profile-file.

LG, Juergi

“As many of you know Windows can only assign one MIDI device to one specific program at any given time.”

That is not true anymore, windows 10 has a new midi API that is multiclient. But it requires the software to be changed to take advantage of this new API.
Now that win7 finally is on it’s last leg, I hope to see something happening on that front.