„Open Sound Control“ – Versionsunterschied
[gesichtete Version] | [gesichtete Version] |
Link zur Spec repariert (war 404) |
Links Markierung: Begriffsklärungsseiten-Links |
||
Zeile 1: | Zeile 1: | ||
'''Open Sound Control (OSC)''' ist ein nachrichtenbasiertes [[Netzwerkprotokoll]], das hauptsächlich für die Echtzeitverarbeitung von Sound über Netze und Multimedia-Installationen verwendet wird. |
'''{{lang|en|Open Sound Control}} (OSC)''' ist ein nachrichtenbasiertes [[Netzwerkprotokoll]], das hauptsächlich für die Echtzeitverarbeitung von Sound über Netze und Multimedia-Installationen verwendet wird. |
||
Steuersignale können von Hardware (z. B. [[Musical Instrument Digital Interface|MIDI]]-[[Masterkeyboard|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), die 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. |
Steuersignale können von Hardware (z. B. [[Musical Instrument Digital Interface|MIDI]]-[[Masterkeyboard|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), die 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. |
||
Zeile 33: | Zeile 33: | ||
== Vorteile == |
== Vorteile == |
||
Die größeren Datentypen und die Unterstützung von Gleitkommazahlen sorgen dafür, dass Parametersprünge nicht mehr hörbar sind. |
Die größeren Datentypen und die Unterstützung von Gleitkommazahlen sorgen dafür, dass Parametersprünge nicht mehr hörbar sind. |
||
Außerdem kann OSC übers Netzwerk versendet werden, also Internet, WLAN usw., was die theoretische Möglichkeit für Internet- |
Außerdem kann OSC übers Netzwerk versendet werden, also Internet, WLAN usw., was die theoretische Möglichkeit für Internet-[[Jam]]s bietet. |
||
WLAN könnte den Kabelsalat im Studio reduzieren. |
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. |
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 über OSC wesentlich einfacher ist als über MIDI-SysEx-Nachrichten. |
Ein weiterer Vorteil ist, dass die Integration und Steuerung von Hardware über OSC wesentlich einfacher ist als über MIDI-[[SysEx]]-Nachrichten. |
||
== Nachteile == |
== Nachteile == |
||
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 andere Hersteller. Durch diese fehlende Festlegung ist bei einer weiten Verbreitung mit Inkompatibilitäten zu rechnen. |
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 andere 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- |
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 [[DIN-Steckverbinder|5-Pol-DIN-Steckbuchse]]. |
||
== Verwendung in Open Source == |
== Verwendung in Open Source == |
||
OSC findet auch immer mehr Anwendung in [[Open Source|Open-Source]]-Programmen. |
OSC findet auch immer mehr Anwendung in [[Open Source|Open-Source]]-Programmen. |
||
Da es immer eine klare Trennung zwischen [[Grafische Benutzeroberfläche|GUI]] und eigentlichem Programm auf Grund unterschiedlicher Thread-Prioritäten gibt, wird OSC als |
Da es immer eine klare Trennung zwischen [[Grafische Benutzeroberfläche|GUI]] und eigentlichem Programm auf Grund unterschiedlicher [[Thread (Informatik)|Thread]]-Prioritäten gibt, wird OSC als einfaches und universelles Protokoll zum Austausch zwischen GUI und Server benutzt. |
||
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. |
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. |
||
Version vom 16. Januar 2023, 22:34 Uhr
Open Sound Control (OSC) ist ein nachrichtenbasiertes Netzwerkprotokoll, das 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), die 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
Nachrichten werden in OSC auf denkbar einfache Art übermittelt. Ein OSC-Paket besteht aus seinen Daten und einem Byte, das die Länge der Daten angibt. Die Länge ist immer ein Vielfaches von 4 (was an der Blockgröße von 32 Bit liegt).
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 (Null-terminierte) Zeichenkette mit der Adresse des zu ändernden Parameters.
z. B.: "/synthesizer/zynaddsubfx/filter/lowpass1".
Nach einem Komma folgt die Anzahl und Art der Parameter in einer (Null-terminierten) 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".
Werte werden binär übermittelt. "1998.4f" repräsentiert die binäre Codierung des Gleitkommazahlwertes.
Vorteile
Die größeren Datentypen und die Unterstützung von Gleitkommazahlen sorgen dafür, dass Parametersprünge nicht mehr hörbar sind. Außerdem kann OSC übers Netzwerk versendet werden, also Internet, WLAN usw., was die theoretische Möglichkeit für Internet-Jams bietet. 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 über OSC wesentlich einfacher ist als über MIDI-SysEx-Nachrichten.
Nachteile
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 andere 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-Steckbuchse.
Verwendung in Open Source
OSC findet auch immer mehr Anwendung in Open-Source-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
- OpenSound Control Home Page (englisch)
- OpenSound Control Specification 1.0 (englisch)
- OSC-Projektseite (englisch)
- Vorschlag eines standardisierten SYN-Namensraums (englisch)