Submitted by thewhippinpost on Sun, 09/07/2006 - 22:42.
Yamaha MIDI XG

MIDI information is transmitted in "MIDI messages", which can be thought of as instructions which tell a music synthesizer how to play a piece of music. It is the synthesiser receiving the MIDI data which generates the actual sounds, according to the instructions it receives.

MIDI Basics

The MIDI interface on a MIDI instrument will generally include three different MIDI connectors labeled:

  • IN
  • OUT
  • THRU

MIDI data, or messages, are usually triggered by a MIDI controller, such as a keyboard or sequencer.

MIDI controller

Device which is played as an instrument, and translates the performance into a MIDI data stream in real time (as it is played).

MIDI sequencer

A MIDI sequencer is a device which allows MIDI data messages to be captured, stored, edited, combined, and replayed. MIDI data from a MIDI controller, eg... keyboard, or a sequencer is transmitted via the devices' MIDI OUT connector.

The recipient of this MIDI data stream is commonly a MIDI sound generator or sound module, which will receive MIDI messages at its MIDI IN connector, and respond to these messages by playing sounds.

Note that many MIDI keyboard instruments include both the keyboard controller and the MIDI sound module functions within the same unit. In these units, there is an internal link between the keyboard and the sound module which may be enabled or disabled by setting the "local control" function of the instrument to ON or OFF respectively.

The single physical MIDI Channel is divided into 16 logical channels by the inclusion of a 4 bit Channel number within many of the MIDI messages. A musical instrument keyboard can generally be set to transmit on any one of the sixteen MIDI channels.

A MIDI sound source, or sound module, can be set to receive on specific MIDI Channel(s). The sound module has to be set to receive the channel the keyboard controller is transmitting on, in order to play the sounds.

MIDI Sequencers and Standard MIDI Files

MIDI messages are received and processed by a MIDI synthesizer in real time. When the synthesizer receives a MIDI "note on" message it plays the appropriate sound. When the corresponding "note off" message is received, the synthesizer turns the note off.

If the source of the MIDI data is a musical instrument keyboard, then this data is being generated in real time. When a key is pressed on the keyboard, a "note on" message is generated in real time.

In these real time applications, there is no need for timing information to be sent along with the MIDI messages. However, if the MIDI data is to be stored as a data file, and/or edited using a sequencer, then some form of "time-stamping" for the MIDI messages is required.

The Standard MIDI Files specification provides a standardised method for handling time-stamped MIDI data. This standardised file format for time-stamped MIDI data allows different applications, such as sequencers, scoring packages, etc... to share MIDI data files.

The specification for Standard MIDI Files defines three formats for MIDI files. MIDI sequencers can generally manage multiple MIDI data streams, or "tracks".

Standard MIDI Formats:

  • Format 0 stores all of the MIDI sequence data in a single track.
  • Format 1 files store MIDI data as a collection of tracks.
  • Format 2 files can store several independent patterns.

Standard MIDI Format 2 (SMF2) is generally not used by MIDI sequencers for musical applications. Most sophisticated MIDI sequencers can read either Format 0 or Format 1 Standard MIDI Files.

Standard MIDI Format 0 (SMF0) files may be smaller, and thus conserve storage space. They may also be transferred using slightly less system bandwidth than Format 1 files.

However, Standard MIDI Format 1 (SMF1) files may be viewed and edited more directly, and are therefore generally preferred.