KARAOKE PLAYER SOFTWARE - Learn More
EXTRACT SOFTWARE RAR/ZIP/ETC - Learn More
MIDI TRANSPORT PROTOCOLS
Alternate Hardware Transports
In addition to the original 31.25 kBaud current-loop, 5-pin DIN transport, transmission of MIDI streams over USB, IEEE 1394 a.k.a FireWire, and Ethernet is now common (see below).
MIDI over Ethernet
Compared to USB or FireWire, the Ethernet implementation of MIDI provides network routing capabilities, which are extremely useful in studio or stage environements (USB and FireWire are restricted to connections between one computer and some devices and do not provide any routing capabilities). Ethernet is moreover capable of providing the high-bandwidth channel that earlier alternatives to MIDI (such as ZIPI) were intended to bring.
After the initial fight between different protocols (IEEE-P1639, MIDI-LAN, IETF RTP-MIDI), it appears that IETF's RTP MIDI specification for transport of MIDI streams over Ethernet and Internet is now spreading faster and faster since more and more manufacturer's are integrating RTP-MIDI in their products (Apple, CME, Kiss-Box, etc...). Mac OS X, Windows and Linux drivers are also available to make RTP MIDI devices appear as standard MIDI devices within these operating systems.
RTP-MIDI Transport Protocol
The RTP-MIDI protocol has been officially released in public domain by IETF in December 2006 (IETF RFC4695). RTP-MIDI relies on the well-known RTP (Real Time Protocol) layer (most often running over UDP, but compatible with TCP also), widely used for real-time audio and video streaming over networks.
RTP layer is extremely easy to implement and requires very few power from microprocessor, but it already provides very useful information to the receiver (network latency, loss of packets, reordered packets, etc...). RTP-MIDI defines a specific payload type, that allows the receiver to identify MIDI streams.
RTP-MIDI does not alter the MIDI messages in any way (all messages defined in the MIDI norm are transported transparently over the network), but it adds some specific functionnalities, like timestamping and sysex fragmentation. RTP-MIDI also adds a very powerful mechanism, named journalling, that allows the receiver to detect the loss of MIDI messages in the network, but also to retrieve lost information.
The first part of RTP-MIDI specification is mandatory to implement and describes how MIDI messages are encapsulated within the RTP telegram. It also describes how the journalling system is working. It must be noticed that the use of the journalling system is not mandatory (journalling is not very useful for LAN applications, but it is very important for WAN applications).
The second part of RTP-MIDI specification describes the session control mechanisms that allow multiple stations to synchronize across the network to exchange RTP-MIDI telegrams. This part is informational only, and it is not required that all RTP-MIDI implementations use the described mechanisms.
RTP-MIDI is included in Apple's Mac OS X, as standard MIDI ports (the RTP-MIDI ports appear in Macintosh applications as any other USB or FireWire port. Thus, any MIDI application running on Mac OS X is able to use the RTP-MIDI capabilities in a transparent way). However, Apple's developers have considered that the session control protocol described in IETF's specification was by far too complex, and they created their own session control protocol. Since the session protocol uses a different UDP port of the main RTP-MIDI stream port, the two protocols do not interfere (so the RTP-MIDI implementation in Mac OS X fully complies to the IETF specification).
The Apple's implementation has been used as reference by other MIDI manufacturers. A Windows XP RTP-MIDI driver specifically for their own devices has also been released by the Dutch company Kiss-Box and a Linux implementation is currently under development by the Grame association. It is then quite probable that the Apple's implementation will become the "de-facto" standard (and could even become the MMA reference implementation).
About the Various Midi Formats & Extensions