Saturday, August 27, 2011

Quick Tip: Windows 64bit MIDI virtualization solution

Eh, long time no post :D

...ok, so, Reason 6 is almost around the corner (erm... still 33 days to go...) right?

With it, we'll be able to finally go beyond the 3Gb RAM limit of 32bit apps by running the 64bit version of it!

What will happen to those that were able to install the 32bit Midi Yoke + MIDI-OX version on Windows 7 64bit OS ?

Well, those relying on such solution will get an unpleasant (though expected) surprise: the ports made available by the 32bit MIDI virtualization (aka loopback) driver won't be visible to the 64bit version of Reason.

Solution? Install a proper 64bit version of such MIDI virtualization driver... problem is, there's no 64bit version of Midi Yoke :P

So... maybe now's the perfect time to change this, so when Reason 6 comes into your 64bit Windows, you can start using it right away, because this issue is already correctly dealt with :)

I've been following the work of Tobias Erichson, namely because of the MIDI over LAN solution he made. Recently (ok, July of this year... and thanks to Sterievo for warning me about it) he made available a tool based on something he was already using on the other available products.

loopMIDI is the perfect 64bit substitute for Midi Yoke, IMHO. It's dynamic in creation/destruction of virtual ports, so you can create a new needed one on-the-fly, unlike Yoke, and also unlike Yoke, it let's you do custom naming of the port being added, something very useful when you deal with a lot of'em (like I do).

I still use MIDI-OX as my virtual cabling management and MIDI filtering solution but now over loopMIDI created ports instead of Yoke.

After installing loopMIDI you can start creating the ports you'll need through its configuration option:

Here are all the ones I need in my current setup:

Then, as I said, I still need MIDI-OX to connect these with the real ports or between them:

uh... kinda complex and looks a bit confusing, doesn't it?

Thanks to loopMIDI custom naming, I can add extra "proper" names to existing (also named) virtual ports to quickly find the controller I want.

So, for instance, I have my iPad receiving MIDI from my Axiom OUT port. I can either send MIDI to "Axiom OUT" but it's quicker to send to "OUT to iPad" if I'm not sure to what port I have it connected. Same thing with QuickShot and Trust controllers. Both are not USB controllers so they need a MIDI In to be used on one of the other USB MIDI interfaces (controllers in this case).

Sometimes I change my setup and and the physical connections, so currently I have QuickShot MIDI Out connected to Spark's MIDI In. Spark's real input is cloned into 2 virtual MIDI ports: "Spark IN" and "IN from QuickShot" so I use whatever I need at the moment.
Using "IN from QuickShot" will always make sure that I'll have the correct controller I want, as long I as update the virtual map configuration whenever I change the setup, which I normally do.

This setup isn't using the multiple Axiom sections I used to have, like a Axiom Pads, Axiom Faders etc... all done with port cloning and MIDI-OX filtering, as referenced on some of my older posts.

Ok, enough g33kyness. If you have any questions about using loopMIDI + MIDI-OX on Windows 7 64bit, post a comment and I'll try to to help if it's within my reach :)

UPDATE: I've noticed that there's some issues with SysEx when using loopMIDI so I checked Tobias site and sure enough, he already knew about some SysEx related bug. Let's hope he can find the time to release the fixed version so we can start using it and donate to help further development :)

UPDATE2: As of Feb 6th, 2012, there's a new version ( available for download at Tobias Erichsen's site. I'm just downloading it and installing it (after removing the previous and see if the SysEx issue is fixed. Hopefully, the 15~16 port limit was also lifted (?)!!! :)

UPDATE2a: Still limited to 16 ports but the scroll bug that made it hard to access the 16th port is fixed.

UPDATE3: As of Aug 25th, 2012, the new version breaks the 16 port limit!!! :D  ...and also implements multi-client, allowing up to 8 client applications connected to the same port, which can be handy :)


  1. super quick q - I have loopmidi, and reaper.

    I'd like to setup different ports for different devices, instead of changing channels (DJ2GO is mapped to channel 1 and generates MIDI note on messages currently, need to map to DAW actions)

    My q is, do I have to use MIDI-OX to do this? (plug in my physical controllers to my virtual ports?!)

  2. Whenever you need to "connect" point A (the real port) to point B (the virtual port) you need a MIDI router, which is what the MIDI-OX is.

    If all you need is a virtual port/point to send and receive internally, then you can just use loopMIDI (or any other loopback MIDI driver).

    Also, if you want/need to do (re)routings (today A goes to B, tomorrow needs to go to C instead) or when 1 real port needs to "feed" multiple virtual ports and/or when you need to merge real ports into 1 virtual one, that's when the MIDI router (MIDI-OX) shines.

    Examples: I have the rtpMIDI (usually for the iPad) and Roland-ONE (usually connected to the iPad) real MIDI ports merged into a "to iPad" virtual port, so no matter if I have the iPad wired or wireless, I know that it'll get the MIDI I'm sending (all I need on it is select the right incoming port).

    Another example is receiving from a controller with keys and pads, I may want to split and filter its port into 2 virtual ports, 1 "from Keys" filtering out Chn10 and the other "from Pads" filtering in Chn10.