MIDI-Befehle werden aus einem oder mehreren Bytes zusammengesetzt. Die Bytes werden nacheinander über ein MIDI-Kabel gesendet und dürfen nicht getrennt werden. Darum muß es eine Methode geben, um zu erfahren, wann ein MIDI-Befehl endet und wann ein neuer MIDI-Befehl beginnt. Deshalb gibt es die Status-Bytes
, die immer als erstes Byte am Anfang eines MIDI-Befehls stehen und die darauf folgenden Daten-Bytes.
Bei einem Status-Byte ist das höchstwertige Bit immer 1, bei den eventuell folgenden Daten-Bytes ist das höchstwertige Bit 0. Jedes Byte kann damit 128 Werte kodieren, da nur noch die letzten 7 Bits hierfür übrigbleiben.
Statusbyte | Datenbyte | |||
---|---|---|---|---|
Binär | 1sss ssss
| 0ddd dddd
| s,d = 0 oder 1 | |
Hexadezimal | #80-#FF | #00-#7F | ||
Dezimal | 128-255 | 0-127 |
Die in der MIDI-Norm festgelegten Befehle haben in der Regel eine Länge von einem, zwei oder drei Bytes. Nur die sogenannten System Exclusiv Meldungen bestehen aus einer langen Folge von Daten-Bytes, die zwischen zwei speziellen Status-Bytes eingeschlossen werden.
-> -> (Beispiel eine Bytefolge) -> ->Übertragungsrichtung -> -> | |||||||||
---|---|---|---|---|---|---|---|---|---|
Befehl1 | Befehl2 | Befehl3 | Befehl4 | Befehl5 | |||||
Status1 | Status2 | Data(2) | Data(2) | Status3 | Data(3) | Status4 | Status5 | Data(5) | Data(5) |
Bei modernen Geräten können aufeinander folgende MIDI-Befehle, die das gleiche Status-Byte haben, zusammengefaßt werden. Beim sogenannten Running Status wird nur einmal das gemeinsame Statusbyte übertragen, an das alle Datenbytes angehängt werden. Auf diese Weise kann das Datenaufkommen veringert werden.