fbpx
Skip to main content

MIDI Forum

What is best method...
 
Notifications
Clear all

What is best method to get USB MIDI 2.0 running on MCU

8 Posts
6 Users
0 Reactions
270 Views
Posts: 2
New Member
Topic starter
 

Hi,

I know MIDI 1 quite well. But I'm new to MIDI 2.0. And I know a little but about USB. But I have no clue how to get USB MIDI 2.0 running on a MCU like:
NXP: iMXRT 10xx or 11xx
MicroChip: SAM S7x or E7x

I search the internet and this forum. I learned a lot from that. But still I have no idea what would be the best way to get this working.

First learn USB and get MIDI 1.0 working over MIDI? Then work on MIDI 2.0?
Searching for examples and try to port to the correct MCU?
Search for a library that has the MCU already supported?

Any advise is welcome!

 
Posted : 22/10/2024 11:33 am
Clemens Ladisch
Posts: 325
 

Implementing USB is not easy. If you do not have experience with this, you should indeed start with USB MIDI 1.0.

Note that such libraries always depend on the specific USB implementation in the MCU. As far as I know, libraries exist for Teensy, some Arduinos, and STM32.

 
Posted : 23/10/2024 10:18 pm
Mike Kent
Posts: 86
Trusted Member
 

You should start with the open-source libraries from leading MIDI Association members which are available at www.midi2.dev. You will find a USB MIDI 2.0 device implementation which runs on the AmeNote ProtoZOA development platform, using a Raspberry Pico. It supports USB MIDI 2.0 with a fallback to USB MIDI 1.0 when connected to a legacy system which is not MIDI 2.0 ready. That reasonably is ported to other MCUs. USB Descriptors are easy to get wrong, even for USB experts, so also use the USB MIDI 2.0 Descriptor Builder at the same site. It integrates directly with the code for the ProtoZOA.

Chair of MIDI 2.0 Working Group

 
Posted : 26/10/2024 9:39 pm
Posts: 1
New Member
 

Implementing USB is not easy. If you do not have experience with this, you should indeed start with USB MIDI 1.0. . It integrates directly with the code for the ProtoZOA. 

This post was modified 3 months ago by KIMS School
 
Posted : 03/11/2024 10:42 pm
Muzak
Posts: 86
Estimable Member
 

1. Buy a $2 Pico.

2. Build/Load the Protozoa code.

3. Read the MIDI UMP spec

4. Experiment (and learn).

5. Understand USB low level code of another platform (USB requests)

6. Port the legacy code with MIDI 2.0 support (you may need still support legacy MIDI USB packets as well)

Join discord for MIDI 2.0, such the one for Microsoft MIDI and (link) as such for a lot of good discussions that may help you understand more of the details.

This post was modified 3 months ago 4 times by Muzak
 
Posted : 04/11/2024 4:18 am
Posts: 2
New Member
Topic starter
 

Hi @Muzak, What do you mean by number 5?

 
Posted : 04/11/2024 4:39 am
Muzak
Posts: 86
Estimable Member
 

Beside the protozoa code, a reference can be other platforms MIDI implementations to understand USB transactions, that may help to understand how to implement UMP .

Without understanding USB requests, descriptor etc.. it will be a steep learning curve to implement UMP.  UMP is not that different from MIDI 1.0 just the packet format is different.

There is a bunch of open source MIDI 1.0 code on the web for several MCU's from Microchip, NXP, and STM.

 
Posted : 27/11/2024 4:42 am
Posts: 1
New Member
 

To get USB MIDI 2.0 running on an MCU, start by selecting an MCU with native USB support, like STM32 or ESP32-S3. Use a development library such as TinyUSB, which supports USB MIDI on many platforms. Configure the USB stack to include MIDI functionality, ensuring it adheres to the MIDI 2.0 specification. Implement the necessary MIDI protocol handling for messages like Note On/Off and CC messages. Connect your MCU to a computer or MIDI device to test communication, using a MIDI monitoring tool to verify data exchange. Optimize your implementation for real-time performance to ensure smooth operation in musical applications.

 
Posted : 09/01/2025 2:48 am
Share: