An Implementation Guide for RTP MIDI
RFC 4696
Document | Type | RFC - Informational (November 2006; Errata) | |
---|---|---|---|
Authors | John Wawrzynek , John Lazzaro | ||
Last updated | 2020-01-21 | ||
Replaces | draft-lazzaro-avt-mwpp-coding-guidelines | ||
Stream | IETF | ||
Formats | plain text html pdf htmlized with errata bibtex | ||
Stream | WG state | (None) | |
Document shepherd | No shepherd assigned | ||
IESG | IESG state | RFC 4696 (Informational) | |
Action Holders |
(None)
|
||
Consensus Boilerplate | Unknown | ||
Telechat date | |||
Responsible AD | Allison Mankin | ||
Send notices to | csp@csperkins.org, magnus.westerlund@ericsson.com |
Network Working Group J. Lazzaro Request for Comments: 4696 J. Wawrzynek Category: Informational UC Berkeley November 2006 An Implementation Guide for RTP MIDI Status of This Memo This memo provides information for the Internet community. It does not specify an Internet standard of any kind. Distribution of this memo is unlimited. Copyright Notice Copyright (C) The IETF Trust (2006). Abstract This memo offers non-normative implementation guidance for the Real- time Protocol (RTP) MIDI (Musical Instrument Digital Interface) payload format. The memo presents its advice in the context of a network musical performance application. In this application two musicians, located in different physical locations, interact over a network to perform as they would if located in the same room. Underlying the performances are RTP MIDI sessions over unicast UDP. Algorithms for sending and receiving recovery journals (the resiliency structure for the payload format) are described in detail. Although the memo focuses on network musical performance, the presented implementation advice is relevant to other RTP MIDI applications. Lazzaro & Wawrzynek Informational [Page 1] RFC 4696 An Implementation Guide for RTP MIDI November 2006 Table of Contents 1. Introduction ....................................................2 2. Starting the Session ............................................3 3. Session Management: Session Housekeeping ........................6 4. Sending Streams: General Considerations .........................7 4.1. Queuing and Coding Incoming MIDI Data .....................11 4.2. Sending Packets with Empty MIDI Lists .....................12 4.3. Congestion Control and Bandwidth Management ...............13 5. Sending Streams: The Recovery Journal ..........................14 5.1. Initializing the RJSS .....................................16 5.2. Traversing the RJSS .......................................19 5.3. Updating the RJSS .........................................19 5.4. Trimming the RJSS .........................................20 5.5. Implementation Notes ......................................21 6. Receiving Streams: General Considerations ......................21 6.1 The NMP Receiver Design ....................................22 6.2 High-Jitter Networks, Local Area Networks ..................24 7. Receiving Streams: The Recovery Journal ........................25 7.1. Chapter W: MIDI Pitch Wheel (0xE) .........................30 7.2. Chapter N: MIDI NoteOn (0x8) and NoteOff (0x9) ............30 7.3. Chapter C: MIDI Control Change (0xB) ......................32 7.4. Chapter P: MIDI Program Change (0xC) ......................34 8. Security Considerations ........................................35 9. IANA Considerations ............................................35 10. Acknowledgements ..............................................35 11. References ....................................................35 11.1. Normative References .....................................35 11.2. Informative References ...................................36 1. Introduction [RFC4695] normatively defines a Real-time Transport Protocol (RTP, [RFC3550]) payload format for the MIDI (Musical Instrument Digital Interface) command language [MIDI], for use under any applicable RTP profile, such as the Audio/Visual Profile (AVP, [RFC3551]). However, [RFC4695] does not define algorithms for sending and receiving MIDI streams. Implementors are free to use any sending or receiving algorithm that conforms to the normative text in [RFC4695], [RFC3550], [RFC3551], and [MIDI]. In this memo, we offer implementation guidance on sending and receiving MIDI RTP streams. Unlike [RFC4695], this memo is not normative. Lazzaro & Wawrzynek Informational [Page 2] RFC 4696 An Implementation Guide for RTP MIDI November 2006 RTP is a mature protocol, and excellent RTP reference materials are available [RTPBOOK]. This memo aims to complement the existing literature by focusing on issues that are specific to the MIDI payload format. The memo focuses on one application: two-party network musical performance over wide-area networks, following the interoperability guidelines in Appendix C.7.2 of [RFC4695]. Underlying the performances are RTP MIDI sessions over unicast UDP transport. Resiliency is provided by the recovery journal system [RFC4695]. The application also uses the RTP Control Protocol (RTCP, [RFC3550]).Show full document text