MIDI-Messages

Es gibt zwei verschiedene Arten von MIDI-Messages:

Channel Messages und
System Messages, die wiederum in Common-, Real Time- und Exclusive Messages unterteilt werden.


In der Betrachtung der MIDI-Messages spielen die Start- und Stopbits keine Rolle, weshalb hier von 8-Bit-Bytes ausgegangen wird. MIDI-Messages sind eine Serie von Bytes. Messages können jede Länge zwischen 1 und unendlich vielen Bytes besitzen. Das erste Byte ist das sogenannte Status-Byte. Es zeichnet sich dadurch aus, daß es die einzige Sorte MIDI-Byte ist, in der das siebente Bit eine 1 ist. Alle anderen MIDI-Bytes haben an seiner Stelle eine 0. Der Beginn einer MIDI-Message wird vom Empfänger also durch die 1 des siebenten Bits des ersten Bytes erkannt. Ein Status-Byte hat immer einen Wert zwischen 0x80 und 0xFF, dezimal 128 und 256. Es können also 128 verschiedene Status übertragen werden. Diese 128 Status werden unter den oben genannten verschiedenen MIDI-Messages folgendermaßen aufgeteilt:

Channel-Messages: 0x80 bis 0xEF (dez.128 bis 240)
System Messages: Common:0xF1 bis 0xF6 (dez. 242 bis 247), Exclusive Messages: Status Byte am Anfang einer System-Exclusive-Message: 0xF0. System Exclusive Messages werden abgeschlossen mit dem End-Of-Message-Byte (EOX) 0xF7. Dies ist nötig, weil per Definition keine Anzahl von dem Satus-Byte folgenden Wertebytes festgelegt sind. Der Empfänger aber muß das Ende der Message erkennen können. Real Time Messages: 0xF8 bis 0xFF, (dez. 249 bis 256)

In dieser Anzahl von Status-Bytes sind allerdings noch Reserven für zukünftige Funktionen vorhanden. Bestimmte Status-Bytes sind also noch nicht belegt. Werden solche Messages empfangen, werden sie ignoriert. Für die Voice-Message-Status-Bytes gilt, daß hierbei das 8-Bit-Byte in 2 4-Bit-Bytes aufgespalten wird, wobei das erste 4-Bit-Byte die Identifikation der folgenden MIDI-Message und das zweite den Kanal angibt (2 hoch 4 = 16 (logische Verbindungen (Kanäle)))

Dem Status-Byte folgen normalerweise Wertebytes. Das MIDI-Protokoll kennt Werte zwischen 0 und 127, wobei diese Werte in manchen Geräten als 1 und 128 benannt werden. Demnach gibt es also z.B. 128 Tasten, 128 Controller, die jeweils einen Wertebereich zwischen 0 und 127 annehmen können, etc.

Beispiel: Ein Note-On-Message (Taste gedrückt-Message) identifiziert sich mit dem ersten 4-Bit-Byte als Wert 8. Der Kanal 16 (wobei die logischen Verbindungen nicht bei 0 beginnen und somit immer um den Wert 1 höher liegen als der Wert des 4-Bit-Byte) mit F. Folglich erkennt ein MIDI-Empfänger eine gedrückte Taste auf dem Kanal 16, wenn er ein Status-Byte mit dem Wert 0x8F empfängt.