[HN Gopher] MIDI 2.0, first major overhaul to music interface st... ___________________________________________________________________ MIDI 2.0, first major overhaul to music interface standard from 1983 Author : davio Score : 135 points Date : 2020-01-29 14:22 UTC (8 hours ago) (HTM) web link (reverb.com) (TXT) w3m dump (reverb.com) | tartoran wrote: | For me MIDI 1.0 served my needs. I may look into 2.0 if the need | arises. It is however great to know that it will be backwards | compatible: | | _MIDI 2.0 will be backwards compatible, meaning all new MIDI 2.0 | devices will be able to use and send MIDI 1.0 data. And if, in | time, you create a hybrid setup of old 1.0- and new 2.0-equipped | machines, your rig 's MIDI 2.0 models will interact together with | the fresh capabilities of the new spec, while the MIDI 1.0 models | will continue to work as they always have._ | wwweston wrote: | This is the most important feature. MIDI lives in a context | where the computing world's conception of obsolescence would be | even more hostile to owners than it is now; decades old | hardware is still used and loved, keeping it part of the | protocol is key. | _delirium wrote: | Kind of strange. This seems to be intended for the case where you | connect your devices with something like USB, not with physical | MIDI cables, and use MIDI as just an event/messaging protocol on | top of the generic data connection. And it's true that MIDI has | some limitations in that setup. But for that use-case, Open Sound | Control (OSC) already exists, and is supported by almost | everything on the software side, plus a growing number of things | on the hardware side. Why not just use that? | fortran77 wrote: | We have an organ in our office warehouse with 8 ranks of real | pipes, and several dozen virtual ranks and it is MIDI | controllable. MIDI does a poor job of mapping organs to MIDI | messages. There's no good way to control stops (i.e., what stops | are selected on which manual/pedal) and couplers without | "overloading" a lot of the meta commands. And there's no way of | defining which stops (which can be on any manual) are under | expression. There's no way to represent a "tutti" stop, etc. | | And even for conventional "piano" instruments, which you'd think | MIDI would work well for, it's lacking. It doesn't have pedal | velocity or position (often the damper pedal is held at some in | between position) and it doesn't have key position. Advanced | "player" systems, like the Bosendorfer SE or Disklavier Pro | overload other MIDI messages to account for this. Anyone who | plays a real piano will see MIDI's problems. | | At the very least, every keyboard instrument like Organs and | Pianos should be 100% controllable from MIDI. | 6581 wrote: | > It doesn't have pedal velocity or position (often the damper | pedal is held at some in between position) | | It does have pedal position. Pedal data is transmitted as a | control change message (e.g. CC#64 for damper) with a 7-bit | data value. Many recent digital pianos support half-pedalling | including transmitting and receiving the pedal position via | MIDI. | scarecrowbob wrote: | Indeed, this is true. | | I've often been super frustrated by things that receive MIDI: | they don't expose certain controls to CC, or they don't | respond to multiple channels, or they don;'t pass certain | information to the Thru port. | | But often what is frustrating is that it's do-able in MIDI, | it just wasn't implemented well on the device. | scarecrowbob wrote: | That's super cool that you have access to a pipe organ. I spent | a lot of time in my youth building a pipe organ with my dad and | the church we went to. They are amazing instruments. | | I'm having a hard time understanding how you'd have a hard time | implementing an organ control setup over MIDI. Like I get that | there there is no specific tutti setting, but why couldn't you | just have all the ranks be CC channels and then have the | various settings be program numbers, so tutti then is jsut | calling up the program with all the stops open? | | I do play a real piano, and I haven't been seeing problems with | MIDI in the time I've been using it. Like, I've seen a lot of | issues with piano synthesizer/sampler implementations... but | the basic interface of the piano seems (at least to me) fairly | easy to represent in MIDI... | | Can you help me out by describing what kinds of problems you're | seeing? | | Like I say, could just be my own lack of experience, but you've | bade me curious what I'm possibly missing. | unlinked_dll wrote: | I wish they would have removed SysEx messages. They cause way | more trouble than they're worth, now that we have property | exchange/profile configuration built into the spec. | [deleted] | dkersten wrote: | What's the problem that SysEx messages cause? I've only limited | experience with them (having used them only to send config data | to a device, in a way that didn't need the device to keep | functioning while being updated, from a programming point of | view, I found them quite convenient and simple, except perhaps | the fact that you only get 7 bits per byte so may have to pack | the data). | unlinked_dll wrote: | I can't know how big a SysEx message is until run time, which | makes buffering them somewhat complicated when you don't know | what's _in_ the SysEx message. | | This isn't uncommon in serial protocols, but MIDI has been | lifted several layers above the UART it was designed for, and | one of its strengths for everything _but_ SysEx is that you | exactly how big messages are going to be and preallocating | space for them is trivial. | aikah wrote: | > I can't know how big a SysEx message is until run time, | which makes buffering them somewhat complicated when you | don't know what's in the SysEx message. | | That's the reason why you want to break compatibility with | MIDI 1 spec? Really? Just like for an HTTP stream, you | don't need to know how big the stream is to process it, | just when it ends, there is no new problem to solve here. | unlinked_dll wrote: | No, I want there to be only one way to do something in | the protocol and to remove arbitrary binary exchange, | this is one pain point. It turns your "standard" into a | Frankenstein's Monster of data exchange, and you'd think | we'd have learned over the last few decades that | ambiguity in specification of a communication protocol is | just going to lead to headaches and incompatible/buggy | hardware. | | It's also weird to say SysEx is needed for backwards | compat with MIDI 1.0. You can just require a translation | layer between MIDI 1.0 sysex and MIDI 2.0 | configuration/property exchange for backwards compat. | Opaque binary as a part of the protocol does not | encourage compatibility among hardware. | aikah wrote: | The MIDI spec was successful for 30+ years for a reason | and manufacturers managed with SysEx without any issue, | there is no justification for any "compatibility layer" | whatsoever here. The problem wasn't the spec obviously. | SeanLuke wrote: | [For the benefit of HN: SysEx is a special manufacturer- | specific MIDI message which is undefined, so a synth | manufacturer can use it for whatever he wishes] | | I build a lot of open source patch editors for older | synthesizers. My beef with Sysex is that every manufacturer | uses completely different approaches to defining their own | proprietary messages with it. For example, nearly every synth | in the universe has a sysex message for dumping a patch (a | full set of parameter settings) from a synth to another or to | a computer; but they define their messages is radically | different ways, so I must construct an entirely different set | of parsing and emitting tools for _every single synthesizer_ | , even within a given manufacturer. It's a nightmare. | | So continuing this example, if the MIDI association had | gotten together early on and said that MIDI dumps _should_ | have a header that looks like THIS and then all the | parameters in order, two bytes per parameter with no bit | packing whatsoever, no two 's complement, and end with a | specific checksum, then I'd have written 10x more patch | editors so far. I wouldn't have to write custom parsers and | dumpers: I'd just provide a list of parameters and their | bounds. | fit2rule wrote: | (Disclaimer: been working in synth industry for decades | now..) | | Most SYSEX dumps are just dumps of the plain ol' structs | that the synth engines are using to drive their output. A | lot of synths don't have the processing power to do more | than just dump the struct. | | So, it wouldn't really make much sense to have them all use | the same struct - this can't be enforced too well. Forcing | synth mfr's to all use the same struct means that, even if | they have their own internal plain-old-structs, they'd need | code to dump the SYSEX according to the standard. | SeanLuke wrote: | > Most SYSEX dumps are just dumps of the plain ol' | structs that the synth engines are using to drive their | output. A lot of synths don't have the processing power | to do more than just dump the struct. | | I don't think it's processing power: it's stingy RAM | utilization. Many bad actors (Kawai, Casio, later Yamaha) | did crazy bit-packing of parameters rather than just keep | them in a simple array, while the more sane (Oberheim, | E-mu, Waldorf, early Yamaha) at least tried to pack in a | consistent way. Other bad actors (ahem Korg, as late as | 2000) decided to use, shall we say, creative parameter | encodings, going even so far as embedding textified | versions of parameter numbers into sysex byte streams. | And many used all sorts of crazy schemes for banks and | patch numbering, most of which are incompatible with one | another. | | And it's not just encoding: basic synth patch dump | features are missing from different models. There are | five basic tasks that most synth editors require: | | - Change patch - Request a dump from working memory - | Dump to working memory - Dump to patch RAM and save - | Send a single parameter change (for any parameter) | | Manufacturers couldn't even agree to make machines which | supported all five of these. Some machines (Yamaha) have | no way to write to RAM. Some machines couldn't do single | parameter changes. Some machines can't properly change | patches in a consistent manner. Some machines have no | patch request mechanism. Many machines can't dump to | current working memory: only to patch RAM! | | The situation is only getting worse. Whereas in the past | manufacturers at least attempted a complement of sysex | messages, now many manufacturers can't even be bothered | to allow access to their machines (Korg, Roland). Others | treat their sysex messages as proprietary secrets | (Arturia, Digitech, Alesis). | | There is only one truly good, shining actor in the open | MIDI spec space, and that is Sequential. Which shouldn't | be a surprise given who runs it. | 8bitsrule wrote: | Lots of 1.0 instruments have only SysEx to load/save patches. A | single patch may have hundreds of parameters. Whole libraries | of patches exist; they can be loaded/saved at once with Sysex. | So, no way. | unlinked_dll wrote: | I don't really see why that matters for a new protocol that | fallbacks to MIDI 1.0, it's not a superset of MIDI 1.0. If | your device only takes MIDI 1.0 SysEx for patches, anything | that would send those patches via MIDI is going to do it on | top of the fallback. | | What I'm saying is a new MIDI 2.0 device probably shouldn't | be able to use SysEx. Either opt out of MIDI 1.0 and use the | paradigms established or fallback to MIDI 1.0 and its | limitations. Otherwise we're just going to get a mess of | different implementations, and MIDI 2.0 will fail to be a | successful standard. | fao_ wrote: | There's a standard? I googled a few weeks ago and obviously my | google-fu was terrible because I didn't find a standards document | for it | AndrewDucker wrote: | https://www.midi.org/specifications-old/item/the-midi-1-0-sp... | robin_reala wrote: | But nothing seemingly available for 2.0? | nemacol wrote: | "...the new specification hasn't been fully ratified by the | members of the MMA and the AMEI, many details and | implications of the new spec are still unknown." | PascLeRasc wrote: | https://www.midi.org/articles-old/details-about- | midi-2-0-mid... | | The actual spec sheet is yet to be released, but this is a | really great article about it. | jacquesm wrote: | Midi works fine for anything keyboard based. As soon as you | deviate from that it becomes an exercise in frustration. | | Much better article: | | https://www.midi.org/articles-old/details-about-midi-2-0-mid... | robin_reala wrote: | Not that I'm familiar with the subject, but this article[1] | suggests that Roli's Seaboard would need MIDI >1.0 to transmit | per-note pressure and pitch bend info, and the Seaboard is | definitely keyboard based. | | [1] https://reverb.com/news/roland-unveils-first-midi-2-ready- | ke... | PascLeRasc wrote: | Pitch bend has been on MIDI controllers since forever, more | or less. I'm super excited for this synth though, with per- | note pitch-bend and multiple instruments reacting to key | pressure: https://www.youtube.com/watch?v=UjZ6SuWxBFg | 52-6F-62 wrote: | Coming from strings, that makes so much sense. Learning | some keyed instruments I always found myself attempting to | bend/vibrato in that way without thinking. | | Also, that man looks a lot like Garth Hudson... | https://pbs.twimg.com/media/DjtfCgOUwAA6K7o.jpg:small | fit2rule wrote: | MIDI 1.0 supports polyphonic pressure and aftertouch messages | - just not a lot of keyboard manufacturers supported it, | since its pretty processor intensive - not to send, but to | sense... | [deleted] | sneakernets wrote: | I'm so glad this happened, this may put an end to the many, many | bespoke midi implementations I've come across. | | I participated in a piano competition over a decade ago (I | believe it was sponsored by YAMAHA) which recorded all | participants through an extended MIDI format that increased the | resolution and bumped almost everything up to 1024 max from 127 | max. With MIDI 2.0 this wouldn't even be required, all the | functionality is included. | elihu wrote: | > I'm so glad this happened, this may put an end to the many, | many bespoke midi implementations I've come across. | | Maybe it will, but I'm not terribly optimistic that we'll avoid | the scenario where the various manufacturers implement the | parts of MIDI 2.0 that they care about, and we'll have another | mess of partial implementations that aren't entirely compatible | with each other. | | It might help if someone puts out an open-source highly | portable reference implementation that everyone can use rather | than every manufacturer writing everything from scratch. | PaulDavisThe1st wrote: | This quote from the section on the Capability Inquiry: | | "The type of instant-matching that is, as of now, still based on | proprietary messages between Ableton hardware and software (or | similar systems from other companies) will instead be universally | available through MIDI 2.0" | | is misleading. The "matching" between (say) Live and a Push 2 are | not based on proprietary messages sent between them, but merely | on both ends knowing which messages to send. That's why an open | source DAW like Ardour can also interact with a Push 2, in the | same "instant-matching" way that Live can. | | Since MIDI is an open protocol, it is _always_ possible to | determine what messages are being sent. The capability inquiry is | a good idea, but it doesn 't replace the sort of carefully-built | match between the hardware controller and the software that | already exists. | Jamwinner wrote: | I am hopeful, but skeptical. | | All you musicians who can't feel the MIDI 1.0 delay need to play | on some accoustical insturments and get what you have been | missing. That couple of ms between each note make every chord a | rapid appregio, drum hit a flam, and it gets worse as control | data (much less sysex!) is added. | | While I was hoping for a timing-agnostic standard, what we seem | to be getting is not terrible from what I can see. Does anyone | have a link to an actual spec sheet or prototype implementation? | scarecrowbob wrote: | I wish my timing was that good. I've been using MIDI for | decades and not ever noticed it when stuff was setup correctly. | | I mean, I play guitars and pedal steel, banjo, dobro, | accordion, etc. all acoustically (or, more likely, "in the | analog domain"). Maybe I just need to practice more or listen | harder. | | Do you have any suggestions on how I can improve my timing | and/or hearing to experience this? | RuleOfBirds wrote: | Ya. As someone who plays acoustic piano, guitar, ukulele, and | ocarina...using MIDI 1.0 to connect my electronic gear hasn't | created any latency that's noticeable to me. | | Sure if you're sending things to and back through a DAW or | whatnot it can get noticeable, but that's processing/software | time, not MIDI 1.0. | | I can't tell the difference between a 320kbps mp3 and FLAC | either, but I'm not worried about it. | [deleted] | seandougall wrote: | Back of envelope: With running status, a note on message is two | bytes on a 31250 baud connection. That means the latency from | transport is on the order of half a millisecond. If you're | feeling latency, it's in the gear, not the protocol. MIDI | implementation quality has long been wildly inconsistent, and I | don't see a reason to believe that will change with MIDI 2.0. | arexxbifs wrote: | Damn, this means my Atari will become obsolete. | lioeters wrote: | For me, one of the highlights is the higher resolution of values, | for example for control messages, from 7 bits (0~127) up to 32 | bits. | kazinator wrote: | What will Midi 2.0 mean for musicians? | | I suspect: frustrations with shit not working with other shit, | like it used to with MIDI, and a big decrement in DIY | hackability. | | USB is in the mix! Pretty much `nuff said, but I will say it | anyway. USB is a complex beast with documentation that is a good | fraction of a foot high, if printed out in all its versions on | standard letter sized laser paper. If you bring that into any | standard, that is now part of your standard. | | USB connectors do not have the optical isolation of MIDI current | loops; USB interconnecting will bring in noisy ground loops that | will have musicians and recording engineers pulling out their | hair. | | The clever thing in MIDI is that a device which sends messages | over MIDI to another device drives current pulses (not voltage). | These current pulses activate an octo-coupling device in the | receiver such as a phototransistor. There is no galvanic | connection between the devices; they don't share any ground or | anything. | | All sorts of talented musicians have done incredible things with | MIDI. The resolution of MIDI has been just fine for people with | real chops. MIDI 2.0 isn't going to solve the real problem: | talent vacuum. | exabrial wrote: | MiDI 2.0 is not isolated? Crap. Literally any of my guitar | pedals when connected by USB instantly injects noise into my | electric guitar signal chain, and isolated USB hubs are | practically non-existent. | Polylactic_acid wrote: | USB midi is already a thing though. And its a real pain to use | if you want to connect 2 devices together where one of them | isn't your computer. | ipsum2 wrote: | From the article: | | > When you connect devices together, the Capability Inquiry | will immediately determine what each instrument is able to do: | Your new MIDI 2.0 controller will automatically know which | pieces of your rig are equipped with MIDI 1.0, which are | capable of 2.0, and tailor its messages accordingly. | | So hopefully backward compatibility Just WorksTM. ___________________________________________________________________ (page generated 2020-01-29 23:00 UTC)