Home | Lehre | Videos | Texte | Vorträge | Software | Person | Impressum, Datenschutzerklärung |
Stand: 2012-01-01
Schnittstellen zur Übertragung von musikalischen Steuersignalen
MIDI und OSC sind beide Event-based:
weniger Daten
zeitdiskret (Zipper Noise?!)
Ausgangszustand z.B. von Reglern unklar (in OSC notfalls immer alles übertragen)
Kennzahlen: Latenz, Jitter, Durchsatz (Throughput)
Historie: 1983: Roland MPU-401-Interface für PC; Sequential Circuits Prophet 600; gepflegt von der MIDI Manufacturer's Association; heute: in praktisch jedem elektronischem Instrument (prominente Ausnahme: Korg Wavedrum WD-X) und in mehr oder minder experimentellen Controllern
Übliche physikalische Schnittstelle: seriell mit 31.250 Bits pro Sekunde auf der Leitung, unidirektional, keine Quittierung, galvanisch getrennt, DIN-Stecker, IN/OUT/THRU; Akkorde werden zerlegt, Demo mit Audioaufnahme von MIDI
Alternativ mit XLR-Stecker oder über andere digitale Wege (mehrere „virtuelle“ MIDI-Kabel in beide Richtungen möglich):
USB (Stromversorgung!)
zwischen zwei Programmen auf demselben Rechner (Mac OS X: IAC, Windows: MidiYoke)
Internet-Protokoll (RTP MIDI)
MPEG-4-Ströme und -Dateien
Pro „Kabel“ 16 Kanäle (= unabhängige Tastaturen) mit Messages (Demo mit dem MIDI-Monitor aus PortMIDI) wie:
Note Off (128 Tasten)
Note On (128 Tasten, 127 Velocity-Stufen, 0 = Note Off; Wirkung der Velocity nicht standardisiert)
Aftertouch (getrennt pro Taste; extremes Datenvolumen: nur verwenden, wenn Noten-Befehle automatisch priorisiert werden)
Control Change (z.B. Modulationsrad, Volume [Wirkung nicht verpflichtend standardisiert], linkes, mittleres und rechtes Klavierpedal; für die „Continuous Controller“ typischerweise 7 Bit, also 128 Stufen; im Prinzip auch 14 Bit möglich, also ca. 16.000 Stufen )
Program Change (128 Möglichkeiten)
Channel Pressure (ein Wert pro Kanal)
Pitch Wheel (14 Bit, also ca. 16.000 Stufen)
Maximaler Durchsatz: zwei Bytes pro Note (mit „Running Status“), pro Byte acht Bits plus ein Start- und ein Stopbit, macht 0,64 Millisekunden pro Note, macht bestenfalls knapp 16 Noten in 10 Millisekunden. Also ist es fast unumgänglich, mehrere MIDI-Anschlüsse parallel zu nutzen. Dies gilt aber nur für die Verbindung mittels DIN oder XLR. MIDI über USB usw. wird meist schneller sein. Das 2005 angekündigte HD-MIDI hat sich noch nicht materialisiert. Yamaha hatte mit mLAN eine eigene Lösung für FireWire-Verbindungen propagiert.
Weitere MIDI-Funktionen:
Start/Stop
Synchronisation
System Exclusive
Mittel gegen Notenhänger usw.:
All Notes Off (ggf. regelmäßig gesendet, wenn keine Tasten gedrückt)
All Controllers Off
Active Sensing (quasi ein Totmannschalter; Zeitintervall: 300 ms; dieser Mechanismus wird erst aktiv, wenn mindestens einmal ein Active-Sensing-Befehl empfangen worden ist)
System Reset
Der auf MIDI aufbauende General-MIDI-Standard (GM) legt unter anderem fest:
128 Standard-Sounds (nur per Name spezifiziert)
Schlagzeug auf Kanal 10 mit standardisierter Verteilung (Drum-Map) auf die Klaviatur
MIDI-Dateien (Standard MIDI Files, SMF): MIDI-Befehle mit Zeitinformationen und Liedtexten als Dateien, zum Beispiel zum Datenaustausch zwischen Musiksoftware
Beispiel zur plattformübergreifenden MIDI-Programmierung mit dem C++-Framework JUCE (siehe cpp-Datei)
Open Sound Control (OSC): seit 2001 entwickelt und gepflegt am CNMAT; es ist insbesondere in der experimentellen elektronischen Musik beliebt. Derzeit Spezifikation Version 1.0; die Arbeiten an Version 1.1 sind unterbrochen.
Wesentliche Unterschiede zu MIDI:
keine physikalische Schnittstelle definiert; typischerweise per Internet-Protokoll UDP übertragen, also ohne Quittierung
vielseitige Datenformate, auch Gleitkomma (meist nur Gleitkomma implementiert)
wahlweise Nachrichten mit Zeitstempel (Zeit des Versands oder gewünschte Zeit des Abspielens, aber meist nicht implementiert)
Bündel von synchronen Nachrichten (aber meist nicht implementiert)
Versand an URL-ähnlich aufgebaute Adressen, wahlweise mit Mustervergleich (aber meist nicht implementiert)
freier Aufbau der Nachrichten (Segen und Fluch zugleich); vier Vorschläge für Namenssysteme siehe Abschnitt 5 in Best Practices; Vorschlag für ein MIDI-artiges Namenssystem
Beispiele für Hard- und Software:
Demo mit PureData und Mouse to OSC (siehe pd-Datei, dort auch Vermeidung von Zipper-Noise durch lineare Rampen demonstriert)