Midi 2.0

I'm eagerly awaiting MIDI 2.0 on a Teensy someday, though I fully understand Paul's request for certain prerequisites.

Right now I've got a Teensy-based MIDI controller that works great but only with 1/4 of its capabilities enabled at any given time. It will only realize its full potential once 2.0 is more widely available. Until then, I will keep refining other aspects like the UI, ergonomics, etc... patiently (could be a couple more years before 2.0 really matters, who knows).

I appreciate the effort both past and future on MIDI support.
reading Paul's p#23 - it seems it needs to be established and commonly available to use an off the shelf device with support of a common OS.

Until then following the spec might get something technically correct - with lots of work to verify - and then have an audience of ONE person testing on some specific hardware.
Right. Like I said I'll wait patiently. Eventually though this will trickle down into most electronic music gear, I hope, instead of this going the way of Super Audio CDs. MIDI 1.0 has been incredibly useful and has a lot of room to improve so I am optimistic.
Any update on a library for MIDI 2.0 for Teensy? I see the new Teensy 4.1 has easy Ethernet hookup with the added header, so it would be a great match.
There still aren’t many MIDI 2.0 compliant devices to test with. The USB spec was released, so we may see Apple and Microsoft build it into future OS updates, which would help get things started.

If you’re looking for more expression Or resolution you might check out MPE, or OSC, which are already established. You can also accomplish a lot of the MIDI 2.0 parameter exchange using standard sysex and following the spec, which would make your code forward compatible (in theory).
Just to repeat what I said on msg #23:

I'm not going to actually *do* anything until at least one operating system has a driver and at least some sort of software we can use for testing. I might also wait until at least 1 moderately priced product is available implementing MIDI 2.0 as a USB device, so I can watch what it actually does with my USB protocol analyzer.

If anyone wants me to implement MIDI 2.0 on Teensy, please be prepared to point to where I can get those 3 things.

Pointing to the spec isn't enough. Please point to driver support (Linux preferred), software, and at least 1 reasonably MIDI 2.0 product.
Getting closer!

Just to repeat what I said on msg #23:

Pointing to the spec isn't enough. Please point to driver support (Linux preferred), software, and at least 1 reasonably MIDI 2.0 product.

https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.5 (released 2023/08/27)

ALSA and ASoC Core:
- Support of MIDI 2.0 devices: rawmidi and sequencer API have been
extended for the support of the new UMP (Universal MIDI Packet)
protocol, USB audio driver got the USB MIDI 2.0 interface support
- Continued refactoring around ASoC DAI links and the ordering of
trigger callbacks
- PCM ABI extension for better drain support

Now we just need some software and a product. Given how many instruments are now linux machines, this driver might help enable that.
The MIDI org has development boards (RP2040 based) available to members ($600/yr) that have functioning USB MIDI 2.0 drivers and are currently working with macOS CoreMIDI, which now supports MIDI 2.0. Logic also supports MIDI 2. These boards are running firmware that is currently only available to org members, but will be released as open source, likely as a fork or update to tinyUSB.

Some of this code can be found at this github link, although this repo is out of date compared to what is in develolment by the org. But it will give you some idea of the complexity of what is going on in midi 2.


There is also an electron based MIDI 2.0 workbench application, available to members as source code, developed by the org which may also be released to the public in the future.

You’ll likely see more Midi 2.0 devices on the market next year that were developed and tested against these dev boards with the workbench software.

There’s been a push within the org towards open source and we are slowly getting there. Developers that are eager to get to work with MIDI 2.0 should consider if $600/yr (and a sysex id) are within your budget, as you do get access to more of these tools earlier.

You can also see what Microsoft is currently working on for their MIDI 2.0 driver and API here:


They have a somewhat active discord, although be warned it is not a tech support resource.
I've received the occasional notification of activity on this thread for the past few years now, and for what it's worth I still follow up every time just in case. The day MIDI 2.0 finally becomes feasible in the Teensy/Arduino world I'm going to celebrate by restarting a huge project I burnt myself out building for 4 years, with renewed determination... :D
Just to repeat what I said on msg #23:

Pointing to the spec isn't enough. Please point to driver support (Linux preferred), software, and at least 1 reasonably MIDI 2.0 product.
But now devices use the standard "TSMIDI2.0" since a while, supported by the microsoft windows and driver implementation is the same used by Teensy midi devices (I checked all the kernel drivers used in both cases (T4 midi and my midi2 device), which are the exactly same standard ms windows drivers).

All that seems needed is to make T4's comply to the UMP protocol?
Am I missing something?

I'm very interested by this because I'm currently developing fairly complex control surfaces with Teensies (4.x) ATM, and I can put down a DAW easily when the control surface gets quite verbose in terms of communication and events, but maybe I'm making another assumption which is that the DAW software running on windows would then use the midi2.0 protocol if I would make my device midi2.0 compliant anyway which seems true but I'm not sure about that (windows will use the protocol when it detects UMP comm transparently) ?

Another interesting resource i found is tusb_ump (reusing tinyUSB), tinyUSB seems to list T4's as compatible devices, how hard would it be to try these?
For reference, TinyUSB lib here
Last edited: