MIDI

MIDI


Artikel von Paul Fischer
Was ist MIDI? Die MIDI Schnittstelle, Master und Slave, MIDI-Anschlüsse, MIDI Port, Die MIDI Übertragung, Die MIDI-Befehle, kanalbezogene Befehle und MIDI-Kanäle, Note an und Note aus (note on, note off), Poly(phonic key)-Pressure, Channel Aftertouch, Pitch Bend (Tonhöhenbeugung), Klangprogramm Wechsel (Program Change), Control Change, gerätebezogene Befehle (System Exclusive)

Was ist MIDI?
MIDI ist die Abkürzung für Musik Instrument Digital Interface, was soviel heißt, wie digitale Schnittstelle für Musikinstrumente. MIDI ist ein internationaler Standard, der die Kommunikation zwischen elektronischen Musikinstrumenten mittels digitaler Signale ermöglicht. Dabei umfaßt dieser Standard, genannt die MIDI-Norm, sowohl die elektronischen Gegebenheiten, als auch die sprachlichen Regelungen der Steuerbefehle. Die MIDI Schnittstelle
Damit alle Geräte sich untereinander verständigen können, ist es nicht unbedingt nötig, daß die interne Steuerung in gleicher Weise funktioniert, die Befehle müssen lediglich an einer Stelle übersetzt und genormt übergeben und empfangen werden. Das ist die Aufgabe der MIDI-Schnittstelle (englisch: MIDI-Interface). Wenn ein Gerät MIDI-fähig ist, heißt das nichts weiter, als daß es eine solche MIDI-Schnittstelle besitzt. Fast alle modernen Synthesizer haben eine MIDI-Schnittstelle eingebaut, im Gegensatz zu den meisten Computern, die nachträglich mit einer speziell für sie angepaßten MIDI-Schnittstelle MIDI-fähig gemacht werden müssen. Master und Slave
Beim Zusammenspielen verschiedener Musikinstrumente und Geräte müssen die Signale fehlerlos übertragen werden, was durch MIDI ermöglicht wird. Dafür ist es nicht erforderlich, die Arbeitsweise von MIDI bis in die letzten technischen Einzelheiten zu verstehen. Wichtig ist, daß MIDI-Befehle nur in einer Richtung und nacheinander (seriell) über ein spezielles Kabel übertragen werden. Es gibt also immer einen Sender und einen Empfänger von MIDI-Befehlen. Anders augedrückt, sendet immer ein Meister (Master) MIDI-Daten zu einem Sklaven (Slave). Ein MIDI-System besteht immer aus mindestens zwei Geräten, die mit runden, 5-poligen Kabeln (sog. DIN-Kabel) verbunden werden, um darüber Informationen auszutauschen. MIDI-Anschlüsse, IN OUT THRU
Wenn ein Gerät Befehle senden will, so werden diese an der MIDI-OUT-Buchse zur Verfügung gestellt (out, englisch für hinaus). MIDI-OUT des Sendegerätes wird stets mit dem MIDI-IN des Empfangsgerätes verbunden.
Ein Gerät, das Daten empfangen will, nimmt diese immer an der MIDI-IN-Buchse entgegen.
Damit noch ein weiterer Empfänger die Befehle des Senders erhalten kann gibt es noch die MIDI-THRU-Buchse. An den MIDI-THRU Anschluß werden die gleichen Daten weitergereicht, die an der MIDI-IN Buchse ankommen. Dabei kommt es zu einer kleinen zeitlichen Verzögerung (5ms). Von der MIDI-THRU Buchse werden Daten gesendet.
Ein MIDI-Kabel wird auf einer Seite immer entweder mit einer MIDI-OUT- oder einer MIDI-THRU-Buchse und an der anderen an eine MIDI-IN Buchse angeschlossen. MIDI Port
In der MIDI-Norm gibt es nur 16 verschiedene Adressen (MIDI-Kanäle) für MIDI-Befehle, die über ein Kabel geschickt werden können. Will man weitere Geräte mit unterschiedlichen Befehlen versorgen, so muß es mindestens eine weitere MIDI-OUT Buchse geben, die unabhängig von anderen MIDI-OUT Buchsen Befehle verschicken kann. Es gibt auch Synthesizer, die auf mehr als 16 MIDI-Kanälen Daten empfangen und verarbeiten können, diese brauchen zusätzliche MIDI-IN-Buchsen.
Jeder einzelne unabhängige MIDI-Anschluß heißt MIDI-Port.
Man darf hier nicht die Anzahl der MIDI-OUT-Buchsen mit der Zahl der MIDI-Ports verwechseln, denn es gibt durchaus auch Geräte, die auf mehreren MIDI-OUT-Buchsen genau die gleichen Befehle senden, diese sind dann nicht unabhängig. Die MIDI Übertragung
MIDI-Befehle werden nacheinander (seriell) als Folge von Bits über die MIDI-Kabel gesendet. Die Folge darf nicht unterbrochen werden, sonst sind die Informationen unvollständig. Das bei Heimwerkern beliebte Y-Kabel, das mehrere Ausgänge mit einem Eingang oder umgekehrt verbindet, ist deswegen bei MIDI unzulässig. Für diese Zwecke gibt es die sogenannten MIDI-THRU-Boxen und die MIDI-Merger. Die MIDI-Schnittstelle arbeitet mit einer Baudrate von 31,25kHz, d.h. es werden 31250 MIDI-Bytes pro Sekunde übertragen. Das hört sich ziemlich schnell an, aber es gibt Situationen, da steht eine zwei- bis dreistellige Anzahl von Bytes an einer MIDI-Leitung Schlange. Das kann zu einer Staubildung...und damit zu hörbaren Verzögerungen kommen. Die MIDI-Befehle
MIDI-Befehle werden auch als MIDI-Nachricht bzw. MIDI-Meldung (englisch: message) oder Ereignis (englisch: event) bezeichnet, auch MIDI-Daten, MIDI-Anweisung und MIDI-Signal sind gebräuchlich.
Alle MIDI-Befehle werden von einem Master an den oder die Slaves gesendet. Der Emfänger (Slave) kann dabei nur die Befehle ausführen, die er kennt. D.h. wenn beim Slave eine Funktion nicht eingebaut ist, werden MIDI-Befehle dafür ignoriert. Hat andersherum der Slave Funktionen, die der Master nicht kennt, so können diese auch nicht angesteuert werden.
Es gibt drei verschiedene Grundtypen von MIDI-Befehlen.

M I D I - N A C H R I C H T E N (MIDI messages)​
Channel Messages

System Common Messages
  1. Note off
  2. Note on
  3. Poly Pressure
  4. Control Change
  5. Program Change
  6. Channel-Aftertouch
  7. Pitch Bend

  1. MIDI TimeCode
  2. Song Position Pointer
  3. Song Select
  4. Tune Request
  5. MIDI Clock
  6. Start
  7. Continue
  8. Stop
  9. Active Sensing
  10. System Reset
kanalbezogene Befehle und MIDI-Kanäle
Alle Befehle, die einem Klangerzeuger mitteilen, wann, wie und welcher Klang produziert werden soll, sind kanalbezogene MIDI-Befehle. Ein MIDI-Kanal ist so etwas wie eine Adresse, an die ein Befehl gezielt gerichtet wird. MIDI-Kanäle wurden geschaffen, damit nicht alle Klangerzeuger gleichzeitig loslegen, wenn ein MIDI-Befehl z.B. "Note an" heißt.
Ein solcher Befehl ist an einen MIDI-Kanal gerichtet und nur diejenigen Klangerzeuger, die auf diesen Kanal eingestellt sind, dürfen diesen ausführen. Anders ausgedrückt: Sendekanal des Master und Empfangskanal des Slave müssen übereinstimmen.
Es gibt genau 16 verschiedene MIDI-Kanäle, die mit einem MIDI-Port (d.h. über ein MIDI-Kabel) adressiert werden können. Weil Befehle dieser Gruppe immer nur für einen Kanal gelten, nennt man sie kanalbezogene Befehle.
Alle kanalbezogenen Befehle bestehen immer aus einer Befehlskennung mit kodierter Adresse (MIDI-Kanal) und einem oder zwei angehängten Datenteilen (Statusbyte & Datenbytes).
Die kanalbezogenen Meldungen werden in der Regel von einem MIDI-Keyboard oder einem Sequenzer produziert. Note an und Note aus (note on, note off)
Die wohl wichtigste Meldung heißt Note an, ist dreiteilig und enthält neben der Befehlskennung mit Kanal-Adresse (Statusbyte) noch Informationen über die Tastennummer (Notennummer) und die Anschlagsstärke (Velocity). Die Velocity muß größer Null sein. Das macht auch Sinn, denn ganz ohne Anschlag kann man keine Taste drücken. Der Befehl Note an mit einer Velocity von Null heißt demzufolge bei einigen Synthesizern Note aus.
Bei MIDI gibt es keine Noten im herkömmlichen Sinn, denn eine Note enthält auch die Klang-Dauer. MIDI hat stattdessen eine Noten- bzw. Tastennummer und zwei Befehle: Note an und Note aus. Der Befehl "Note aus" muß hier die gleiche Tastennummer haben, mit der die Note-an-Meldung den Klang startet, sonst wird der Klang nicht beendet. Ein Befehl Note an, der nicht mit Note aus beendet wird, ist als Notenhänger gefürchtet. Der mit MIDI mögliche Notenumfang beträgt 128 Halbtonschritte von C-2 bis G8. Nach "Note an" gibt es natürlich auch den Befehl Note aus. Dieser ist ebenso dreiteilig, denn auch hier wird die Tastennummer angegeben und zusätzlich die Loslaßgeschwindigkeit (release velocity) übertragen. Poly(phonic key)-Pressure
Poly Pressure, auch "Polyphoner Aftertouch" genannt, der zusätzliche Druck auf jeweils eine bereits angeschlagene Taste, wird auch als dreiteilige Meldung ausgeführt. Der zweite Teil beinhaltet die Tastennummer, der dritte enthält die Stärke des Druckes. Channel Aftertouch
Channel Aftertouch, der zusätzliche Druck auf irgendeine Taste der Tastatur wird als zweiteilige Meldung gesendet. Da diese Meldung für den gesamten MIDI-Kanal gilt, entfällt die Kodierung der Tastennummer und es wird neben der Befehlskennung nur die Druckstärke übertragen. Pitch Bend (Tonhöhenbeugung)
Die Tonhöhenbeugung verändert die Tonhöhe (pitch) fließend nach unten oder oben (tiefere oder höhere Frequenz). Dabei werden alle Klänge verändert, die gerade auf demselben MIDI-Kanal erklingen. Dieser Befehl ist dreiteilig, d.h. er hat zwei angehängte Datenteile, in denen der Grad der Beugung mitgeteilt wird. Das ist nötig, weil die Veränderung sonst nicht fein genug abgestuft werden könnte. In der Regel erzeugt ein Pitchbend-Rad diese Meldung. Klangprogramm Wechsel (Program Change)
Program Change, der Wechsel zu einem anderen Klangspeicherplatz (program), wird zweiteilig gesendet, wobei im zweiten Teil einer von 128 Speicherplätzen angegeben wird. Hat ein Gerät mehrere Klangspeicherbänke, so wird bei Program Change nur auf ein anderes Programm der aktuellen Klangspeicherbank gewechselt. Soll gleichzeitig die Speicherbank gewechselt werden, muß ein sogenannter Bank Select Befehl gesendet werden. Control Change
Control Change, der gezielte Eingriff in den Klangverlauf mittels Spielhilfen (Controller), wird dreiteilig übertragen. Im zweiten Teil wird angegeben, um welchen Controller es sich handelt. Die Spielhilfen werden anhand einer sogenannten Controller-Nummer unterschieden. Der dritte Teil übermittelt den Wert der Spielhilfe.
Bei den Controllern gibt es vier verschiedene Typen:
  1. Controller, die nur zwei Werte annehmen (an oder aus), wie z.B. das Dämpfungspedal
  2. Controller, die 128 Werte annehmen, also einen kontinuierlichen Regelbereich abdecken (continuous controller), z.B. Lautstärke (Volume)
  3. Controller für die sogenannten Channel Mode Messages (könnte man als Kanalbetriebsart Meldungen übersetzen)
  4. Controller, die mit einem zweiten Controller als Paar insgesamt 16384 (=128*12
    [​IMG]
    Werte kodieren, z.B. Bank Select. Der eine Controller übernimmt dabei die 128er Schritte (Höchstwertiges Byte = MSB), der andere die Einer-Schritte dazwischen (niederwertigstes Byte = LSB).
  • M I D I C O N T R O L L E R
    ( grüne Zahl = Controller-Nummer )
    Ein/Aus-Schalter

    kontinuierliche Controller
    [FONT=Arial, Verdana]
    • sustain pedal
      Dämpfungs- Pedal 64
    • portamento on/off
      Portamento an/aus 65
    • sostenuto
      Sostenuto Pedal 66
    • soft pedal
      noch ein Dämpfer 67
    • hold 2
      2tes Haltepedal 69
    [/FONT]
    • [FONT=Arial, Verdana]
      • modulation wheel
        Modulations- Rad 1
      • breath cont.
        Blasdruck- Wandler 2
      • foot cont.
        Fußpedal 4
      • portamento time
        Portamento Zeit 5
      • data entry
        Dateneingabe6
      • main volume
        Gesamt- Lautstärke 7
      • balance
        Balance 8
      • pan
        Panorama 10
      • expression cont.
        Ausdrucks- Pedal 11
      • external effects depth
        Stärke des externen Effektes 91
      • chorus depth
        Stärke des Chorus -Effektes 93
      • data increment
        Wert- Erhöhung 96
      • data decrement
        Wert- Erniedrigung 97
      [/FONT]
  • Kanalbetriebsart

    Controller-Paare (2 Byte)

    [FONT=Arial, Verdana]
    • reset all controllers
      alle controller auf die Ausgangs- Position zurück- setzen 121
    • local control off/on
      trennt oder verbindet die geräteeigene Klangerzeugung von der eingbauten Tastatur 122
    • all notes off
      Alle Noten aus 123
    • omni mode off
      verhindert das Empfangen von Befehlen ohne Kanaltrennung 124
    • omni mode on
      das Gerät empfängt alle Befehle ohne auf den eingestellten MIDI-Kanal zu achten 125
    • mono mode on and poly mode off
      der Klangerzeuger kann auf jedem MIDI-Kanal nur eine Note spielen 126
    • mono mode off and poly mode on
      der Klangerzeuger kann auf jedem Kanal mehrere Noten gleichzeitig spielen 127
    [/FONT]
    • [FONT=Arial, Verdana]
      • bank select
        zwei controller wählen eine von maximal 16384 Klangspeicher Bänken aus, danach muß ein Program Change Befehl gesendet werden 0 und 32
      • non-registered parameter das Controllerpaar wählt einen Parameter aus, der dann mit data- entry, -increment oder -decrement geändert werden kann. Welcher Parameter das ist, bleibt dem Hersteller überlassen. 98 und 99
      • registered parameter
        es sind drei Parameter festgelegt, die hier gesteuert werden:
        1. pitch bend sensitivity maximale Tonhöhen Beugung des Pitchbend-Rades 100=0 und 101=0
        2. fine tuning Feinstimmung im Bereich +/- 1 Halbton 100=1 und 101=0
        3. coarse tuning Grobstimmung im Bereich +63/-64 Halbtöne 100=2 und 101=0
      [/FONT]
    System Common Messages
    Alle Befehle, die auf das komplette System wirken, sind systembezogene Befehle. Dazu gehört z.B. die Geschwindigkeit des aktuellen Musikstückes oder die Aufforderung, die Oszillatoren zu stimmen. Der MIDI-Kanal spielt bei diesen Meldungen keine Rolle.
    Einige Befehle dieser Gruppe werden als sogenannte System-Echtzeit-Meldungen (system realtime messages) bezeichnet. Da in der Literatur die Unterscheidung zwischen System Common und System Realtime nicht einheitlich ist, fasse ich alle auf das ganze MIDI-System bezogenen Befehle in dieser Gruppe zusammen.
    S Y S T E M C O M M O N U N D
    S Y S T E M R E A L T I M E M E S S A G E S
    Befehle zur Synchronisation

    Andere Befehle
    [FONT=Arial, Verdana]
    • MTC=MIDI Time Code, acht MTC Nachrichten kodieren die aktuelle Position mit Stunde, Minute, Sekunde und Frame (=Bild).
    • MIDI-Clock, wird 24 mal pro Viertelnote gesendet.
    • Song Position Pointer, Positionsangabe des aktuellen Musikstückes als Anzahl der verstrichenen 1/16 Noten. Zwei Datenbytes kodieren dabei 128*128=16384 Werte, somit können maximal 1024 4/4-Takte adressiert werden.
    • (Song oder Sequenzer) Start, Start vom Anfang
    • (Song oder Sequenzer) Stop
    • (Song oder Sequenzer) Continue, Start von der aktuellen Position
    [/FONT]
    • [FONT=Arial, Verdana]
      • Song Select, Auswahl eines von 128 gespeicherten Songs
      • Tune Request, fordert alle Oszillatoren auf sich zu stimmen (das ist manchmal erforderlich, da manche analoge Oszillatoren nicht ganz stimmstabil sind)
      • Active Sensing, diese Aktiv-Meldung benutzen einige Geräte, um zu zeigen, daß die MIDI Verbindung noch funktioniert. Einmal gesendet muß die Meldung ca. alle 1/4 Sekunden erfolgen, sonst beendet der Empfänger seine Wiedergabe.
      • System Reset, bewirkt das Zurücksetzen aller angeschlossenen Geräte auf einen Grundzustand.
      [/FONT]
  • gerätebezogene Befehle (System Exclusive)
    Da alle modernen Synthesizer intern irgendwelche Daten speichen können und der Wunsch nach Datenaustausch bestand, hat man die Systemexklusiv-Befehle eingeführt. Das ist der Bereich, in dem jeder Hersteller sein eigenes Süppchen kochen darf. Exklusiv-Befehle gelten zunächst einmal nur für jeweils ein Produkt einer Firma und können auch nur von einem Gerät gleicher Bauart verstanden werden. Natürlich können diese Daten auch mit einem Computer manipuliert werden, das erledigen sogenannte Editier-Programme. Obwohl die Systemexklusiv-Daten gerätebezogene Nachrichten sind, haben sich die Hersteller in mehreren Fällen auf eine herstellerübergreifende und geräteunabhängige Norm geeinigt, z.B. Standard-Sample-Dump und MIDI-Machine-Control. A N D E R E S E I T E N Z U M T H E M A