Introduction to Computer Music: Volume One

1. How does the MIDI system work? Page 10

Extensions of System Exclusive codes

MIDI TIme Code

As mentioned on the previous module, MIDI clock, part of the system real time code class, is a relative timing device, since it depends on musical time or tempo. A real need developed to synchronize MIDI with film, audio devices, video devices, etc. This required absolute timing. The film industry already had its own form of time code called SMPTE (Society of Motion Picture and Television Engineers). Shortly after the adoption of the MIDI 1.0 spec, a new class of code called MIDI Time Code was proposed to act as a bridge between MIDI and SMPTE. External devices would convert MIDI Time Code to SMPTE and visa versa. Sequencers could be synchronized to video decks for film scoring. Time code taken from the video tape (either linear time code from a sub-audio track or vertical time code embedded in the picture) and converted by, in many cases a MIDI interface, such as MOTU's MIDI Timepiece to MIDI Timecode which would then sync up the sequence with the video tape.

The class of code used for MIDI Time Code is called universal real time system exclusive. A single message is sandwiched between the SysEx packet mentioned above and looks like this (for simplicity's sake, this is listed in hex). The legend breaks down how some of the individual bits are used.

F0 7F 7F 01 00 hr mm sc fr F7

  • hr= hour and type (0 yy zzzzz)
    yy=frames per second category (00=24 fps, 01=25 fps, 10=30 fps, 11=30 fps-drop)
    zzzzz=hours 00-17
  • mn=minutes
  • sc=second (0-59)
  • fr=frames (0-29)

Frame rates are a tricky subject--it is important for anyone synchronizing to video tape that they know what frame rate the tape was encoded at and that they set their MIDI sequencer frame rate to match. Fortunately, the storage capacity of current computers allows composers to import video files directly into their MIDI sequencers to compose with, negating the need for much, but not all of the original purpose of MIDI Time Code.

MIDI Sample Dump Standard

This class of code grew out of a need to move samples (audio files stored on an instrument for playback) from an instrument to the computer, edit it, perhaps use a looping utility on the software to add loop points, and send it back to the instrument. The first computer program I can remember for doing this was Sound Designer from Digidesign. A the time it was developed, digital sampling instruments had very limited memory, so the samples used were typically very short. At 31.25 kbaud, sending a longer stereo sample of the type often used at the time of this writing is, to say the least, very slow and time-consuming. Instead, samplers are usually equipped with floppy drives, all sorts of hard drives and removable media, and can be hooked directly up to computer via SCSI or other high-speed means, making non-MIDI transfers much more common.

MIDI Machine Control

MIDI Machine Control (MMC) and its cousin MIDI Show Control (MSC) are specific SysEx codes for controlling the transport functions of connected tape decks. This has been used most successfully to synchronize a MIDI sequencing program with a digital audio recorder such as an ADAT or Tascam D-78. MMC tells the deck to start, stop, pause while MIDI Time Code keeps the tape synchronized with the sequencer. MIDI Show Control similarly helps synchronize lighting and other theatrical devices, perhaps even fireworks!

Other Non-code Extensions to MIDI

Standard MIDI Files

Created in 1988 due to an explosion of different types of MIDI software, a standard, transportable file format for saving MIDI sequences and opening them with other programs was adopted. Today, for example, a composer may save a Standard MIDI File created by a notation program and open it in a MIDI sequencing program, which will understand the various parameters of the file, such as track names, tempo changes, etc. With the ability to embed and play sequences directly on computer sound cards, standard MIDI files have become commonplace items in web page authoring (particularly the on-line greeting card market).

There are three main types of Standard MIDI Files, and most programs will give the user a choice when saving as an SMF. not all programs respond to each type, however, so know the capability of the programs you are saving for.

  • Type 0: These files consist of one track, with note and other events being tagged with the MIDI channels they belong to.
  • Type 1: A sequence is saved as separate tracks, even if more than one track is assigned to the same MIDI channel. Track labels are also maintained.
  • Type 2: Same as Type 1 (separate tracks), but each track may have its own tempo.

Because SMF's are intended to be as universal as possible, they not only contain note information, but also include the number of MIDI clocks that need to elapse between note events (the time these actually take are relative to the tempo indication. Each event is preceded by a delta time value, which uses two bytes (14-bit precision). Meta-data embedded in a standard MIDI file include such things as track names, tempo change, key signatures, lyrics (which allow many Karaoke machines to read and display them--seriously!), and even system exclusive data).

General MIDI

The fact that users could share Standard MIDI files did not guarantee that those files would be played back with the same sort of timbres they were made with, either by instruments or computers reading web pages. So in 1991 a 'standard' was adopted by the MIDI Manufactures Association (MMA) and the Japan MIDI standards Cmte. called General MIDI System Level 1 (or just General MIDI or GM) in which certain programs of either General MIDI instruments or computer sound cards would contain specific instrumental or sound effects patches. In addition, GM-compliant keyboards or sound cards (or now plug-ins) have to meet certain other standards as well. They need to have a minimum of 24 voices, 16 MIDI channels of variable polyphony, percussion assigned to MIDI channel 10, a minimum of 128 programs and support for controllers #1,7,10, 64, 121 and 123, velocity, channel pressure and pitch bend (set to +/- 2 semitones). In addition, percussion maps (what percussion instrument sounded on what key#) were standardized, so if your instrument has several GM drum kits they will be mapped as indicated below on the GM Percussion Keymap link.

There are enough GM charts on the web that we don't need to relist here, but to see such a list, visit:

GM Instrument Patch Map from the
GM Percussion Keymap from the

The Roland Corporation created a superset of GM Level 1 called GS. GM files will play on a GS instrument or soundcard, but GS files may use additional banks of sounds that more specifically capture what a composer had in mind. GS files will 'default' to GM patches if necessary to play on a GM instrument. The Roland Sound Canvas and Sound Brush were GS modules.

In 2003, the MMA came out with a significant extension of GM called GM level 2 (or just GM2), which adds many more controllers, bank control, etc. See for a complete summary. Many new standards, such a GM Lite, XMF (Extensible Music File), SP-MIDI (Scalable Polyphony MIDI Spec.), DLS (Downloadable Sounds Specification) can be found at the MIDI Manufacturers Associate website (

1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14

| Jacobs School of Music | Center for Electronic and Computer Music | Contact Us | ©2017-18 Prof. Jeffrey Hass