USB MIDI proxy to Bluetooth MIDI

I have a digital piano which can output MIDI via USB.
I want to capture this MIDI data and proxy it to Bluetooth MIDI so that I can connect to devices wirelessly.
My plan is to run it on a Raspberry pi but to start I can use a laptop.
So Piano -> RPi (Laptop) -> Bluetooth -> Client
Any pointers if this kind of thing can be built with rust and what libraries I can explore around it.

Fun idea :slight_smile:
I've had some luck with the https://crates.io/crates/bluer library, but that will only work on Linux with the Bluez stack (in your case that would be fine for RPI). There are some good examples in that repo's example folder

Bluetooth has a bunch of different protocols, the only one I'm familiar with is GATT (sometimes it's just called ATT).
There is a way to set up "notifications" with GATT so that key presses are "streamed" to bluetooth clients

1 Like

Thanks, will definitely check this out. I found this guide long back
https://neuma.studio/rpi-midi-complete.html
but with raspberry pi 0w latency was quite bad so thought of trying the same via Rust to see if I can achieve the same and maybe improve latency or fine tune it to work on rpi 0w a little better.

1 Like

This topic was automatically closed 90 days after the last reply. We invite you to open a new topic if you have further questions or comments.