MIDI-Protokoll

Aus toolbox_interaktion
Wechseln zu: Navigation, Suche

MIDI Protokoll

Die Schnittstelle MIDI [ˈmɪdɪ] (engl.: musical instrument digital interface = „Digitale Schnittstelle für Musikinstrumente“) stammt ursprünglich aus dem Musikbereich und dient dort zur Übertragung „musikalischer Ereignisse“, wie z.B. dem Anschlagen einer Taste auf einem Keyboard. Eine MIDI-Nachricht besteht aus einem Statusbyte, gefolgt von zwei Datenbytes. Im Statusbyte wird festgelegt, welche Funktion bzw. Bedeutung die aktuelle MIDI-Nachricht hat und auf welches Gerät (Kanal) sich die Nachricht bezieht. Für die Definition der Funktion stehen 4 Bit zur Verfügung, für die Festlegung des Kanals 3 Bit. Ein Statusbyte wird dadurch gekennzeichnet, dass das 8. Bit, also da höchstwertige Bit, gesetzt ist. Damit stehen für die eigentliche Datenübertragung pro Byte nur 7 Bit zur Verfügung. In den beiden Datenbytes werden die für die jeweilige Funktion notwendigen Daten übertragen. Eine MIDI-Nachricht ist also folgendermaßen aufgebaut:

Statusbyte Datenbyte 1 Datenbyte 2
Inhalt (ursprünglich) Funktion und Kanal Tonhöhe Anschlag
Wertebereich 4 bit + 3 bit 7 bit (0 ..127) 7 bit (0 ..127)


MIDI-Befehle werden nur bei Bedarf verschickt. Wird z.B. eine Taste gedrückt, so wird eine Nachricht „Note on“ mit Tonhöhe und Anschlag gesendet. Diese Note bleibt beim Empfänger solange aktiv, bis eine Nachricht „Note off“ (entspr. Loslassen der Taste) für den gleichen Kanal und die gleiche Tonhöhe geschickt wird.

Die Codierung der Funktionen ist normiert und einschlägigen Quellen zu entnehmen (z.B. www.midi.org -> Table of MIDI-Messages).

Auszug aus der Definition (nach www.midi.org):

Status Databyte(s) Description
1000nnnn 0kkkkkkk

0vvvvvvv

Note Off event.

(nnnn) is the channel. This message is sent when a note is released (ended). (kkkkkkk) is the key (note) number. (vvvvvvv) is the velocity.

1001nnnn 0kkkkkkk

0vvvvvvv

Note On event.

(nnnn) is the channel. This message is sent when a note is depressed (start). (kkkkkkk) is the key (note) number. (vvvvvvv) is the velocity.


Beispiel:

a.) Note auf Gerät (Kanal) 0 mit Tonhöhe 17dec und Anschlagstärke 100 dec setzen:

10010000 00010001 01100100
Höchstes Bit = 1 = Statusbyte

001 = „Note on“ 0000 = Kanal 0

Höchstes Bit = 0 = Datenbyte

0010001 = 17(dec)

Höchstes Bit = 0 = Datenbyte

1100100 = 100(dec)


b.) Note abschalten (Funktion „Note off“ für gleichen Kanal und gleiche Tonhöhe wie in a.):

10000000 00010001 00000000
Höchstes Bit = 1 = Statusbyte

001 = „Note off“ 0000 = Kanal 0

Höchstes Bit = 0 = Datenbyte

0010001 = 17(dec)

Höchstes Bit = 0 = Datenbyte


Eine weitere wichtige Funktion ist „Control Change“

Status Databyte(s) Description
1011nnnn 0kkkkkkk

0vvvvvvv

Control Change.

(nnnn) is the channel. This message is sent when a controller value changes. Controllers include devices such as pedals and levers. Controller numbers 120-127 are reserved as "Channel Mode Messages" (below). (ccccccc) is the controller number (0-119). (vvvvvvv) is the controller value (0-127).

Diese Funktion erlaubt die Übertragung der Werte von Dreh- bzw. Schiebereglern. Der Befehl besteht aus dem Statusbyte, der Controllernummer und dem Controller-Wert. Einige Controllr-Nummern sind im Musikbereich definiert. So wird der Controller Nr. 7 als Lautstärke interpretiert. Im Bereich der Interaktion erlaubt dieser Befehl die Übertragung eines Sensorwerte im Bereich 0..127, was für viele Anwendungen gerade noch ausreichend ist. Die Zuordnung von 120 Sensoren („Controller-Nr.“) ist typischerweise ausreichend.


Anwendung im System:

Allgemeine MIDI-Interfaces bilden die Schnittstelle vom MIDI-erzeugenden Eingabegerät zum System. So können z.B. binäre und analoge Sensor-Werte vom Digitizer des I-CubeX-Systems oder von anderen MIDI-Quellen (andere Sensoren, Keyboard, Instrumente, ...) stammen. Das I-CubeX-System verfügt über eine MIDI-Schnittstelle. Der MIDI-Eingang am Computer wird über die Schnittstellenkomponenten „MIDI Sport“ realisiert.


Weitere Informationen sind unter folgendem Link zu finden:

sowie im internen Bereich).