MIDI

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

MIDI (Musical Instruments Digital Interface) ist ein Protokoll zum Übertragen von Steuerbefehlen zwischen elektronischen Musikinstrumenten wie Keyboards, Synthesizern, Samplern etc. Die Daten werden seriell mit 31250 Baud über eine Stromschleife mit 5 mA übertragen. Zur Vermeidung von Masseschleifen ist die Empfängerseite durch einen Hochgeschwindigkeits-Optokoppler (z.B. H11L1, 6N138) galvanisch vom Sender getrennt. Das Protokoll kann von allen gängigen UARTs generiert werden.

Hardware

Die Hardware-Spezifikation ist, anders als die MIDI-Spezifikation als Ganzes, frei verfügbar[1].

MIDI benutzt fünfpolige DIN-Stecker, bei denen allerdings nur drei Pins belegt sind. Pins 4 und 5 übertragen das Signal, als Hin- und Rückleitung der Stromschleife; Pin 2 dient nur zur Abschirmung des Kabels.

Im Ruhezustand ist Pin 5 beim Sender offen, was als logisch "1" gilt; zur Erzeugung einer logischen "0" muss er Pin 5 auf Masse schalten:

MIDI-Sender.svg

Die Widerstände begrenzen den Strom, sowohl für den normalen Betrieb, als auch im Falle eines Kurzschlusses (in diesem Fall muss R2 gut 100 mA vertragen).

Wenn nur eine 5V-Spannungsversorgung zur Verfügung steht, müssen R1 und R2 durch jeweils 220 Ω ersetzt werden. Wenn der TXD-Pin des Mikrocontrollers nicht als Open-Drain konfiguriert werden kann, müssen die I/O-Spannung des Mikrocontrollers und die Versorgungsspannung an R2 übereinstimmen. Wenn der TXD-Pin die gut 5 mA Strom nicht verträgt, muss das Signal durch einen Puffer (z.B. SN74LVC1G07) zwischen TXD und R1 verstärkt werden.

Der Empfänger muss den Strom, der zwischen Pins 4 und 5 fließt, auswerten. Zur Vermeidung eine Masseschleife darf Pin 2 nicht direkt mit der Masse des Empfängers verbunden werden:

MIDI-Empfänger.svg

VCC ist 3,3 V oder 5 V. R1 dient zur Strombegrenzung. D1 schützt die LED des Optokopplers vor einer zu hohen Rückwärtsspannung.

Andere häufig verwendete Optokoppler sind 6N137 oder 6N138, die allerdings eine Versorgungsspannung von 5 V voraussetzen:

MIDI-Empfänger-6N137.svg MIDI-Empfänger-6N138.svg

Zur Verbesserung der EMI/EMC-Eigenschaften kann es notwendig sein, zusätzliche Kondensatoren und Filter einzusetzen.[1]

Probleme

MIDI wurde ursprünglich im Jahre 1982 von der Firma Roland eingeführt und ist aus heutiger Sicht veraltet. Das damals definierte Protokoll wurde für Einzelstimmengeräte erdacht und gestattet lediglich 7-Bit-Controllerwerte, wodurch Lautstärke und Stimmformung nur sehr grob eingestellt- und nicht ohne hörbare Stufen verändert ("gefaded") werden können.

Um dem abzuhelfen, wurden inzwischen für die meisten Controller Erweiterungen auf 14 Bits eingeführt.[2][3]

Was die Übertragungsgeschwindigkeit anbetrifft, sind die ca. 30 kHz der physikalischen Schnittstelle aber nach wie vor nicht geeignet, um viele Kanäle zu bedienen und mehrere gleichzeitige Ereignisse, wie einen beidhändigen Akkordanschlag angemessen zu beschreiben: Ein MIDI-Ergeinis benötigt mindestens 2 Bytes (bei kombinierten Controllerwerten 6) wodurch 8 Finger auch ohne irgendwelche zusätzlichen Controllerwerte bereits 16 MIDI Bytes erzeugen, was zu einer ungewollten Latenz von 8ms für den letzen Wert gegenüber dem ersten führt. Durch die verschieden langen Nachrichten kann es daher zu unmusikalischem, unvorhersehbaren Jitter kommen. Komplexere Lautstärkemdulationen mit quasianalogen MIDI-Gebern, wie bei der MIDI-Gitarre und MIDI-Flöte ("breath controller") sind damit im Zusammenhang mit realer MIDI-Hardware nur sehr eingeschränkt verwendbar.

Auch das USB-Protokoll, welches immer häufiger zur Anwendung kommt, bietet zwar eine mehr als ausreichende Bandbreite, jedoch wird dies von nur wenigen Klangerzeugern unterstützt. Lediglich Softwaresampler und andere PC-basierte Systeme wie SW-Synthesizer sind damit zu steuern. Hierbei wirkt sich aber die PC-typische Latenz des Betriebssystems sehr negativ aus. Ein tatsächlicher Echtzeitbetrieb ist mit keinem derzeit auf dem Markt verfügbaren Gerät möglich.

Erweiterungen

Statt des klassischen MIDI-Transports über serielle Verbindungen, sind heute höhere Bandbreiten möglich, z.B. durch MIDI über USB oder Ethernet.

Bei Geräten, die normalerweise nicht live eingesetzt werden, sondern an einen PC angeschlossen werden, hat sich MIDI über die USB-Schnittstelle durchgesetzt.

MIDI über USB

USB erlaubt höhere Bandbreiten, bei SuperSpeed bis zu 5 GBit/s. Die meisten derzeitigen MIDI-Geräte arbeiten aber noch mit Full Speed (12 MBit/s) oder High Speed (480 MBit/s). In der Praxis ist die Geschwindigkeit durch den Mikrocontroller und seine Software begrenzt; üblich sind ca. 100 kBit/s.

Das USB-MIDI-Protokoll[4] ist mit dem 'normalen' USB-Serial-Protokoll (CDC) nicht kompatibel; deshalb ist es nicht möglich, USB-seriell-Konverter-Chips unverändert und ohne zusätzliche Treiber für MIDI zu verwenden.

MIDI über FireWire

Von Yamaha und anderen Herstellern wurde 1999 das sogenannte Music-LAN definiert, welches auf FireWire basiert und vergleichsweise hohe Bandbreiten zugelassen hätte. Einige Teile des Protokolls wurden veröffenlicht und standardisiert[5], vollständige Interoperabilität ist damit aber nicht möglich.

Da keine Möglichkeit zum Aushandeln einer höheren Geschwindigkeit definiert ist, ist die Bandbreite auf die normalen 3125 Bytes/s begrenzt[6].

MIDI über Ethernet/WLAN: RTP-MIDI

Das Real-time Transport Protocol, das auf normalen UDP-Paketen basiert, hat auch die Möglichkeit, MIDI zu übertragen[7][8].

MIDI über Ethernet: AVB

IEEE-1722 (Audio/Video Bridging) definiert ein Protokoll zur Übertragung von Multimedia-Information. Dabei ist es notwendig, dass alle beteiligten Netzwerk-Karten und Switches/Router AVB in Hardware unterstützen.

AVB verwendet die gleichen Datenformate wie FireWire und hat die gleichen Einschränkungen.

proprietäre Schnittstellen

Andere Transportmethoden wie Parallelport (EPP) oder S/PDIF wurden vorgeschlagen, haben sich aufgrund fehlender Kompatibilität aber nicht durchgesetzt.

MIDI HD

Seit 2005 berät sich das MIDI-Komitee über einen offiziellen Nachfolger der MIDI-Spezifikation[9].

Siehe auch

Artikel auf Mikrocontroller

Beiträge auf Mikrocontroller

externe Links ins Web