Hello, my friends. I'm Saulo, writing from Brazil, (Brasília, Capital).
It's been a few months since I started working hard on implementing USB MIDI 2.0 on embedded systems. My starting points were Andrew Mee's AM_MIDI2.0Lib (MIDI 2.0 protocol), AmeNote's tusb_ump, and Mike Kent's ProtoZOA (embedded and USB), along with the official specs. My interest in this topic came from work I've been doing for a few years on MIDI transports for ESP32 (<a href=" removed link " target="_blank" rel="noopener noreferrer">ESP32_Host_MIDI). Along that path, I've been learning a bit about embedded architecture and the transport layer, especially USB.
It took many weeks of testing against Linux and Windows hosts, reading through M2-104-UM and the USB MIDI 2.0 Class Definition paragraph by paragraph. Last month I reached a stable version using TinyUSB, both Device and Host modes, validated first on RP2040 and then on Adafruit Feather RP2040 Host (Pico SDK, CMake). After testing across several devices, I opened the upstream PR: <a href=" removed link " target="_blank" rel="noopener noreferrer"> removed link .
Since then, I've been running a local branch based on the PR to keep the work moving. And that's the reason for this post: to see if others are on the same path and find allies here in the forum to push embedded MIDI 2.0 forward. So far, on my bench, I've enumerated on RP2040, RP2350, ESP32, Nordic nRF52840, and SAMD21. All of them enumerated cleanly on both Windows MIDI Services and Linux.
One angle in particular has been getting special attention: Teensy, Daisy Seed, and ESP32-P4. These are hacker-friendly boards with real audio processing capability. The experiments on these three are well under way, and this axis, where MIDI 2.0 meets real embedded audio, is where I'm going deeper.
It's been a really good experience. I'm excited about where this is going, and it would be great to find others walking a similar path.
Saulo - as your new to the forum it has dropped the links - can you please readd them to the post - thanks!
Hi Saulo,
I have been on an exactly similar journeys as yours departing from AM_MIDI2.0Lib, tusb_ump, and ProtoZOA. My focus is on developing embedded hardware for controller such as the 2350, and have completed prototyping. I also considering the teensy4.1 for its audio/dsp capabilities but with Zephyr as a side project. I found your midi2 project on github, and its great that you have developed a layered approach separating transport and application. Already followed this.
I am keen to reach out to share ideas, discuss this common topic, and collab where feasible on embedded Midi 2.0. Particularly in pushing audio/dsp capabilities.
Jason
Hi Andrew, thanks. The forum seems to strip any URL I post as a new member, even in replies. Leaving the references in plain text so the thread stays useful:
- ESP32_Host_MIDI, available on GitHub under sauloverissimo/ESP32_Host_MIDI
- TinyUSB PR #3571 (USB MIDI 2.0 Class Driver), in hathach/tinyusb