Guide to the MIDI Software Specification

*  Last updated : Thu 20 Jan 2000  *

Staženo z internetu - bohužel už neznám zdroj, takže nemohu uvést ©


Contents

Overview
Summary of Status Bytes
Running Status
Channel Voice Messages
Controller Numbers
Bank Select
Portamento Control (PTC)
RPNs and NRPNs
Channel Mode Messages
MIDI Modes
System Common Messages
System Real Time Messages
System Exclusive Messages
System Exclusive Manufacturer's ID Numbers
Universal System Exclusive ID Numbers
Non Real Time Universal System Exclusive Messages
Sample Dump Standard (SDS)
Handshaking
Dump Procedure
MTC Cueing
Loop Points (Extensions to the Sample Dump Standard)
General System Information
File Dump
MIDI Tuning Standard
General MIDI (GM)
Down-Loadable Sounds (DLS)
Real Time Universal System Exclusive Messages
MIDI Time Code (MTC)
Notation Information
Device Control
MTC Cueing
MIDI Tuning Standard

Overview

MIDI data is a serial stream of bytes (31250 baud, asynchronous, 1 start bit, 1 stop bit) representing MIDI commands. A MIDI command comprises a status byte followed by a variable number of data bytes (possibly none).

Status bytes are identified due to their top bit being set. Consequently data bytes contain 7-bit values (0-127).

There are two main types of status bytes : Channel messages and System messages.

Channel messages use the lower 4 bits of the status byte to address 1 of 16 MIDI channels and the upper 4 bits to encode the specific message. A device can receive messages on more than one channel (known as voice channels), dependant on its mode of operation. However, there is a particular channel referred to as its base channel upon which it receives commands about which mode it should operate in and which voice (sound) it should use. Channel messages are sub-divided into two types :

The System messages are not (generally) targeted for specific MIDI channels and are hence global messages. They are further divided into three types :

The main difference between System Common and System Real Time messages is that the latter can interleave other MIDI data. That is, Real Time messages can occur in the middle of any other message. This is due to their use in sequence synchronisation, and aids timing accuracy.


Summary of Status Bytes

Status byte Number of
data bytes
Description
Hex Binary
Channel Voice Messages
8n 1000nnnn 2 Note Off
9n 1001nnnn 2 Note On   (a velocity of zero = Note Off)
An 1010nnnn 2 Polyphonic Key Pressure (Aftertouch)
Bn 1011nnnn 2 Controller   First data byte = 0-119
Cn 1100nnnn 1 Program Change   (ie instrument/voice selection)
Dn 1101nnnn 1 Channel Pressure (Aftertouch)
En 1110nnnn 2 Pitch Bend
Channel Mode Messages
Bn 1011nnnn 2 Select Channel Mode   First data byte = 120-127
System Messages
F0 11110000 <variable> System Exclusive
F1-F7 11110sss 0 to 2 System Common
F8-FF 11111ttt 0 System Real Time

Notes :
nnnn 0-15 = MIDI channel 1-16
sss 1-7
ttt 0-7


Running Status

Running Status is a data-thinning technique. It allows for the omision of status bytes if the current message to be transmitted has the same status byte (ie the same command and MIDI channel) as the previous message. It thus only applies to Channel (Voice and Mode) messages (0x8n - 0xEn).

System Real Time messages (0xF8 - 0xFF) are all single byte messages, and so running status is not applicable. Also, they can be interleaved within other messages without affecting running status in any way.

System Common and System Exclusive messages (0xF0 - 0xF7), on the other hand, cancel any running status, so any message following one of these messages must contain a status byte. As with System Real Time messages, running status is not applicable to System Common and System Exclusive messages, so these messages must always contain a status byte.

Eg. to play the C Major chord based on middle C :

Without running status :

0x90 0x3C 0x7F Note On for C4, max velocity
0x90 0x40 0x7F Note On for E4, max velocity
0x90 0x43 0x7F Note On for G4, max velocity

With running status, the second and third status bytes are omitted :

0x90 0x3C 0x7F Note On for C4, max velocity
0x40 0x7F Note On for E4, max velocity
0x43 0x7F Note On for G4, max velocity

Both approaches are valid, and so either may be used.

To be able to cope with running status, a receiving device should always remember the last status byte that it received (except for System messages), and if it doesn't receive a status byte when expected (on subsequent messages), it should assume that it's dealing with a running status situation. Apart from System Real Time messages, new status bytes will always force a receiver to adopt that new status, even if the previous message was incomplete.

A device that generates MIDI messages should always remember the last status byte that it sent (except for System Real Time messages), and if it needs to send another message with the same status (Channel messages only, not System messages), the status byte may be omitted.

Running status is the reasoning behind the velocity = 0 variant of the Note On message (which acts as a Note Off).

Eg. to play the same C Major chord as above (though also turning it off this time) :

Without running status :

0x90 0x3C 0x7F Note On for C4, max velocity
0x90 0x40 0x7F Note On for E4, max velocity
0x90 0x43 0x7F Note On for G4, max velocity
. . . . . . . Wait for duration of the chord ...
0x80 0x3C 0x3F Note Off for C4, middle release velocity
0x80 0x40 0x3F Note Off for E4, middle release velocity
0x80 0x43 0x3F Note Off for G4, middle release velocity

With running status, and using Note On with velocity = 0, to act as Note Offs :

0x90 0x3C 0x7F Note On for C4, max velocity
0x40 0x7F Note On for E4, max velocity
0x43 0x7F Note On for G4, max velocity
. . . . . . . Wait for duration of the chord ...
0x3C 0x00 Note Off for C4, no release velocity information
0x40 0x00 Note Off for E4, no release velocity information
0x43 0x00 Note Off for G4, no release velocity information


Channel Voice Messages

The status byte of all Channel Voice messages is nibblised, with the top nibble (ie the top 4 bits) indicating the command (0x8 to 0xE), and the lower nibble indicating the MIDI channel.

Three of these messages specify a MIDI note number : 0 - 127 (C-2 - G8), with middle C being note number 60. The standard 5 octave synthesiser keyboard range is 36 - 96, whereas the 88-note piano keyboard range is 21 - 108.

8n : Note Off

3 bytes 1000nnnn , 0kkkkkkk , 0vvvvvvv
1000nnnn Note Off status byte;   nnnn (0-15) = MIDI channel 1-16
kkkkkkk Note number (0-127)
vvvvvvv Key Off (release) velocity (0-127);   Defaults to 64 in the absence of velocity sensors

9n : Note On

3 bytes 1001nnnn , 0kkkkkkk , 0vvvvvvv
1001nnnn Note On status byte;   nnnn (0-15) = MIDI channel 1-16
kkkkkkk Note number (0-127)
vvvvvvv Key On (attack) velocity (1-127, soft-loud);   0 = Note Off;
Defaults to 64 in the absence of velocity sensors

An : Polyphonic Key Pressure (Aftertouch)

3 bytes 1010nnnn , 0kkkkkkk , 0vvvvvvv
1010nnnn Polyphonic Key Pressure status byte;   nnnn (0-15) = MIDI channel 1-16
kkkkkkk Note number (0-127)
vvvvvvv Pressure value (0-127)

Bn : Controller

3 bytes 1011nnnn , 0ccccccc , 0vvvvvvv
1011nnnn Controller change status byte;   nnnn (0-15) = MIDI channel 1-16
ccccccc Controller number (0-119);   See below.
Values 120-127 are reserved for Channel Mode messages;   See below
vvvvvvv Controller value (0-127);   For switch controllers : 0 = Off, 127 = On

Cn : Program Change

2 bytes 1100nnnn , 0ppppppp
1100nnnn Program Change status byte;   nnnn (0-15) = MIDI channel 1-16
ppppppp Program number (0-127)

Dn : Channel Pressure (Aftertouch)

2 bytes 1101nnnn , 0vvvvvvv
1101nnnn Channel Pressure status byte;   nnnn (0-15) = MIDI channel 1-16
vvvvvvv Pressure value (0-127)

En : Pitch Bend

3 bytes 1110nnnn , 0vvvvvvv , 0hhhhhhh
1110nnnn Pitch Bend change status byte;   nnnn (0-15) = MIDI channel 1-16
vvvvvvv Pitch Bend LSB value (0-127)
hhhhhhh Pitch Bend MSB value (0-127)


Controller Numbers

The controller number is the first data byte (0ccccccc) following a Controller Change status byte (Bn). The 128 available controller numbers are split into four groups :

0-63 High resolution continuous controllers (0-31 = MSB; 32-63 = LSB)
64-69 Switches
70-119 Low resolution continuous controllers
120-127 Channel Mode messages

Note that for switches, the second data byte (0vvvvvvv) is either 0 (Off) or 127 (On), and that for high and low resolution continuous controllers, the second data byte takes the range 0-127.

The high resolution continuous controllers are divided into MSB and LSB values, providing a maximum of 14-bit resolution. If only 7-bit resolution is needed for a specific controller, only the MSB is used - it is not necessary to send the LSB. If the full resolution is required, then the MSB should be sent first, followed by the LSB. If only the LSB has changed in value, the LSB may be sent without re-sending the MSB.

The controller numbers missing from the following list (3, 9, 14, 15, 20-31, 35, 41, 46, 47, 52-63, 85-90 and 102-119) are currently undefined.

High resolution continuous controllers (MSB)
0 Bank Select   (Detail)
1 Modulation Wheel
2 Breath Controller
4 Foot Controller
5 Portamento Time
6 Data Entry
7 Channel Volume
8 Balance
10 Pan
11 Expression Controller
12 Effect Control 1
13 Effect Control 2
16 Gen Purpose Controller 1
17 Gen Purpose Controller 2
18 Gen Purpose Controller 3
19 Gen Purpose Controller 4
High resolution continuous controllers (LSB)
32 Bank Select
33 Modulation Wheel
34 Breath Controller
36 Foot Controller
37 Portamento Time
38 Data Entry
39 Channel Volume
40 Balance
42 Pan
43 Expression Controller
44 Effect Control 1
45 Effect Control 2
48 General Purpose Controller 1
49 General Purpose Controller 2
50 General Purpose Controller 3
51 General Purpose Controller 4
Switches
64 Sustain On/Off
65 Portamento On/Off
66 Sostenuto On/Off
67 Soft Pedal On/Off
68 Legato On/Off
69 Hold 2 On/Off
Low resolution continuous controllers
70 Sound Controller 1   (TG: Sound Variation;   FX: Exciter On/Off)
71 Sound Controller 2   (TG: Harmonic Content;   FX: Compressor On/Off)
72 Sound Controller 3   (TG: Release Time;   FX: Distortion On/Off)
73 Sound Controller 4   (TG: Attack Time;   FX: EQ On/Off)
74 Sound Controller 5   (TG: Brightness;   FX: Expander On/Off)
75 Sound Controller 6   (TG: Undefined;   FX: Reverb On/Off)
76 Sound Controller 7   (TG: Undefined;   FX: Delay On/Off)
77 Sound Controller 8   (TG: Undefined;   FX: Pitch Transpose On/Off)
78 Sound Controller 9   (TG: Undefined;   FX: Flange/Chorus On/Off)
79 Sound Controller 10   (TG: Undefined;   FX: Special Effects On/Off)
80 General Purpose Controller 5
81 General Purpose Controller 6
82 General Purpose Controller 7
83 General Purpose Controller 8
84 Portamento Control (PTC)   (0vvvvvvv is the source Note number)   (Detail)
91 Effects 1 (Ext. Effects Depth)
92 Effects 2 (Tremelo Depth)
93 Effects 3 (Chorus Depth)
94 Effects 4 (Celeste Depth)
95 Effects 5 (Phaser Depth)
96 Data Increment   (0vvvvvvv is n/a; use 0)
97 Data Decrement   (0vvvvvvv is n/a; use 0)
98 Non Registered Parameter Number (LSB)
99 Non Registered Parameter Number (MSB)
100 Registered Parameter Number (LSB)
101 Registered Parameter Number (MSB)
Channel Mode messages - (Detail)
120 All Sound Off
121 Reset All Controllers
122 Local Control On/Off
123 All Notes Off
124 Omni Mode Off (also causes ANO)
125 Omni Mode On (also causes ANO)
126 Mono Mode On (Poly Off; also causes ANO)
127 Poly Mode On (Mono Off; also causes ANO)


Bank Select

Controller numbers 0 (MSB) and 32 (LSB) are used for Bank selection.

The concept of instrument banks was introduced to get around the 128 voice limit of the Program Change message. The bank number is a 14-bit value, hence 16384 different banks are theoretically possible. The Program Change message gives access to up to 128 voices, from within the currently selected bank. There is, however, no requirement for a bank to contain the full set of 128 voices.

The Bank Select message should be transmitted as a pair, and then followed by a Program Change message :

Hex Binary Description
Bn , 00 , msb 1011nnnn , 00000000 , 0vvvvvvv Bank Select, MSB
Bn , 20 , lsb 1011nnnn , 00100000 , 0vvvvvvv Bank Select, LSB
Cn , pc 1100nnnn , 0ppppppp Program Change

The 14-bit Bank Select value gives access to 16,384 banks using the formula :

Ie :

MSB LSB Bank number
00 00 1
00 7F 128
01 00 129
7F 7F 16,384


Portamento Control (PTC)

Controller number 84 is used for Portamento Control.

When a Note On message is received after a PTC message, the voice's pitch glides from the key number specified in the PTC message to the new Note On's pitch at the rate set by Controller 5 (Portamento Time), ignoring the current status of Controller 65 (Portamento On/Off).

A PTC message only affects the next Note On received on the relevant MIDI channel.

When in Poly mode, receiving a PTC message does not affect the pitch of any currently playing notes (whether in their sustain or release phase).

When in Mono mode, or if Controller 68 (Legato footswitch) is On, a new overlapping note event results in an immediate pitch jump to the note number specified in the PTC message, and then a glide at the current portamento rate to the note number specified in the new Note On.

For an explanation of Mono and Poly modes see the MIDI Modes sub-section under Channel Mode Messages.

The note is turned off by a Note Off which matches the Note On key number, not the key number specified in the PTC message, irrespective of mode.

Example usage :

To perform a glide from C4 to E4 :

MIDI data Description Result
90 3C 40 Note On, C4 C4 On
B0 54 3C PTC from C4 No audible change
90 40 40 Note On, E4 Glide from C4 to E4
80 3C 40 Note Off, C4 No audible change
80 40 40 Note Off, E4 E4 Off


RPNs and NRPNs

Controller numbers 98 & 99 (Non-Registered Parameter Number, LSB & MSB), and 100 & 101 (Registered Parameter Number, LSB & MSB), in conjunction with Controller numbers 6 & 38 (Data Entry, MSB & LSB), 96 (Data Increment), and 97 (Data Decrement) extend the number of controllers available via MIDI.

Their use involves selecting the parameter number to be edited using Controllers 98 & 99 or 100 & 101, and then adjusting the value for that parameter using Controller number 6/38, 96, or 97. Controllers 6/38 would be used to set a specific value, whereas Controllers 96 and 97 would be used to nudge the current value +1 or -1, respectively.

It is recommended that the Null Function (RPN 7F,7F) should be sent immediately after a RPN or NRPN and its value are sent.

Registered Parameter Numbers are those which have been assigned some particular function by the MIDI Manufacturers Association (MMA) and the Japan MIDI Standards Committee (JMSC). The following RPNs are currently defined :

RPN Description
MSB LSB
00 00 Pitch Bend Sensitivity
The coarse adjustment (Controller 6) sets the number of semitones.
The fine adjustment (Controller 38) sets the number of cents.
00 01 Fine Tuning
00 02 Coarse Tuning
00 03 Select Tuning Program See also the Real Time Universal System Exclusive MIDI Tuning Standard messages.
00 04 Select Tuning Bank
7F 7F Null Function
Used to cancel a RPN or NRPN. After it is received, any additional value updates received should no longer be applied to the previously selected RPN or NRPN.

None of the Non-Registered Parameter Numbers have been assigned specific functions. They may be used for different functions by different manufacturers, and are thus manufacturer-specific.

Example usage :

To set the Pitch Bend Sensitivity on channel 'n' to +/- 7 semitones (ie +/- a fifth) :

11 bytes Bn 64 00 65 00 06 07 64 7F 65 7F
Bn 64 00 RPN MSB = 00 Select RPN : Pitch Bend Sensitivity
65 00 RPN LSB = 00 (running status in effect)
06 07 Data Entry MSB = 07 (running status in effect) Coarse adjustment (semitones)
64 7F RPN MSB = 7F (running status in effect) Null Function (Cancel RPN)
65 7F RPN LSB = 7F (running status in effect)

Or, to set Tuning Program 'tt' on channel 'n' :

11 bytes Bn 64 03 65 00 06 tt 64 7F 65 7F
Bn 64 03 RPN MSB = 03 Select RPN : Select Tuning Program
65 00 RPN LSB = 00 (running status in effect)
06 tt Data Entry MSB = tt (running status in effect) Coarse adjustment
64 7F RPN MSB = 7F (running status in effect) Null Function (Cancel RPN)
65 7F RPN LSB = 7F (running status in effect)

Or, to increment the current Tuning Bank on channel 'n' :

11 bytes Bn 64 04 65 00 60 7F 64 7F 65 7F
Bn 64 04 RPN MSB = 04 Select RPN : Select Tuning Bank
65 00 RPN LSB = 00 (running status in effect)
60 7F Data Increment (running status in effect) Increment
64 7F RPN MSB = 7F (running status in effect) Null Function (Cancel RPN)
65 7F RPN LSB = 7F (running status in effect)


Channel Mode Messages

These are a subset of the Controller messages, specifically controller numbers 120 - 127.

3 bytes 1011nnnn , 0ccccccc , 0vvvvvvv

ccccccc vvvvvvv Description
120 0 All Sound Off
Causes sound generators to immediately cease all sound (no release phase involved).
121 0 Reset All Controllers
Resets all controllers to their default values.
122 0 (Off)

or

127 (On)

Local Control On/Off
When Local Control is Off, MIDI data from a MIDI keyboard is not communicated to the keyboard's sound generators, though it is still sent out via the MIDI OUT port. MIDI data arriving at the MIDI IN port will reach the sound generators, regardless.
123 0 All Notes Off (ANO)
Causes sound generators to enter the release stage of their volume envelope, and hence gently cease making sound.
124 0 Omni Mode Off  (also causes ANO)
125 0 Omni Mode On  (also causes ANO)
126 0-16 Mono Mode On (Poly Off)  (also causes ANO)
vvvvvvv > 0 : Number of channels to use (Omni Off).
vvvvvvv = 0 : Use all available channels (Omni On)
127 0 Poly Mode On (Mono Off)  (also causes ANO)


MIDI Modes

The MIDI specification allows for four basic modes of operation, selected using any two from the last four Channel Mode messages from the above list.

When Omni Mode is on, a device will respond to Channel messages on any MIDI channel, whereas when Omni Mode is off, a device will only respond to Channel messages which are on that device's base channel.

When Mono Mode is on, a device will only be able to play a single note at any time on a given MIDI channel, whereas when Poly Mode is on, a device will be able to play chords on a given channel (within that device's polyphony capability).

Note that any of these Channel Mode messages will only be responded to if they are on the receiving device's base channel. So, even when in Omni mode, a device still has a base channel as such (for the purposes of these Channel Mode messages).

Omni Mode On is a failsafe approach when connecting two devices together, as it ensures that the receiving device will respond to messages sent by the transmitting device. It is, however, totally useless in a sequencer based setup.

Multitimbral devices operate in a slightly special way. Basically each part (which has its own MIDI channel) is considered as a separate device, with each part being set to Omni Mode Off and Poly Mode On (ie independant polyphonic channels), which is ideal for use in a sequencer setup.

1 : Omni On, Poly On
Bn, 7D, 00 Omni Mode On
Bn, 7F, 00 Poly Mode On

Voice messages are received from all voice channels and assigned to voices polyphonically.

All voices are transmitted on the base channel.

2 : Omni On, Mono On
Bn, 7D, 00 Omni Mode On
Bn, 7E, 00 Mono Mode On

Voice messages are received from all voice channels, and control only one voice, monophonically.

Voice messages for one voice are transmitted on the base channel.

3 : Omni Off, Poly On
Bn, 7C, 00 Omni Mode Off
Bn, 7F, 00 Poly Mode On

Voice messages are received on the base channel only, and assigned to voices polyphonically.

Voice messages for all voices are transmitted on the base channel.

4 : Omni Off, Mono On
Bn, 7C, 00 Omni Mode Off
Bn, 7E, nn Mono Mode On   (nn = number of channels to use)

Voice messages are received on voice channels <base channel> to <base channel> + nn - 1, and assigned monophonically to voices 1 to nn, respectively. The number of voices 'nn' is specified by the third byte of the Mono Mode message.

Voice messages for voices 1 to nn are transmitted on voice channels <base channel> to <base channel> + nn - 1, respectively (a single voice per channel).


System Common Messages

System Common information is intended for all channels in a system.

Status byte Data bytes Description
Hex Binary
F1 11110001 0nnndddd -- MIDI Time Code Quarter Frame
nnn = Message type; dddd = values.
See also the Real Time Universal System Exclusive MTC messages.
F2 11110010 0lllllll 0hhhhhhh Song Position Pointer
lllllll = LSB (0-127);   hhhhhhh = MSB (0-127)
The 14-bit value is the number of MIDI beats since the start of the song (1 beat = 6 MIDI clocks).
F3 11110011 0sssssss -- Song Select
sssssss = Song number (0-127)
Select current sequence.
F4 11110100     Undefined
F5 11110101     Undefined
F6 11110110 -- -- Tune Request
Upon receiving this all analogue synthesisers should initiate a self tuning operation.
F7 11110111 -- -- End of System Exclusive (EOX)
Used to terminate a System Exclusive message.


System Real Time Messages

The System Real Time messages control the entire system (all devices, irrespective of channel setting) in real time. They are used for synchronising clock-based devices (eg sequencers and rhythm units). They are each single byte messages, with no following data bytes. If the functions specified are not implemented, they are simply ignored.

To maintain timing precision, these messages can be sent at any time, even between bytes of another message. In such a situation the Real Time message is either acted upon or ignored, after which the receiving process resumes under the previous status.

Status byte Description
Hex Binary
F8 11111000 Timing Clock
Whilst a transmitter is playing, this message is sent 24 times per quarter note.
F9 11111001 Undefined
FA 11111010 Start
Start the current sequence playing, from the beginning. (This message should be followed with Timing Clocks).
FB 11111011 Continue
Continue playing the current sequence from the point at which it was stopped.
FC 11111100 Stop
Stop the current sequence.
FD 11111101 Undefined
FE 11111110 Active Sensing
When initially sent, the receiver will expect to receive another Active Sensing message each 300ms (max), or it will assume that the connection has been terminated. At termination, the receiver will turn off all voices and return to normal (non- active sensing) operation.
Use of this message is optional.
FF 11111111 System Reset
Reset all receivers to their power-up status. It should be used sparingly, preferably only under manual control. In particular, it should not be sent automatically on power up, as this could lead to a situation where two devices endlessly reset each other.


System Exclusive Messages

Status byte Data bytes Description
Hex Binary
F0 11110000   Start of System Exclusive (SOX)
  0iiiiiii Identification code (0-127)   [ see notes 1 & 5 ]
0ddddddd
...
...
0ddddddd
Any number of data bytes (each 0-127) having manufacturer specific functionality
F7 11110111   End of System Exclusive (EOX)

Notes :
1 iiiiiii = identification ID (0-127). If the ID is 0, the following 2 bytes are used as extensions to the manufacturer ID.
2 All bytes between the System Exclusive status byte and EOX, or the next status byte, must have zero in the top bit, ie values 0-127.
3 Status or Data bytes (except System Real Time) should not be interleaved with System Exclusive data.
4 EOX, or any other status byte (except System Real Time) will terminate a System Exclusive message. However, an EOX should always be sent to specifically mark the end of a System Exclusive message.
5 3 System Exclusive ID numbers have been set aside for special purposes : 7D is reserved for non-commercial use (eg schools, research, etc.) and is not to be used on any product released to the public; 7E (Non Real Time) and 7F (Real Time) are used for extensions to the MIDI specification, and are known as Universal System Exclusive ID numbers.


System Exclusive Manufacturer's ID Numbers

This is by no means a complete list, though it does include the major companies.

Single byte IDs - American
01 Sequential Circuits
04 Moog
06 Lexicon
07 Kurzweil
0F Ensoniq
10 Oberheim
11 Apple Computer
18 Emu
1A ART
Single byte IDs - European
22 Synthaxe
24 Hohner
29 PPG
2B SSL
2F Elka / General Music
30 Dynacord
36 Cheetah
3E Waldorf Electronics Gmbh
Single byte IDs - Japanese
40 Kawai
41 Roland
42 Korg
43 Yamaha
44 Casio
47 Akai
48 Japan Victor
4C Sony
4E Teac Corporation
51 Fostex
Multi byte IDs - American   (see note 1 above)
00 00 07 Digital Music Corporation
00 00 0E Alesis
00 00 15 KAT
00 00 16 Opcode
00 00 1A Allen & Heath Brenell
00 00 1B Peavey Electronics
00 00 1C 360 Systems
00 00 20 Axxes


Universal System Exclusive ID Numbers

This includes the Non Real Time (7E) and Real Time (7F) ID extensions mentioned above in note 5.

The generalised format for both is as follows :

The Device ID (also referred to as the channel number) is generally used to specify a discrete physical device, however complex devices (eg computers with a number of different MIDI expansion cards) may have more than one Device ID. A value of 7F is used to specify all devices.

From one to sixteen virtual devices may be accessed at each Device ID by use of the normal MIDI channel numbers, within the capabilities of the device.

The Non-Commercial Universal System Exclusive ID (7D) is not detailed here.

Sub ID#1