- Standard MIDI File
-
MIDI [ˈmiːdiˑ] (engl.: musical instrument digital interface [ˈmjuːzɪkl̩ ˈɪnstɹəmənt ˈdɪdʒɪtl̩ ˈɪntɚfeɪs] = „Digitale Schnittstelle für Musikinstrumente“) ist ein Datenübertragungs-Protokoll zum Zwecke der Übermittlung, Aufzeichnung und Wiedergabe von musikalischen Steuerinformationen zwischen Instrumenten oder mit einem PC. Das MIDI-Protokoll wird von vielen Instrumenten und Soundkarten in modernen Rechnern unterstützt.
Geschichte
Das Protokoll wurde 1981 von Dave Smith für die Audio Engineering Society entwickelt und von der MIDI Manufacturers Association erstmals 1983 auf der NAMM-Show in Anaheim, USA, vorgestellt. Der MIDI-Standard wird von der MMA (MIDI Manufacturers Association) festgelegt.
Funktionsweise
Das MIDI-Protokoll besteht aus Befehlen zur Ansteuerung von Instrumenten oder einer Soundkarte. Dazu werden Befehle übermittelt, wie beispielsweise „Note-on“ („Schalte Ton an“) mit „Tonhöhe“ und „Velocity“ („Anschlagsstärke“) und „Note-off“ („Schalte Ton aus“). Diese Anweisungen werden meistens an einen Klangerzeuger (beispielsweise Synthesizer, Soundmodul oder Soundkarte) geschickt, wodurch dann die entsprechenden Klänge abgespielt werden. Über eine Tastatur, die geeignet ist, MIDI-Daten zu senden, lassen sich MIDI kompatible Instrumente ansteuern.
Neben den musikalischen Befehlen können auch Daten zur Steuerung an ein Zielgerät übertragen werden, zum Beispiel die Auswahl eines bestimmten Klangs.
Moderne Klangerzeuger (Synthesizer, Expander u. a.) haben einen Befehlssatz, mit dem auch interne Klangerzeugungs-Mechanismen beeinflusst werden können.
Unterschiede zwischen MIDI-Aufzeichnung und digitaler Audioaufzeichnung
„MIDI-Signale“ sind Steuerdaten, die einem elektronischen Klangerzeuger wie z. B. Synthesizer, Sampler, Drumcomputer über ein spezielles Datenkabel mitteilen, welchen Ton sie wie laut (Dynamik) spielen sollen. Digitale „Audiosignale“ hingegen sind von Originalinstrumenten mit einem Mikrofon (oder sonstigen Schallumwandlern) abgenommene und gespeicherte Tonfolgen (Notenfolgen, Klänge, Geräusche), die über ein Lautsprechersystem das Original-Schallereignis wiedergeben können. Mit MIDI-Signalen können hingegen im Nachhinein verschiedenste Arten von Klangerzeugern angesteuert werden, die ihrerseits erst den hörbaren Ton oder Klang formen. Der Vorteil dieser Methode besteht darin, dass in einem Zeitraster gespeicherte Steuerdaten im Nachhinein noch geändert werden können, so zum Beispiel in der Notenhöhe, der Dynamik oder der Abspielposition und -länge (Rhythmik). All diese Veränderungen der Originaleinspielung kosten im Vergleich zur Nachbearbeitung von „echten“ Audioaufzeichnungen wenig Rechenaufwand und sind damit mit nahezu allen heute verfügbaren Sequencerprogrammen möglich. In der Entstehungszeit von MIDI war von einer Vor- und Nachteilsabwägung zwischen reinen Steuersignalen und echten Audioaufzeichnungen keine Rede, da digitale Klangaufzeichnungen Anfang der 1980er Jahre noch extrem kostenintensiv und damit nur vereinzelten Produktionen vorbehalten waren.
Nimmt man ein Musikstück als MIDI-Signale auf, dann erhält man Dateien, die verglichen mit der klassischen digitalen Aufzeichnung von Musik klein sind. Bei der klassischen Musikaufzeichnung wird das Audiomaterial kontinuierlich mit hohen Abtastraten in Binärdaten zerlegt und gespeichert. Dadurch entstehen vergleichsweise große Datenmengen, die ein entsprechendes Speichermedium benötigen. MIDI hingegen speichert nur die zur Erzeugung der Töne nötigen Steuerdaten – nicht den Klang selber. Die Datenmenge ist erheblich kleiner (je nach Musiktyp) und hat sich daher z. B. in speicherarmen Mobilgeräten beliebt gemacht.
Die MIDI-Aufzeichnung ist am ehesten mit einem digitalen Notenblatt vergleichbar, das dem Instrumentalisten (in diesem Vergleich dem elektronischen Klangmodul) Informationen über die abzuspielenden Töne vermittelt, aber dem Klangmodul die Freiheit lässt, einen beliebigen Klang für die Wiedergabe zu verwenden.
Für die Übertragung an oder von nicht digitalen Instrumenten (analoge Synthesizer, E-Gitarren) gibt es Konverter.
Seit ein paar Jahren bemüht sich der von Yamaha entwickelte mLAN-Standard um eine Verknüpfung von MIDI- und Audiodaten auf der Basis von FireWire.
Einsatzbereiche
Das MIDI-Protokoll wurde ursprünglich für die gegenseitige Steuerung von Synthesizern entwickelt, dann aber schnell für Sampler, Drumcomputer, Sound- und Audiokarten, Effektgeräte (Hall, Echo, Equalizer usw.), sog. Controller (wie Masterkeyboards, Drum-Pads, Fader-Boxen usw.) und Computer, schließlich auch zur Steuerung von Lichteffekten für Bühnen adaptiert. Hardware-Sequenzer und Computer mit Sequenzerprogrammen (mittlerweile Digital Audio Workstations) erlauben das Einspielen, Aufzeichnen, Bearbeiten und Ausgeben von MIDI-Daten. Als der Speicher in Mobiltelefonen noch sehr knapp war, benutzte man das MIDI-Format für Klingeltöne.
Seit einiger Zeit ist es möglich, MIDI-Signale auch von anderen Instrumenten wie Gitarre oder Harfe zu erzeugen. Da die Signale in analoger Form vorliegen, müssen diese zunächst in ein MIDI-Signal gewandelt werden. Hierbei wird neben den normalen MIDI-Daten die exakte Tonhöhe ermittelt, da diese im Gegensatz zu einem Keyboard abweichen kann, z.B. indem bei der Gitarre eine Saite gegriffen oder bei der Harfe ein Umstimmer betätigt wurde.
Das Komponieren, Arrangieren und dem somit verbundenen Erstellen von Notenblättern, also dem Notensatz, wurde in Verbindung von elektronischem Klavier und dem Auslesen der gerade gespielten Noten via MIDI auf den Computer vereinfacht. Mit dem PC und entsprechender Spezialsoftware kann z. B. das Arrangieren der Stimmen und Instrumente schneller erfolgen. Variationen können schnell erstellt oder Instrumente durch andere ausgetauscht werden. Das ist in teuren Studioproduktionen ein wichtiges wirtschaftliches Argument. Bei alle dem hat der Komponist dennoch immer nicht primär den Computer, sondern seine gewohnte Klaviertastatur vor sich.
Rechnersysteme
Eine Pionierrolle auf diesem Gebiet spielte der Commodore C64, auf dem insbesondere die deutschen Softwareautoren Gerhard Lengeling und Karl Steinberg ihre ersten Sequenzer programmierten, die für die Namen C-LAB, Emagic und Steinberg stehen. Der kommerzielle Durchbruch für MIDI als Plattform für professionelle Musikproduktion ist eng mit dem Atari ST verbunden, da dieser standardmäßig mit einer MIDI-Schnittstelle ausgeliefert wurde. Die Entwicklung wichtiger MIDI-Programme wie Cubase (Steinberg) oder Notator (Lengeling) begann auf dem Atari ST.
Heutzutage sind auch andere Rechnerplattformen (oft die „Nicht-Windows-Systeme“) für die Musiker, die mit MIDI arbeiten, eine gute Wahl. In erster Linie der Apple Macintosh, aber auch der Commodore Amiga, Pegasos mit dem MorphOS (als eines der jüngsten Mitglieder der Computerplattformen) und Standard-PCs mit alternativen Betriebssystemen (wie beispielsweise Linux) finden hierbei Verwendung.
Die heute überwiegend verwendeten Sequenzerprogramme sind das bereits erwähnte Cubase von Steinberg, das – obwohl plattformübergreifend – mittlerweile vor allem auf Windows-PC-Rechnern Verbreitung findet, sein Pendant Logic, das inzwischen von Apple aufgekauft wurde und seitdem nur noch auf der Plattform Apple Macintosh zu Hause ist. Steinberg (einschließlich Cubase) wurde inzwischen von Yamaha aufgekauft. Daneben gibt es Rosegarden und MusE auf unixartigen Plattformen, und einige weitere Lösungen wie Cakewalk Sonar, Ableton Live oder auch Reason.
Dateiformate
Die so genannten Standard-MIDI-Files (kurz: SMF) gibt es in den Formaten SMF 0, SMF 1 und SMF 2. Sie tragen typischerweise die Endung .mid im Dateinamen.
Beim Format 0 sind alle MIDI-Kanäle in einer Spur zusammengefasst. Dieses Format wird auch von Klingeltönen für Handys genutzt und kann mit gängigen Sequenzerprogrammen in das Format 1 konvertiert werden.
Im Format 1 hat jeder Kanal seine eigene Spur und optional einen eigenen Namen. Verschiedene Stimmen und Instrumente können so besser identifiziert werden.
Im Format 2 besteht jeder Kanal(Track) aus unabhängigen Einheiten.
MIDI-Anschlüsse
Es existieren drei verschiedene MIDI-Anschlüsse, MIDI-In, MIDI-Out und MIDI-Thru. Diese Dreierkombination wird umgangssprachlich auch Midi-Trio genannt.
MIDI-In wird von einem Gerät zum Empfang verwendet. MIDI-Out wird zum Senden verwendet. MIDI-Thru schickt auf MIDI-In empfangene Signale unbearbeitet zu MIDI-Out weiter.
Physisch sind die Anschlüsse als fünfpolige DIN-Buchsen realisiert. In seltenen Ausnahmen (z. B. bei der MIDI-Interface-Karte „Roland MPU-401 AT“ als ISA-Karte) sind die Anschlüsse auch als 6-polige Mini-DIN-Buchsen ausgelegt. In solchen Fällen hilft ein Anschluss-Adapter, der baugleich zu einem Tastatur-Adapter „Mini-DIN-Stecker zu DIN-Buchse“ (PS/2 auf AT) ist.
MIDI arbeitet nach dem Master-Slave Prinzip. Will man mit einem Keyboard einen Synthesizer steuern, verbindet man die MIDI-Out-Buchse des Keyboards (Master) mit der MIDI-In-Buchse des Synthesizers (Slave). Sollen mit einem Keyboard (Master) zwei Soundmodule z. B. ein JD-990[1] und ein MC-303 [2] als (Slave A und B) angesteuert werden, verbindet man MIDI-Out des Masters, mit MIDI-In des [Slave A) sowie die MIDI-Thru-Buchse des [Slave A) mit MIDI-In des (Slave B).
Ein häufig anzutreffendes Szenario ist der Einsatz eines Computers mit entsprechender Software als Sequenzer sowie der Anschluss eines Keyboards oder elektronischen Pianos zum Einspielen der Noten und mehreren Synthesizern zur Klangerzeugung. Dabei wird üblicherweise MIDI-Out des Keyboards mit MIDI-In des Computers verbunden, MIDI-Out des Computers mit den MIDI-In der Synthesizer, ggf. verkettet über MIDI-Thru.
MIDI-Anschlüsse am PC
Ältere PC-Soundkarten, ausgehend vom Soundblaster, haben einen Anschluss geprägt, bei dem sich Game-Interface und MIDI-Interface eine 15-polige D-Sub-Buchse teilen und der heute immer noch in billigeren, nicht professionellen MIDI-Interfaces in PCs vertreten ist. Die Soundkarte braucht hierbei nur zwei digitale, serielle Leitungen ohne Datenflusskontrolle zur Verfügung zu stellen (MIDI verwendet keine Datenflusskontrolle). Bei dieser Art der Hardware-Implementierung ist ein Teil des MIDI-Interfaces in einen externen, oft separat zu erwerbenden Teil verlegt, der meistens in den dickeren Stecker eines Kabels vergossen ausgeführt ist (siehe Abb.). Motherboards, die Sound-, MIDI- und Game-Controller on-Board haben, haben diese kombinierte Game-/MIDI-Anschlussbuchse übernommen. Dem entsprechen Sound-, Game- und MIDI-Chipsätze, die diese Funktionalitäten teilweise oder ganz gemeinsam integrieren. Das Vorhandensein einer 15-poligen D-Sub-Buchse an sich erlaubt jedoch noch keinen Rückschluss darauf, ob ein MIDI-Interface vorhanden ist oder, falls vorhanden, von welcher Qualität es ist.
Professionelle MIDI-Interfaces für PCs benutzen meistens proprietäre Buchsen zwischen Steckkarte und externem Teil.
Technik
Hardware
Im Prinzip ist MIDI eine unidirektionale Schnittstelle zur seriellen Datenübertragung, allerdings ohne jegliche Datenflusskontrolle. Die Übertragungsgeschwindigkeit beträgt feste 31250 Bits pro Sekunde (31,25 kBaud).
Im Unterschied zu Computer-Schnittstellen wird bei MIDI die Logik über Stromschleife und nicht über Spannung gesteuert. Wie schon erläutert werden bei der MIDI-Steckverbindung (5-polig DIN – früher Diodenbuchse/-stecker) die Pins 4 und 5 als Datenleitung benutzt. Dabei liegt Pin 4 über einen 220 Ohm Widerstand an +5 V, und Pin 5 ist der geschaltete Pin.
Wird Pin 5 auf Masse geschaltet (0 V) fließt der Strom über die Leitung = 1. Wird Pin 5 nicht geschaltet (+5 V) fließt kein Strom über die Leitung = 0.
Durch den Optokoppler in der Empfangsleitung ergibt sich eine galvanische Trennung der einzelnen MIDI-Geräte untereinander.
In normaler TTL-Logik ist Masse = 0 und +5 V = 1. Daraus ergibt sich, dass MIDI eine gegenüber der TTL-Logik negative Logik hat.
MIDI-Hardware im PC
Um mit einem Computer, der der TTL-Logik folgt, über MIDI zu kommunizieren, muss ein „Signal-Konverter“ zwischengeschaltet werden. Diesen nennt man MIDI-Interface. Jede Datenübertragungs-Schnittstelle des Computers kann mit einem geeigneten MIDI-Interface für die MIDI-Übertragung genutzt werden.
Lange Zeit war die übliche Vorgehensweise, die MIDI-Signale, die an einem kombinierten Game-/MIDI-Anschluss entsprechender Soundkarten verfügbar waren, über einen Adapter (siehe MIDI-Anschlüsse) auf die Standard-MIDI-Schnittstelle umzusetzen. Softwareseitig war die Hardware meistens MPU-401-kompatibel.
Vorher waren auch MIDI-Interfaces für die serielle (COM) und parallele (Druckerport) Schnittstelle im Gebrauch. Inzwischen gibt es MIDI-Interfaces auch für USB, FireWire (mLAN) und LAN.
Das jeweilige MIDI-Interface passt das Signal auch den Spannungsverhältnissen für den jeweiligen Port an; z. B. arbeitet der COM-Port mit −12 V als 1 und +12 V als 0.
MIDI-Protokoll
Jeder MIDI-Befehl (mit Ausnahme systemexklusiver Daten, kurz SysEx genannt) trägt neben seiner Befehlskennung und den Befehlsdaten auch eine Kanalnummer. Die Kanalnummer ist 4 Bits groß, es lassen sich dadurch 24, also 16 Kanäle ansteuern. Je nach Software sind die Kanäle 0–15 oder 1–16 durchnummeriert, wobei die Nummerierung von 1–16 üblicher ist. Jeder Kanal steuert einen speziellen Klang (Instrument), in der MIDI-Sprache „Programm“ genannt.
Da MIDI ein serielles Protokoll ist und die Datenrate der MIDI-Schnittstellen für heutige Verhältnisse sehr gering ist, ergeben sich beim Abspielen vieler Noten häufig Timingprobleme, vor allem beim Einsatz von Sequenzerprogrammen. Schon das Anschlagen eines Akkords mit mehreren Noten kann zu hörbaren Verzögerungen führen, denn MIDI kann die Noten nie zeitgleich durch die Leitung schicken, sondern nur nacheinander. Im professionellen Bereich werden daher Rechner mit mehreren MIDI-Schnittstellen verwendet, um hohe Datenmengen parallel an die verschiedenen Tonerzeuger schicken zu können. Doch bereits eine geringe Anzahl von gleichzeitig übertragenen Realtime-Controllern kann immer noch zur hörbaren Überlastung des MIDI-Interface führen. Trotz dieser Einschränkungen und des hohen Alters erfreut sich MIDI nach wie vor großer Beliebtheit, da es weit verbreitet, gut standardisiert und sehr zuverlässig ist. Eine Fortentwicklung wäre aus Anwendersicht wünschenswert. Von Yamaha gibt es mit XG-MIDI eine Erweiterung, die genau wie Rolands GS-MIDI zwar qualitative Verbesserungen bringt, allerdings nicht über ein proprietäres System hinaus gedieh. Als Quasi-Standard durchgesetzt hat sich lediglich GM (General MIDI).
MIDI-Geräte
- Expander: Ein Expander ist ein externer Klangerzeuger, meistens ein Synthesizer, ohne eigene Tastatur.
- Synthesizer bzw. Keyboard: Die meisten Synthesizer verfügen über eine MIDI-Schnittstelle, um Tasten- und Reglerbewegungen zu Aufzeichnungszwecken übertragen zu können.
- Masterkeyboard: Ein Masterkeyboard enthält meistens keine eigene Klangerzeugung sondern dient ausschließlich der Steuerung von Expandern, Software-Synthesizern oder zur Aufzeichnung der Tastenbewegung.
- Workstation: Eine Kombination aus Synthesizer, Masterkeyboard und Sequenzer wird als Workstation bezeichnet.
- Sequenzer: Der Sequenzer dient der Aufzeichnung der MIDI-Daten und dem Arrangement eines Musikstückes. MIDI-Sequenzer erlauben das Programmieren, die Aufzeichnung sowie die Wiedergabe von aufgezeichneten oder programmierten MIDI-Informationen (Notenwerte, Anschlagsstärke sowie weiteren Steuerungsbefehlen wie z. B. Modulation). Softwaresequenzer mit MIDI-Unterstützung haben sich auf dem Markt durchgesetzt, da sie über die Standardfunktionen (Programmieren, Aufzeichnen, Abspielen) hinaus auch weitere Bearbeitungsmöglichkeiten in grafischer Form bieten (nachträgliches Editieren, Quantisierung usw.), wobei sie heutzutage nicht nur MIDI-, sondern auch Audiomaterial verarbeiten können. Diese Kombination aus Audio- und MIDI-Bearbeitung nennt man DAW (Digital Audio Workstation). Für den Live-Einsatz erfreuen sich auch die in Keyboards oder Groove-Boxes integrierten Sequenzer großer Beliebtheit.
- MIDI-Interface für PC (MPU-401): Hierbei handelte es sich ursprünglich um eine 8-Bit-ISA-Steckkarte des Herstellers Roland. Viele für MS-DOS-PCs erhältliche Computerspiele zwischen 1988 und 1995 unterstützten diese MIDI-Schnittstelle zur Ansteuerung von Klangerzeugern wie z. B. der internen Roland LAPC-I oder dem externen MT-32. Andere Hersteller wie bspw. Creative Labs unterstützten den MPU-401-Modus nur eingeschränkt im so genannten Dumb-Mode (UART), während der Intelligent-Mode, der genaues Timing durch Hardwareunterstützung garantierte, nur von Rolands eigenen Produkten beherrscht wurde.
- MIDI-Interface für PC (Gameport): Der Gameport-MIDI-Adapter erweitert den Gameport einer Soundkarte um ein MIDI-Interface mit meistens einem MIDI-In, einem MIDI-Out und einem MIDI-Thru. Es gibt auch MIDI-Interfaces für den Gameport ohne MIDI-Thru oder mit mehreren MIDI-Out-Kanälen. Letzteres bietet den Vorteil, dass die bei der Reihenschaltung von Geräten über MIDI-Thru/MIDI-In entstehende Latenz vermieden werden kann, falls die Thru-Funktion nicht über eine hardwareseitige Kopplung der In- mit der Thru-Buchse erreicht wird (Soft Thru). Bei diesen MIDI-Interfaces handelt es sich um synchrone Interfaces, d. h. auf allen MIDI-Out-Kanälen liegt dasselbe MIDI-Signal an. Die Zahl der Kanäle bleibt dann auf 16 beschränkt. Im professionellen Produktionsumfeld werden Gameport-MIDI-Adapter nicht eingesetzt, weil die zugrunde liegenden Treiber im Allgemeinen nicht timingstabil sind und (was noch viel schlimmer ist) oftmals wichtige Bauteile (u. a. die sogenannten Optokoppler zur galvanischen Trennung der MIDI-Verbindung) in den Adapterkabeln fehlen und diese (auch wenn sie mit den notwendigen Bauteilen ausgestattet sind) in der Regel nicht sehr zuverlässig arbeiten.
- MIDI-Interface für USB oder FireWire (IEEE1394): Da MIDI im Wesentlichen ein Datenprotokoll zur Steuerung von elektronischen Musikinstrumenten darstellt, ist es in diesem Zusammenhang prinzipiell unerheblich, über welche Hardware die Daten übertragen werden. Um eine kostengünstige, plattformübergreifende und vor allem schnelle Anbindung externer MIDI-Interfaces an den Rechner zu erreichen, verfügen heute viele MIDI-Adapter über einen USB- oder FireWire-Anschluss, über den dieser die über die Out-Ports zu verteilenden Daten erhält. Diese Art von MIDI-Interfaces stellt die im Vergleich zum PC-Gameport deutlich zuverlässigere Variante zum Anschluss von MIDI-Geräten an den Rechner dar, da die verwendeten Treiber von den Herstellern dieser verhältnismäßig teuren Geräte zumeist auf Timinggenauigkeit hin optimiert werden. Für den professionellen Einsatz werden Interfaces mit vier bis acht einzeln adressierbaren Out-Ports verwendet, mit denen Timingprobleme deutlich vermindert werden können (vgl. auch folgender Absatz).
- MIDI-Interface für Atari ST: Der Atari ST verfügt über eine eingebaute MIDI-Schnittstelle. Eine Nachrüstung ist nicht notwendig.
- MIDI-Interface für Amiga: Beim Commodore Amiga sind die meisten MIDI-Interfaces Adapter für die serielle Schnittstelle mit einem MIDI-In, einem MIDI-Thru und meistens drei MIDI-Out. Es gibt sowohl synchrone als auch asynchrone MIDI-Interfaces. Bei einem asynchronen MIDI-Interface sind die verschiedenen MIDI-Out-Schnittstellen unabhängig voneinander ansteuerbar. Bei drei MIDI-Out-Schnittstellen gibt es also 48 MIDI-Kanäle (3×16).
- MIDI über USB oder FireWire: MIDI lässt sich über USB oder FireWire tunneln. Dabei kommen im Gegensatz zum MIDI-Interface für USB keine MIDI-Kabel mehr zum Einsatz.
- Effektgeräte: Zahlreiche Effektgeräte lassen sich über MIDI fernsteuern.
- Musikinstrumente: Für viele Musikinstrumente existieren Abnehmer zur Erzeugung von MIDI-Signalen (z. B. Guitar-to-MIDI-Converter, Blaswandler, Piano-Aufsetzer)
Siehe auch: Audio Stream Input/Output (ASIO), Sequenzer (Musik), Synthesizer, Sampler, Soundkarte, SoundFont
MIDI über USB/FireWire
Immer häufiger anzutreffen ist der Einsatz von USB- oder FireWire-Geräten. Dabei werden die MIDI-Befehle über USB bzw. FireWire übertragen. Es lassen sich über USB oder FireWire mehrere virtuelle MIDI-Verbindungen realisieren, wodurch die begrenzte Zahl der Kanäle von 16 pro MIDI-Verbindung praktisch keine Rolle mehr spielt. Immer mehr Hersteller MIDI-fähiger Musikgeräte gehen angesichts der erwähnten Vorteile dazu über, ihre Geräte neben den klassischen MIDI-Schnittstellen auch mit USB- oder FireWire-Schnittstellen auszustatten.
Erwähnenswert ist, dass sich das USB-MIDI-Protokoll vom herkömmlichen MIDI-Protokoll unterscheidet. Nachzulesen in der „Universal Serial Bus Device Class Definition for MIDI Devices“ (englisch) im Kapitel 4: USB-MIDI Event Packets.
Die dort genannten „Jacks“, max. 16 pro USB-Endpoint, haben jeweils wieder 16 Kanäle.Wireless MIDI
Dem Trend hin zur drahtlosen Datenübertragung folgend werden auch Geräte angeboten, mit denen sich MIDI Daten per Funk übertragen lassen. Diese Geräte (z.B.: [1], [2]) benutzen meist die Übertragungsfrequenz von 2.4 GHz (ISM-Band), um die Daten zu übermitteln. Bei erkannten Übertragungsfehlern senden sie ein "ALL NOTES OFF", um "hängende" Töne zu vermeiden. Laut Herstellerangaben haben diese Geräte eine Reichweite von 10-80 Metern.
MIDI über Netzwerk
Seit einiger Zeit gibt es eine Reihe von virtuellen MIDI-Gerätetreibern, die es erlauben, MIDI-Daten über IP-basierende Netzwerke zu übermitteln. Während die meisten dieser Produkte auf proprietärer Basis die MIDI-Daten per TCP oder UDP über das Netzwerk übertragen, gibt es mittlerweile auch einen RFC für eine genormte Übertragung von MIDI-Daten über Netzwerke auf Basis des RTP-Protokolls: RFC 4695. Es gibt mehrere Open-Source-Implementierungen dieses Standards und auch das Apple-Netzwerk-MIDI der Mac OS X Betriebssystemversion 10.4 basiert auf dieser Spezifikation.
Funktionsweise des MIDI-Protokolls
MIDI verwendet kurze Bytefolgen, um Signale auszutauschen. Das Signal lässt sich mit einem Sequenzer als Musikstück aufzeichnen, bearbeiten und wiedergeben.
Die übertragenen Bytes
Die folgenden Tabellen erfordern das Verständnis des Hexadezimalsystems. Ein Byte ist aus zwei Hexadezimalziffern (0–9 A–F) aufgebaut. Eine einzelne Hexadezimalziffer als Halbbyte wird auch Nibble genannt. Das Nibble n steht für die Kanalnummer (n = number), das Byte kk für die Note (k = key), das Byte vv für den Wert (v = value). Die Kanalnummer reicht von 0–15. In vielen Programmen wird bei der Darstellung der Kanalnummer die tatsächliche Kanalnummer um 1 erhöht dargestellt, also 1–16 statt 0–15.
Ein Statusbyte ist ein Byte, das einen Befehl im MIDI-Strom enthält. Auf einen Befehl folgt eine passende Anzahl Datenbytes. Um einen unterbrochenen Datenstrom jederzeit korrekt wieder aufzunehmen, fordert das MIDI-Protokoll die Fähigkeit, Statusbytes von Datenbytes zu unterscheiden. Dazu definiert MIDI, dass das erste Bit eines Statusbytes gesetzt (1) ist, das erste Bit eines Datenbytes dagegen ungesetzt (0). Daraus folgt, dass die Hexadezimaldarstellung von Statusbytes im Bereich 0x80–0xFF liegt, die von Datenbytes dagegen zwischen 0x00–0x7F. Außerdem gilt für Statusbytes, dass das zweite Nibble immer n ist, was für den MIDI-Kanal steht, auf dem der Befehl ausgeführt wird.
Kommt statt eines erwarteten Statusbyte ein Datenbyte, dann gilt das letzte Statusbyte als wiederholt und das aktuelle Datenbyte zählt zu dessen Daten.
Die Beispiele werden anhand von Tasten eines Tasteninstruments wie eines Keyboards erläutert, sind aber auf jedes MIDI-fähige Instrument übertragbar, z. B. auch eine MIDI-Gitarre.
Statusbytes
Das Statusbyte ist immer das erste übertragene Byte einer zusammengehörigen MIDI-Nachricht. Das erste Bit des Statusbytes ist immer 1 (gesetzt).
Statusbytes Bytes (hexadezimal) Folgebytes Status Erläuterung 0x8n kk vv Note, Release velocity Note Off Beendet das Spielen der angegebenen Note, hat also die Bedeutung des Loslassens einer Taste. Wurde die Note vorher gar nicht gespielt, wird dieses Signal einfach ignoriert. 0x9n kk vv Note, Anschlagsdynamik Note On Beginnt das Spielen einer Note. Zusätzlich wird die Anschlagsdynamik (engl. Velocity) angegeben, die der Druckstärke auf die Taste in 127 Schritten von 1 (sehr schwach) bis 127 (sehr stark) entspricht. Der Wert 0 ist als Note Off-Befehl definiert. 0xAn kk vv Note, Dynamic Polyphonic Aftertouch Beschreibt das Ändern des Tastendrucks während die Taste bereits gedrückt ist, für jede Taste einzeln. Diese Daten sind neutral, d. h. sie müssen anderen Daten zugeordnet werden. z. B.: Zuordnung zu Controller 11: Expression – Ausdruckstärke, womit nach dem Anschlag der Taste über den „Bodendruck“ auf die Taste der Klang eines Saxophones verändert werden kann, während der Ton klingt.
0xBn cc vv Controller, Wert Control Change Ändert den Zustand eines Controllers (siehe nächster Abschnitt) (cc = Controller) 0xCn pp Programmnummer Program Change Legt das für den angegebenen Kanal zu spielende Instrument fest (pp = Program Number) 0xDn vv Wert Monophonic bzw. Channel Aftertouch Beschreibt das Ändern des Tastendrucks während die Tasten bereits gedrückt sind, für alle Tasten gemeinsam. Genau wie bei Polyphonic Aftertouch sind diese Daten neutral.
0xEn vv [vv] Wert1, Wert2 (optional) Pitch Bending Einstellung des Pitchbend-Rades, je nach Gerät mit 7, 8 oder 14 Bit (128, 256 oder 16384 verschiedene mögliche Werte). 0xFn xx… Geräteabhängig System (exclusive) Message Steuermeldungen, häufig gerätespezifisch, Länge ebenfalls gerätespezifisch (xx = Datenbytes) Controller
Sinn und Zweck eines MIDI-Controllers ist es, dem Anwender eine möglichst gute Haptik bei der Beeinflussung seiner Musik zu vermitteln. Die Veränderungen der Musik sollen mit Händen oder Füßen erfühlt werden können. Hierzu hat der Controller mechanisch bewegliche Elemente, die der Benutzer bedienen kann. Diese Bewegung wird in MIDI-Befehle übersetzt und an die Geräte sowie Klangerzeuger weitergegeben. Sie arbeiten somit ähnlich, wie Gamecontroller, die allerdings im Gegensatz zu Midicontrollern ein proprietäres Protokoll nutzen. Der einzelne Midibefehl wird verwirrenderweise im Bereich der Midicontroller ebenfalls als Controller bezeichnet, was aber die ursprünglichere Verwendung darstellt.
Erst in neuerer Zeit nutzt man Controller auch derart, dass die Semantik der Midi Befehle – in unten stehender Tabelle als Typ bezeichnet – ignoriert wird. Dem Befehl werden andere Funktionen zugeordnet als im Midi Protokoll vorgesehen. Dies ist häufig der Fall, wenn die Musikbearbeitung ausschließlich auf einem Computer durchgeführt wird. Insbesondere bei DJ-Programmen sind speziell angepasste Controller sehr verbreitet, wo beispielsweise mit dem Midisignal ein Dateibrowser zur Songauswahl sowie Funktionen wie Start, Stop oder in anderer Richtung eine Hardware LED im Controller bedient werden. Der semantisch mit der Tonhöhe belegte Midibefehl kann hier beispielsweise die Länge einer Wiederholungsschleife (Loops) darstellen. Gerade hier ist die Controllerhaptik wichtig, da sich mit der Maus am Computer die erforderliche Reaktionszeit und Feinfühligkeit zum Beispiel bei der Synchronisierung des Beates zweier Songs nicht erreichen lässt. Dem proprietären Charakter dieser Anwendungsart kann durch freie Belegbarbarkeit der Midibefehle sowohl im Programm als auch im Controller begegnet werden, was allerdings noch lange nicht die Regel ist.
Klassische Anwendungen des Midicontrollers halten sich hingegen streng an die Semantik des Midiprotokolls. Diese haben im Bereich der Musikerzeugung größere Bedeutung, da sich mit ihnen auf einfache Art und Weise gerätespezifische Klangparameter des aktuellen Instruments steuern lassen. Unterschiedliche Geräte sind dabei kompatibel auswechselbar.
Die Controller senden auf einem bestimmten Kanal mit einer bestimmten Controllernummer einen bestimmten Wert. Einfache Controller können Werte von 1 bis 128 annehmen, was jedoch bei Tonhöhenänderungen sehr schnell zu unschönen Treppenverläufen im Klang führt. Daher lassen sich die Controller 0–31 mit einem sogenannten LSB-Controller 32–63 koppeln, um so eine wesentlich höhere Auflösung zu erhalten. In der Praxis wird diese Technik jedoch selten angewandt, da eine Auflösung der Lautstärke beispielsweise in 128 Schritten fein genug erscheint.
Schalter wie beispielsweise das Haltepedal Nummer 64 können zwar theoretisch Werte von 1–128 senden, da ein Schalter allerdings nur zwei Werte annehmen kann, werden üblicherweise Werte von 1 bis 64 als „Aus“ und Werte von 65 bis 128 als „An“ interpretiert.
Verwendet man ein programmierbares Steuergerät, so sind Kenntnisse der Controllernummern und was diese üblicherweise steuern von großem Nutzen. Die wichtigsten Controller sind in der nachfolgenden Tabelle zusammengestellt. Das erste Byte eines Controllerbefehles lautet immer 0xBn, wobei n die Kanalnummer angibt. cc steht für die Controllerart (cc = continuous controller) und vv für den Wert, den der zu steuernde Klangparameter annehmen soll.
Wichtige MIDI-Controller Byte (hexadezimal) Dezimal Typ Erläuterung 0xBn 00 vv 0 Bank select MSB gefolgt von Bank select LSB Controller 32 0xBn 01 vv 1 Modulation MSB Stellung des Modulationsrades 0xBn 02 vv 2 Breath Controller Blasregler 0xBn 04 vv 4 Foot Controller MSB Stellung des Fußpedals 0xBn 05 vv 5 Portamento Time MSB Dauer des übergangslosen Gleitens zwischen zwei Tonhöhen 0xBn 06 vv 6 Data Byte Datenbyte für einen RPN-/NRPN-Controller 0xBn 07 vv 7 Main volume Gesamtlautstärke 0xBn 08 vv 8 Balance Verstärkung des rechten bzw. linken Lautsprechersignals (nur Stereo) 0xBn 0A vv 10 Panorama Stereopositionierung im Raum (links … mittig … rechts) 0xBn 0B vv 11 Expression Ausdrucksstärke des Klangs 12 Effect Control 1 Effekt 1 steuern 13 Effect Control 2 Effekt 2 steuern 14–15 Undefined Undefiniert bzw. frei verwendbar 16–19 General Purpose Controllers 1–4 Frei belegbare Controller 20–31 Undefined Undefiniert bzw. frei verwendbar 32 Bank select LSB gefolgt von Programmnummer-Befehl: Cn xx (n – MIDI kanal; xx – Nummer) Das „Bank select MSB/LSB/Programmnummer“ wird verschieden genutzt. z. B. YAMAHA bei XG
für die Auswahl einer Tonebank: MSB(Ctrl.0) = 0 LSB(Ctrl.32) = Banknummer
für die Auswahl eines Drumsets: MSB(Ctrl.0) = Drumset LSB(Ctrl.32) = 0
63 LSB for Controllers 0–31 (rarely implemented) Dienen eigentlich dazu, die Controller 0–31 feiner auflösen zu können, wird aber kaum verwendet 64 Hold 1 Haltepedal 65 Portamento Portamento ein- und ausschalten 66 Sostenuto Während des Drückens des Pedals bereits gespielte Noten werden gehalten, neu hinzukommende nicht 67 Soft Pedal 68 Legato Footswitch 69 Hold 2 2. Haltepedal 70 Sound Controller 1 (Sound Variation) Klangsteuerung 1, meistens Klangvariation 71 Sound Controller 2 (Harmonic Content) Klangsteuerung 2, meistens Teiltonhaltigkeit 72 Sound Controller 3 (Release Time) Klangsteuerung 3, meistens Ausschwingzeit 73 Sound Controller 4 (Attack Time) Klangsteuerung 4, meistens Einschwingzeit 74 Sound Controller 5 (Brightness) Klangsteuerung 5, meistens Helligkeit 75–79 Sound Controller 6–10 Klangsteuerung 6–10, keine Vorschlagswerte 80–83 General Purpose 5–8 Frei verfügbare Controller 5–8 84 Portamento Control Kontrolle des Portamento 85–90 Undefined Undefiniert bzw. frei verwendbar 91 Effects 1 Depth Effekttiefe 1, früher Intensität eines externen Effektes 92 Effects 2 Depth Effekttiefe 2, früher Tremolointensität 93 Effects 3 Depth Effekttiefe 3, früher Chorusintensität 94 Effects 4 Depth Effekttiefe 4, früher Detuneinstensität 95 Effects 5 Depth Effekttiefe 5, früher Phaserintensität 96 Data Increment RPN/NRPN Wert eines RPN/NRPN Controllers erhöhen 97 Data Decrement RPN/NRPN Wert eines RPN/NRPN Controllers erniedrigen 0xBn 62 vv 98 NRPN LSB Niederwertiges Byte eines NRPN-Controllers 0xBn 63 vv 99 NRPN MSB Höherwertiges Byte eines NRPN-Controllers 0xBn 64 vv 100 RPN LSB Niederwertiges Byte eines RPN-Controllers 0xBn 65 vv 101 RPN MSB Höherwertiges Byte eines RPN-Controllers 102–120 Undefined Undefiniert bzw. frei verwendbar 0xBn 78 vv 120 all sounds off Klangerzeugung sofort einstellen (vv hat keine Bedeutung) 0xBn 79 vv 121 Controller Reset Setzt alle Controller auf ihre Ursprungswerte 0xBn 7A vv 122 Local Control on/off Koppelt die Tastatur vom internen Klangerzeuger eines Gerätes ab; die interne Klangerzeugung kann weiterhin von außen über MIDI angesteuert werden, während die Tastatur weiterhin über den MIDI-Ausgang Daten sendet, aber eben nicht mehr an die interne Klangerzeugung 0xBn 7B vv 123 all notes off Spielen einstellen – sämtliche Noten werden ausgeschaltet, die Klänge durchlaufen jedoch noch ihre Release-Zeit (d. h. sie klingen ab) (vv hat keine Bedeutung) 0xBn 7C vv 124 omni off Das Gerät soll nur auf programmierte Kanäle reagieren (vv haben keine Bedeutung) 0xBn 7D vv 125 omni on Das Gerät soll auf allen Kanälen gleich reagieren (vv hat keine Bedeutung) 0xBn 7E vv 126 mono on / poly off Das Gerät soll nur mit einer begrenzten Anzahl Stimmen spielen (vv = Stimmenzahl, üblich ist 1 – viele Geräte ignorieren vv und stellen auf 1-stimmig) 0xBn 7F vv 127 poly on / mono off Das Gerät soll mit maximaler Anzahl an Stimmen spielen MSB engl. : Most Significant Bit = höchtstwertigstes Bit
LSB engl. : Least Significant Bit = niederwertigstes Bit
NRPN/RPN
Die NRPN Controller dienen dazu, Parameter zu steuern, die in den normalen Controllerraum keinen Platz finden, die der Hersteller aber steuerbar machen will.
Es wird ein Parameter im Bereich von 0 und 16383 gesendet. Danach wird entweder ein normaler MIDI-Controller #6 mit einem bestimmten Wert 0–127 gesendet oder ein Data Increment/Decrement #96, #97, wobei hier der dritte Parameter egal ist.
Da es im MIDI-Protokoll nicht möglich ist einen Wert größer als 127 zu senden, gibt es das NRPN-MSB (Controller #99) und das NRPN-LSB (Controller #98).
Der Wert im Bereich zwischen 0 und 16383 wird erst in Binärform umgewandelt. Die ersten (von rechts) sieben Zeichen dieser binären Zahl werden mit dem NRPN-LSB Controller versendet. Die übrig gebliebenen sieben Zeichen werden mit dem NRPN-MSB Controller versendet. Wichtig ist, dass der MSB-Controller vor dem LSB-Controller versendet wird.
Danach ist ein bestimmter NRPN Parameter aktiviert und man kann ihn über #6 einen Wert von 0 bis 127 zuweisen oder ihn mit #96/#97 erhöhen und verringern.
RPN funktioniert genau so, nur mit dem Unterschied, dass die LSB und MSB Controller #100, #101 sind (siehe Tabelle).
Nachteil an dieser Art der Übertragung ist, dass man insgesamt drei Controller versenden muss. Der Vorteil hingegen ist, dass man eine große Anzahl an Parametern (z. B. alle Parameter einer DAW) damit steuern kann. Interessant wäre auch die Möglichkeit das Protokoll zu missbrauchen und mit RPN einen Parameter zu selektieren und ihn über NRPN einen bestimmten Wert z. B. 13980 zuzuweisen. Dadurch wären Parametersprünge kaum mehr hörbar und man könnte immer noch herkömmliche Synths in der Kette verwenden.
MIDI Clock
Die MIDI Clock ist eine Funktion von MIDI zur Synchronisation von mehreren Synthesizern/Sequenzern.
Sie sendet Start und Stop, sowie auf jeder 96tel Note einen Tick. Diese Nachrichten beinhalten nur ein Byte.
Der Tick wird mit F8 (Dezimal: 248) übermittelt.
Start mit FA (Dezimal: 250) und Stop mit FC (Dezimal: 252).
Durch diese Signale starten alle Sequencer gleichzeitig, behalten den gleichen Takt und stoppen auch wieder gleichzeitig.
Rechtliches
Wie jedes musikalische Werk unterliegen auch MIDI-Dateien dem Urheberrecht. Professionelle MIDI-Dateien sind mit hohem Aufwand eingespielt, d. h. Musiker spielen Originaltitel nach und erstellen so die fertige MIDI-Datei. Nicht nur der Komponist des Originalmusiktitels hat Urheberrechte auf das Stück, auch der Hersteller von MIDI-Dateien hat auf das Arrangement selbst Urheberrechte. Das unberechtigte Kopieren, Vertreiben etc. solcher Dateien ist eine Straftat und wird durchaus verfolgt. Der Midifile Herstellerverband Deutschland betreibt ein umfassendes Anti-Piraterie-Programm. Unter anderem werden verdächtige CDs auf Online-Marktplätzen ersteigert und analysiert. Sind auf solchen CDs Dateien der Mitglieder enthalten, werden die Anbieter abgemahnt und auf Schadensersatz verklagt.
Kritik
Die Geschwindigkeit der MIDI-Schnittstelle mag technisch längst überholt sein, jedoch fällt dieser Nachteil nur in wenigen Fällen bei der Musikproduktion auf. Für einen Großteil der Anwender, der mit einer Basiskonfiguration wie Computer, Keyboard und Expander arbeitet, stellt sich das Problem gar nicht erst. Bei der Verkettung mehrerer Hardware-Klangerzeugter über MIDI-Thru können allerdings durchaus kritische Verzögerungen entstehen. Dem kann jedoch durch ein MIDI-Interface mit mehreren parallelen Ausgängen abgeholfen werden.
Schwerer wiegen andere Einschränkungen vor allem musikalischer Art. MIDI wurde konzipiert für die Steuerung von Synthesizern, die allesamt in derselben temperierten Stimmung betrieben werden. Für nicht-temperierte Stimmungen oder gar andere Skalen, als die der in der Popmusik beinah ausschließlich verwendeten 12 Halbtöne pro Oktave, ist MIDI nicht praktikabel.
Ebenfalls kritisiert wird die Auflösung von MIDI-Controllern in „nur“ 128 Stufen. Ein reales Instrument verfügt über mehr als 128 Anschlagstufen und ist dadurch nur bedingt mit Hilfe von MIDI-Hard- und Software nachzubilden bzw. ansteuerbar (siehe Bösendorfer 290SE). Auch bei anderen steuerbaren Parametern, etwa der Cutoff-Frequenz eines Synthesizer-Filters, macht sich diese „Stufigkeit“ teilweise störend (d. h. hörbar) bemerkbar.
Weblinks
- MIDI Manufacturers Association
- Deutschsprachige Seite zur MIDI Spezifikation
- USB-MIDI Spezifikation für Entwickler – engl.
- RTP-MIDI-Spezifikation – RFC 4695
- MIDI-Klaviatur, Frequenzen, Notennamen und Notennummern
Siehe auch
Quellen
Wikimedia Foundation.