MIDI-Befehle

MIDI-Befehle

Die MIDI-Nachrichten-Spezifikation (oder “MIDI-Protokoll”) ist wahrscheinlich der wichtigste Teil von MIDI.

MIDI ist eine Musikbeschreibungssprache in digitaler (binärer) Form. Sie wurde für die Verwendung mit tastaturbasierten Musikinstrumenten entwickelt, daher orientiert sich die Nachrichtenstruktur an Aufführungsereignissen, wie z.B. dem Anschlagen einer Note oder dem Einstellen typischer Parameter, die auf elektronischen Keyboards verfügbar sind. Um zum Beispiel eine Note in MIDI erklingen zu lassen, sendest du eine “Note On”-Nachricht und weist dieser Note dann eine “Velocity” zu, die bestimmt, wie laut sie im Verhältnis zu anderen Noten spielt. Du kannst auch die Gesamtlautstärke aller Noten mit einer “Channel Volume” Nachricht einstellen. Andere MIDI-Nachrichten beinhalten die Auswahl der zu verwendenden Instrumentenklänge, Stereo-Panning und mehr.

Die erste Spezifikation (1983) definierte nicht jedes mögliche “Wort”, das in MIDI gesprochen werden kann, noch definierte sie jede musikalische Anweisung, die in einer elektronischen Performance gewünscht sein könnte. In den letzten 20 oder mehr Jahren haben Firmen die ursprüngliche MIDI-Spezifikation erweitert, indem sie zusätzliche Performance-Kontrollnachrichten definierten und ergänzende Spezifikationen schufen, die folgendes beinhalten:

  • MIDI Machine Control
  • MIDI Show Control
  • MIDI Time Code
  • General MIDI
  • Herunterladbare Sounds
  • Skalierbare Polyphonie MIDI

 

Alternative Anwendungen

MIDI Machine Control und MIDI Show Control sind interessante Erweiterungen, denn anstatt Musikinstrumente anzusprechen, sprechen sie Studioaufnahmegeräte (Tape Decks etc.) und Theatersteuerungen (Lichter, Nebelmaschinen etc.) an.

MIDI wird auch für die Steuerung von Geräten verwendet, für die keine Standardnachrichten von MMA definiert wurden, wie z.B. bei der Automation von Audiomischpulten.

Verschiedene Arten von MIDI-Befehlen

Eine MIDI-Nachricht besteht aus einem Acht-Bit-Statusbyte, dem in der Regel ein oder zwei Datenbytes folgen. Es gibt eine Reihe verschiedener Arten von MIDI-Befehlen. Auf der höchsten Ebene werden MIDI-Befehle entweder als Kanalbefehle oder als Systembefehle klassifiziert. Kanalnachrichten sind solche, die sich auf einen bestimmten Kanal beziehen, und die Kanalnummer ist im Statusbyte für diese Nachrichten enthalten. Systemnachrichten sind nicht kanalspezifisch und ihre Statusbytes enthalten keine Kanalnummer.

Kanalnachrichten können weiter klassifiziert werden, entweder als Kanal-Sprachnachrichten oder als Modusnachrichten. Channel Voice Nachrichten übertragen musikalische Daten und diese Nachrichten machen den größten Teil des Datenverkehrs in einem typischen MIDI Datenstrom aus. Channel Mode Nachrichten beeinflussen die Art und Weise, wie ein empfangendes Instrument auf die Channel Voice Nachrichten reagiert.

Channel Voice Messages

Channel Voice Messages werden verwendet, um musikalische Performance-Informationen zu senden. Die Nachrichten in dieser Kategorie sind die Note On, Note Off, Polyphonic Key Pressure, Channel Pressure, Pitch Bend Change, Program Change und die Control Change Nachrichten.

Note On / Note Off / Velocity

In MIDI-Systemen werden die Aktivierung einer bestimmten Note und die Freigabe derselben Note als zwei separate Ereignisse betrachtet. Wenn eine Taste auf einem MIDI-Keyboard-Instrument oder MIDI-Keyboard-Controller gedrückt wird, sendet das Keyboard einen Note On-Befehl an den MIDI OUT-Port. Das Keyboard kann so eingestellt werden, dass es auf einem der sechzehn logischen MIDI-Kanäle sendet, und das Statusbyte für die Note On Nachricht zeigt die gewählte Kanalnummer an. Dem Note On Statusbyte folgen zwei Datenbytes, die die Tastennummer (welche Taste wurde gedrückt) und die Anschlagsstärke (wie stark wurde die Taste gedrückt) angeben.

Die Tastennummer wird im empfangenden Synthesizer verwendet, um auszuwählen, welche Note gespielt werden soll, und die Anschlagsstärke wird normalerweise verwendet, um die Amplitude der Note zu steuern. Wenn die Taste losgelassen wird, sendet das Tasteninstrument oder der Controller eine Note Off Nachricht. Die Note Off Nachricht enthält auch Datenbytes für die Tastennummer und für die Anschlagsstärke, mit der die Taste losgelassen wurde. Die Note Off Velocity Information wird normalerweise ignoriert.

Aftertouch

Einige MIDI-Keyboard-Instrumente haben die Fähigkeit, den Druck zu erkennen, der auf die Tasten ausgeübt wird, während sie gedrückt werden. Diese Druckinformation, allgemein als “Aftertouch” bezeichnet, kann verwendet werden, um einige Aspekte des vom Synthesizer erzeugten Klangs zu steuern (z.B. Vibrato). Wenn das Keyboard einen Drucksensor für jede Taste hat, dann werden die resultierenden “polyphonen Aftertouch” Informationen in Form von Polyphonic Key Pressure Nachrichten gesendet. Diese Nachrichten enthalten separate Datenbytes für die Tastennummer und den Druckbetrag. Derzeit ist es üblicher, dass Tasteninstrumente nur einen einzigen Druckpegel für die gesamte Tastatur erfassen. Diese “Channel Aftertouch” Informationen werden mit der Channel Pressure Nachricht gesendet, die nur ein Datenbyte benötigt, um den Druckwert zu spezifizieren.

 

Pitch Bend

Die Pitch Bend Change Nachricht wird normalerweise von einem Tasteninstrument als Antwort auf die Veränderung der Position des Pitch Bend Rades gesendet. Die Pitch Bend Information wird verwendet, um die Tonhöhe von Klängen zu verändern, die auf einem bestimmten Kanal gespielt werden. Die Pitch Bend Nachricht enthält zwei Datenbytes, um den Pitch Bend Wert zu spezifizieren. Zwei Bytes werden benötigt, um eine ausreichend feine Auflösung zu ermöglichen, damit die Tonhöhenveränderung, die aus der Bewegung des Pitch Bend Rades resultiert, kontinuierlich und nicht in Schritten erfolgt.

 

Program Change

Die Program Change Nachricht wird verwendet, um den Typ des Instruments festzulegen, das zum Spielen von Sounds auf einem bestimmten Kanal verwendet werden soll. Diese Nachricht benötigt nur ein Datenbyte, welches die neue Programmnummer angibt.

 

Control Change

MIDI Control Change Befehle werden verwendet, um eine Vielzahl von Funktionen in einem Synthesizer zu steuern. Control Change Nachrichten, wie auch andere MIDI Kanal Nachrichten, sollten nur die im Statusbyte angegebene Kanalnummer beeinflussen. Auf das Control Change Statusbyte folgt ein Datenbyte, das die “Controller-Nummer” angibt, und ein zweites Byte, das den “Steuerwert” spezifiziert. Die Controllernummer identifiziert, welche Funktion des Synthesizers durch die Nachricht gesteuert werden soll. Eine vollständige Liste der zugewiesenen Controller findest du in der MIDI 1.0 Detailed Specification.

Bankauswahl

Controller Nummer Null (mit 32 als LSB) ist als Bank Select definiert. Die Bank Select Funktion wird in einigen Synthesizern in Verbindung mit dem MIDI Program Change Befehl verwendet, um die Anzahl der verschiedenen Instrumentenklänge zu erweitern, die angegeben werden können (der Program Change Befehl allein erlaubt die Auswahl einer von 128 möglichen Programmnummern). Die zusätzlichen Klänge werden ausgewählt, indem dem Program Change-Befehl ein Control Change-Befehl vorangestellt wird, der einen neuen Wert für Controller Null und Controller 32 angibt, was 16.384 Bänke mit je 128 Klängen ermöglicht.

Da die MIDI-Spezifikation nicht beschreibt, wie die Bänke eines Synthesizers auf Bank Select-Befehle gemappt werden sollen, gibt es keinen Standardweg für einen Bank Select-Befehl, um eine bestimmte Synthesizer-Bank auszuwählen. Einige Hersteller, wie z.B. Roland (mit “GS”) und Yamaha (mit “XG”), haben ihre eigenen Praktiken eingeführt, um eine gewisse Standardisierung innerhalb ihrer eigenen Produktlinien zu gewährleisten.

RPN / NRPN

Controller Nummer 6 (Dateneingabe) in Verbindung mit den Controller Nummern 96 (Daten Inkrement), 97 (Daten Dekrement), 98 (Nicht-registrierte Parameternummer LSB), 99 (Nicht-registrierte Parameternummer MSB), 100 (Registrierte Parameternummer LSB) und 101 (Registrierte Parameternummer MSB), erweitern die Anzahl der über MIDI verfügbaren Controller. Parameterdaten werden übertragen, indem du zuerst die zu bearbeitende Parameternummer mit den Controllern 98 und 99 oder 100 und 101 auswählst und dann den Datenwert für diesen Parameter mit den Controllernummern 6, 96 oder 97 einstellst.

RPN und NRPN werden typischerweise verwendet, um Parameterdaten an einen Synthesizer zu senden, um Soundpatches oder andere Daten zu bearbeiten. Registrierte Parameter sind solche, die von der MIDI Manufacturers Association (MMA) und dem Japan MIDI Standards Committee (JMSC) eine bestimmte Funktion zugewiesen bekommen haben. Zum Beispiel gibt es registrierte Parameternummern, die der Steuerung der Pitchbend-Empfindlichkeit und der Master-Stimmung eines Synthesizers zugewiesen wurden. Nicht-registrierte Parameter haben keine spezifischen Funktionen zugewiesen bekommen und können von verschiedenen Herstellern für unterschiedliche Funktionen verwendet werden. Auch hier haben u.a. Roland und Yamaha ihre eigenen Praktiken eingeführt, um eine gewisse Standardisierung zu gewährleisten.

Channel Mode-Befehle

Channel Mode-Befehle (MIDI-Controller-Nummern 121 bis 127) beeinflussen die Art und Weise, wie ein Synthesizer auf MIDI-Daten reagiert. Controller Nummer 121 wird verwendet, um alle Controller zurückzusetzen. Controller Nummer 122 wird verwendet, um Local Control zu aktivieren oder zu deaktivieren (In einem MIDI-Synthesizer, der über eine eigene Tastatur verfügt, können die Funktionen des Keyboard-Controllers und des Synthesizers isoliert werden, indem Local Control deaktiviert wird). Die Controller-Nummern 124 bis 127 werden verwendet, um den Omni-Modus ein- oder auszuschalten und um zwischen dem Mono-Modus und dem Poly-Modus zu wählen.

Wenn der Omni-Modus On ist, reagiert der Synthesizer auf eingehende MIDI-Daten auf allen Kanälen. Wenn der Omni-Modus auf Off steht, reagiert der Synthesizer nur auf MIDI-Befehle auf einem Kanal. Wenn der Poly-Modus ausgewählt ist, werden eingehende Note On-Befehle polyphon gespielt. Das bedeutet, wenn mehrere Note On-Befehle empfangen werden, wird jeder Note eine eigene Stimme zugewiesen (abhängig von der Anzahl der im Synthesizer verfügbaren Stimmen). Das Ergebnis ist, dass mehrere Noten zur gleichen Zeit gespielt werden. Wenn der Mono-Modus ausgewählt ist, wird eine einzelne Stimme pro MIDI-Kanal zugewiesen. Das bedeutet, dass nur eine Note auf einem bestimmten Kanal zu einer bestimmten Zeit gespielt werden kann.

Die meisten modernen MIDI-Synthesizer arbeiten standardmäßig im Omni On/Poly-Modus. In diesem Modus spielt der Synthesizer Noten, die auf einem beliebigen MIDI-Kanal empfangen werden, und die auf jedem Kanal empfangenen Noten werden polyphon gespielt. In der Betriebsart Omni Off/Poly empfängt der Synthesizer auf einem einzigen Kanal und spielt die auf diesem Kanal empfangenen Noten polyphon. Dieser Modus kann nützlich sein, wenn mehrere Synthesizer über MIDI THRU verkettet sind. In diesem Fall kann jeder Synthesizer in der Kette so eingestellt werden, dass er einen Part (die MIDI-Daten auf einem Kanal) spielt und die Informationen zu den anderen Parts ignoriert.

Beachte, dass ein MIDI-Instrument einen MIDI-Kanal hat, der als sein “Basic Channel” bezeichnet wird. Die Zuweisung des Basiskanals kann fest verdrahtet oder wählbar sein. Mode-Befehle können nur von einem Instrument auf dem Basiskanal empfangen werden.

 

System-Befehle

MIDI Systemnachrichten werden als System Common Nachrichten, System Real Time Nachrichten oder System Exclusive Nachrichten klassifiziert. System Common Nachrichten sind für alle Empfänger im System gedacht. System Real Time Nachrichten werden für die Synchronisation zwischen taktbasierten MIDI Komponenten verwendet. System Exclusive Nachrichten beinhalten einen Manufacturer’s Identification (ID) Code und werden verwendet, um eine beliebige Anzahl von Datenbytes in einem vom referenzierten Hersteller festgelegten Format zu übertragen.

 

System Common Messages

Die System Common Messages, die derzeit definiert sind, beinhalten MTC Quarter Frame, Song Select, Song Position Pointer, Tune Request und End Of Exclusive (EOX). Die MTC Quarter Frame Nachricht ist ein Teil der MIDI Time Code Information, die für die Synchronisation von MIDI Geräten und anderen Geräten, wie z.B. Audio- oder Videobandmaschinen, verwendet wird.

Der Song Select-Befehl wird bei MIDI-Geräten wie Sequenzern oder Drumcomputern verwendet, die eine Reihe von verschiedenen Songs speichern und abrufen können. Der Song Position Pointer wird verwendet, um einen Sequenzer so einzustellen, dass die Wiedergabe eines Songs an einem anderen Punkt als am Anfang beginnt. Der Song Position Pointer Wert bezieht sich auf die Anzahl der MIDI-Clocks, die zwischen dem Beginn des Songs und dem gewünschten Punkt im Song verstrichen wären. Diese Nachricht kann nur mit Geräten verwendet werden, die MIDI System Real Time Messages (MIDI Sync) erkennen.

Die Tune Request Nachricht wird im Allgemeinen verwendet, um einen analogen Synthesizer aufzufordern, seine internen Oszillatoren neu zu stimmen. Bei digitalen Synthesizern wird diese Nachricht in der Regel nicht benötigt.

Die EOX Nachricht wird verwendet, um das Ende einer System Exclusive Nachricht zu markieren, die eine variable Anzahl von Datenbytes enthalten kann.

 

System-Real-Time-Befehle

Die MIDI System Real Time Nachrichten werden verwendet, um alle MIDI Clock-basierten Geräte innerhalb eines Systems zu synchronisieren, wie z.B. Sequenzer und Drum Machines. Die meisten System Real Time Nachrichten werden normalerweise von Tasteninstrumenten und Synthesizern ignoriert. Um ein genaues Timing zu gewährleisten, haben System Real Time Nachrichten Vorrang vor anderen Nachrichten. Diese Ein-Byte-Nachrichten können an jeder beliebigen Stelle im Datenstrom auftreten (eine Real Time Nachricht kann zwischen dem Statusbyte und dem Datenbyte einer anderen MIDI Nachricht erscheinen).

Die System Real Time Nachrichten sind die Timing Clock, Start, Continue, Stop, Active Sensing und die System Reset Nachricht. Die Timing Clock Nachricht ist die Master Clock, die das Tempo für das Abspielen einer Sequenz vorgibt. Die Timing Clock Nachricht wird 24 Mal pro Viertelnote gesendet. Die Start, Continue und Stop Nachrichten werden verwendet, um die Wiedergabe der Sequenz zu steuern.

Das Active Sensing Signal wird verwendet, um “hängende Noten” zu vermeiden, die auftreten können, wenn ein MIDI Kabel während der Wiedergabe einer MIDI Sequenz getrennt wird. Wenn ein Kabel während der Wiedergabe abgezogen wird, können ohne Active Sensing einige Noten auf unbestimmte Zeit gespielt werden, weil sie durch einen Note On-Befehl aktiviert wurden, aber der entsprechende Note Off-Befehl wird nie empfangen.

Die System Reset Nachricht wird, wie der Name schon sagt, zum Zurücksetzen und Initialisieren aller Geräte verwendet, die diese Nachricht empfangen. Diese Nachricht wird in der Regel nicht automatisch von sendenden Geräten gesendet, sondern muss manuell von einem Benutzer initiiert werden.

 

System Exklusive Nachrichten

System-Exclusive-Meldungen können verwendet werden, um Daten wie Patch-Parameter oder Sample-Daten zwischen MIDI-Geräten zu senden. Die Hersteller von MIDI-Geräten können ihre eigenen Formate für System Exclusive Daten definieren. Die Hersteller erhalten vom MMA oder dem JMSC eine eindeutige Identifikationsnummer (ID), die als Teil der System Exclusive Nachricht enthalten ist. Der Hersteller-ID folgt eine beliebige Anzahl von Datenbytes, und die Datenübertragung wird mit der EOX-Nachricht abgeschlossen. Die Hersteller sind verpflichtet, die Details ihrer systemexklusiven Datenformate zu veröffentlichen, und andere Hersteller können diese Formate frei verwenden, vorausgesetzt, dass sie das Format nicht verändern oder in einer Art und Weise verwenden, die mit den Spezifikationen des Originalherstellers in Konflikt steht.

Bestimmte System Exclusive ID-Nummern sind für spezielle Protokolle reserviert. Dazu gehören der MIDI Sample Dump Standard, ein systemexklusives Datenformat, das in der MIDI-Spezifikation für die Übertragung von Sample-Daten zwischen MIDI-Geräten definiert ist, sowie MIDI Show Control und MIDI Machine Control.