Der online MIDI GuideLogo
Vorwort Inhaltsverzeichnis Downloads Links Contact

5. STATUS - BYTES UND DATEN BYTES

Die einzige Art von Bytes innerhalb des MIDI-Systems, deren MSB gesetzt ist, sind die "Status-Bytes". Um es andersherum zu sagen: die Binärzahl "10010001" muss ein Statusbyte darstellen, da ihre erste Stelle (von links) eine "1" ist. In der Tat handelt es sich bei "10010001" um ein Statusbyte, welches einen Note On Befehl für den MIDI-Kanal "2" darstellt.



Statusbytes sind sozusagen die "Befehlsgeber" im MIDI-System, die z.B. die Befehle "Note einschalten", "Pitch Bending ausführen", "Aftertouch auslösen" oder "Note abschalten" repräsentieren können. Die vier niederwertigeren Bits repräsentieren dabei den entsprechenden MIDI-Kanal. Tatsächlich lassen sich mit vier Stellen im Binärsystem genau 16 verschiedene Werte darstellen; diese Werte entsprechen den MIDI-Kanälen.

5.1 Die 16 MIDI-Kanäle in binärer Darstellung

Binärzahl MIDI-Kanal Binärzahl MIDI-Kanal
0000 1 1000 9
0001 2 1001 10
0010 3 1010 11
0011 4 1011 12
0100 5 1100 13
0101 6 1101 14
0110 7 1110 15
0111 8 1111 16

5.2 Die acht MIDI-Statusbytes

Da (wie bereits erklärt) das MSB (also die erste Stelle von links) bei Statusbytes immer gesetzt sein muss, bleiben noch drei Stellen (oder acht Möglichkeiten), um verschiedene Befehle zu kennzeichnen:

BinärHexadezimalStatus
1000nnnn8nHNote Off
1001nnnn9nHNote On
1010nnnnAnHPolyphonic Pressure
1011nnnnBnHControl Change
1100nnnnCnHProgramm Change
1101nnnnDnHChannel Pressure
1110nnnnEnHPitch Bending
1111nnnnFnHSystem Exclusive

In der ersten Spalte ist der Wert der ersten Stelle von links immer "1", da es sich um Statusbytes handelt ; "nnnn", bzw."nH" repräsentieren den gewählten MIDI-Kanal (beliebig von 1-16).


Bei System Exclusive-Daten gibt es keine MIDI-Kanäle, darum ist das Statusbyte für System Exclusive-Daten immer "F0H" bzw. "11110000". Andere Bytes, die zwar mit "FH" beginnen, aber deren vier niederwertigeren Bits höher als "0000" sind, haben spezielle Aufgaben im MIDI-System, die an anderer Stelle erörtert werden.

5.3 Die Datenbytes

Falls bei einem MIDI-Byte das MSB nicht gesetzt ist (1. Stelle von links = "0"), kann es sich nicht um ein Statusbyte handeln. Solche Bytes mit nicht gesetztem MSB sind demzufolge die Datenbytes. Diese dienen dazu, den durch ein Statusbyte gegebenen Befehl näher zu spezifizieren.


Das Byte "10010001" aus obigem Beispiel bedeutet "Note an auf MIDI Kanal 2". Um daraus eine korrekte MIDI-Nachricht zu machen, werden noch die Informationen "welche Note" und "mit welcher Anschlagsstärke" benötigt. Diese Informationen werden durch zwei Datenbytes geliefert. Da deren MSB nicht gesetzt sein darf (damit sie als Datenbytes erkannt werden), können sie demnach "nur" einhundertachtundzwanzig Werte annehmen.


Auch dafür finden wir im Binärsystem die Bestätigung. Die sieben verbleibenden Bits des Datenbytes können genau 128 Werte darstellen ("00000000" - "01111111" sind sämtliche möglichen Datenbytes). Da also zur tatsächlichen "Datenerzeugung" nur sieben Bits (bzw. 128 Werte) zur Verfügung stehen, sagt man auch "Das MIDI-System arbeitet mit einer 7-Bit-Auflösung".

5.4 Note On / Anschlagdynamik 9nH

In unserem Beispiel sieht eine komplette MIDI-Nachricht also folgendermaßen aus:

  10010001 00001101 01111111

Übersetzt bedeutet das etwa "Spiele die Note "00001101" mit der Anschlagdynamik "01111111" auf MIDI-Kanal 2. Falls wir die Werte der Binärzahlen auch übersetzen, bedeutet dieses Note "13" mit Dynamik "127" (die Null wird wieder mitgezählt).


Um dieses interpretieren zu können, muss man nur noch wissen, dass im MIDI-System die einzelnen Noten der Reihenfolge nach durchnummeriert sind. Das mittlere "C" entspricht Noten-Nummer "60", das "G" darüber der Nr. "67", das "A" darüber der Nr. "69" u.s.w.


Auch die verschiedenen Anschlagstärken sind durchnummeriert. "127" entspricht dem höchstmöglichen Anschlag-Wert. "O" entspricht allerdings nicht der geringstmöglichen Anschlagsstärke; dieser Wert repräsentiert vielmehr "gar keinen Anschlag" und kann demzufolge auch benutzt werden, um eine Note abzuschalten.
Um das tiefe "Cis" (= Notennummer "13") abzuschalten, benötigen wir demnach folgenden Befehl:

 10010001 00001101 00000000

Ein anderes Beispiel:

  NOTE ON   9nH 1001nnnn
NOTE OFF 8nH 1000nnnn

Hexadezimal sehen diese zwei Beispiele wie folgt aus:

  91H 0DH 7FH = 10010001 00001101 01111111  =  EINSCHALTEN
91H 0DH 00H = 10010001 00001101 00000000 = AUSSCHALTEN

Da im Hexadezimal-System eine Stelle sechzehn verschiedene Werte haben kann, bleibt z.B. die erste Stelle eines gegebenen Statusbytes immer dieselbe. Sobald also irgendein Byte mit einer (hexadezimalen) "9" beginnt, handelt es sich in jedem Fall um ein "Note On"-Status-byte. Am Wert der zweiten Stelle eines Statusbytes (in hexadezimaler Darstellung) kann man sehr bequem den benutzen MIDI-Kanal ablesen, sofern der gegebene Status einen MIDI-Kanal benötigt (was nur bei den Statusbytes 8nH-EnH der Fall ist.)


Bei den Datenbytes kann man dagegen nur sagen, dass ihr Maximalwert (hexadezimal) "7F" nicht überschreiten darf. "80H" muss demzufolge ein Statusbyte sein (ist es auch, nämlich das für "Note aus / MIDI-Kanal 1").

5.5 Note Off / Release Velocity 8nH

Damit kommen wir zu einer zweiten Möglichkeit, eine Note auszuschalten. Einige (wenige) Geräte sind in der Lage, zu erkennen, mit welcher Geschwindigkeit eine Taste losgelassen wird. Dieser Vorgang trägt die Bezeichnungen "Release Velocity", "Note Off Velocity" oder "Freigabedynamik". Seltener findet man auch den Begriff "Loslassdynamik".


Wird eine Note mit "Note On + Velocity = 0" ausgeschaltet, gibt es keine Möglichkeit, die Release Velocity zu definieren, da - sobald der Dynamikwert höher als "0" ist - eine weitere Note (mit derselben Tonhöhe) eingeschaltet, nicht jedoch die erste Note abgeschaltet wird. Falls ein Gerät, das in der Lage ist, Release Velocity zu erkennen, einen solchen "Note On mit Velocity 0" empfängt, interpretiert es ihn als "Note Off mit mittlerer (64 dezimal = 40H) Release Velocity".


Aus diesem Grund gibt es das Statusbyte "Note Off". Ihm folgen zwei Datenbytes zur Definition der abzuschaltenden Note sowie deren Loslassgeschwindigkeit. Unser Beispiel kann also auch wie folgt aussehen:


91H 0DH 7FH 81H 0DH 40H = 91H 0DH 7FH 91H 0DH 00H ------------------------- ------------------------- ('Note an' mit Vel."127"); ('Note an' mit Vel."127"); ('Note aus' mit Release Vel."64") ('Note an' mit Vel."0" entspricht 'Note aus' mit Release Vel.64

Eine weitere Möglichkeit, Noten abzuschalten, werden wir später erläutern.

5.6 Polyphonic Aftertouch AnH

Der oft auch als "Key Pressure" bezeichnete polyphone Aftertouch ist fast noch exotischer als die Release Velocity. In der Tat sind nur wenige Geräte in der Lage, Polyphonic Aftertouch zu empfangen; senden können ihn vielleicht weltweit eine handvoll. Falls nach dem Anschlagen eines Akkordes durch verstärkten Tastendruck einzelne Töne moduliert werden können, sprechen wir von Key Pressure. In der Realität ist er allerdings so selten zu finden, dass er lange Zeit als ausgestorben galt. Auch hier folgen dem Statusbyte "AnH" (= 1010nnn) zwei Datenbytes. Das erste gibt dabei die Notennummer an; die Druckstärke wird durch das zweite Datenbyte definiert.

5.7 Control Changes BnH

Control Changes (auch umgangssprachlich "Controller" genannt) sind die flexibelsten MIDI-Daten überhaupt. Ähnlich wie bei den Notennummern gibt es auch von den Controllern 128 verschiedene. Nicht alle sind genormt, und einige sind in ihrer Funktion nahezu identisch.


Eine Extra-Tabelle mit den üblichen Control Changes gibt es hier:


     5.7.1 Tabelle der Control Changes

Control Changes haben die verschiedensten Funktionen. Während man z.B. mit Controller "07" die Lautstärke eines Gerätes ändern kann, ist es möglich, mit Controller "01" eine Modulation zu erzeugen.


Nach dem Statusbyte folgt die Controllernummer als erstes Datenbyte; das zweite Datenbyte bestimmt die Intensität des gewählten Controllers. Möchte man z.B. einen Klang eines auf MIDI-Kanal "5" empfangenden Gerätes im Stereobild zur Seite verschieben, muss folgende Nachricht übermittelt werden:

  B4H 0AH 7FH = 10110100 00001010 01111111

Soll der Klang auf die andere Seite gelegt werden, wird folgendes gesendet:

  B4H 0AH 00H = 10110100 00001010 00000000

Für die Panoramamitte gilt:

  B4H 0AH 40H = 10110100 00001010 01000000

Besondere Beachtung verdienen die sogenannten "Switch Controller", die nur die Werte "0" oder "127" annehmen können. Sie haben schaltende Funktionen, wie etwa das Ein- oder Ausschalten des Portamentos (= Controller "65") oder des Haltepedals (=Controller "64"). Alle kontinuierlich veränderbaren Control Changes werden demzufolge auch "Continuous Controller" genannt.


Mitunter erscheint es wünschenswert, mehr als nur 128 verschiedene Werte erzeugen zu können. Diesem Wunsch kann durch die Kombination bestimmter Controller Rechnung getragen werden. So gibt es z.B. zur allgemeinen Dateneingabe zwei Controller, nämlich "06" (= Data Entry MSB) und "38" (= Data Entry LSB). In der Tat lassen sich durch Kombination dieser zwei Controller 128 x 128 = 16384 Werte erzeugen. Sollte der Wertevorrat des normalerweise ausschließlich gesendeten Controller "06" nicht ausreichen, wird zuerst Controller "06" mit einem entsprechenden Wert gesendet und danach der Controller "38". Ein Beispiel: falls Data Entry Wert "139" gesendet werden soll, ist Controller "06" allein überfordert. Der Wertebereich von Controller "06" entspricht jedoch in Kombination mit "38" einem Vielfachen des normalen Wertebereichs. Bereits das gesetzte LSB des Controllers "06" entspricht dem Wert "128" . Also muss Controller "06" mit dem Wert "1" (entspricht "128") und Controller "38" mit dem Wert "11" gesendet werden (128 + 11 = 139)

  BnH 06H 01H = 1011nnnn 00000110 00000001
BnH 26H 0BH = 1011nnnn 00100110 00001011

Das ist zugegebenermaßen schon recht kompliziert; man kann sich aber behelfen, indem man sich im Geiste die sieben niederwertigeren Datenbits beider Controller "zusammenklebt" um ein imaginäres "14-Bit-Datenbyte" zu erhalten; das funktioniert recht gut...(dieses ist aber bitte nicht wörtlich zu nehmen...).


Die Unterscheidung, ob es sich um einen normal auflösenden Controller oder aber um einen hochauflösenden handelt, wird allein durch den Empfang des LSB-Controllers getroffen. Wird nur der MSB-Controller übermittelt, wird der Wertebereich automatisch auf 7-Bit-Auflösung umgeschaltet. Prinzipiell sind die Controller "32" - "63" als die LSBs der Controller "00" - "31" anzusehen.


Ebenfalls besondere Beachtung verdienen die Controller "120" - "127". Da diese Funktionen besitzen, die zusätzliche Möglichkeiten eröffnen, werden diese Controller auch "Auxiliary Messages" genannt. So kann man durch Senden von "BnH 7BH 00H" (All Notes Off) sämtliche klingenden Noten eines MIDI-Kanals abschalten. Diese ist die bereits vorher erwähnte dritte Möglichkeit, Noten abzuschalten. Sie sollte jedoch nur in Notfällen genutzt werden.
Einige Geräte senden diese "Auxiliary Message" automatisch nach Abschalten der letzten Note, um etwaige Notenhänger zu eliminieren.


Mit den Controllern "124"- "127" lassen sich die verschiedenen MIDI-Modes einzelner Geräte umschalten. Daher resultiert auch ihre alternative Bezeichnung "Mode Messages". Allerdings ist das heutzutage sehr selten zu finden, da nahezu alle Geräte automatisch im "Multi Mode" (=Omni Off/Poly On) arbeiten.


Erwähnung sollten auch die "RPN/NRPN"-Controller finden. Bei diesen handelt es sich um erweiterte Control Changes. Jeweils zwei dieser Controller ("99/98", "101/100") ergeben ein MSB/LSB Pärchen, mit dem ausschließlich der zu verändernde Parameter bestimmt wird. Die Werteänderung selbst wird dabei durch "CC 06" (Data Entry) übertragen. Der Unterschied zwischen "Registered Parameter Numbers" (RPN) und "Non Registered Parameter Numbers" (NRPN) besteht darin, dass die NRPN-Controller lediglich im ROLAND GS-System verbindlich vorgeschrieben sind; die RPN-Controller dagegen sind allgemein gültig.


Eine Extra-Tabelle mit den wichtigsten RPNs/NRPNs gibt es hier:


     5.7.2 Tabelle der NRPN/RPN Controller

5.7.3 Bank Select Controller

Die "Bank Select" Controller arbeiten "interdisziplinär" d. h. sie benötigen noch andere MIDI-Daten, um eine komplette MIDI-Meldung zu bilden. Sie stellen eine Bereichserweiterung für Programm-Changes dar. Ähnlich wie die Präfixe "A" und "B" im Oktalsystem können die "Bank Select"-Controller Program Change Gruppen (die sinnvollerweise "Bänke" heißen), umschalten. Dazu wird ein "Bank Select" Befehl unmittelbar vor einem "Program Change"-Befehl übertragen. Um z.B. den Sound Nr. "130" eines Gerätes anzuwählen, muss folgendes übertragen werden:

  BnH 00H 01H CnH 01H

Ähnlich wie beim Data Entry Controller wird als Bank Select Befehl im Normalfall der MSB-Controller (= Controller "00") genutzt. Lediglich Instrumente mit mehr als 16384 Klängen benötigen den Controller "32" (Bank Select LSB) zur Klanganwahl...


Jedoch werden oftmals beide Controller benutzt, um z.B. eine größere Übersichtlichkeit zu bieten. So ist es z.B. möglich, mit dem Controller "00" die Art des Speichers auszuwählen (User-Speicher, Preset-Speicher, RAM-Card, Expansion-Board usw.). Controller "32" dient der Anwahl der einzelnen Bänke innerhalb der jeweiligen Speicherbereiche und der Program Change wählt dann einzelne Klänge der betreffenden Bank aus.



Abschließend sei zu den Control Changes gesagt, dass Ihre Funktion zwar genormt sein kann, aber die Reaktion des zu steuernden Empfangsgerätes immer dort selbst einzustellen ist. Lax gesprochen: man kann beliebig viele Lautstärkeänderungen (= Controller "07") an ein Gerät senden, ohne dass dieses reagiert, wenn an diesem Gerät der Lautstärkeempfang abgeschaltet ist. Nicht alle Geräte bieten alle Möglichkeiten, und an vielen Geräten läßt sich vieles verstellen. Bevor man Controller-Daten sendet, ist zu prüfen, ob sie überhaupt korrekt empfangen werden können !

5.8 Program Changes CnH

Bei den "Program Change"-Messages handelt es sich um die wahrscheinlich simpelsten MIDI-Befehle überhaupt. Sie bestehen einfach aus dem Statusbyte "CnH" sowie nachfolgend einem Datenbyte, welches den Wert des zu sendenden Klangprogrammes repräsentiert. Korrekterweise sei gesagt, dass Programmwechselbefehle natürlich auch andere, nicht klangerzeugende MIDI-Geräte umschalten können, so dass die Bezeichnung "Klangprogramm" irreführend sein kann. "Speicherplatz" klingt zwar wieder sehr technisch, trifft den Sachverhalt aber besser. Um z.B. den 5. Speicherplatz eines auf MIDI-Kanal 12 empfangenden Gerätes aufzurufen, benötigen wir folgende Meldung:

  CBH 04H

Wie schon im vorherigen Abschnitt erwähnt, kann man den 7-Bit-Wertebereich der Program Changes erweitern, indem man einen Bank Select Befehl voranstellt. Etliche Geräte besitzen mehr als 128 Klänge, so dass z. B. zwei Bänke mit jeweils 128 Speicherplätzen vorhanden sind. Durch Nutzung eines Bank Select Befehls ist es denkbar, bis zu 128 Bänke mit jeweils 128 Klängen anzusteuern. Es gibt einige Instrumente, die als einhundertachtundzwanzigste Bank Sounds zur Verfügung stellen, die kompatibel zur Klanganordnung des ROLAND Soundmoduls MT-32 sind. Möchte man in einem derartigen Gerät den 3. Klang dieser MT-32-kompatiblen Bank abrufen, so geschieht dieses (für MIDI-Kanal 1) auf folgende Weise:

  B0H 00H 7FH         C0H 02H
(Bank Select) (Program Change)

Der zweite "Bank Select"-Befehl (BnH 20H) findet u.a. in wenigen Rhythmusgeräten Anwendung. Hierbei werden den drei Befehlen "BnH 00H","BnH 20H" und "CnH" drei rhythmusspezifische Parameter zugeordnet. "BnH 00H" wählt dabei eine Grundrhythmusart (Walzer, Rock, Disco usw. ), die von "BnH 20H" näher spezifiziert wird (z.B. für Walzer "Wiener Walzer", "Jazz Walzer", "Iangsamer Walzer" usw.). Mit dem Program-Change wird schließlich bestimmt, welcher Teil des Rhythmus gespielt wird (Intro, Fill-In, Break, Ending, Original, Variation u.s.w.). Ferner wird er auch genutzt, um in moderneren Instrumenten verschiedene Speichermedien auswählen zu können. In diesem Fall kann dann damit z.B. zwischen 'Preset'-,'User'-, 'Expansionboard'- und 'Memory-Card'-Bereichen umgeschaltet werden.

5.9. Monophonic Aftertouch DnH

Der einstimmige Aftertouch benötigt - wie auch die Program Changes - lediglich ein Statusbyte und ein Datenbyte. Durch Druck auf die Tastatur kann durch Aftertouch eine Modulation ausgelöst werden. Im Gegensatz zum Polyphonen Aftertouch "Key Pressure" werden jedoch alle angeschlagenen Noten eines MIDI-Kanals moduliert, sobald der Channel Pressure ausgelöst wird, also nicht nur diejenigen Noten, deren zugehörige Tasten niedergedrückt werden. Die Art der ausgelösten Modulation ist nicht definiert. Es kann sich dabei (je nach Programmierung des gesteuerten Gerätes) um periodische Modulationen, wie etwa Vibrato, Tremolo oder Wah-Wah, oder aber um statische Frequenz-, Klang-, oder Lautstärkeänderungen handeln. Spielt man also einen Akkord und drückt z.B. die tiefste Taste nieder, werden alle Noten des Akkordes moduliert, nicht nur die tiefste.
Um einstimmigen Aftertouch mittlerer Intensität auf MIDI-Kanal 16 zu erzeugen, muss folgendes gesendet werden:

  DFH 40H

5.10 Pitch Bending EnH

Pitch Bending ist eigentlich der traditionelle Synthesizereffekt schlechthin. Durch Betätigung eines entsprechenden Reglers (Bender, Rad/Wheel, Joystick etc.) kann die Tonhöhe um einen beliebigen Wert nach unten oder oben verschoben werden. Die maximal möglichen Verschiebungen sind dabei wiederum am zu steuernden Gerät einzustellen.



Bedauerlicherweise sind sich einige Hersteller nicht über das Datenformat des Pitch Bendings im klaren, so dass dieser Befehl (je nach Hersteller und/oder Modell) mit unterschiedlichen Wertebereichen erzeugt wird. Dabei werden zwar immer zwei Datenbytes benutzt, allerdings stehen dabei unterschiedliche Maximalwerte zur Verfügung. Der größte Wertebereich ergibt sich naturgemäß, wenn beide Datenbytes jeweils alle sieben zur Verfügung stehenden Bits nutzen. Allerdings gibt es auch Geräte, bei denen das MSB lediglich ein Bit nutzt. Die aus dieser 8-Bit Auflösung resultierenden 256 Werte sind allerdings für ausschweifende Pitch-Bend-Orgien unzureichend. Die Auflösung mit 14-Bit ist die musikalisch bessere, da hier wiederum 16384 Werte zur Verfügung stehen und damit auch die extremsten Pitch Bendings sauber zu erzeugen sind.



Bei 8-Bit-Pitch Bending sind dagegen bei langsam ausgeführten Pitch Bendings mitunter die einzelnen Abstufungen zu hören, was im Normalfall nicht erwünscht ist. Einige Hersteller haben sich deshalb für eine 9-Bit Auflösung entschieden, die musikalisch ein guter Kompromiss ist.
Lobenswerterweise sind jedoch die Übertragungsprotokolle nahezu kompatibel. Je nach Anforderung des empfangenden Gerätes werden die überflüssigen bzw. fehlenden Datenbytes ignoriert bzw. ergänzt. Im Extremfall kommt es zu unterschiedlichen Maximalintervallen, die jedoch durch eine Umprogrammierung des Empfängers oftmals ausgeglichen werden können.


8-Bit-Pitch Bending 14-Bit-Pitch Bending
1110 nnnn 000000x 0xxxxxxx 1110 nnnn 0xxxxxxx 0xxxxxxx

("nnnn" = MIDI-Kanal 1 bis 16; "x" = Wert "0" oder "1")

Hier wurde wieder einmal das Binär-System bemüht, da es sehr anschaulich darlegt, welche Stellen als Variable genutzt werden dürfen.

5.11 System Messages FnH

"System Messages" sind jene MIDl-Meldungen, deren Statusbytes die vier niederwertigeren Bits nicht zur Kanal-Definition nutzen können. Demzufolge können sie nicht kanalspezifisch adressiert werden und betreffen das ganze MIDI-System. Eben darum werden sie auch "System Messages" genannt. Man unterteilt diese System Messages in Realtime Messages und in Non Realtime Messages. Erstere sind an zeitliche Grenzen gebunden bzw. steuern den zeitlichen Ablauf innerhalb des Systems, zweitere sind dagegen zeitlich unkritisch.



Besondere Beachtung verdient in jedem Fall die System Message "Active Sensing". Beim "Active Sensing" handelt es sich um eine spezielle Meldung, die von verschiedenen Geräten etwa drei Mal pro Sekunde erzeugt wird, sofern keine anderen MIDI-Daten übermittelt werden. Der Sinn dieser in Echtzeit übertragenen Botschaft (Realtime Message) ist folgende: Empfängt ein Gerät einmal die Active Sensing Meldung, wartet es auf ein wiederholtes Auftreten dieser Nachricht innerhalb einer gewissen zeitlichen Grenze (ca. 300 Millisekunden). Wird innerhalb dieser Zeit kein weiteres "Active Sensing"-Signal empfangen, geht das Empfangsgerät davon aus, dass die MIDI-Verbindung irrtümlicherweise (der Gitarrist ist über das Kabel gestolpert und hat es herausgerissen...) unterbrochen wurde und schaltet sämtliche noch eingeschalteten Noten ab, um Notenhänger zu vermeiden. Dabei werden die Spielhilfen ebenfalls initialisiert. Dieses Active Sensing wird von einigen Software-Sequencern (Creator/Notator/Logic) missbraucht, um Notenhänger zu vermeiden. Dabei kann folgendes Szenario entstehen :


Der Sequencer wird gestoppt, und der angeschlossene Synthesizer gibt eine Fehlermeldung heraus ("MIDI Communication Error", "MIDI Offline" etc...). Was ist passiert ? Die Sequencersoftware sendet Active Sensing fälschlicherweise nur, während der Sequencer etwas aufnimmt oder wiedergibt, nicht jedoch, während das Gerät gestoppt ist. Der angeschlossene Synthesizer erwartet aber auch nachdem der Sequencer gestoppt ist die Active Sensing Daten und gibt logischerweise eine Fehlermeldung heraus, wenn das Active Sensing ausbleibt. Der Hersteller der Sequencersoftware hat es vielleicht sogar gutgemeint und sich gedacht, dass es ganz praktisch ist, das Weglassen des Active Sensings zum Abschalten aller Noten in gestopptem Zustand zu nutzen. Allerdings wurde nicht bedacht, dass das angeschlossene Instrument ja nicht nur vom Sequencer, sondern (Stichwort "Soft Thru") auch von angeschlossenen Keyboards gesteuert werden kann. Deren gespielte Noten werden natürlich bei dieser Methode auch abgeschaltet. Daher sollte dieser unorthodoxe (Nicht-)Einsatz des Active Sensing vermieden werden.


Eine Extra-Tabelle mit den System Messages gibt es hier:


     5.11.1 Tabelle der System Messages

Diese System-Meldungen haben übergreifende Funktionen. Dennoch müssen nicht alle angeschlossenen Geräte alle System Messages verstehen können. Ein Sequencer wird in aller Regel in der Lage sein, Start- bzw. Stop- Befehle interpretieren zu können; ein Tune Request ist allerdings für ihn belanglos, da er selbst keine Tonerzeugung besitzt, die er stimmen könnte. Selbstverständlich sollte der Sequencer in der Lage sein, diese Daten aufzuzeichnen, auch wenn er sie nicht interpretieren kann. Als Gegenbeispiel sei ein normales Soundmodul angeführt, welches zwar z.B. F0H und F7H "versteht", aber Start- und Stop-Signale ignoriert ...




5.12 System Exlusive F0H

"System Exclusive" Daten sind die "mächtigsten" Daten im MIDI-System überhaupt. Sie gelten (nicht ganz zu Unrecht) als die schwierigsten und kompliziertesten MIDI-Meldungen; "nur für Informatiker verständlich", "musikalisch nutzlos" und "man zerstört sich nur die Sounds damit" sind oftgehörte Meinungen zu diesem Thema. "Das Einzige, was daran definiert ist ist, dass nichts definiert ist" ist eine weitere Beschreibung der Sysex - Daten. In der Tat sind Sinn und Zweck dieser Daten nicht definiert (zur Ausnahme dieser Regel kommen wir etwas später...). Mit Sysex-Befehlen ist es möglich, Parameter eines Gerätes anzusprechen, die über "normale" MIDI-Befehle nicht erreichbar sind.


In der Regel dient der Umgang mit Sysex-Daten dem Verändern und Speichern von Klangdaten. Da jedoch die verschiedenen Hersteller und Geräte jeweils unterschiedliche Technologien einsetzen, um Klänge zu erzeugen, kann dies nicht durch genormte Befehle geschehen.


Dennoch gibt es ein paar Regeln, an die sich auch die Sysex-Daten halten müssen:

Während die Identifizierungsnummern (ID) für den Hersteller und für das Modell fest eingestellt sind, ist die sogenannte "Device ID" frei wählbar. Wie durch Zuordnung unterschiedlicher MIDI-Kanäle ist es dadurch möglich, zwei identische Geräte unterschiedlich mit Sysexdaten zu versorgen. Um z.B. ein ROLAND GS Gerät (mit Dev.-ID = 10H) anzusprechen, ist es notwendig, folgendes zu übermitteln:

 F0H 41H 10H 42H .....
(41H = Hersteller-lD; 65 = ROLAND; 10H = Device lD; 42H = Model ID = GS-Format)

Es ist zu beachten, dass im ROLAND Datenformat "Typ IV" (der derzeit gültige Typ) die Device-ID vor der Model-ID übermittelt wird. Durch obige Zeile "fühlt" sich ein entsprechendes Gerät zwar "angesprochen", weiß aber noch nicht, was als nächstes passieren soll. In der Tat muss als nächstes ein "Kommando" folgen, mit dem definiert wird, was geschehen soll. Dieses geschieht je nach Hersteller auf unterschiedliche Weise.


5.12.1 Universal System Exlusive

Entgegen vieler Aussagen gibt es zusätzlich zu den "normalen" Sysex-Meldungen, bei denen das zweite Byte den Hersteller identifiziert (z. B. 40H = KAWAI, 41H = ROLAND, 42H = KORG, 43H = YAMAHA usw. ), genormte Sysex-Meldungen mit folgenden IDs

Während die ID "7DH" zur Zeit keinen bekannten Nutzen findet, wird die ID "7EH" z.B. zur Steuerung von General MIDI-Equipment genutzt. Ferner wird unter der ID "7EH" der sogenannte "Identity Request" (F0H 7EH DEV 06H 01H F7H) durchgeführt, der dazu dient dem Gerät, an das er gesendet wird, nähere Informationen zu entlocken. So reagiert z.B. das virtuelle Studio VS-880 auf diese MIDI Meldung, indem es u.a. Angaben zu seiner Betriebssoftwareversion an den Sender des Requests zurückschickt. Außerdem findet die ID "7EH" beim "Sample Dump Standard" (SDS) Anwendung. Dieser wird genutzt, um systemexclusiv verschlüsselte Audio-Daten von einem Gerät zu einem Zweitgerät zu übertragen. Normale Sysex-Daten (mit Hersteller-lD) können hier keine Verwendung finden, da damit lediglich die Übertragung zwischen zwei gleichen Geräten möglich wäre, was aber nicht sehr nützlich erscheint.


ID "7FH" findet bei der Echtzeitsteuerung mittels des "MIDI Time Codes" (MTC) Verwendung.


Eine explizite Erklärung der einzelnen Funktionen von universellen Sysex-Meldungen ist an dieser Stelle leider nicht möglich, da dazu nochmals ein eigenes, umfangreiches Kapitel notwendig wäre. Im Bedarfsfall sind diese Informationen jedoch u.a. von der "MIDI Manufacturers Association"(MMA) oder zumindest vom Hersteller des benutzten Gerätes zu beziehen.

(zum nächsten Kapitel)