Internet telephony and video-conferencing programs send audio and video over the net using the Real-time Transport Protocol (RTP). RTP is an Internet Engineering Task Force (IETF) standard, whose payload formats are developed in the Audio-Video Transport payload working group (payload).
We have worked within AVT-payload to standardize RTP MIDI, a payload format to send MIDI over networks using RTP. MIDI is a standard for coding the gestures of musical performance -- pressing piano keys, striking drum pads, moving faders, etc).
RFC 6295 normatively defines the RTP MIDI payload format. RFC 4696 is an implementation guide for RTP MIDI. The RFCs were developed in cooperation with the MIDI Manufacturers Association (MMA) and the Motion Pictures Expert Group (MPEG).
RTP MIDI is able to send MIDI over a "lossy" network (a network that loses packets). To prevent "stuck notes" and other artifacts, RTP MIDI uses a feed-forward resiliency system (the recovery journal) to recover from packet loss.
We anticipate three major application areas for RTP MIDI:
To Learn More
RFC 6295 was approved in 2011, and fixes many document errors in the first RTP MIDI RFC (RFC 4695). See Section 12 of RFC 6295 for a complete change log. Errors in RFC 4696 are documented on its errata page.
This paper, presented at the 117th AES convention, is a good introduction to how RTP MIDI works, and how it fits into the IETF media protocol stack. The AES paper discusses a protocol that is a snapshot of RTP MIDI as it existed in October 2004.
In network musical performance applications, one cause of concern is the latency between performers. This paper, presented at the NOSSDAV 2001 conference, discusses latency (and other issues) in network musical performances, in the context of an application that uses a proto-version of RTP MIDI as the network transport.
Apple uses RTP MIDI as the transport layer for the MIDI Network Driver that ships in Mac OS X and iOS.
iOS app developers can access RTP MIDI via the MIDINetworkSession Class. Hundreds of iOS apps use RTP MIDI.
Tobias Erichsen has created a MIDI Network Driver for Windows that can interoperate with Apple's RTP MIDI implementation. His driver is free for private, non-commercial use, and is available for download here.
Kiss-Box manufactures Ethernet networking hardware that interoperates with Apple's RTP MIDI implementation. The Kiss-Box RTP MIDI stack was developed by Benoit Bouchez, who also develops embedded implementations of RTP MIDI on a consulting basis (email: beb [dot] digitalaudio [at] free [dot] fr).
Jim Young has written an RTP MIDI stack for Windows 8 using the WinRT API (video).
MidiShare, a realtime operating system for musical applications, includes an RTP MIDI library in its development branch.
The (unofficial) reference implementation for RTP MIDI is the network stack in sfront, an MPEG 4 Structured Audio decoder.
Networking is no longer enabled in the sfront distribution, because we no longer host the required network services. However, the networking source code still ships in the distribution. Developers wishing to examine the network code can download sfront here, and follow these instructions for locating the network source code. Alternatively, we offer a smaller distribution that contains only the network source code (click here to download). Note that the network code (and sfront itself) is BSD-licensed.
John Lazzaro and John Wawrzynek (2004). An RTP Payload Format for MIDI. The 117th Convention of the Audio Engineering Society, October 28-31, 2004, San Francisco, CA. [PDF].
John Lazzaro and John Wawrzynek (2001). A Case for Network Musical Performance. The 11th International Workshop on Network and Operating Systems Support for Digital Audio and Video (NOSSDAV 2001) June 25-26, 2001, Port Jefferson, New York [PDF].