- Open Sound Control
-
Open Sound Control (OSC) ist ein nachrichtenbasiertes Kommunikationsprotokoll, welches hauptsächlich für die Echtzeitverarbeitung von Sound über Netze und Multimedia-Installationen verwendet wird.
Steuersignale können von Hardware (z. B. MIDI-Keyboard) oder Software (z. B. Max/MSP, Pure Data, SuperCollider, ChucK, EyesWeb, vvvv) erzeugt und dann via OSC in Form von sog. Nachrichten (OSC-Messages), welche wiederum in Bündel (OSC-Bundles) verpackt werden, an eine Schnittstelle weitergegeben werden und so eine Ausgabe steuern. Dieses können z. B. weitere Soundausgaben sein, etwa eine Soundanwendung auf einem anderen Computer.
OSC ist unabhängig vom Transportprotokoll, wobei in der Regel jedoch UDP verwendet wird. Je nach Anforderung ist es aber auch möglich, OSC etwa über TCP oder eine serielle Schnittstelle zu transportieren.
Open Sound Control wurde an der University of California in Berkeley entwickelt.
Inhaltsverzeichnis
Nachrichtenübermittlung in OSC
Nachrichten werden in OSC auf denkbar einfache Art übermittelt. Ein OSC-Paket besteht aus seinen Daten und einem Byte, welcher die Länge der Daten angibt. Die Länge ist immer ein Vielfaches von 4 (was an der Blockgröße von 32 Bit liegt). Versendet wird es über TCP oder UDP.
Datentypen
Als Datentypen gibt es:
- int32
- float32
- OSCString, Folge von ASCII-Zeichen, nullterminiert (C-String), mit 0..3 NULL-Zeichen auf eine durch vier teilbare Länge aufgefüllt.
- OSCTimetag (64 Bit). Die ersten 32 Bit sind die Sekunden seit 1. Januar 1900, die zweiten 32 Bit stellen den Sekundenbruchteil dar, dies ist das NTP-Format.
- OSCBlob
Aufbau einer Nachricht
Eine OSC-Nachricht zuerst eine Zeichenkette mit der Adresse des zu ändernden Parameters.
z. B.: "/synthesizer/zynaddsubfx/filter/lowpass1".
Danach folgt die Anzahl und Art der Parameter in einer Zeichenkette. Für zwei Float-Werte würde man "ff" angeben.
Dann folgen die einzelnen Werte für die Parameter. Will man an unserem imaginären Synthesizer z. B. die Resonanz von LP-Filter1 ändern, würde man senden:
/synthesizer/zynaddsubfx/filter/lowpass1/resonance "f" 1998.4f.
Vorteile von OSC
Klar erkennbar hat OSC eine höhere Geschwindigkeit als MIDI, was für viele Musiker wichtig ist. Die größeren Datentypen und der Support von Gleitkommazahlen macht Parametersprünge nicht mehr hörbar. Außerdem kann OSC übers Netzwerk versendet werden, also Internet, WLan usw., was die theoretische Möglichkeit für Internet-Jams bieten würde. Wlan könnte den Kabelsalat im Studio reduzieren. Jeder moderne Computer hat schon eine Netzwerk-Schnittstelle integriert, was die Anschaffung eines Extra-Gerätes, wie bei MIDI, unnötig machen würde. Ein weiterer Vorteil ist, dass die Integration und Steuerung von Hardware wesentlich einfacher über OSC ist, als über MIDI-SysEx-Nachrichten.
Nachteile von OSC
Der größte Nachteil an OSC ist, dass zwar festgelegt ist wie Nachrichten übermittelt werden, die Bezeichnungen der Nachrichten aber nicht standardisiert sind. So kann jeder Hersteller einen anderen Namensraum für die Ansteuerung seines Synthesizers wählen, also beispielsweise andere Befehle zum Notenansteuern verwenden als anderen Hersteller. Durch diese fehlende Festlegung ist bei einer weiten Verbreitung mit Inkompatibilitäten zu rechnen. Zudem ist OSC nicht abwärtskompatibel zum bisherigen MIDI-Standard. Daher würde ein ausschließlich auf OSC basierendes Gerät mit älteren MIDI-basierenden Geräten nicht ohne weiteres zusammenarbeiten können. Weiterhin kann es im Moment für Hardware-Hersteller teurer und umständlicher sein, ein neues Gerät mit voll funktionstüchtiger Netzwerkschnittstelle herzustellen als mit der für MIDI bisher verwendeten und daher weitverbreiteten einfachen 5-Pol-Din-Midi Steckbuchse.
Verwendung in OpenSource
OSC findet aber immer mehr Anwendung in OpenSource-Programmen. Da es immer eine klare Trennung zwischen GUI und eigentlichem Programm auf Grund unterschiedlicher Thread-Prioritäten gibt, wird OSC als einfaches und universelles Protokoll zum Austausch zwischen GUI und Server benutzt. Dadurch hat jeder die Möglichkeit eine neue Oberfläche zu dem gleichen Programm zu schreiben, oder eine, über die sich mehrere Programme gleichzeitig steuern lassen.
Weblinks
Commons: Open Sound Control – Sammlung von Bildern, Videos und Audiodateien
Wikimedia Foundation.