MIDI Bluetooth (BLE) router for Windows

MIDI Bluetooth Low Energy devices do not show up in GP (neither do they in most other DAWs). This is due to the fact that Microsoft only expose these devices using the WinRT/UWP APIs, not by the old MME APIs. Most DAWs and also GP use MME and thus do not ‘see’ the BLE devices. The reason for using MME is probably because it is rather stable and somewhat mature and developers has learned to live with it :grinning:. Further more the WinRT/UWP subsystem is new (2016).

To overcome this issue, I’ve written a small program. It makes it possible to receive MIDI messages at one MIDI device and send them out on another device. These devices can be ‘normal’ MIDI device and/or BLE devices.

To make it work, you also need a virtual midi cable such as Tobias Erichsen’s loopMIDI (loopMIDI | Tobias Erichsen). When you create a virtual cable with the name ‘cable-a’ the flow looks like this:


Setup the router:

  1. Unzip it to a folder

  2. Scan the content for viruses: better safe than sorry!

  3. Read the PDF, because you have to make a router config file and (hopefully) this tells you how

  4. Start MidiUWPRouter.exe without extra arguments: That way you get all the device data that can be used in the filters. You can save these also to a csv by right-clicking in the device list

  5. Create the router config file. There is one next to the application: routerconfig.txt, but that one was specific to my computer. Nonetheless, it might serve as a starting-point

  6. Start MidiUWPRouter.exe with an extra argument that points to the configfile you created, for example:

    MidiUWPRouter.exe d:\music\gp\MidiUWPRouter\routerconfig.txt

  7. You should see the program listing again all available devices, but also a log telling which devices got a assigned and alias and which routes were activated

  • In Gigperformer do not use the output device of the virtual cable you created in LoopMIDI: it must be available for the router to use!

A screenshot what this looks like at my computer:

Double-click the guitar-pedal icon in the upper-left corner to close the program.

I’ve also created an installer. That one takes care of downloading the right dotnet version, etc. (if needed), but I’m not too fond of installers myself, although I need them often enough.

This one I have to add (although I did my best):
Disclaimer: Use at your own risk!

SHA256: 9EDA0542A4A258B606EB622A63570B5BCC1F2F9654ACBC840FD1AF296DF5A68E
MidiUDPRouter- (878.0 KB)

(UDP is a typo: should be MIDIUWPRouter-

SHA256: 218223019A5140BC558CEC48CE80825BEF6F0C929919D1E584AEEF483154228A
MidiUWPRouter-NoInstall.zip (647.1 KB)

Source code: GitHub - frank1119/MidiListUWP: A MIDI router using the UWP on Windows


Thank you for sharing! :slight_smile:

You can of course skip this step :joy:
Frank1119 is a “verified” user. :slight_smile:


To gain some experience with BLE MIDI devices I just bought a CME Widi UHost device. No that we have your software router, Is there still an advantage to use a CME UHost to work together with a set of CME Widi Jack devices?

That might be the case (and I’m not malicious and thanks for the compliment, btw), but a supply chain attack is always a possibility. When someone (not necessarily a GP user) gains access to the back-end where the files are stored and replace them with infected files…

I don’t mean to cause panic, but I don’t want to encourage too trusting behavior. :thinking:

1 Like

A GP supported user! :+1: :stuck_out_tongue_winking_eye:


I don’t know. When CME UHost works for you and you’re happy with it, there is maybe no need to use my utility. The reverse might also be true. The only purpose of the program is to make it possible to get these devices working with GP. If someone knows another way, he/she prefers: :+1:

To test my program, I downloaded a free app on my iPhone (Bluetooth Midi Keyboard). Pairing with Windows and getting MIDI working is the proverbial PITA, but you can get it to work. Don’t forget to activate ‘Advertise MIDI Service’ in the app. On the iPhone, you only have to do this in just 1 of the apps, in case you have more than one app installed (for example Bluetooth Midi Controller, also free).

Well your utility is (still) free which is not the cas of the CME Widi UHost device. For the moment I only plan to test the CME stuff in rehearsal…

1 Like

It will stay free, so no worries there. Drawback is that I make no guarantees that I will always be able to update it when needed… That’s one of the reasons I publish these projects on github, so, when the time comes that I can’t do updates anymore for whatever reason, someone else can step up (or is it ‘step in’?) and take over.

Luckily there is a chance that in due time @dhj might try and see how to support MIDI via UWP in GP out of the box in a future release.

1 Like

An post with link to the GitHub C# source code – God bless you!!

I just want to add something to this post as i see is related to windows and midi ble

It is possible to make windows to see and connect to midi ble devices. But there is an additional (korg) driver to be installed:

After installing the driver, i was able to pair my home made digital whammy bar with arduino. Its connected to widows and i can map it for example to the pitch shift effect of the amazing helix native. You can see the result here:

Anyone interested, i can share the code for esp32 boards


I tried the MikroKey by Korg as you suggested, however it would not see my bluetooth ble connection from my iPhone running Midimittr. I have yet to complete Frank1119’s suggestion, but am hopeful. His app seems to make the most sense. However I am still trying to figure things out in it.

(1) If I install the MidiUWPRouter-NoInstall, will I need to download something else. (2) So I believe you are saying, if I just start MidiUWPRouter, with either version installed, it should show me what devices I have available. Is that correct.

Can you show what you get on your screen? Or do you get nothing?

It needs a dotnet framework, but most people have that already. But when you’ve optimizing and did remove all dotnet frameworks (if that’s even possible), then you should at least get some complaints about missing dotnet, I would think.

Thanks for the quick reply Frank
I uninstalled the install version and just tried running NoInstall version which I will send a screen shot, then reinstall the other Install version to show you what I get. I still need to create a config file though, and working on how to do that now. I believe you intended to get the info for that by running MidiUWPRouter first and copy and paste what is needed. Looking now, I don’t see a way to share my screen shot.

Just figured that out, here is the screen shot from the uninstalled version

I believe the SG is the Sound Grid driver from Waves, and the StudioRack is there free VST Studio Rack

Yep. That means it works. There is a pdf that explains how to create a configuration file. For the arguments in that file you can use the names and/or id-s you see on this screen.

After creating the configuration file (with notepad or something like that) you start the program follwed by the path to the configuration file.

This is in the pdf also

If I remember well, right clicking displays some options to copy the content of the screen to the clipboard

Here is a screenshot after installing your install version, as well as connecting my XR-18 and starting MidiBerry

You should not use both utilities, although midi ble devices are multi-client.

But also read the pdf please😀