MIDI-Architektur

Dieser Artikel beschreibt die generische MIDI-Architektur, unabhängig von Plattformimplementierungen, APIs oder plattformspezifischen Funktionen.

Schlüssel Konzepte

Veranstaltungen

Das MIDI-Protokoll ist für die ereignisbasierte Kommunikation konzipiert. Ein Ereignis ist ein Hinweis darauf, dass zu einem bestimmten Zeitpunkt etwas passiert ist oder passieren wird. MIDI-Ereignisse werden durch Nachrichten , atomare Informationsbündel, dargestellt.

Transport

MIDI-Nachrichten werden codiert und über eine Transportschicht , abgekürzt Transport , übermittelt, die die MIDI-Rohdaten an den Empfänger sendet, der die Daten dann in Nachrichten dekodiert.

Zu den hardwarebasierten MIDI-Transporten gehören:

  • MIDI 1.0 Stromschleife mit 5-poligem DIN- Stecker
  • USB
  • Bluetooth Low Energy (BLE)

Nachrichtendarstellung

Eine MIDI-Transportspezifikation beschreibt, wie Nachrichten übermittelt werden. Obwohl die Paketierung von Nachrichten auf der untersten Ebene transportspezifisch ist, können Anwendungen auf einer höheren Ebene eine zeitlich geordnete Abfolge von Nachrichten als abgegrenzten Bytestrom betrachten. Dies ist möglich, da jede Nachricht genügend Informationen enthält, um die Gesamtlänge der Nachricht zu bestimmen, vorausgesetzt, der Beginn der Nachrichtengrenze ist bekannt.

Die meisten MIDI-Nachrichten sind kurz (ein bis drei Bytes), es besteht jedoch die Möglichkeit, längere Nachrichten über SysEx zu senden.

Zeitstempel

Ein Zeitstempel ist ein optionales Etikett, das einer Nachricht je nach Transportart beim Ursprung oder beim Empfang hinzugefügt wird. Der Zeitstempel wird in Zeiteinheiten wie Sekunden oder Ticks ausgedrückt.

Wenn kein expliziter Zeitstempel vorhanden ist, muss das System den Zeitstempel der unmittelbar vorhergehenden Nachricht oder die aktuelle Zeit ersetzen. Die Genauigkeit dieser Zeitstempel, ob explizit oder implizit, ist ein wichtiger Aspekt der Zuverlässigkeit eines MIDI-basierten Systems.

Zeitstempel sind nicht Teil des MIDI 1.0-Protokolls. Sie werden häufig als Teil einer plattformspezifischen API hinzugefügt. Der BLE-Transport verfügt über Zeitstempel, um den Zeitpunkt der mehreren einzelnen Nachrichten anzuzeigen, die innerhalb eines BLE-Pakets gesendet werden.

Geräte

Ein Peripheriegerät bietet Eingabe-/Ausgabefunktionen (I/O) für einen Computer. Die Begriffe MIDI-Peripheriegerät und MIDI-Gerät beziehen sich im Allgemeinen auf jedes Hardware- oder Softwaremodul, das das MIDI-Protokoll unterstützt. In diesem Dokument bezieht sich MIDI-Peripheriegerät auf die physische Einheit und MIDI-Gerät beschreibt das Modul, das MIDI tatsächlich implementiert.

Häfen

Ein Port ist ein Schnittstellenpunkt zwischen Computern und Peripheriegeräten.

MIDI 1.0 verwendet als Anschluss eine 5-polige DIN-Buchse. Jeder Port ist entweder OUT (Quelle für MIDI-Daten), IN (Senke für MIDI-Daten) oder THRU (d. h. ein IN , der direkt zu einem OUT geleitet wird).

Andere Transporte wie USB und BLE erweitern das Portkonzept .

Ein MIDI-Gerät verfügt über mindestens einen OUT- Port, IN -Port oder beides.

Das MIDI-Gerät liefert Nachrichtenströme, die von jedem OUT- Port ausgehen, und empfängt Nachrichtenströme, die an jedem IN- Port ankommen. Die Begriffe IN und OUT beziehen sich natürlich auf einen Port; Aus Sicht des anderen Hafens gilt der umgekehrte Begriff.

Verbindung

Beim MIDI 1.0-Transport ist ein OUT- Port aufgrund der Art der Stromschleife mit höchstens einem IN- oder THRU- Port verbunden. Bei USB- und BLE-Transporten gilt das Gleiche auf der untersten Ebene, allerdings kann eine Implementierung den Nachrichtenstrom neu konditionieren, sodass er an mehrere IN- Ports gesendet werden kann.

Kabel

Ein MIDI 1.0- Kabel ist das physische Kabelbündel, das einen OUT- Port mit einem IN- oder THRU -Port verbindet. Das Kabel überträgt nur Daten.

Hinweis: Es gibt nicht standardmäßige MIDI-Modifikationen, die die Stromversorgung über die beiden nicht verwendeten Pins liefern. Dies nennt man Phantomspeisung .

Ein USB-Kabel ist ähnlich, außer dass es eine große Vielfalt an Steckertypen gibt und das IN / OUT / THRU -Konzept durch die Host/Peripherie-Rolle ersetzt wird.

Beim Betrieb im USB-Host-Modus versorgt das Host-Gerät das MIDI-Peripheriegerät mit Strom. Die meisten kleinen MIDI-Peripheriegeräte benötigen eine USB-Einheit (100 mA) oder weniger. Allerdings benötigen einige größere Peripheriegeräte oder Peripheriegeräte mit Audioausgang oder Lichtern mehr Strom, als das Host-Gerät liefern kann. Wenn Probleme auftreten, versuchen Sie es mit einem anderen MIDI-Peripheriegerät oder einem USB-Hub mit eigener Stromversorgung.

Kanal

Jeder MIDI-Nachrichtenstrom wird auf 16 Kanäle gemultiplext. Die meisten Nachrichten richten sich an einen bestimmten Kanal, es gibt jedoch Nachrichtentypen, die nicht kanalspezifisch sind. Herkömmlicherweise werden die Kanäle von eins bis 16 nummeriert, obwohl sie durch Kanalwerte von null bis 15 dargestellt werden.

Wenn die Anwendung mehr als 16 Kanäle oder einen höheren Durchsatz benötigt, als ein Nachrichtenstrom unterstützen kann, müssen mehrere Ports verwendet werden.

In MIDI 1.0 wird dies durch mehrere Kabel erreicht, die Portpaare verbinden.

Beim MIDI-über-USB-Transport kann ein einzelner USB-Endpunkt mehrere Ports unterstützen, die jeweils durch eine Kabelnummer identifiziert werden [sic]. Gemäß der USB-MIDI-Spezifikation identifiziert die Kabelnummer den virtuellen Port innerhalb des Endpunkts.

Hinweis: Portnummer wäre eine genauere Bezeichnung gewesen, da sie einen Port identifiziert.

Somit kann ein einziges physisches USB-Kabel mehr als einen Satz von 16 Kanälen übertragen.

Plattformimplementierung

Wie in der Einleitung erwähnt, gelten diese generischen MIDI-Konzepte für alle Implementierungen. Informationen zur Interpretation der Konzepte auf der Android-Plattform finden Sie im Android MIDI-Benutzerhandbuch für android.media.midi .