So the MIDI 2.0 spec just dropped and I'm skimming it. Highlights: - New layer above everything called UMP wrapping both old MIDI 1.0 messages and new stuff. - New addressing level of 16 groups on top of channels. So now one stream carries 16 "mega-channels" of 16ch each.
-
-
- Relative CC changes (inc/dec by an offset, good for stateless buttons?) - Similarly program change now embeds bank msb/lsb/program into one message. - Aftertouch is 32 bits - Per-note pitch bend (32bit resolution) - Per-note controllers
Show this thread -
- To support multiple notes on the same pitch or full microtonal stuff, noteon can now *separately* carry pitch info, turning the "note number" into a voice index. You just round robin note numbers and pitch is separate.
Show this thread -
And now for the crazy bit. There's a whole sub-protocol for device inquiry, capability info, and property exchange over sysex. You know, metadata. It has JSON. And zlib. And Unicode.
Show this thread -
Overall the MIDI 2.0 protocol spec seems to be a not-overly-ambitious extension to MIDI 1.0 fixing most of the stupidity and adding enough extensibility, without just, like, making everything a giant pile of JSON or TLV or something. But the MIDI-CI JSON stuff is...
Show this thread -
The biggest thing that bugs me is the single attribute (on top of velocity) for NOTE ON. You should be able to fake more expressive controls with preceding per-note controllers but... that was the one place a variable-length TLV might've made sense.
Show this thread -
OTOH they have an okay amount of toplevel message expansion space if needed (6/16 top-level message types are defined), so I hope they use it well in the future.
Show this thread -
Now the thing is the new UMP packet format does not define any mapping to physical transports, and AFAICT the negotiation is between MIDI1/MIDI2 features, not the underlying transport. So how is UMP defined over e.g. existing USB-MIDI or DIN UART MIDI transports? No idea.
Show this thread -
It seems no physical layer mappings are defined in the MIDI 2.0 spec itself, that's for another document to lay out including any negotiation.
Show this thread -
According to their website, they're focusing on USB first (I guess the old 31kbit UART transport is deprecated, unsurprisingly), and a new mapping for UMP over USB(-audio?) needs to be written before that works. So no automatic backwards compat with MIDI1 byte streams.
Show this thread -
One thing they did do is make the UMP format self-delimiting. The message type alone determines message length, and they arbitrarily pre-assigned some lengths to all the unused message types. So transports should be able to deliver UMP messages with future expansions cleanly.
Show this thread -
OTOH it is *not* robust at the 32bit word level, so the underlying transport has to guarantee that. If you drop or corrupt a word expect things to explode.
Show this thread -
(MIDI1 was slightly better at this with the start/continue markers, but in practice this was useless anyway because as soon as you drop any data you get stuck notes so you're screwed anyway)
Show this thread -
Oh yeah, another fix: 7-bit sysex messages are still atomic (except for realtime messages) to preserve MIDI 1.0 compat, but the new 8-bit sysex messages *are* interleavable with other messages and even up to 256 sysex messages may be interleaved together in streams.
Show this thread
End of conversation
New conversation -
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.