MIDI
MIDI [engl.: musical instrument digital interface [ ] = „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. Überwacht wird der Standard von der MMA (MIDI Manufacturers Association). Wichtige Neuerungen, die dann auch den kommerziellen Erfolg erheblich beschleunigten, kamen von großen japanischen Herstellern 1991 unter dem Namen General MIDI.
Funktionsweise
Das MIDI-Protokoll stellt keine Klänge dar, sondern 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 (z. B. Synthesizer oder Soundkarte) geschickt, wodurch dann die entsprechenden Klänge erzeugt werden. Auch kann man auf einer Tastatur, die MIDI-Befehle sendet, spielen und andere MIDI kompatible Instrumente damit ansteuern oder die Tastaturbewegungen als MIDI-Befehle aufzeichnen.
Neben diesen elementaren Befehlen stellt MIDI weitere, teilweise sehr spezielle Befehle zur Verfügung, die beispielsweise dazu verwendet werden, andere Klänge zu laden oder geladene Klänge mittels Steuerdaten, wie sie von Schaltern, Knöpfen oder Drehreglern erzeugt werden können, zu beeinflussen. Ferner können Geräte über die Leitung sogenannte systemexklusive Meldungen, kurz SysEx, empfangen und übertragen, die es z. B. gestatten können, ein Backup des Speicherinhaltes eines Gerätes anzufertigen oder in ein Gerät ein neues Betriebssystem zu laden.
Die meisten modernen Klangerzeuger (Synthesizer, Expander u. a.) haben einen internen SysEx-Befehlssatz, mit dem man alle internen Klangerzeugungs-Mechanismen bis ins kleinste Detail steuern oder beeinflussen kann.
Sehr viele moderne Synthesizer haben bereits eine ganze Reihe von digitalen Effekten integriert, die man sonst mit separaten externen Effekt-Geräten erzeugen müsste. So können z. B. in der Hall-Effekt Sektion Klangräume über SysEx-Befehle sehr genau konstruiert werden, und präzise festgelegt werden, wo genau in dem Raum ein Instrument platziert ist.
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 usw. mitteilen, welchen Ton sie (Tonhöhe = musikalische Note) 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 auch heute noch 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 sehr wenig Rechenaufwand und sind damit mit nahezu allen heute verfügbaren Sequencerprogrammen möglich. In der Entstehungszeit von MIDI war freilich 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 sehr vereinzelten Produktionen vorbehalten waren.
Nimmt man ein Musikstück als MIDI-Signale auf, erhält man Dateien, die verglichen mit der klassischen digitalen Aufzeichnung von Musik sehr klein sind. Bei der klassischen Musikaufzeichnung wird das Audiomaterial kontinuierlich mit hohen Abtastraten in Binärdaten zerlegt und gespeichert. Dadurch entstehen vergleichsweise sehr 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 um Faktor 1.000 bis 1.000.000 kleiner (je nach Musiktyp) und hat sich daher z. B. in speicherarmen Mobilgeräten beliebt gemacht.
Insofern ist eine MIDI-Aufzeichnung 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.
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 deutlich 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. Auf Tastendruck, z. B. als Klangeffekt für den Hintergrund zum Test auf die Schnelle 20 Streicher zu erzeugen und bei Nichtgefallen wieder zu verwerfen, geht so schnell und einfach. Das ist in teuren Studioproduktionen ein wichtiges wirtschaftliches Argument. Bei alle dem hat der Komponist dennoch immer, dank der MIDI-Schnittstelle, 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, auch als Mixdown bezeichnet. Dieses Format wird heutzutage noch 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 einen eigenen Namen. Verschiedene Stimmen und Instrumente können so besser identifiziert werden. Ältere MIDI-Geräte können dieses Format häufig nicht verarbeiten.
Das Format 2, das eher selten anzutreffen ist, geht noch einen Schritt weiter. Hier werden einzelne Pattern (Teile einer Spur) auf separaten Spuren gespeichert.
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 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) verbauen die Hersteller aus Platzgründen auch 6-polige Mini-DIN-Buchsen. 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). Aus dem MIDI-Out-Port werden Daten gesendet, die von einem MIDI-In-Port empfangen werden. Die sendende Stelle prüft hierbei weder in Hardware noch in Software, ob die empfangende Stelle die Daten empfangen hat.
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 normierte 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 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 jedoch durchaus 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
Ein Gerät mit MIDI-Schnittstelle nennt man MIDI-Gerät. Dabei existieren verschiedenartige Geräte, die meistens mit einer MIDI-Schnittstelle ausgestattet sind:
- 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. Im Allgemeinen wird davon ausgegangen, dass das Signal von einem Signalgeber wie einem Keyboard an einen Klangerzeuger wie einen Synthesizer geschickt wird. Das Signal lässt sich aber auch mit einem Sequenzer als Musikstück aufzeichnen, bearbeiten und wiedergeben.
Die übertragenen Bytes
Die folgenden Tabellen erfordern ein 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. Einige Geräte halten sich nicht immer an diese Konvention. Für Datenbytes gilt meistens, dass die Bytes 0x00–0x7F als Wertebereich von 0 bis 127 interpretiert werden. 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).
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 Rektionszeit 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.
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 das man insgesamt drei Controller versenden muss. Vorteil ist das 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 und nicht drei wie die meisten Midi-Nachrichten.
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. Man sollte sich vergewissern, ob eine MIDI-Datei, die kostenlos im Internet verfügbar ist, auch wirklich verbreitet werden darf. 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 [3] betreibt ein umfassendes Anti-Piraterie-Programm. Unter anderem werden verdächtige CDs z. B. bei eBay ersteigert und analysiert. Sind auf solchen CDs Dateien der Mitglieder enthalten, werden die Anbieter (hier der eBay-Verkäufer) 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 wirklich auf. Zum einen findet heutzutage ein großer Teil der Klangerzeugung innerhalb des Rechners selbst statt, mit virtuellen Instrumenten, die innerhalb ihres Host-Sequencerprogramms praktisch ohne Verzögerung ansprechen (auch durch die seit den 80er Jahren enorm gesteigerte Rechnerleistung). Zum Anderen sind die Besitzer größerer Mengen von MIDI-Klangerzeugern meistens gleichzeitig Studiobetreiber, die über die technischen Möglichkeiten verfügen, etwaige Verzögerungen der Datenübertragung in der Audioaufnahme dieser Instrumente auszugleichen. Für einen Großteil der Anwender, der mit einer Basiskonfiguration wie Computer, Keyboard und Expander arbeitet, stellt sich das Problem gar nicht erst.
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 eingerichtet; selbst wenn inzwischen viele Klangerzeuger diese Möglichkeiten bieten, so bleiben sie doch auf das jeweilige Gerät beschränkt und können nicht von einem zum anderen übertragen oder angesteuert werden.
Eine andere Beschränkung ist die auf tastaturgesteuerte Instrumente. Dieses ist nicht verwunderlich, da eine Tastatur mit ihren diskreten Zuständen (eine Taste ist keine andere Taste, eine Taste ist entweder gedrückt oder nicht usw.) sich anbot, einfach in ein Datenübertragungsprotokoll integriert zu werden. Von Blaswandlern, Gitarrensynthesizern oder gar Drumsynthesizern war zur Entstehungszeit von MIDI nichts zu ahnen. Mit dem Aufkommen der Samplertechnik entstand aber die Anforderung, die Nachahmung auch von Instrumenten ohne Tastatur möglichst naturgetreu zu gestalten. Die Spielweise einer Geige, Gitarre, Flöte usw. ist aber grundverschieden von der eines Tastaturinstrumentes und lässt sich deshalb kaum oder nur unter Verrenkungen mittels MIDI übertragen. Dieses ist unter anderem eine große Herausforderung für Hersteller von Orchestersample-Bibliotheken oder Gitarrensimulationen.
Ebenfalls kritisiert wird die Auflösung von MIDI-Controllern in „nur“ 128 Stufen. Ein reales Instrument verfügt über unendlich viele Anschlagstufen und ist dadurch nur bedingt mit Hilfe von MIDI Hard- und Software nachzubilden bzw. ansteuerbar (siehe Bösendorfer 290SE). Für viele Musiker ist die daraus resultierende begrenzte Ausdrucksfähigkeit nicht ausreichend und zu kompliziert.
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