Im Umgang mit MIDI-Daten haben sich verschiedene Arten der Zahlendarstellung durchgesetzt. Je nach Anwendungsgebiet wird der einen Vorzug vor den anderen gegeben.
Die bekannteste Darstellungsart bietet das dezimale (auf den Zahlen "0" bis "9" basierende) Zahlensystem. Es ist allen vertraut und bedarf keiner weiteren Erläuterung. Dezimalzahlen finden in erster Linie Anwendung, wenn es um das einfache "Durchnummerieren" diverser Parameter geht. So werden oftmals die verschiedenen Klangprogramme eines Gerätes mit Hilfe des Dezimalsystems angegeben.
Allerdings tritt hier auch schon die erste Schwierigkeit auf. Es ist nämlich leider nicht festgelegt, mit welcher Ziffer das allererste Klangprogramm eines Gerätes gekennzeichnet wird. Vom Sprachgebrauch her hat es sich eingebürgert, das erste Programm mit "Nr. 1" zu bezeichnen, obwohl es mathematisch korrekter ist, ihm die Bezeichnung "Nr. 0" zuzuweisen. Andersherum gesagt ist es denkbar, dass der Program-Change-Befehl "1" bei einem Gerät das zweite Klangprogramm aufruft. Wie wir später noch sehen werden, ist es durchaus sinnvoll, beim Zählen mit "Null" zu beginnen.
Eine weitere Ausnahme bei der Durchnummerierung der Program Changes bildet das sogenannte "oktale" (auf den Zahlen 1-8 basierende) Zahlensystem. Es ist eingeführt worden, um den häufig anzutreffenden Geräten mit 64 Speicherplätzen gerecht zu werden. Dieses Oktalsystem ist dem Dezimalsystem ähnlich, kennt aber die Zahlen "0" und "9" nicht. Außerdem werden sämtliche (= 64) Werte zweistellig angegeben. Die Zählweise im Oktalsystem ist die folgende:
11 12 13 14 15 16 17 18 21 22 23 24 25 ... 78 81 82 83 84 85 86 87 88
Falls mehr als 64 Werte benötigt werden, werden die Werte in zwei Gruppen unterteilt (typischerweise die Gruppen 'A' und 'B'). Man wählt dann von "A11" - "A88" (01 - 64) und "B11" - "B88" (65 - 128).
Für alle komplizierteren MIDI-Anwendungen finden die folgenden zwei Zahlensysteme ("Hexadezimal" und "Binär") Anwendung. Das Hexadezimalsystem bietet den Vorteil, mit einer einzigen Stelle innerhalb der Darstellung 16 verschiedene Werte definieren zu können. Jetzt werden Sie vielleicht einwenden, dass dieses nicht möglich ist, da ja bereits die Zahl "10" zweistellig ist und mit den Zahlen "0" - "9" lediglich zehn, aber niemals sechzehn verschiedene Werte dargestellt werden können. Das ist natürlich richtig, darum wurden zu diesen Zahlen noch sechs weitere hinzugefügt, denen man als Darstellungssymbol einfach die ersten sechs Buchstaben des Alphabets zugeordnet hat. Die Zählweise im Hexadezimal-System lautet demnach:
0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 12 ... 19 1A 1B ... 1F 20 21 ...
An dieser Stelle ist es notwendig zu sagen, dass bei Zahlenangaben im Zusammenhang mit MIDI immer angegeben sein muss, aus welchem System sie stammen. So kann z. B. die Ziffernfolge "11" verschiedene Werte darstellen:
Im folgenden werden hexadezimale Zahlen mit einem großen "H" hinter der Zahl gekennzeichnet z.B. 7FH.
Ein weiteres Zahlensystem ist das "binäre" System. Es wird oft auch als "Dual-System" bezeichnet. Dieses Zahlensystem kennt lediglich die Zahlen "0" und "1". Daraus folgt, dass zur Angabe größerer Werte viele Stellen benötigt werden. In bestimmten, computerbezogenen Anwendungen ist dieses System sehr gebräuchlich, da Computer bekannterweise nur zwei logische Zustände ("0" und "1") kennen und man direkt aus einer Binärzahl ersehen kann, welche Stelle (welches Bit) "gesetzt" ist.
Hier nun die ersten zwanzig Zahlenwerte in verschiedenen Darstellungsformen:
Binär | Oktal | Dezimal | Hexadezimal |
---|---|---|---|
00000000 | 11 | 00 | 00 |
00000001 | 12 | 01 | 01 |
00000010 | 13 | 02 | 02 |
00000011 | 14 | 03 | 03 |
00000100 | 15 | 04 | 04 |
00000101 | 16 | 05 | 05 |
00000110 | 17 | 06 | 06 |
00000111 | 18 | 07 | 07 |
00001000 | 21 | 08 | 08 |
00001001 | 22 | 09 | 09 |
00001010 | 23 | 10 | 0A |
00001011 | 24 | 11 | 0B |
00001100 | 25 | 12 | 0C |
00001101 | 26 | 13 | 0D |
00001110 | 27 | 14 | 0E |
00001111 | 28 | 15 | 0F |
00010000 | 31 | 16 | 10 |
00010001 | 32 | 17 | 11 |
00010010 | 33 | 18 | 12 |
00010011 | 34 | 19 | 13 |
00010100 | 35 | 20 | 14 |
00010101 | 36 | 21 | 15 |
Im Binärsystem werden die Leerstellen oftmals mit Nullen aufgefüllt, um klarzustellen, mit wie vielen Stellen das verwendete System zu rechnen in der Lage ist. Beim MIDI-System z.B. sind das in der Regel acht Stellen, auch wenn davon in den meisten Fällen nur sieben Stellen genutzt werden dürfen. Solche acht Stellen ergeben zusammen ein sogenanntes "Byte". So wird die Dezimalzahl "15" binär als "00001111" angegeben.
Ein solches Byte besteht aus acht einzelnen "Bits" (= binary digit, einzelne Zahl des Binärsystems). Um auseinander zu halten, von welcher Stelle innerhalb eines Bytes die Rede ist, werden diese nach ihrer Wertigkeit sortiert. Man unterscheidet dabei die "höherwertigen" Bits (von links die ersten vier) und die "niederwertigen" Bits (von rechts die ersten vier). Aus den englischen Bezeichnungen "Most Significant Bit" und "Least Significant Bit" ergeben sich für die (von links) erste bzw. letzte Stelle die Abkürzungen "MSB" bzw. "LSB":
MSB | 00101001 |
LSB | 00101001 |