An update to 37-year-old MIDI
imho MIDI 2.0 hits the low hanging fruit but doesn&#x27;t go far enough at fixing the biggest problem in professional audio. Deterministic rendering. Basically same input makes the same output, which doesn&#x27;t happen even in totally digital systems - doubly so with live (or recreated) midi events.<p>I&#x27;ll give an example - you have your PC with $DAW_OF_CHOICE running and plug in $MIDI_2_CONTROLLER to USB and enable a track and hit record, play your stuff, and stop. When you play it back, unless the cosmic forces are exceptionally on your side, <i>it will not sound the same as when you played it</i>. It&#x27;s subtle and sometimes ignored or even desirable, but it&#x27;s there.<p>There are a lot of reasons why this problem hasn&#x27;t been solved, some technical and others artistic. But imho, a certain grade of equipment (namely, recording&#x2F;reproduction, of which the MIDI protocol is a key component) should behave identically under the same conditions and be able to reproduce a performance exactly. It&#x27;s a goal that borders on absurd, but I think we could do it!<p>Namely - enough of this &quot;transport agnostic&quot; horseshit. Give me a professional event protocol that is sent synchronously with the audio, on the wire and on the board. I want my codec chips interleaving midi messages (don&#x27;t care if they&#x27;re 16&#x2F;24&#x2F;32 bit) as a separate audio channel, even if it is undersampled (eg send LRLRLRMLRLRLRM over I2C at the appropriate clock to have audio in time and MIDI undersampled by 3x per word), I want MIDI events <i>in my interrupt</i> and in the callback, synchronized <i>exactly</i> to whatever audio is coming in at the same time.<p>And give me unadulterated total, absolute dictatorial control over the audio drivers using a ping&#x2F;pong buffer that gets mapped to memory in the audio callback for my professional application and mine alone. Minimize the kernel time spent mapping physical memory to virtual memory, like ASIO drivers but without the bullshit. I want as little overhead between the frame buffer coming in off DMA to the chip as I want without the possibility of pwning the system. Hell, give me a dedicated core!