Skip to main content

MIDI Forum

MIDI2 Device MIDI1 ...
 
Notifications
Clear all

MIDI2 Device MIDI1 compatibility and Group Terminal Block Descriptors

2 Posts
2 Users
0 Reactions
71 Views
Posts: 1
New Member
Topic starter
 

Hello, i'm trying to develop a MIDI2 device as a personal investigation project, using RP2040 and TinyUSB.

I've managed to get the Device and Configurator descriptor right, and I think i'm also doing the UMP Endpoint, Stream and Function Block negotiation right.

I'm interfacing with a Apple Air M1 with Sequoia 15.3.1 and as a matter of facts I can see the negotiation and get 0x40 note on and off in the MIDI2 Workbench, and I can also play with Ivory3 (actualli triggering notes since I have no keyboard), but I can't interact with MIDI1 applications.

The problem arise when I compare with another midi2 keyboard from a famous brand.
It behave almost the same, BUT it can also send note to MIDI1 application.

As an example i'm using a MIDI Monitor from snoize that can receive note on and off from the famous keyboard but not from my personal one.
In this case notes are displayed as a MIDI1 message.

I've sniffed everything from wireshark (this is the reason why I don't want to say what brand and keyboard is): the Descriptors are basically the same, and I can confirm that the famous keyboard is sending UMP 0x40 note on and off.
My interpretation is that the OS is handling MIDI1 softwares converting the UMP voice messages in MIDI1 format in order.

Now the question is: why the OS is behaving like this with the famous keyboard but not with my device?

In my investigation i've noticed that, while almost all the Stream Messages negotiation is the same in both the devices, the only difference is in the Stream Configuration Request message received from the OS.
I've seen that in the Famous Keyboard case the message contain a protocol 0x02 (MIDI2), while in my case is sending a 0x01 protocol (MIDI1).
Answering with a Stream Configuration Notification message with a 0x01 protocol or a 0x02 protocol does not change the behavior at all.
I've also played with the MIDI1 compatibility in Endpoint and Function Block info notification, but nothing seems to achieve the same results as the other keyboard.

Another thing i've noticed is that no Group Terminal Block Descriptor is requested in both cases (my device and the famous keyboard): are these yet to be implemented by MacOS?

I don't know how to go deeper than this, does anyone have some suggestions?


 
Posted : 11/12/2025 11:45 pm
Posts: 62
Admin
 

Hey it's great that you are experimenting with this 🙂

If you don't mind if you share your USB descriptor settings? And GTB settings?

How did you generate your USB Descriptors?

 


 
Posted : 14/12/2025 5:45 pm
Share: