MIDI
MIDI steht für engl. Musical Instrument Digital Interface, also Digitale Schnittstelle für Musikinstrumente.
Definition
MIDI ist ein Datenübertragungs-Protokoll für die Übermittlung, Aufzeichnung und Wiedergabe von musikalischen Steuerinformationen zwischen digitalen Instrumenten oder einem PC. Das MIDI-Protokoll wird von vielen Soundkarten in modernen Rechnern unterstützt.
Das Protokoll wurde zu Beginn der 1980er maßgeblich von Sequential Circuits und Roland entwickelt und erstmals 1983 auf der Namm-Show in Anaheim, USA, vorgestellt. Überwacht wird der Standard von der IMA (International MIDI Association).
Eine gute Vorstellung davon, was MIDI ist, und wie es funktioniert, gibt in allen Einzelheiten Exploring MIDI (englisch) oder www.midiguide.de.
Funktion
Das MIDI-Protokoll stellt keine Klänge dar, sondern besteht aus Befehlen zur Ansteuerung von digitalen Instrumenten oder einer Soundkarte. Dazu werden Befehle übermittelt, wie beispielsweise "Note-on" ("Schalte Ton ein"), "Note-off" (Schalte Ton aus), "Key velocity" (Anschlagstärke) und Tonhöhe. Diese Anweisungen werden an einen Klangerzeuger (z.B. Synthesizer) geschickt, der sie dann entsprechend in Klänge umsetzt. Umgekehrt kann man auch auf einem Keyboard spielen und die dabei entstehenden Befehle aufzeichnen.
MIDI stellt darüberhinaus auch eine ganze Reihe spezieller Befehle zur Verfügung, die beispielsweise dazu verwendet werden, Klänge umzuschalten oder Klänge mittels der Übermittlung der Daten von Knöpfen, Schaltern und Drehreglern zu beeinflussen. Ferner können Geräte über die Leitung sogenannte Systemexklusive Meldungen, kurz SysEx, übertragen, die es im einfachsten Fall gestatten, ein Backup des Speicherinhaltes eines Gerätes anzufertigen oder in ein Gerät ein neues Betriebssystem zu laden.
Spielt man Musik auf einer MIDI-fähigen Tastatur und nimmt die MIDI-Signale auf, erhält man Dateien, die im Vergleich zur direkten Speicherung von Musik, bei der die Schallimpulse aufgezeichnet werden, wesentlich kleiner sind. Allerdings kann eine MIDI-Datei keine originalgetreue Wiedergabe gewährleisten, da der Klang beim Abspielen durch das Klangmodul bestimmt wird. So ist es beispielsweise möglich, eine Klavieraufnahme mittels MIDI mit einem Orgelklang abzuspielen.
Das MIDI-Protokoll wurde ursprünglich für die gegenseitige Steuerung von digitalen Instrumenten wie Synthesizern, Samplern, Drumcomputern, Sound- und Audio-Karten, Effektgeräten (Hall, Echo, Equalizer usw.), sog. Controllern (wie Masterkeyboards, Drum-Pads, Fader-Boxen usw.) entwickelt, dann aber schnell für Personal Computer adaptiert. Hardware-Sequenzer und Computer mit Sequenzer-Programmen (mittlerweile Audio-Produktions-Systeme) erlauben das Einspielen, Aufzeichnen, Bearbeiten und Ausgeben von MIDI-Daten.
Eine Pionierrolle auf diesem Gebiet spielte der Atari ST. Er war standardmäßig mit einer MIDI-Schnittstelle ausgestattet. Die Entwicklung wichtiger MIDI-Programme wie Cubase oder Notator begann auf dem Atari ST.
Heutzutage sind auch andere Computer-Plattformen (oft die "Nicht - Windows - Systeme") für die Musiker, die mit MIDI arbeiten, eine gute Wahl. Apple Macintosh, Commodore AMIGA, Pegasos mit dem MorphOS (als eines der jüngsten Mitglieder der Computerplattformen) und Standard-PCs mit alternativen Betriebssystemen finden hierbei Verwendung.
Ein Beispiel für einen Multimedia-MIDI-Sequenzer ist das Programm "Bars&Pipes Professional", das für den Commodore AMIGA geschrieben wurde. Ihm wird Benutzerfreundlichkeit und Funktionalität nachgesagt. Er wurde entwickelt von dem Programmierer-Team um Todor Fay und Melissa Jordan Gray der amerikanischen Musik-Software-Firma "Blue Ribbon Inc.", die sich auf MIDI-Programme spezialisiert hatte.
1995 wurde die Firma von Microsoft Inc. übernommen. Dort entwickelte das Team den musikalischen Teil des DirektX-Systems auf Windows-Systemen. Zur gleichen Zeit gab "Blue Ribbon Inc." alle seine kommerziellen Programme frei. 2002 gründete das Team die Firma NewBlue Inc.
Das Programm "Bars&Pipes" wird seit 2000 von Alfred Faust weiterentwickelt, nachdem Todor Fay den Quelltext dafür unter einer Microsoft-Lizenz freigegeben hatte.
Weitere bekannte Sequenzer Programme sind das bereits erwähnte Cubase, das vor allem auf Apple Macintosh-Rechnern Verbreitung gefunden hat, und Cakewalk.
Was MIDI auch kann, zeigt der japanische Musiker Susumu Hirasawa, der mit einem Commodore AMIGA und "Bars&Pipes Professional" arbeitet.
Später dann nutze E-Mu einen Teil des älteren DLS-Formates von Microsoft um Töne zu erzeugen, jedoch wurden diese in Soundfonts gespeichert. Das Format ist heute immer noch populär.
Midi-Anschlüsse: Midi-In, Midi-Out, Midi-Thru
Es existieren drei verschiedene Midi-Anschlüsse: Midi-In, Midi-Out und Midi-Thru.
Midi-In wird von einem Gerät zum Empfang verwendet. Midi-Out wird zum Senden verwendet. Midi-Thru schickt auf Midi-In empfangene Signale weiter.
Physisch sind die Anschlüsse als fünfpolige DIN-Buchsen realisiert.
Will man mit einem Keyboard einen Synthesizer steuern, verbindet man Midi-Out des Keyboards mit Midi-In des Synthesizers.
Sollen mit einem Keyboard zwei Synthesizer (A und B) angesteuert werden, verbindet man Midi-Out des Keyboards mit Midi-In des einen Synthesizers A sowie Midi-Thru des Synthesizers A mit Midi-In des Synthesizers B.
Ein häufig anzutreffendes Szenario ist der Einsatz eines Computers mit entsprechender Software als Sequencer sowie der Anschluss eines Keyboards oder elektronischen Pianos zum Einspielen der Noten und mehreren Synthesizern zur Klangerzeugung. Dabei wird üblicherweise das Keyboard mit Midi-Out an Midi-In des Computers angeschlossen, Midi-Out des Computers mit den Midi-In der Synthesizer, ggf. verkettet über Midi-Thru.
MIDI transportiert im Gegensatz zu digitalen Audiodaten nur reine Steuerinformationen, um einen MIDI-fähigen Klangerzeuger (Synthesizer, Keyboard) quasi ferngesteuert zum Klingen zu bringen. Dabei überträgt MIDI nicht die Klanginformation selbst, sondern nur den Befehl, beispielsweise die Note "a" im Klavier-Sound zu produzieren. MIDI-Befehle werden nicht nur zwischen modernen Musikinstrumenten ausgetauscht, sondern auch - mit einem MIDI-Sequenzer - vom Computer zwischengespeichert, bearbeitet und wieder ausgegeben. Damit lässt sich ein Musik-Arrangement in kleinen Portionen (Instrument für Instrument) einspielen, und das Ganze erklingt am Ende als vollständiges "Orchester".
Die Technik von Midi
Im Prinzip ist Midi eine mit RS-232 vergleichbare Schnittstelle für serielle Datenübertragung. Die Übertragungsgeschwindigkeit beträgt dabei 31250 Bits pro Sekunde. Jeder Midi-Befehl trägt neben seiner Befehlskennung und den Befehlsdaten auch eine Kanalnummer. Die Kanalnummer ist 4 Bits groß, es lassen sich dadurch 2^4, also 16 Kanäle ansteuern. Je nach Software sind die Kanäle 0-15 oder 1-16 durchnummeriert, wobei die Nummerierung von 1-16 üblich ist.
Midi-Geräte
Ein Gerät mit Midi-Schnittstelle nennt man Midi-Gerät. Dabei existieren unter Anderem folgende Geräte, die meist mit einer Midi-Schnitsttelle ausgestattet sind, sowie Zusatzgeräte:
- Expander: Ein Expander ist ein externer Klangerzeuger, meist ein Synthesizer.
- Synthesizer: Die meisten Synthesizer verfügen über eine Midi-Schnittstelle.
- Keyboard: Ein Keyboard enthält meist einen kleinen Synthesizer sowie eine Midi-Schnittstelle.
- Workstation: Eine Kombination aus Synthesizer, Masterkeyboard und Sequencer wird als Workstation bezeichnet.
- Sequencer: Der Sequencer dient dem Arrangement eines Musikstückes. MIDI-Sequencer erlauben das Programmieren, die Aufzeichnung sowie die Wiedergabe von aufgezeichneten oder programmierten MIDI-Informationen (Notenwerte, Anschlagsstärke sowie weiteren Steuerungsbefehlen wie z.B. Modulation). Software-Sequencer mit MIDI-Unterstützung haben sich auf dem Markt durchgesetzt, da sie über die Standard-Funktionen (Programmieren, Aufzeichnen, Abspielen) hinaus auch weitere Bearbeitungsmöglichkeiten in grafischer Form bieten (nachträgliches Editieren, Quantisierung usw.), wobei sie heutzutage ebenso Funktionen für das Aufzeichnen, die Bearbeitung und die Wiedergabe von Audiomaterial liefern. Für den Live-Einsatz erfreuen sich auch die in Keyboards oder Groove-Boxes integrierten Sequencer großer Beliebtheit.
- Midi-Interface für PC (Gameport): Der Gameport-Midi-Adapter erweitert Gameport einer Soundkarte um ein Midi-Interface mit meist 1 Midi-In, 1 Midi-Out und 1 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. Bei diesen Midi-Interfaces handelt es sich aber üblicherweise um synchrone Interfaces, d.h. auf allen Midi-Out-Kanälen liegt dasselbe Midi-Signal an. Die Zahl der Kanäle bleibt auf 16 beschränkt.
- Midi-Interface für USB oder Firewire (IEE1394): Ein USB- oder Firewire-Midi-Adapter ermöglicht den Anschluss von Midi-Geräten an die USB- bzw. Firewire-Schnittstelle. Ein solcher Adapter stellt meist ähnlich wie ein Gameport-Midi-Adapter ein oder mehrere Midi-Out, 1 Midi-In und eventuell 1 Midi-Thru zur Verfügung.
- 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 1 Midi-In, 1 Midi-Thru und meist 3 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 3 Midi-Out-Schnittstellen gibt es also 48 Midi-Kanäle (3x16).
- 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.
Siehe auch:
Midi über USB / Firewire
Immer häufiger anzutreffen ist der Einsatz von USB oder Firewire statt klassischem Midi. Dabei wird USB bzw. Firewire zum Tunneln von Midi verwendet, d.h. aus Sicht der Midi-Software handelt es sich um eine normale Midi-Verbindung. Die Hardware bedient sich jedoch des USB- oder Firewire-Bus anstelle der klassischen Midi-Schnittstelle, um die Midi-Daten zu transportieren.
Diese Lösung bietet mehrere Vorteile.
- USB- und Firewire-Schnittstellen gibt es an jedem (neueren) Rechner.
- USB und Firewire sind im Vergleich zu klassischem Midi sehr schnell. Low-Speed USB 1.1 bietet 1,5 MBit/s, Full Speed USB 1.1 bietet 12 MBit/s, High Speed USB 2.0 bietet 480 MBit/s. Firewire IEEE1394a bietet 100, 200 oder 400 MBit/s, mit Firewire IEEE1394b sind 800, 1600 oder 3200 MBit/s möglich. Im Vergleich dazu: Klassisches Midi ist 31250 Bit/s. Low-Speed USB 1.1 ist 45, High-Speed USB 2.0 15000, das zukünftige IEEE1394b 100000 Mal schneller als das klassische Midi (die Faktoren sind noch zugunsten von Midi abgerundet).
Aus der im Vergleich zu Midi enorm hohen Geschwindigkeit ergeben sich weitere Vorteile:
- Während Midi nur Instrumentsteuernde Daten, keine Töne selbst transportiert, eignen sich USB und Firewire auch für die Echtzeit-Übertragung unkomprimierter Klanginformation. Für CD-Qualität wird dazu eine Geschwindigkeit von ca. 1,5 MBit/s benötigt, für Studio-Qualität z.B. bei 32 Bit / 96 kHz in Stereo 6 MBit/s.
- 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.
- Die bei klassischem Midi oft zeitraubende Übertragung komplexerer Sysex-Meldungen wird bei USB oder Firewire auf einen Echtzeit-tauglichen Augenblick reduziert. Die Echtzeitansteuerung zahlreicher komplexer Synthesizer-Parameter wird dadurch sehr erleichtert.
Mehr und mehr Hersteller von Midi-fähigen Musikgeräten gehen wegen der besagten Vorteile dazu über, ihre Geräte neben den klassischen Midi-Schnittstellen auch mit USB- und Firewire-Schnittstellen auszustatten.
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 Sequencer 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 meist, 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.
Die Beispiele werden an 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 garnicht gespielt, wird dieses Signal einfach ignoriert. |
0x9n kk vv | Note, Anschlagsdynamik | Note On | Beginnt das Spielen einer Note. Zusätzlich wird die Anschlagsdynamik angegeben, die der Druckstärke auf die Taste in 128 Schritten von 0 (praktisch garnicht) bis 127 (sehr stark) entspricht. |
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. |
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 Aftertouch | Beschreibt das Ändern des Tastendrucks während die Tasten bereits gedrückt sind, für alle Tasten gemeinsam. |
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 16536 verschiedene mögliche Werte). |
0xFn xx... | Geräteabhängig | System Message | Steuermeldungen, häufig Geräte-spezifisch, Länge ebenfalls Gerätespezifisch (xx = Datenbytes) |
Controller
Für jemanden, der Midi einsetzen möchte, sind die meisten Midi-Nachrichten und ihr Aufbau von vergleichsweise geringem Interesse. Große Bedeutung haben jedoch die Controller, da sich mit ihnen auf einfache Art und Weise Gerätespezifische Klangparameter des aktuellen Instruments einstellen lassen. Die wichtigsten Controller sind (das erste Byte ist immer 0xBn mit n = Kanalnummer):
Sämtliche Controller sind nach dem Schema 0xBn cc vv aufgebaut mit n = Kanalnummer (number), cc = Art des Controllers (cc = controller), vv = neuer Wert für den Controller (vv = value).
Byte (hexadezimal) | Controller | Erläuterung |
---|---|---|
0xBn 00 vv | Bank select MSB | Auswahl der Klangbank, aus der mit Program Change (0xCn pp) das Instrument gewählt werden kann. |
0xBn 01 vv | Modulation MSB | Stellung des Modulationsrades |
0xBn 04 vv | Foot Controller MSB | Stellung des Fußpedals |
0xBn 05 vv | Portamento Time MSB | Dauer des übergangslosen Gleitens zwischen zwei Tonhöhen |
0xBn 06 vv | Data Byte | Datenbyte für einen RPN- / NRPN-Controller |
0xBn 07 vv | Main volume | Gesamtlautstärke |
0xBn 0A vv | Panorama position | Positionierung im Raum (links ... mittig ... rechts) |
0xBn 0B vv | Expression | Ausdrucksstärke des Klangs |
0xBn 62 vv | NRPN LSB | Niederwertiges Byte eines NRPN-Controllers |
0xBn 63 vv | NRPN MSB | Höherwertiges Byte eines NRPN-Controllers |
0xBn 64 vv | RPN LSB | Niederwertiges Byte eines RPN-Controllers |
0xBn 65 vv | RPN MSB | Höherwertiges Byte eines RPN-Controllers |
0xBn 78 vv | all sounds off | Klangerzeugung sofort einstellen (vv hat keine Bedeutung) |
0xBn 79 vv | Controller Reset | Setzt alle Controller auf ihre Ursprungswerte |
0xBn 7B vv | 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 | omni off | Das Gerät soll nur auf programmierte Kanäle reagieren (vv haben keine Bedeutung) |
0xBn 7D vv | omni on | Das Gerät soll auf allen Kanälen gleich reagieren (vv hat keine Bedeutung) |
0xBn 7E vv | 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 | poly on / mono off | Das Gerät soll mit maximaler Anzahl an Stimmen spielen |
Weblinks
Informationen zum Thema MIDI
- Homepage der MIDI Manufacturers Association
- MIDI Guide, deutschsprachiger Wegweiser über MIDI von (Roland)
- Deutschsprachige Seite zur MIDI Spezifikation von T.Paul Fischer
- Exploring MIDI - MIDI Spezifikation (Englisch)
- Englischsprachige Seite zur MIDI Spezifikation von J.Glatt
MIDI-Sequenzer
- Apple Logic Homepage
- Deutsche Usersite über Logic inkl. User-Forum
- Cakewalk Homepage (Sonar)
- Steinberg Homepage (Cubase/Nuendo)
- Steinberg Cubase Userforum
- Steinberg Nuendo Userforum
- Independent Cubase Userforum (Englisch)
- Magix Samplitude/Sequoia Homepage
- PG Music Homepage (Powertracks-Sequencer, Band-in-a-box
- Noteworthy Composer (Sequencer)
- Open Source Sequencer-Software für Linux
- Bars&Pipes Sequencer
MIDI-Files (MIDI-Musik)
- Suchmaschine für MIDI-Files - Lieder, Sequenzen
- www.piano-midi.de Classical Piano MIDI-Seite
- Scott Joplin, Ragtime Dance Beispiel-Song in MIDI-Format
- Videogame Music Archive