|Advanced Audio Recording|
Improved MIDI transmission
This article describes limitations of the MIDI standard and shows ways to get around several issues by increasing transmission speed and controller resolutions. Read here about the limitations of MIDI.
impact of a low MIDI-speed on sound
When having a closer look at today's synthesizer music, one recognizes that it is nearly impossible to transport all the information for many simultaneously pressed keys appropriately with the current MIDI protocol which is running at around 30kHz only. With e.g. 10 keys pressed the same time, nearly 10ms are required before all the "start note" commands are transmitted. In cases when musical instruments have to send a lot of additional controller data in order to manage functions like filtering and distortion in real-time, the limitation quickly becomes critical because it will cause jitter. This is very bad for fast and pulsed voices using also arpeggio effects. The example below shows a chord played at 160 bpm, creating 1/32ths notes repeating at 50ms. The intended echo effect of the automatic arpeggio is totally ruined because of jitter and partial bandwidth overflow:
But this is not only the case with electronic music: Having a look at qualified piano players, it becomes evident that finger movement has to be reproduced very precisely in order to maintain the real information. It is not possible to use simple velocity curves as with synthesizers but has to send continuous controller information with at least 1kHz along with the transient time of the note. This leads to what I call the "piano 10 finger problem" which means, that 10 controllers must be send in less than some ms and at least 20 have to be sent during note start leading to 30 midi massages at the "same" time totally overwhelming the midi speed. The table below shows this and other cases:
Comparison Table of MIDI-speeds
Even with enhanced MIDI at 230k like I proposed here, the precise piano playing was impossible. .
Most PC's limit seems to be 460kBaud, which I achieved using Linux and the wxWidgets Library. See my PDF-document here for a detailed explanation provided for Joachim Bürmann. www.iftools.com (CTB library). With 460kBaud piano control in real-time is principally possible. With special hardware, even 920kBaud is possible using Linux. So from the PC side, it was possible to switch to an enhanced MIDI standard with increased speed.
The question is how to get even more speed
with MIDI. Well looking at the MIDI speed comparison chart, it is very
obvious, that with the current even when using USB interfaces for PC,
there will still be a bottle neck when transferring music data to the
Using 5 Byte MIDI solves the issue of the coarse controller values since 12 bits are available now. Using S/PDIF physical layer at least 3MBaud are available to transmit MIDI data with acceptable delay and sufficient precision. Using 10 Bit reduced MIDI like in the 10 Bit MIDI Controller, 2 MIDI messages can be compressed into a S/PDIF word of 32 Bits. Alternatively two S/PDIF words can be used to store MIDI raw data including start / stop and parity bits for easy decoding. Finally full 5Byte MIDI can be transmitted using external S/PDIF connection using the normal protocol. Unlike described in my first MIDI2000 approach, this protocol fully works with existing hardware and fits well in the already defined S/PDIF standard protocol. Common transceivers can be used to transmit data.
Comments are welcomed.
Read also the former article
limitations of MIDI.
|© 2003 - Jürgen Schuhmacher|