MIDI

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Version vom 7. Mai 2014, 12:37 Uhr von 195.33.171.8 (Diskussion) (→‎Probleme: 1 event = 3 Bytes, = 30 Bits -> 1ms @ 30kHz -> 8 events = 8 ms)
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 übertragen, die Empfängerseite ist durch Optokoppler (z. B. der Typ CNY17/II) galvanisch vom Sender getrennt. Das Protokoll ist dem RS-232 Protokoll sehr ähnlich und kann von gängigen UARTs generiert werden.

Probleme

MIDI wurde 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 Controllerwerte bis 255, wodurch Lautstärke und Stimmformung nur realtiv grob eingestellt und nicht ohne hörbare Stufen verändert ("gefaded") werden können. Einige Musikgeräte wie virtuell analoge Synthesizer und Keyboards glätten daher die ankommenden Controllerdaten auf 10 oder mehr Bits, um ein flüssigeres Verhalten zu realiseren.

Was die Übertragungsgeschwindigkeit anbetrifft, sind die gut 30 kHz nicht geeignet, um viele Kanäle zu transportieren und mehrere gleichzeitige Ereignisse, wie einen beidhändigen Akkordanschlag angemessen zu beschreiben: Ein MIDI-Ergeinis benötigt mindestens 3 Bytes (bei kombinierten Controllerwerten 6) wodurch 8 Finger auch ohne irgendwelche zusätzlichen Controllerwerte bereits 24 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 kommt es daher regelmässig zu unmusikalischem, unvorhersehbaren Jitter. Komplexere Lautstärkemdulationen mit quasianalogen MIDI-Gebern, wie bei der MIDI-Gitarre und MIDI-Flöte ("breath controller") sind damit sehr stark eingeschränkt.

Um das Problem zu mildern, werden MIDI-Daten mit einem Zeitstempel versehen, der es ermöglicht, dass die Endgeräte die Daten vorladen, sortieren und dennoch gleichzeitig auf Ergenisse reagieren. Damit müssen die Daten aber stark gepuffert werden und die Latenz steigt auf mindestens den Wert der letzten MIDI-Note an. Meist ist sie deutlich grösser, weil sicherheits ein entsprechend grossen Buffer vorgehalten werden muss. Dieses Vorgehen eigenet isch nur für offline Musikproduktionen am PC. Ein Spielen in live Situationen ist damit nicht sinnvoll möglich.

Erweiterungen

Statt des klassischen MIDI-Transports über serielle Verbindungen mittels COM, sind heute höhere Bandbreiten möglich, z.B. durch MIDI over USB und MIDI over Ethernet. Auch MIDI over S/PDIF wurde realisiert. Praktisch hat sich MIDI über die USB-Schnittstelle durchgesetzt, da sie PC-Kompatibilität gerantiert und viele moderne Musikinstrumente über eine USB-Schnittstelle verfügen.

Für geringe Bandbreiten und Live-Spiel wäre MIDI über S/PDIF am Besten, da es die geringste Latenz besitzt. Für grössere Bandbreiten und lange Übertragungswerte wäre MIDI over Ethernet am Besten geeignet, da es die grösste Bandbreite besitzt. In beiden Fällen wird aber die effektive Bandbreite und damit Latenz zum Einzelgerät nicht verbessert, da die Geräte weiterhin intern mit der Standard-MIDI-Schnittstelle arbeiten und die erhöhte Bandbreite nur aussen für die Übertragung mehrerer Kanäle genutzt wird.

MIDI over EPP : 50 kB/s

Diese Methode wurde von einer Reihe von MIDI-Geräteherstellern in den 90ern benutzt. Es erfolgt eine Bündelung von 8 MIDI-Kanälen bidirektional durch Nutzung des Parallelports des PC-Computers entweder über EPP oder SPP. Theoretisch wären mindestens 50kByte/s ereichbar, praktisch kann die maximale Bandbreite des Ports durch die Beschränkung des MIDI-Protokolls der Geräte mit rund 500kBit/s ausgelastet werden.

MIDI over S/PDIF : 3 MBit/s

Von verschiedenen Seiten wurden Anfang der Jahrtausendwende Vorschläge unterbreitet, MIDI über die S/PDIF-Schnittstelle zu betreiben. Viele Geräte hatten diese Schnittstelle schon physikalisch integriert, allerdings scheiterte es an der Verfügbarkeit ausreichend schneller Mikrocontroller, um dies in der Breite zu realisieren. Derzeit gibt es einige Speziallösungen einzelner Hersteller, MIDI-Geräte zu bündeln und über S/PDIF bis zu 32 Kanäle gleichzeitg über grössere Entfernungen zu übertragen, was Kabel und Repeater spart, die zusätzliche Latenz brächten.

MIDI over FireWire : 10 MBit/s

Von Yamaha und anderen Herstellern wurde 1999 das sogenannte Music-Lan definiert, welches vergleichsweise hohe Bandbreiten zugelassen hätte, allerdings auch nur dann die Latenz verkürzt, wenn die Geräte MLAN-fähig sind. Dies war aber nur bei einigen Geräten von Yamaha selbst sowie wenigen Geräten von Drittherstellern der Fall.

MIDI over Ethernet : 100 MBit/s

Seit geraumer Zeit gab es Bestrebungen, MIDI über Ethernet zu versenden, meist über ein modifizierte UDP-Protokoll. Vereinzelt wurden in der Vergangenheit auch Lösungen von verschiedenen Seiten vorgestellt. Dies erfordert jedoch Ethernet-Chips und entsprechend schnelle Prozessoren in den Geräten, die viele Fimen oft nicht zu investieren bereit waren. Eine Erweiterung der Spezifikation des MIDI Protokolls, gfs auch mit 1Gbit, ist derzeit durch das MIDI Komitee geplant, welches seit 2005 MIDI 2.0 definiert.

MIDI over USB : 3 GBit/s

Das USB 3.0 Protokoll erlaubt bis zu 5GBit/s. Praktisch sind über längere Distanzen etwa 3GBit sicher übertragbar. Die meisten derzeitigen MIDI-Geräte arbeiten aber noch über eine 1er Schnittstelle und haben bestenfalls USB 2.0implementiert. Dennoch wurde hiermit ein Quantensprung erzeugt, weil erstmalig USB-Masterkeyboards direkt USB-fähigen Klangerzeugern direkt gekoppelt werden konnten und so die Beschränkungen der Bandbreite von 31k überwundern wurde.

Siehe auch

Artikel auf Mikrocontroller

Beiträge auf Mikrocontroller

externe Links ins Web

Sonstiges