MIDI Power!

Looking for that particular MIDI file?

Try my MIDI search engine:

Here are a few MIDI's that I have worked with:

KarnEvil 9

Mission Impossible

Never Ending Story

Peter Gun

Weird Science

Without You

X-Files Theme (kinda)

Zoot Suit Riot

Rhapsody In Blue

Mozart Symphony #25 (well, part of it anyway)

What is MIDI?

MIDI stands for Musical Instrument Digital Interface. It was a standard that came out in the early 1980's for the simple purpose of allowing electronic musical instruments of different manufacture to be able to communicate.

In a nutshell, MIDI is serial communication, over a single cable, that carries 16 channels of musical data. MIDI has nothing to do with sound, that is the purpose of the Sound Module / keyboard / computer sound card. All MIDI does, is transmit a series of numbers that tells the instrument what note to play, how hard to play it, controller information, and when to turn the note off.

As a side note, MIDI does not state how long to play a note. It sends a "NOTE ON / VELOCITY" statement, then when the note is to be stopped, MIDI sends a "NOTE OFF". This is very important to remember. If your sequencer is playing a large number of notes, and the MIDI connections gets disconnected or something similar, your sound module will never recieve a note off command. So, it will just sit there, playing all those notes. ARRRRGH!!! PANIC BUTTON!!!

 

What is a sequencer?

A sequencer is a device (Alesis MMT-8 or similar (wow, am I old or what?)) or program (CakeWalk or similar) that transmits MIDI information the way is was recorded or programmed. A sequencer normally has nothing to do with the actual sound that is heard (certain exceptions do apply, the Roland PMA-5 for example) with the exception of what voice to assign to a particular channel.

 

Why does a MIDI sound different between my computer and my friends?

The differences in sound you are hearing, is the difference between the sound cards. MIDI is nothing but notes, the sound is generated by the sound card in the computer. Different makes, and manufactures, will cause different sound synthesis.

 

So, what exactly is the format of MIDI?

Their is several types of data in MIDI ver 1.0.

Message types:

Channel: Channel messages contain a four-bit number in the Status byte which addresses the message specifically to one of sixteen channels. Their are two types of Channel messages.

Voice: to control the instrument's voices.

Mode: To define the instruments response to voice messages.

System: System messages are not encoded with channel numbers. Their are three types of system messages.

Common: Common messages are intended for all units in the system.

Real-Time: Real-Time messages are intended for all units in the system. They contain Status bytes only.

Exclusive: Exclusive messages can contain any number of Data Bytes, and are terminated by an End Of Exclusive (EOX) or any other status byte. These messages include a Manufacturer's Identification (ID) code. If the receiver does not recognise the ID code, it should ignore the following data.

Data Types:

Status Bytes: Status Bytes are eight bit binary numbers in which the Most Signicant Bit (MSB) is set (binary 1). Status bytes serve to identify the message type, the purpose of the data bytes which follow the status byte.

Running Status: For voice and mode messages only, when a status byte is received and processed, the receiver will remain in that status until a different status byte is received.

Unimplemented Status: Any status bytes received for functions which the receiver has not implemented should be ignored, and subsequent data bytes should be ignored.

Undefined Status: Undefined status bytes must not be used. Care should be taken to prevent illegal messages from being sent during power-up and power-down. If undefined states bytes are received, they should be ignored, along with the following data.

Data Bytes: Following the status byte, there are (except for real-time messages) one of two data bytes which carry the content of the message. Data bytes are eight-bit binary numbers in which the MSB is clear (binary 0). The number and range of the data bytes which must follow each status byte are various, and normally found on the MIDI Implementation chart for your instrument.


Summary Of Status Bytes

 Status

# of Bytes

 Description

 1000nnnn

2
Note Off Event

 1001nnnn

2
Note On Event (velocity=0, Note off)

 1010nnnn

2
Polyphonic key pressure/aftertouch

 1011nnnn

2
Control Change

 1100nnnn

1
Program Change

 1101nnnn

1
Channel Pressure (aftertouch)

 1110nnnn

2
Pitch Wheel Change

 1011nnnn

2
Selects Channel Mode

 11110000

******
System Exclusive

 11110sss

0 to 2
System Common

 11111ttt

0
System Real Time

Notes:

nnnn: Channel Number. 0000=Channel 1, 0001=Channel 2, 1111=Channel 16

******: Manufactures ID#, Data, ......, EOX

sss: 1 to 7

ttt: 0 to 7


 

Channel Voice Messages

 Status

Data Bytes

Description

 1000nnnn

0kkkkkkk

0vvvvvvv

Note Off (see notes)

vvvvvvv: Note Off Velocity

 1001nnnn

0kkkkkkk

0vvvvvvv

Note On (see notes)

vvvvvvv>0:Note Velocity

vvvvvvv=0:Note Off

 1010nnnn

0kkkkkkk

0vvvvvvv

Polyphonic Key Pressure (After touch)

vvvvvvv: Pressure Value

 1011nnnn

0ccccccc

0vvvvvvv

Control Change

ccccccc: control # (0-121, 122-127 reserved)

vvvvvvv: Control Value

 1100nnnn

0ppppppp

Program Change

ppppppp: Program Number (0-127)

 1101nnnn

0vvvvvvv

Channel Pressure (After touch)

vvvvvvv: Pressure Value

 1110nnnn

0vvvvvvv

0vvvvvvv

Pitch Wheel Change LSB

Pitch Wheel Change MSB

Notes:

nnnn: Voice Channel # (1-16)

kkkkkkk: Note # (1-127) Middle C=60

vvvvvvv: Note Velocity (1-127)

ccccccc: Controller Number, total varies from module to module. Some common controllers are:

 01 Modulation Wheel

 02
Breath Controller

 04
Foot Controller

 05
Portamento Time

 06
Data Entry Slider

 07
Volume

 08
Balance

 10
Pan

 11
Expression Controller

 64
Damper (sustain) Pedal

 65
Portamento

 66
Sustenuto

 67
Soft Pedal

 69
Hold Pedal

 91
External FX Depth

 92
Tremelo Depth

 93
Chorus Depth

 94
Detune Depth

 95
Phaser Depth

Reserved Controller Messages
 121 Reset All Controllers
 122 Local Control
 123 All Notes On
 124 OMNI Off
 125 OMNI On
 126 Mono On (Poly Off)
 127 Poly On (Mono Off)