Jump to content

RTP-MIDI

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by 99.38.250.165 (talk) at 21:53, 30 April 2013 (→‎History of RTP-MIDI). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

History of MIDI over networks

Multiple attempts have been made in the past to carry MIDI data over cabled or wireless networks. In most cases, these implementations were very basic (just including MIDI data bytes in UDP or TCP telegrams), without any session management and/or added value like data recovery in case of message loss. Some of these implementations still exist today, but they are now considered as proprietary protocol.

A first standardization attempt was made in 2001 by Phil Kerr, who wrote a proposal document to carry MIDI data over Ethernet network (under the initial name of DMIDI), which was submitted to IEEE.[1] The proposal received number P1639. The biggest difficulty with this protocol was the use of low level Ethernet sockets (P1639 does not use IP, nor UDP or TCP), which appeared to be very unpractical on Windows and Mac OS X platforms (the first implementation was written on Linux machines, on which such an implementation is easier). All works on IEEE P1639 almost stopped after 2004, due to founding problems.

History of RTP-MIDI

In 2004, John Lazzaro and John Wawrzynek, from UC Berkeley, made a presentation in front of AES named "An RTP payload for MIDI".[2] In 2006, the document was submitted to IETF and received the number RFC4695.[3] In parallel, another document was released by Lazzaro and Wawrzynek to give details about practical implementation of the RTP-MIDI protocol, especially the journalling mechanism.[4]

RFC4695 has been obsoleted by RFC6295 in 2011 (the protocol has not changed between the two version of the RFC documents, the last one contains correction of errors found in RFC4695)[5]

The MIDI Manufacturers Association has also started a central information website (aiming end users and implementors) in order to answer questions related to RTP-MIDI.[6]

Apple's RTP MIDI implementation (AppleMIDI)

Apple Computers introduced RTP-MIDI as a part of their operating system Mac OS X v10.4 in 2005. The RTP-MIDI driver is reached using the Network icon in the MIDI/Audio Configuration tool (in Utilities folder). Apple's implementation follows strictly the RFC4695 for RTP payload and journalling system, but uses a dedicated session management protocol (they do not follow RFC4695 session management proposal). This protocol is displayed in Wireshark as "AppleMIDI" (see below)

Apple also created a dedicated class in their mDNS implementations (known as "Bonjour"). Devices which comply to this class appear automatically in Apple's RTP-MIDI configuration panel as participant's directory, making the Apple MIDI system fully 'Plug & Play'. It's however possible to enter manually IP addresses and ports in this directory, to connect to devices which do not support Bonjour.

Apple introduced also RTP-MIDI support in iOS4, but such devices can not be session initiators.

The RTP-MIDI driver from Apple creates virtual MIDI ports (named "Sessions") which are available as MIDI ports in any software (like sequencers or software instruments) using CoreMIDI, where they appear as a pair of MIDI IN / MIDI OUT ports (like any other MIDI 1.0 port or USB MIDI ports).

RTP-MIDI embedded implementation

In 2006, the Dutch company Kiss-Box presented a first embedded implementation of RTP-MIDI, in different products like MIDI or LTC interfaces.[7] A proprietary driver was developed by this company for Windows XP, but restricted to the communication with their devices (it was not possible to connect a PC with a Mac computer using this driver). Their products comply with AppleMIDI implementation (using the same session management), and can be used with Apple's driver or Windows driver.

Kiss-Box announced in May 2012 that they plan to release a tool named "RTP-MIDI Editor", which allows to manage sessions between RTP-MIDI devices in a network from a central point (up to now, sessions must be managed from session initiators only - PC and Mac computers)

RTP-MIDI driver for Windows

Tobias Erichsen released in 2010 a Windows implementation of Apple's RTP-MIDI driver.[8] This driver works under Windows XP, Windows Vista and Windows Seven (32 and 64 bits version). This driver uses a configuration panel very similar to the Apple's one, and is fully compliant with Apple's implementation. It can then be used to connect a Windows machine with a Macintosh computer, but also embedded systems. As with Apple's driver, the Windows driver creates virtual MIDI ports, which become visible from any MIDI application running on the PC (access is done through mmsystem layer, like all other MIDI ports).

Driverless use of RTP-MIDI

Since RTP-MIDI is based on UDP/IP, any application can implement the protocol directly, without needing any driver. The drivers are needed only when users want to make the networked MIDI ports appear as a standard MIDI port. For example, some Max/MSP objects have been developed following this methodology.

RTP-MIDI protocol elements

RFC4695/RFC6295 split the RTP-MIDI implementation in different parts. The only mandatory one (which defines compliance to RTP-MIDI specification) is the payload format. The journalling part is optional (but RTP-MIDI packets shall indicate that they have an empty journal, so the journal is always present in the RTP-MIDI packet, even if it is empty) The session initiation/management part is purely informational (and was not used by Apple, who created its own session management protocol)

References