Short on MIDI

MIDI, also known as GM2 (General MIDI version 2), is a standardized format to store music data as a sequence of standard MIDI messages with a timestamp for each message. A message together with its timestamp is referred to as a MIDI Event.
The format does not include audio (like mp3 or wave) but only information such as what instruments that plays on each channel, what notes they play, in what velocity and for what duration etc.
For MIDI to be played it must be fed to a Synthesizer that understands and correctly interprets the GM2 format.
A Sequencer reads the MIDI file and transmit the contained MIDI messages to the synthesizer at their given timestamps. Most operating system includes at least one default MIDI sequencer and synthesizer.

MIDI File Types

General MIDI files come in three flavors, cleverly named type 0, 1 and 2.

  • Type 0 – These files contain only one track. Messages from different channels are mixed on that same track.
  • Type 1 – These files contain multiple tracks where each track only contains channel messages for one channel.
  • Type 2– These files contain multiple songs. (Not supported by MidiYodi.)

MIDI Message Types

A MIDI file contains different types of messages that either control playback, like Note On messages, or just holds information, like Track Name messages. MIDI messages are grouped in the three categories:

  • Voice messages
    Includes messages related to the actual playback on one of the 16 MIDI channels. Some examples include Program Change that determines what instrument to use, Note On and Note Off that starts and stops playback of a given note. Volume Change that controls the volume of the instrument.
  • Meta messages
    Meta messages are not bound to a specific channel or instrument and are optional within a MIDI file. Some messages are of importance to sequencers like Tempo messages while others are of interest to notation programs like Time Signature and Key Signature messages.
    Meta messages also include specific text messages like MarkerTrack Name or just Lyrics where the later is often used for lyrics or to implement running text in karaoke players.
  • System exclusive messages
    System exclusive messages are vendor or author specific messages that can be used for internal purpose by vendor made synthesizers etc. These messages cannot be interpreted in a general MIDI application like MidiYodi.