10 Essential Facts About the Perfect Bluetooth MIDI Solution for Windows

From Fonarow, the free encyclopedia of technology

If you've ever tried to use a Bluetooth MIDI keyboard with Windows, you know the frustration: pairing succeeds, but your DAW or web app remains blind to the instrument. This was the exact problem faced by developer Erwin, who built a free, open-source utility to bridge BLE-MIDI into the new Windows MIDI Services stack. Below are the ten key things you need to know about this tool and the underlying issues it solves.

1. The Core Problem: Windows BLE-MIDI Isn't Plug-and-Play

Bluetooth Low Energy (BLE) MIDI keyboards, like Erwin's Roland FP-90X, pair easily with Windows 11, but most DAWs and MIDI apps cannot see them. The reason: Windows only exposes BLE-MIDI through the WinRT API, which almost no MIDI application polls. Even when you see a successful pairing in Bluetooth settings, your software remains oblivious. This is a well-known limitation that has plagued musicians for years, forcing them to seek third-party workarounds.

10 Essential Facts About the Perfect Bluetooth MIDI Solution for Windows

2. Why the WinRT Wall Exists

The WinRT (Windows Runtime) API is a modern, app-oriented interface that isn't compatible with legacy MIDI frameworks like WinMM or MME. While Windows recognizes the BLE device at the system level, it doesn't expose it as a standard MIDI port. DAWs and web MIDI apps rely on polling standard MIDI endpoints, so they never see the BLE connection. This architectural mismatch is the root cause—and it's not a bug that Microsoft has prioritized fixing for older software.

3. Existing Workarounds Are Clunky and Unreliable

Many Windows users turn to tools like MIDIberry combined with loopMIDI to route BLE-MIDI into virtual ports. However, this two-app setup can be finicky. Erwin found that the combination didn't work reliably for his setup—connections would drop, latency varied, and configuration was tedious. He wanted a single, self-contained solution that handled both incoming and outgoing MIDI data without extra complexity.

4. The New Solution: Windows MIDI Services Loopback

Microsoft's Windows MIDI Services (WMS) stack, introduced in Windows 11, includes a powerful feature: loopback endpoints. These virtual ports mirror everything written to them—any content sent to one endpoint exits the other. This means any app using WinMM, WinRT, or WMS can see these loopback ports as normal MIDI connections. Erwin's utility leverages this: it reads BLE-MIDI from the WinRT side and writes it into a WMS loopback, making it visible to all MIDI applications. This solves the one-way problem from piano to PC.

5. Two-Way Communication Wasn't Automatic

Even after solving the incoming path (piano to PC), the reverse direction (PC to piano) remained broken. When Erwin sent MIDI notes from his PC to the FP-90X, the bytes were transmitted via GATT (the BLE data protocol) and acknowledged (ATT-acked), but the piano produced no sound. Something above the GATT layer was discarding the data. This second bug required deeper investigation into the piano's firmware behavior.

6. The Hidden Channel Mismatch Bug

After eliminating pairing, encryption, write modes, and proprietary characteristics, the culprit turned out to be a per-device quirk: the Roland FP-90X has a panel setting for transmit channel (default 1), but it actually receives MIDI on channel 4, and this receive channel cannot be changed. Notes sent on channel 1 were acknowledged at the BLE layer but silently dropped by the synth engine. This zero-feedback issue is a classic firmware oversight—no error message, no warning, just silence.

7. The 'Detect' Button: A Simple Fix

To solve the channel mismatch, Erwin added a Detect button to his utility. Pressing it triggers a series of test notes on channels 1 through 16, each separated by a short delay. You simply count the notes you actually hear from the piano; that number is the correct receive channel. The tool saves this channel per BLE MAC address (the piano's unique hardware identifier). The process takes about 75 seconds once, and you never need to repeat it for the same device.

8. Tech Stack and Portability

The utility is built on .NET 10 with Avalonia for the UI, making the graphical layer cross-platform even though the BLE/MIDI functionality is Windows-only. It uses Microsoft.Windows.Devices.Midi2 packages for the WMS integration and Windows.Devices.Midi directly for WinRT BLE access—avoiding reliance on older WinMM drivers from vendors like Korg. The result is a single self-contained executable (~21 MB) with no installer, no telemetry, and no account requirements.

9. Simple Setup and Usage

After downloading the executable from the official site, you run it directly. Pair your BLE-MIDI keyboard with Windows as usual, then launch the tool. It automatically discovers paired devices. Select your keyboard, run the Detect routine if needed, and the loopback endpoints appear automatically. Your DAW or web MIDI app will now see the instrument as a standard MIDI port. No driver installation, no registry hacks, no subscription.

10. Community Validation and Open Source

Erwin shared his solution on Reddit's r/synthesizers subreddit, where Pete from the Microsoft Windows MIDI Services team commented positively on the BLE integration. The project is open-source under the MIT license, hosted on GitHub. It has been tested with the Roland FP-90X and is expected to work with any BLE-MIDI keyboard. Developers can fork the code, contribute improvements, or use it as a reference for similar integrations.

In summary, this utility addresses three stacked bugs: the WinRT visibility gap, the need for reliable loopback bridging, and the silent channel mismatch. By combining the power of Windows MIDI Services with a simple detect routine, it turns a frustrating BLE-MIDI experience into a seamless one. You can download it for free and finally use your wireless keyboard with any DAW or web MIDI app on Windows.