A computer is an ideal device for storing a musical performance in the form of a sequence of events, usually in the form of a pattern of notes. Each of these notes has a particular timing, note length and pitch, and must be directed to play a specific instrument or voice.
A sequence can be played through an electronic musical instrument, such as an external synthesiser or software within the machine itself. In many instances, real sounds in the form of audio samples are used as an instrument. These can be pitched by ‘clocking out’ a sample at different rates, although better results are obtained by using separate samples for different pitches.
Various systems have been used to store musical data, although the most common format is MIDI, related to the Musical Instrument Digital Interface used on many electronic instruments. Although the interface itself is old-fashioned, its data structure is highly efficient and expandable.
The usual MIDI messages can be divided in the following groups:-
These include the most common type of message, such as Note On or Note Off. Each instruction of this kind refers to a MIDI channel, identified by a channel number which is assigned to a specific voice in a musical device. Any track that;s created in a sequence can be used to play the required voice by sending a message to the appropriate MIDI channel.
Each musical instrument can often be set up to respond in one of several modes:-
In this mode a single voice is triggered using one MIDI channel and no further sounds can play until this first note has ceased. This unusual and archaic mode is sometimes used to control an elderly analogue synthesiser, as connected to a MIDI system via a MIDI to analogue converter.
Poly is a modern mode in which polyphonic sounds of the same voice are triggered using one MIDI channel whilst non-voice messages are sent via a special channel known as the basic channel. The latter channel can default to channel 1 or can be selected using the instrument’s master controls.
Multiphonic mode, a variation of standard Poly mode. In this state multiple polyphonic sounds can be triggered using a specified MIDI channel for each voice.Omni on mode, which can sometimes be switched on or off in both Poly and Mono modes, allows a single voice to be triggered by all MIDI channels. For polyphonic operation, where more than one note is played at a time, several channels are needed, which means this mode is often best turned off.
Poly and Omni on modes. In other words they should play polyphonically from any channel. In reality, many devices only accept data from selected channels. In Omni off mode a device only accepts data on its basic channel.Program Change message can be used to switch any device on a specified channel into a preset state, but is usually used to select a predetermined sound or voice.Control Change messages are generated by the switches, foot pedals, or other controllers fitted on some MIDI devices, and can be used to adjust other devices whilst playing a sequence. Typically, such controls employ 14-bit resolution, stretching the capacity of MIDI to the limit. However, the transmitted data can be thinned, usually with little audible effect, or the receiving device can be programmed to do the job itself on receipt of a simple MIDI command.
These messages, also known as Sysex messages, often contain manufacturer’s proprietary codes for controlling or editing data in their products. Although details for System Exclusive codes are usually supplied, you’ll often encounter special software that obviates any need to understand them.
Several different types of message are used for synchronising other devices to a sequencer. Initially, the sequencer should send a Song Select message to indicate which song it’s about to play. A Start message should then be sent to the sequencer to initiate playback of the song.
Once it’s running, the sequencer sends regular Timing Clock messages at a rate of 96 clocks per whole note (semi-breve). By using these clocks to modify a Song Position Pointer register, each MIDI device knows how far the sequence has progressed. To return to a particular point in the sequence the sequencer must send a Song Position Pointer message to all devices.
In addition to the above messages, it’s also possible to convey timecode, the actual time of day of a recording in hours, minutes, seconds and frames. These messages allow other devices such as video and audio equipment to be synchronised to a sequencer. Two systems are used:-
This is the standard system for synchronisation. A Full MIDI Timecode message, also known as a Full Frame message, is sent when the source of timecode starts, stops or ‘drops out’. This is often followed by Quarter Frame messages, as sent during a continuous run of timecode.
Full MIDI Timecode message is actually a System Exclusive message. This point should be kept in mind when using any device that filters MIDI data.Both of these systems, devised by Mark of the Unicorn, are highly reliable alternatives to MTC that only employ System Exclusive messages. A full set of time information is sent at the start of a ‘run’ of timecode, which is then followed by up or down clock messages as timecode progresses.
Channel Numbers and GMMIDI requires every voice or sound in a device to be assigned a MIDI channel number. The table below shows examples of such assignments:-
| Channel | Voice |
|---|---|
| 1 | Piano |
| 2 | Bass |
| 3 | Brass or Sax |
| 4 | Guitar or Clavinet |
| 5 | Ensemble String |
| 6 | Human Voice |
| 7 | Woodwind |
| 8 | Organ |
| 10 | Drums |
However, a drum kit only uses one MIDI channel for all the sounds in the kit, which is useful when you’re short of MIDI channels. Each sound is assigned to a different note, which is only possible because percussion sounds aren’t normally played at a particular pitch. Here are some examples:-
| Note | Sound |
|---|---|
| 36 (C) | Bass Drum |
| 38 | Snare |
| 40 | Rim Shot |
| 41 | Lo Tom |
| 43 | Mid Tom |
| 45 | Hi Tom |
| 42 | Closed High-Hat |
| 44 | Half-closed High-Hat |
| 46 | Open High-Hat |
| 51 | Ride Cymbal |
| 54 | Crash Cymbal |
The MIDI Program Change message contains a program number that determines the voice to be used for a particular MIDI channel. As already mentioned, any instrument can be used with any channel, which can cause a sequence to be played with an ridiculous set of voices.
In 1991 the Japanese MIDI Standards Committee (JMSC) and the American Manufacturers’ Association agreed on Level 1 of the new General MIDI (GM) standard. This specified standardised program numbers for common sounds. A GM instrument, which must contain 128 standard GM sounds, complete with 24-note polyphony and 16-voice multitimbral operation, can then play sequences without the user having to worry about voice assignments.
General MID1 2 (GM 2) appeared in 1999. Instruments that confirm to this standard can play 32 sounds simultaneously, with support for two drum kits, whilst additional banks of instruments are accommodated via the GM Bank Select message. GM 2 also assigns specific tasks to formerly unassigned controllers and registered parameter numbers (RPNs) (see below).
GM Lite, introduced in 2001, accommodates those more modest instruments that can’t support the full panoply of GM 2 messages. Other extensions to the GM standard include:-
This system was developed by Roland to overcome the limit of 128 sounds imposed by GM. It uses the GM Bank Select message to select alternative sets of sounds known as variations.
These variations are organised rather cleverly. For example, a Program Change message of decimal 14 normally causes a GM device to select the Tubular Bells sound. However, if you precede this message by a GM Bank Select message (in the MSB, as described below) you’ll select Church Bell in a GS device. Fortunately, both these sounds are quite similar, which means that almost any kind of MIDI sequence should sound acceptable, even on a synthesiser that doesn’t support GS.
GS also uses non-registered parameter numbers (NRPNs) for controlling special functions, including reverberation and chorus effects. Although only GS-compatible synthesisers recognise these instructions, a sequence created on a GS device can still be played on a non-GS instrument.
Devised by Yamaha, this version of GM also provides its own kind of variations, as well as giving extra control over sounds and effects. Although sequences can be interchanged between GS and XG devices, each kind of device normally only recognises its own instructions, ignoring other types.
GM gives access to a drum kit on MIDI channel 10, with each note activating a different sound, as shown in the following example:-
| Note | Sound |
|---|---|
| 35 | Acoustic Bass Drum |
| 36 | Bass Drum 1 |
| 60 | High Bongo |
| 61 | Low Bongo |
| 80 | Mute Triangle |
| 81 | Open Triangle |
The following drum kits are normally provided:-
| 1 | Standard Kit |
|---|---|
| 9 | Room Kit |
| 17 | Power Kit |
| 25 | Electronic Kit |
| 26 | Analog Kit |
| 33 | Jazz Kit |
| 41 | Brush Kit |
| 49 | Orchestra Kit |
| 57 | SFX Kit |
This section provides an overview of MIDI messages, although General MIDI (GM) and its GS and XG variants aren’t included. For further details you should refer to the latest MIDI Specification, as published by the MIDI User Group. Also, to find how your devices respond to MIDI messages you should refer to the MIDI implementation chart provided with each product.
Hexadecimal (hex) values are shown in the following information, except where a single-digit value is given without a preceding zero: hence 0A is a hex value but 3 is a decimal number.
In hex notation each byte consists of two characters, each representing half a byte, otherwise known as a nibble. The most significant (MS) nibble is given by the left-hand character whilst the least significant (LS) nibble is to the right. Each digit can contain characters such as 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, or F, accommodating numbers from 0 to 15.
A variable value can be expressed in hex using notation such as nn or vv, with any fixed nibbles shown directly, as in 8n or 0g (containing a fixed MS nibble of 8 and 0 respectively).
All MIDI messages begin with a status byte, with a value of between hex 80 and hex FF. Some status bytes are followed by one or more data bytes, with values of 00 to 7F, conveying extra information relating to the preceding status byte. For example, when a musical note is played, data bytes are used to convey its note number and the pressure applied to the key.
Status bytes are divided into Channel messages, transporting data over a particular MIDI channel, and System messages, which can be received by all devices on a MIDI circuit. The latter also include System Exclusive messages that are often only understood by special devices or equipment produced by a certain manufacturer. These categories are illustrated in the following diagram:-

The Channel messages all have status bytes in the range of 80 to EF. The various types of message, shown complete with mnemonics, are as follows:-
| Code | Channel Message | Hex |
|---|---|---|
| NOF | Note Off | 8n |
| NON | Note On | 9n |
| PKP | Polyphonic Key Pressure | An |
| CCH | Control Change | Bn |
| PCH | Program Change | Cn |
| MCP | Monophonic Channel Pressure | Dn |
| PWL | Pitch Wheel | En |
where n represents the MIDI channel number.
The System messages have status bytes in the range of F0 and FF, of which the System Common messages occupy F0 to F7, as shown below:-
| Code | System Common Message | Hex |
|---|---|---|
| SOX | Start of Exclusive | F0 |
| MTC | Midi Time Code Quarter Frame | F1 |
| SPP | Song Position Pointer | F2 |
| SCH | Song Change | F3 |
| TRQ | Tuning Request | F6 |
| EOX | End of Exclusive | F7 |
whilst F8 to FF are used for System Real Time messages:-
| Code | System Real Time Message | Hex |
|---|---|---|
| CLK | Timing Clock | F8 |
| STR | Sequence Start | FA |
| CNT | Sequence Continue | FB |
| STP | Sequence Stop | FC |
| SNS | Active Sensing | FE |
| RST | System Reset | FF |

Each Channel message status byte contains a MIDI channel number in its least significant nibble. This allows the information to be directed to a device or voice in a synthesiser that has a corresponding channel number. The channel numbers in a receiving device can be assigned manually, although General MIDI (GM) equipment normally uses fixed numbers, as described above.
A simple instrument often only needs one channel, whereas a multitimbral synthesiser normally uses as many channels as it can accommodate. In the latter, the lowest numbered channel, known as the basic channel, is used for receiving information that’s not associated with a particular voice.
A Channel Voice message can be used to directly trigger a voice or instrument within a synthesiser. Only a device or voice with a matching channel will respond to such a message.
All voice messages, except Monophonic Channel Pressure, employ two data bytes. The first of these bytes specifies the note number whilst the second byte gives a velocity value, normally representing the pressure applied to the corresponding key on a keyboard.
The number of bytes to be transmitted are reduced to a minimum by using a mechanism known as running status. This ensures that the timing of musical material is maintained, even though MIDI sends data at a fairly slow rate. In the process, a string of data bytes is allowed to follow a single status byte without any other status bytes being transmitted. Using running status, the Note On status byte can be followed by any number of ‘note on’ or ‘note off’ data bytes. Each ‘note off’ data byte is similar to a ‘note on’ byte but contains a velocity value of zero, effectively switching off the note.
The channel voice messages are detailed below. A typical sequence of a status byte followed by two data bytes is represented in a form of Ss, Dd, Ee, where Ss is the status byte, whilst Dd and Ee are the data bytes. Each letter equals a nibble of data, corresponding to a digit in hex notation.
This indicates that a key has been released. The second data byte gives the speed of release or the off velocity but is often unused and set to hex 40. Messages are in the form:-
8n, kk, vv
________
n = MIDI Channel Number between 00 and 15, representing channels 1 to 16
kk = Note Number in hex (see below)
vv = Off Velocity, often using a logarithmic scale:
00 = off
01 = ppp
34 = mp
40 = Mid Position or no sensor
46 = mf
7F = fffThe following table and diagram should help you find the values of kk on a standard keyboard:-
| Note No | Note Name | Code | kk (Dec) | kk (Hex) | Frequency (Hz) |
|---|---|---|---|---|---|
| 1 | Lowest A | A0 | 21 | 15 | 27.500 |
| 4 | Lowest C | C1 | 24 | 18 | 32.703 |
| 40 | Middle C | C4 | 60 | 3C | 261.265 |
| 49 | Standard A | A4 | 69 | 45 | 440.000 |
| 88 | Highest C | C8 | 108 | 6C | 4186.000 |

C0 instead of C1, C3 instead of C4 and C7 instead of C8.Terms such as ppp, mp, mf and fff should be familiar to those of a musical disposition. In the following arrangement a more linear coding method is used:-
| Dec | Hex | Meaning |
|---|---|---|
| 0 | 00 | Off |
| 14 | 0E | pppp |
| 20 | 14 | ppp |
| 25 | 19 | pp |
| 35 | 23 | p |
| 45 | 2D | mp |
| 55 | 37 | mf |
| 70 | 46 | f |
| 85 | 55 | ff |
| 100 | 64 | fff |
| 127 | 7F | ffff |
This indicates a key has been pressed. The second data byte is the applied pressure or on velocity.
9n, kk, vv, kk, vv, - - -
____________________
n = MIDI Channel Number between 00 and 15, representing channels 1 to 16
kk = Note Number
vv = On Velocity or Note Off:
00 = Note Off using running status (see above)
01 to FF = On Velocity (see above)Indicates the pressure applied to an individual key, although Monophonic Channel Pressure is often used in its place (see below).
An, kk, vv
_________
n, kk, vv: see above
Indicates pressure has been applied to the keyboard. This is often used in preference to Polyphonic Key Pressure but isn’t specific to a particular key being pressed.
Dn, vv
______
n, vv: see above
A Channel Mode message tells a device how to respond to subsequent voice messages. It can also be used to control parameters that are universal to a device, such as a synthesiser’s volume.
These messages are sent over a device’s basic channel. Usually, there’s only one basic channel, although more can be used, allowing one instrument to act as several independent synthesisers.
The Channel Mode messages are:-
This indicates that a control or switch has moved. The pairs of data bytes that follow the status byte can specify which continuous controller or switch has been adjusted and its setting.
The 32 14-bit controllers include GM Bank Select (0 and 32) Modulation Depth (1), Foot Controller (4), Portamento Time (5), Data Entry Slider (6) and Channel Volume (7), although some older instruments confuse 4 and 7. These controller values are normally encoded on a logarithmic scale, using a most significant byte (MSB) and optional least significant byte (LSB). They can be used in a non-standard way with an automated sound mixer, providing 64 faders with 7-bit control (0.8 dB resolution) or 32 faders with 14-bit control, plus switches.
The GM Bank Select message is used by both GS and XG equipment. Although the relevant MSB and LSB components are normally transmitted one after the other, GS devices normally convey useful information in the MSB whilst XG devices often expect the MSB to be 00 or 64. As a result, both GS and XG equipment can usually coexist in the same MIDI system without any problems.
Bank Select numbers or here to see the XG numbers. When you’ve finished looking, simply click on your browser’s Back button to return to this page.The 32 7-bit controllers include Sustain (Hold 1) Pedal, Portamento Pedal, Sostenuto Pedal and Soft Pedal switches, as well as Sound Variation Controllers, General Purpose Controllers and Effects Depth Controllers and other unassigned controllers.
The numerous switches include Data Increment Button, Data Decrement Button, two 14-bit Parameter Controllers, All Sound Off, Reset All Controllers and Local Control, as well as switches to set an instrument’s Channel Mode and to send an All Notes Off message. The Channel Mode switches are important, since they determine how a device handles Channel messages. In effect, four switches are used: Omni On or Omni Off and a ‘toggle’ action between Poly and Mono modes. This means that switching to Poly mode automatically switches any device out of Mono mode.
For a receiver with a basic channel of N the modes are:-
| Mode | Omni | P/M | Effect |
|---|---|---|---|
| 1 | On | Poly | All channels play voices polyphonically |
| 2 | On | Mono | All channels play one monophonic voice |
| 3 | Off | Poly | Channel N plays voices polyphonically |
| 4 | Off | Mono | Channel N through to N+M-1 assigned monophonically to voices 1 to M |
For a transmitter with a basic channel of N the modes are:-
| Mode | Omni | P/M | Effect |
|---|---|---|---|
| 1 | On | Poly | All voices sent to channel N |
| 2 | On | Mono | Mono voice sent to channel N |
| 3 | Off | Poly | All voices sent to channel N |
| 4 | Off | Mono | Single voices 1 to M sent to channels N through to N+M-1 |
If a receiver can’t accept a mode it often ignores the message or may switch to Mode 1. In theory, instruments should also default to Mode 1 at startup, but most devices don’t actually do this.
The Control Change messages are shown below, where • indicates a message that’s specific to the GM 2 standard and † indicates a message that should be supported by GM Lite devices. The relevant decimal numbers are also shown in blue to assist in controller identification.
Bn, cc, vv, cc, vv, - - -
____________________
n = MIDI channel number
cc = controller number, followed by vv value unless shown otherwise:
00 to 1F = MSB for 14-bit controllers 00 to 1F (numbered 0 to 31):
0 00 = GM Bank Select • †
1 01 = Modulation Depth (Modulation Wheel) †
2 02 = Breath Controller
3 03 = Unassigned
4 04 = Foot Controller
5 05 = Portamento Time
6 06 = Data Entry Slider †
7 07 = Channel Volume
8 08 = Channel Balance
9 09 = Unassigned
10 0A = Pan •
11 0B = Expression • †
12 0C = Effect Control 1
13 0D = Effect Control 2
14 0E = Unassigned
15 0F = Unassigned
16 10 = General Purpose Controller 1
17 11 = General Purpose Controller 2
18 12 = General Purpose Controller 3
19 13 = General Purpose Controller 4
14 to 1F = Unassigned Controllers 20 to 31
20 to 3F = LSB for above controllers (not always used):
0/32 20 = GM Bank Select (usually 00, except in XG devices) • †
1/33 21 = Modulation Depth (Modulation Wheel)
2/34 22 = Breath Controller
3/35 23 = Unassigned
4/36 24 = Foot Controller
5/37 25 = Portamento Time
6/38 26 = Data Entry Slider †
7/39 27 = Channel Volume
8/40 28 = Channel Balance
9/41 29 = Unassigned
10/42 2A = Pan •
11/43 2B = Expression •
12/44 2C = Effect Control 1
13/45 2D = Effect Control 2
14/46 2E = Unassigned
15/47 2F = Unassigned
16/48 30 = General Purpose Controller 1
17/49 31 = General Purpose Controller 2
18/50 32 = General Purpose Controller 3
19/51 33 = General Purpose Controller 4
34 to 3F = Unassigned Controllers 20 to 31 (codes 52 to 63)
40 to 5F = 7-bit controllers 40 to 5F (numbered 0 to 31):
(vv = 00 to 3F for ‘off’, 40 to 7F for ‘on’):
0/64 40 = Sustain (Hold 1 or Damper) Pedal †
1/65 41 = Portamento Pedal
2/66 42 = Sostenuto Pedal
3/67 43 = Soft Pedal
4/68 44 = Legato Foot Switch
5/69 45 = Hold 2 Pedal
6/70 46 = Sound Variation Controller 1 •
7/71 47 = Sound Variation Controller 2 (Harmonic Intensity) •
8/72 48 = Sound Variation Controller 3 (Release Time) •
9/73 49 = Sound Variation Controller 4 (Attack Time) •
10/74 4A = Sound Variation Controller 5 (Brightness) •
11/75 4B = Sound Variation Controller 6 (Decay Time) •
12/76 4C = Sound Variation Controller 7 (Vibrato Rate) •
13/77 4D = Sound Variation Controller 8 (Vibrato Depth) •
14/78 4E = Sound Variation Controller 9 (Vibrato Delay) •
15/79 4F = Sound Variation Controller 10 •
16/80 50 = General Purpose Controller 5
17/81 51 = General Purpose Controller 6
18/82 52 = General Purpose Controller 7
19/83 53 = General Purpose Controller 8
20/84 54 = General Portamento Control
55 to 5A = Unassigned Controllers 21 to 26 (codes 85 to 90)
27/91 5B = Effects 1 Depth (Reverb Send Level)
28/92 5C = Effects 2 Depth
29/93 5D = Effects 3 Depth (Chorus Send Level)
30/94 5E = Effects 4 Depth
31/95 5F = Effects 5 Depth
96 60 = Data Increment Button (vv = 7F)
97 61 = Data Decrement Button (vv = 7F)
98 62 = Non-Registered Parameter Number (NRPN), LSB *
99 63 = Non-Registered Parameter Number (NRPN), MSB *
100 64 = Registered Parameter Number (RPN), LSB † ◊
101 65 = Registered Parameter Number (RPN), MSB † ◊
66 to 77 = Reserved (codes 102 to 119)
120 78 = All Sound Off • †
121 79 = Reset All Controllers (vv = 7F) †
122 7A = Local Control (vv = 00 for ‘off’, 7F for ‘on’)
123 7B = All Notes Off (vv = 00) †
124 7C = Omni Mode Off/All Notes Off (vv = 00)
125 7D = Omni Mode On/All Notes Off (vv = 00)
126 7E = Mono Mode On/All Notes Off
vv = M M channels used starting with the Basic Channel
vv = 0 all available channels to be used
127 7F = Poly Mode On/All Notes Off (vv = 00)
• Specific to the GM 2 standard
† Should be supported by GM Lite devices
* Not specific to any manufacturer
◊ Often specific to manufacturers: in GM 2 these are used for Pitch Bend Sensitivity †, Channel Fine Tune,
Channel Coarse Tune, Vibrato Depth Range and Null.
Indicates that a voice or patch has been selected.
Cn, pp
_____
n = MIDI Channel Number
pp = Program NumberIndicates the pitch bend controller has moved, using two data bytes for the 14-bit data. The sensitivity to the pitch bend control is determined within the receiver itself.
En, vv, VV
_________
n = MIDI Channel Number
vv, VV = Pitch Bend LSB, MSB
A System message is designed to be sent and received irrespective of the MIDI channel or channels used by a device. Each message is available to all devices in a MIDI system, although some devices don’t actually understand every kind of message.
A System Common message is available to all devices but doesn’t have any particular timing priority. The types of messages used are as follows:-
Indicates the current position within a current run of timecode. At the start of a run a Full MIDI Timecode message must be sent (see Real Time System Exclusive messages below).
One hundred messages are sent per second, although this only uses 7.5% of MIDI’s total bandwidth. Timecode is contained in a data byte spread over 8 messages. Hence a full update of timing data only occurs on every second frame of timecode.
F1, nd
_____
n = Timecode Message Type
00 = Frames LS Nibble
01 = Frames MS Nibble
02 = Seconds LS Nibble
03 = Seconds MS Nibble
04 = Minutes LS Nibble
05 = Minutes MS Nibble
06 = Hours LS Nibble
07 = Hours MS Nibble
d = Timecode nibbles assembled by the receiver into data bits:
Frame Count:- xxxyyyyy
xxx = Reserved
yyyyy = Frame Number (0 to 29)
Seconds Count:- xxyyyyyy
xx = Reserved
yyyyyy = Seconds Count (0 to 59)
Minutes Count:- xxyyyyyy
xx = Reserved
yyyyyy = Minutes Count (0 to 59)
Hours Count:- xyyzzzzz:
x = reserved
yy = SMPTE Timecode Type:
0 = 24 frm/s
1 = 25 frm/s
2 = 30 frm/s Drop-frame
3 = 30 frm/s Non Drop-frame
zzzzz = Hours Count (0 to 23)This is count of MIDI beats elapsed during a song, where one beat equals 6 MIDI clocks.
F2, pp, PP
_________
pp, PP = Pointer LSB, MSB
Selects the song to be played by a sequencer following a Sequence Start message (see below).
F3, ss
_____
ss = Song Number
These two codes should be avoided to ensure future compatibility.
This is rarely used and doesn’t employ any data bytes.
Indicates that System Exclusive data has ended (see below). No data bytes are used.
A System Real Time message is sent and received irrespective of MIDI channels but has the highest timing priority. These messages can be interposed between any bytes, separating other status bytes from their data, and can even be inserted in the middle of running status information.
These messages don’t have any accompanying data bytes.The following messages are used:-
A ‘pulsed’ message that drives a sequencer at a rate of six MIDI clocks per MIDI beat. Each device uses a song position pointer register to count these beats during a sequence.
There are 16 beats or 96 clocks per whole note. The relationship between note lengths, beats and clocks is given in the table below:-
| Note Length | Beats | Clocks |
|---|---|---|
| Semibreve (whole note) | 16 | 96 |
| Minim (half note) | 8 | 48 |
| Crotchet (quarter note) | 4 | 24 |
| Quaver (eighth note) | 2 | 12 |
| Semiquaver (sixteenth note) | 1 | 6 |
Accommodates an optional feature that silences an instrument if its MIDI cables are accidentally disconnected. Any device that receives this signal will expect another every 300 milliseconds (ms). If this fails to appear the receiver then defaults to non-sensing mode and turns off all voices.
This lets you restore all instruments to normal. It shouldn’t be sent automatically at startup.

A System Exclusive message is a System message that’s only recognised by a particular kind of device. There are two types of message in this category:-
System messages this is sent to a specific piece of equipment, which means that each device in a MIDI system must have a unique device ID. In practice, this usually corresponds to the basic channel number, as used for Channel Mode messages.All of these messages begin with hex F0, used for the Start of Exclusive (SOX) status byte.
The manufacturer’s System Exclusive message is in the following form:-
F0, ii, xx, - - - xx, F7
__________________
ii = manufacturer’s ID:
01 = Sequential Circuits
02 = Big Briar
03 = Octave Plateau
04 = Moog
05 = Passport
06 = Lexicon
07 = Kurzweil
08 = Fender
09 = Gulbransen II
0A = Delta Lab
0B = Sound Composition
0C = General Electro Music
0D = Techmar
0E = Matthews R & D
0F = Ensoniq
10 = Oberheim
11 = PAiA
12 = Simmons
13 = Gentle Electric
14 = Fairlight
15 = J L Cooper
16 = Lowery
17 = Linn
18 = Emu
20 = Bon Tempi
21 = SIEL
22 = IRCAM
23 = Synthaxe
24 = Hohner
25 = Crumar
26 = Solton
27 = Jellinghaus
28 = CTS
29 = PPG
2B = SSL
2F = Elka
40 = Kawai
41 = Roland
42 = Korg
43 = Yamaha
44 = Casio
45 = Akai
xx = System exclusive (Sysex) data set by the manufacturer
F7 = End Of System Exclusive (EOX)The following messages are directed to a specific device by using the device’s ID:-
This message sends instructions to a device that uses MIDI timecode, such as a multi-track tape recorder or a sequencer.
F0, 7E, nn, 04, jj, hh, mm, ss, ff, gg, xx, yy, aa, - - aa, F7
________________________________________________
7E = ID for Non Real Time Universal
nn = Device ID
04 = Sub ID 1 for MTC
jj = Sub ID 2:
00 = Special
01 = Punch In Point (record mode enable)
02 = Punch Out Point (record mode disable)
03 = Delete Punch In Point from cue list
04 = Delete Punch Out Point from cue list
05 = Event Start Point
06 = Event Stop Point
07 = Event Start Point with additional info
08 = Event Stop Point with additional info
09 = Delete Event Start Point from cue list
0A = Delete Event Stop Point from cue list
0B = Cue Point
0C = Cue Point with additional info
0D = Delete Cue Point
0E = Event Name In Additional Data
hh = Hours and SMPTE type:
Containing bits organised as: 0yyzzzzz
yy = SMPTE Timecode Type:
00 = 24 frm/s
01 = 25 frm/s
02 = 30 frm/s Drop-frame
03 = 30 frm/s Non Drop-frame
zzzzz = Hours (0 to 23)
mm = Minutes
ss = Seconds
ff = Frames
gg = Fractional Frames (0 to 99)
xx = 14-bit Event Number LSB:
Set to 00 if jj=00 (Special Mode)
yy = 14-bit Event Number MSB:
Set to Global Command if jj=00 (Special Mode):
00 = Timecode Offset
01 = Enable Event List
02 = Disable Event List
03 = Clear
04 = System Stop
05 = Event List Request •
aa = Additional Info:
MIDI data is sent as nibbles with LS nibble first.
For example, Note On of 93, 48, 7F sent as 03, 09, 08, 04, 0F, 07.
If jj = 0E (Event Name in Additional Data) then ASCII data is sent
in the same form — both CR and LF codes must be sent for a new line
F7 = End Of System Exclusive (EOX)
• Sent by an MTC master device to a slave device
All of the following Universal System Exclusive messages are concerned with the transfer of audio samples via MIDI.
For best results MIDI circuits should be connected in both directions, so as to create a closed loop complete with handshaking. After two seconds of waiting for any handshake signals the system should normally default to open loop operation.
This message is sent prior to the transfer of sample data between a controlling device and a sampler.
F0, 7E, nn, 03, ss, SS, F7
______________________
7E = ID for Non Real Time Universal
nn = Device ID
03 = Sub ID 1 for Sample Dump Request
ss, SS = Stored Sample Number LSB, MSB
F7 = End of System Exclusive (EOX)This message is transmitted before sending an actual sound sample. Where two or three data bytes are used the LSB is sent first.
F0, 7E, nn, 01, ss, SS, bb, pp, pp, PP, mm, mm, MM,
xx, xx, XX, yy, yy, YY, tt, F7
____________________________________________
7E = ID for Non Real Time Universal
nn = Device ID
01 = Sub ID 1 for Dump Header
ss, SS = Stored Sample Number
bb = Number of Bits (8 to 28) — number in each sample
pp, pp, PP = Sample Period — in nanoseconds
mm, mm, MM = Sample Length — as number of sample words
xx, xx, XX = Sustain Loop Start Point — in words from start of sample
yy, yy, YY = Sustain Loop End — in words from end of sample
tt = Loop Type:
00 = Forward
01 = Forward/backward
F7 = End of System Exclusive (EOX)This indicates if a device can accept the data as defined in the Sample Dump Header message.
F0, 7E, nn, mm, pp, F7
___________________
7E = ID for Non Real Time Universal
nn = Device ID
mm = Handshake Mode:
7C = Wait — further handshake message to follow
7D = Cancel — device can’t accept the data
7E = Not Acknowledged (NAK) — awaiting retransmission of faulty packet
7F = Acknowledged (ACK) — packet received
pp = Packet Number
F7 = End of System Exclusive (EOX)This message is used for the actual process of dumping a sample. The time taken for a transfer can be up to ten times the sample’s real duration or even longer.
F0, 7E, nn, 02, pp, dd, dd, -- dd, cc, F7
_________________________________
7E = ID for Non Real Time Universal
nn = Device ID
02 = Sub ID 1 for Sample Dump Packet
pp = Packet Number — restarting from zero as necessary
dd = Data Packets — each containing 120 bytes
cc = Checksum — of all byes, excluding status bytes.
F7 = End of Exclusive (EOX)Each data packet of 120 bytes is organised as follows:-
| Sample Bits | Bytes/sample | Words/packet |
|---|---|---|
| 8 to 14 | 2 | 60 |
| 15 to 21 | 3 | 40 |
| 22 to 28 | 4 | 30 |
The following messages contain time-related information for a device with a matching device ID:-
This message should always be sent at the beginning of a run of timecode.
F0, 7F, nn, 01, 01, hh, mm, ss, ff, F7
_______________________________
7F = ID for Real Time Universal
nn = Device ID (7F to select entire system)
01 = Sub ID 1 for MIDI Timecode
01 = Sub ID 2 for Full Timecode message
hh, mm, ss, ff = Timecode — as in MIDI Cueing Setup Message (see above)
F7 = End of System Exclusive (EOX)These bits are usually fixed throughout a run of timecode, although they don’t have to be. The information should correspond to that contained in the user bits of SMPTE timecode.
F0, 7F, nn, 01, 02, 0W, 0w, 0X, 0x, 0Y, 0y, 0Z, 0z, 0g, F7
_________________________________________________
7F = ID for Real Time Universal
nn = Device ID (7F to select entire system)
01 = Sub ID 1 for MIDI Timecode
02 = Sub ID 2 for User Bits
W, w = User Byte 1 MS Nibble, LS Nibble
X, x = User Byte 2 MS Nibble, LS Nibble
Y, y = User Byte 3 MS Nibble, LS Nibble
Z, z = User Byte 4 MS Nibble, LS Nibble
g = SMPTE Binary Group Flag Bits (2 bits only)
F7 = End of System Exclusive (EOX)These messages are used in GM 2 equipment. They include Master Fine Tuning, Master Coarse Tuning, Reverb Type, Reverb Time, Chorus Type, Chorus Modulation Rate, Chorus Modulation Depth, Chorus Feedback, Chorus Send to Reverb, Controller Destination Setting, Scale/Octave Tuning Adjust and GM System On.
This is a special message that conveys text, as required when sending MIDI information over the Internet via an application such as Midi Phone.
F0, 00, cc, F7
____________
00 = ID for Text
cc = ASCII code for single character with the top bit removed.This method of coding can only be used with real ASCII characters whose codes are in the range of 00 to 7F, not special symbols represented by higher codes from 80 to FF.
©Ray White 2004.