Zum Inhalt springen

Open Sound Control

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 2. April 2013 um 09:49 Uhr durch KLBot2 (Diskussion | Beiträge) (Bot: 8 Interwiki-Link(s) nach Wikidata (d:Q1773100) migriert). Sie kann sich erheblich von der aktuellen Version unterscheiden.

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. Processing, Vvvv, Csound, Max/MSP, Pure Data, SuperCollider, ChucK, EyesWeb) 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.

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 enthält 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.

Commons: Open Sound Control – Sammlung von Bildern, Videos und Audiodateien