Douglas Lyon
Fall 1995
© IEEE Computer Society Press.


1.3.1. The MIDI Implementation Chart

Midi implementation charts are used to describe the messages which a device will recognize and or produce. According to the MIDI Manufacturers Association (MMA) a MIDI implementation chart must be 4 columns by 12 rows. The Midi Specification says that the MIDI Implementation Chart must be included with all MIDI hardware products. The chart must have the same size and number of lines. The idea is that a user should be able to overlay two instruments charts and compare the transmitted and recognized functions and messages. Some books seem to have reformatted and reduced the charts, for ease of publication. A full size chart, suitable for editing, is shown in Figure 1.3.1-1.

Figure 1.3.1-1 A Blank MIDI Implementation Chart

According to the Specification, the MIDI Implementation chart is required for any MIDI device. If you have an electronic version of this Primer, then you can double click on the chart and modify it. This chart was made with Aldus Table Editor and MacDraw Pro . If you have these utilities you can modify the chart with greater ease than with WordsÕ built in picture editor.

The MIDI chart for the control voltage to MIDI converter described in section 1.4 is shown in Figure 1.3.1-2.

Figure 1.3.1-2 MIDI Implementation Chart for the CV2MIDI converter

According to the standard, symbols "O" and "X" are used to indicate "Yes" and "No". Remarks and notes are optional. Some charts use a "-" to indicate that a feature is not implemented, but this is not a part of the MIDI Specification. MIDI modes are to be listed by the numbers: Mode 1 (OMNI ON, POLY), Mode 2 (OMNI ON, MONO), Mode 3 (OMNI OFF, POLY), and Mode 4 (OMNI OFF, MODO). Hexadecimal values are indicated with the suffix "h". The head of the chart contains the Manufacturer, Model, and Description, as well as the version. The Basic Channel Default field indicates which channel the device operates on after power is cycles. The Changed field indicates the MIDI channels which may be assigned.

Mode Default inciates wchich of the 4 MIDI modes is active after power is cycled. Mode Messages indicates which of the MIDI Modes messages are used by the device. Mode Altered indicates how a device responds to a message requesting a MODE change. Onely the recognized column is a valid entry for this field.

Note Number contains a range of note numbers, from 0 to 127. The True Voice field indicates the range of notes the device can play. This is used if it differs from the note number range.

An annotatted chart appear in Figure 1.3.1-3.

Figure 1.3.1-3 An Annotated MIDI Implementation Chart, Part 1.

The first 4 parts of the chart are shown in subsequent figures, for formatting reasons. Figure 1.3.1-4 shows an annotated MIDI Implementation chart for fields from after touch to system common.

Figure 1.3.1-4 MIDI Implementation Chart, Part 2.

Figure 1.3.1-5 shows an annotated MIDI Implementation Char with the System Real Time through Notes fields annotated.

Figure 1.3.1-5 Annotated MIDI Implementation Chart, Part 3

There are so many implementation charts that people have wrtten books to list them [Furia 1986].

According to this author, such books are out-of-date before they are even printed. New instrument manufactuers and new instruments are typical in this industry. Since there are already ftp and web sites available for MIDI information (i.e., ftp://mitpress.mit.edu/pub/Computer-Music-Journal/Documents/MIDI/, http://www.eeb.ele.tue.nl/midi/specs.HTM) why not put mirrors or "hot links" to the implementation charts? It would be very nice if there were an on-line, machine readable source for the implementation charts. In this way manufacturers of software could always use the latest information about the devices available.

In fact there are to disparate issues regarding MIDI Implementation charts. The first is to provide a human-readable description of a devices abilities (the original intention of the charts). The second, implicit implementation chart use is to provide a machine-reable description of a devices abilities. In this matter the implementation chart is improverished. In fact, what is needed is an implementation chart language which can be read in at run-time by a MIDI program.Such a language should probably be described by a deterministic context-free grammar, sometime called BNF (for Backus-Naur form). See Aho and Johnson's article [Aho and Johnson 1974] for an excellent tutorial on the construction of a parser for such a grammar. In fact, it is possible to interactively prototype such a grammar using the translate functor "--> " in Prolog as a substitute for the "::=" meta-symbol of BNF [Clocksin and Mellish].


[ Index | Main Paragraph | Next Paragraph ]