And if Zynthian was the first "hardware" synthesizer supporting MIDI 2.0 / UMP?

And tadaaaaaa…

My Zynthian has played the very first notes today driven from MIDI 2.0 messages :smiley:

Maybe I am wrong, but I think that the Zynthian is the first “hardware” synthesizer able to do that… (as far as I know, all MIDI 2.0 synth prototypes are plugins for now)
I still have a few bugs to chase and some last features to implement, but at least I got the first sounds from the Zynthian (and the UMP daemon is also visible on the JACK patcher in the Zynthian as you can see below)

I will see how to release the beta version of the daemon asap (I will probably not be able to release the source code shortly, as it is based on an internal MMA document), but at least I will be able to share the binary as a first step

9 Likes

Hi @BEB!
I see you were busy :grin:

I googled “UMP” and it’s really hard to find something! Could you explain a little bit about what is an UMP package? Is it the same than IP multicast? I’m curious about how it works and what is the role it plays in the MIDI 2.0 stack.

Regarding the implementation, woaooo!! I hope you reach a “stable” point with the software, so we can fully integrate this on zynthian. It would be a kind of “strategic move” for the project. It puts zynthian in the edge, Amazing!

All the best!

Hi @BEB

First of all thank you for sharing this and for using Zynthian as a demo/test platform.
That’s just amazing :+1:

But, yeah I too need a couple of explanations.

So zynthian acts as MIDI 2 hardware synth.

  • How do you send MIDI 2 messages to zynthian ?
  • By extension, I’ve got a little DIY usb Midi gear based on a Arduino Pro Micro. What kind of mod is needed to make it MIDI 2 compliant ?

[Edit] Re reading carefully this thread helps a bit

Hi @jofemodo,
I am not suprized that you can’t find something interesting about UMP (it’s even the name of a political party in France :wink:)
Search for Universal MIDI Packet, you will probably find more interesting results. The whole documentation package is available here :
https://www.midi.org/specifications/midi-2-0-specifications/midi2-core/universal-midi-packet-and-midi-2-0-protocol-specification

UMP by itself is a data format covering both MIDI 1.0 and MIDI 2.0, it does not cover the transport layer (which can be serial, USB, Ethernet or whatever you want)
The transport layers are being discussed for now internally to MMA (I belong to the Ethernet transport group) and this specification is not yet published externally to MMA, but it reached a stable enough state to start prototyping (and I could not resist to make a prototype based on the Zynthian :heart_eyes:)

And as you say : I hope it will be a strategic move !

Benoit

Hi @le51

to answer your two questions :

‘How do you send MIDI 2 messages to zynthian ?’
I use the Ethernet connection, using a UDP based protocol currently being discussed internally to MMA (I call it “NetUMP” for now, as it does not have an official name yet). On the sequencer side, I use a Windows driver I wrote for KissBox which I modified to add UMP support. This driver appears as a virtual MIDI port for any Windows application, and it transcodes MIDI 1.0 into UMP packets.
I wrote the Control Panel for this driver in order to be compatible with JACK / Linux, so it can be used also on a Linux machine (but in that case, the ports are not ALSA MIDI ports, they are JACK ports). By the way, I found that JACK is compatible with native UMP packets, so on Linux, it will be possible to have MIDI 2.0 applications talking directly to JACK

By extension, I’ve got a little DIY usb Midi gear based on a Arduino Pro Micro. What kind of mod is needed to make it MIDI 2 compliant ?
For USB devices, situation is much more complex than for Ethernet…
MIDI 2.0 Class definition for USB already exists :
https://www.midi.org/specifications-old/item/usb-midi-2-0-specification
but right now, there is not yet any official driver for it, neither on Windows nor MacOS (as far as I know, they are still under development)
Moreover, these drivers require MIDI 2.0 API to operate, they do not work with MIDI 1.0. And only MacOS has this API for now, it does not yet exist on Windows or Linux.
And for Arduino itself, the USB MIDI object is MIDI 1.0, not MIDI 2.0… Meaning that something has to be written almost completely from scratch, with only a partial environment to test it for now.
Maybe I am wrong, but I would say that for now, doing MIDI 2.0 on USB is still a very hard task.

Thank you very much @BEB it’s getting clearer now.

But, to be sure: does this means that all MIDI 1 USB devices won’t be able (right now) to talk to your MIDI2 Zynthian box ? This is how I understand it least.

No, it does not work like that. The goal of UMP is precisely to make the transition between MIDI 1.0 and MIDI 2.0 as smooth as possible. In other terms, a Zynthian able to receive UMP is still compatible with MIDI 1.0 (hence the “Universal”)
Of course, it does not work in the other way (a “pure” MIDI 1.0 device receiving MIDI 2.0 would be unable to do anything with it)

Thanks for clarifications.

I won’t disturb you more with my noobs questions :wink: but I will follow your progress closely.