datatracker.ietf.org
Sign in
Version 5.4.0, 2014-04-22
Report a bug

An Implementation Guide for RTP MIDI
RFC 4696

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

[include full document text]