An Implementation Guide for RTP MIDI
RFC 4696

 
Document
Type RFC - Informational (November 2006; Errata)
Last updated 2013-03-02
Replaces draft-lazzaro-avt-mwpp-coding-guidelines
Stream IETF
Formats plain text pdf html
Stream
WG state (None)
Consensus Unknown
Document shepherd No shepherd assigned
IESG
IESG state RFC 4696 (Informational)
Telechat date
Responsible AD Allison Mankin
Send notices to csp@csperkins.org, magnus.westerlund@ericsson.com

Email authors IPR 1 References Referenced by Nits Search lists

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
Show full document text