OSC

OSC gibt Ihnen die ultimative Kontrolle über jeden Aspekt von Resolume.

OSC steht für Open Sound Control. Hier erfahren Sie mehr über dessen Ursprünge.

Die wichtigsten Vorzüge: Man kann OSC über ein Netzwerk übertragen und alles sehr viel feiner als via MIDI oder DMX steuern. Man aktiviert OSC in Resolume über das OSC Tab der Voreinstellungen.

OSC Adressen

In Resolume kann man jedes Element über seine OSC-Adresse steuern. Anstatt mit der Maus zu klicken, sendet man Meldungen an die Adresse eines Reglers. Man sendet Resolume praktisch eine E-Mail mit der Anweisung, einen bestimmten Regler auf einen bestimmten Wert einzustellen.

Die Adressen sind bereits alle festgelegt und eingerichtet, sodass man bei OSC alles sofort steuern kann – im Gegensatz zu MIDI und Shortcuts, bei denen man einen Regler zuerst mit einem bestimmten Shortcut koppeln muss.

Beispiel: Wenn man die Deckkraft von Ebene 1 auf 25 % setzen möchte, sendet man eine OSC-Meldung an die Adresse "/composition/layers/1/video/opacity" und gibt dabei 0.25 als Wert an.

/composition/layers/1/video/opacity 0.25

Das war’s! Mehr muss man nicht tun. Man muss keine Shortcuts zuweisen oder Vorlagen laden. Mit dieser OSC-Meldung kann man immer die Deckkraft von Ebenen einstellen. Auf jedem Computer mit Resolume. Immer.

Auf die gleiche Weise kann man jedes andere UI-Element steuern.

Beispiel: Wir möchten den Abspielkopf von Clip 8 in Ebene 2 an den Anfang des Clips setzen. Hierzu senden wir einfach folgende Meldung:

/composition/layers/2/clips/8/transport/position 0.0

Wie findet man nun die Adresse eines bestimmten Reglers heraus? Am einfachsten schaltet man in den OSC Shortcut-Modus (Shortcuts > Edit OSC) und klickt auf den gewünschten Regler.

Im Shortcuts Panel wird die korrekte Adresse angezeigt. Man kann die Adresse anklicken und mit Copy&Paste weiter verwenden.

"Aber Resolume, warum gibt es keine Liste aller vorhandenen OSC-Adressen? Das wäre superpraktisch!"

Ja, sollte man meinen, aber eigentlich doch nicht. Die Adressenliste ändert sich, je nachdem wie Sie Ihre Komposition eingerichtet haben. Und die Liste füllt sich sehr schnell. Hier ist beispielsweise eine Liste mit den OSC-Adressen für eine Komposition mit nur einem Clip auf nur einer Ebene ohne Effekte. Viel Spaß.

Mehrere Adressen

Einige Regler sind über mehr als eine Adresse erreichbar. Beispiel: Hier sind die beiden Adressen, über die man den Speed-Parameter eines Goo-Effekts auf Ebene 1 erreichen kann.

Welche Sie brauchen, hängt davon ab, wie Sie sie verwenden möchten.

Die erste ist die sogenannte absolute Adresse. Sie steuert den Goo-Effekt NUR auf der ersten Ebene.

Die zweite ist die relative Adresse. Sie steuert den Goo-Effekt immer, aber auf unterschiedlichen Ebenen – je nachdem, welche Ebene aktuell gewählt ist. Wenn Sie also Goo-Effekte auf allen Ebenen nutzen, können Sie alle mit der gleichen OSC-Adresse steuern. Sie müssen nur zuerst die gewählte Ebene umschalten.

Wenn die aktuell gewählte Ebene keinen Goo-Effekt nutzt, können Sie dennoch etwas an diese Adresse senden. Es wird einfach nichts passieren.

Type Tags und Range

Wenn Sie ein UI-Element wählen, können Sie auch sein Type Tag (eine Art Typenschild) sehen. Das Type Tag zeigt an, welche Werte man an eine Adresse senden kann und was dabei als Ergebnis herauskommt.

Float

Beispiel: /composition/video/effects/transform/scale hat das Type Tag Float 0.0 - 1.0 (range 0.0 - 1000.0).

Man kann also Bruchzahlenwerte zwischen 0 und 1 senden, um die Komposition auf einen Wert zwischen 0 % und 1000 % zu skalieren. Die 0 setzt die Komposition auf 0 %, die 0.1 auf 100 %, die 0.5 auf 500 % und die 1.0 auf 1000 %.

Entsprechend hat /composition/video/effects/transform/rotationz den Type Tag Float 0.0 - 1.0 (range -180.0 - 180.0). Der Wertebereich erstreckt sich also von gedrehten 180 Grad im Gegenuhrzeigersinn auf 180 Grad im Uhrzeigersinn. Der gesendete Wert 0.5 setzt das Objekt genau in die Mitte.

Int

Manche Adressen haben Int als Type Tag.

Beispiel: Die Überlagerung von Ebene 1 erreichen Sie mit /composition/layers/1/video/mixer/blendmode. Und man kann ihr eine Ganzzahl zwischen 0 und 50 senden.

Jede Ganzzahl wählt eine der 51 verfügbaren Überlagerungen.

"Moment! 51? Es waren doch Ganzzahlen bis 50?"

Ja. Wir Computertypen beginnen bei 0 zu zählen und das sind dann insgesamt 51. Ein bisschen seltsam, aber so ist das Leben.

Nerd-Alarm! Sie können auch weiterhin einen Bruchzahlenwert an Adressen senden, die einen „Int“ definieren. Der Fließkommawert zwischen 0.0 und 1.0 wird dann linear auf den Bereich des adressierten Parameters übersetzt.

Color

Als Sonderfall kann man einen OSC Farbwert zu Farbwählern (color pickers) senden.

OSC Farbwerte haben das Type Tag r, gefolgt von einer vorzeichenlosen Ganzzahl, die eine 32-Bit RGBA-Farbe darstellt. Durch Bitverschiebung der RGBA-Werte kann man eine Farbe als Ganzzahl schreiben. Wenn Ihnen das alles zu "nerdy" ist, lassen Sie die ganze Arbeit einfach von Vezer erledigen.

String

Man kann Text zu Texteingängen senden. Auf diese Weise kann man die Text Block- und Text Animator-Quellen dynamisch aktualisieren.

Strings haben das Type Tag s, gefolgt vom eigentlichen Text.

Absolute Werte

"Moment mal, Resolume. Dieses ganze Type Tag-Ding scheint mir unnötig komplex. Warum muss ich ständig rechnen und nachschlagen, welche Überlagerung welche Nummer hat. Und welcher normale Mensch beginnt bei 0 zu zählen oder definiert eine Farbe durch Bit-Verschiebung? Das ist schon extrem geeky! Kann ich nicht wie jeder andere auch sagen was ich brauche?"

Ein guter Einwand, und tatsächlich geht das auch. Obwohl Sie ein VJ und definitionsgemäß kein normaler Mensch sind. Aber Sie können einfach sagen, was Sie brauchen. Wie ein ganz normaler Mensch.

Beispiel: Bei Überlagerungen kann man einfach den Namen der gewünschten Überlagerung als String senden.

/composition/selectedlayer/video/mixer/blendmode "Alpha"

Dadurch wird die Überlagerung der gewählten Ebene auf Alpha eingestellt.

Wenn Sie mit Ihrer zum Senden von OSC benutzten Anwendung mehrere Argumente senden dürfen, können Sie bei absoluten Werten ähnlich vorgehen.

Dies ist besonders praktisch, wenn Sie einen Clip auf einen bestimmten X- und Y-Pixelwert positionieren möchten. Hierzu definieren Sie zuerst, dass Sie den absoluten Wert verwenden möchten, und benutzen "a" als erstes Argument nach der Adresse, gefolgt vom eigentlichen absoluten Wert.

/composition/layers/1/clips/1/video/effects/transform/positionx "a" 320

Dies positioniert Clip 1 von Ebene 1 auf 320 Pixel entlang der X-Achse.

Relative Werte

Es kommt noch besser! Man kann relative Änderungen an einem Wert definieren.

Beispiel: Man kann mit "+", "-" oder "*" den aktuellen Wert jeweils zum eingehenden Wert addieren, vom eingehenden Wert subtrahieren oder mit dem eingehenden Wert multiplizieren:

/composition/layers/1/video/opacity "+" 0.2

Erhöht die Deckkraft von Ebene 1 um 20 %.

Eigentlich ... werden dem Deckkraftwert feste 20 % hinzugefügt. Der Wert wird eigentlich nicht um 20 % erhöht. Dies wäre dann /composition/layers/1/video/opacity "*" 1.2. Aber ich wusste nicht, wie ich das in einem Satz und noch dazu verständlich formulieren sollte.

OSC zu Resolume senden

Okay, inzwischen haben Sie wahrscheinlich verstanden, wie OSC in Resolume funktioniert. Aber wie sendet man OSC?

Gute Frage! Es gibt eine Fülle von Anwendungen, die OSC senden können. 

Zu den bekannteren zählen TouchOSC und Lemur, die beide für iOS- und Android-Geräte verfügbar sind. Da man mit TouchOSC und Lemur eigene Interfaces erstellen kann, lassen sie sich ideal mit Resolumes festen Adressen kombinieren. Es kann also jeder sein selbst erstelltes Interface laden und es wird sofort funktionieren.

Für OSX gibt es den großartigen Vezer. Mit Vezer kann man komplexe Schlüsselbildanimationen kreieren, mit denen man wiederum jedes Element von Resolumes UI steuern kann.

Und Resolume Power User Zoltan Palffy hat eine eigene Anwendung mit speziellen Funktionalitäten erstellt, um mit Resolume noch besser Theateraufführungen steuern zu können

In Kombination mit einer kreativen Programmiersprache kann OSC seine Stärken richtig entfalten. Dann kann man eine eigene Logik erstellen oder Daten von verschiedenen Prozessen extrahieren und in Resolume einspeisen.

Processing, openFrameworks, Arduino, TouchDesigner, JUCE, Max/MSP und eine Menge anderer Anwendungen verfügen über Libraries, die das Senden und Empfangen von OSC-Meldungen unterstützen. Mit Max4Live kann man OSC von Ableton Live aus senden. Es gibt sogar Javascript-Libraries, um OSC direkt aus dem Browser zu senden.

Die Optionen sind nahezu endlos. Für den Anfang liefern wir zwei Beispiele dafür, wie man OSC in TouchOSC und Processing verwenden kann.

Verbindungen herstellen

OSC-Meldungen werden über ein Netzwerk übertragen. Wenn Sie OSC zwischen zwei Computern nutzen wollen, müssen diese zunächst mit dem gleichen Netzwerk verbunden sein. Da OSC-Meldungen ziemlich klein sind, reicht ein WiFi-Netzwerk völlig aus, falls Sie nicht pro Sekunde 1000s an Meldungen übertragen.

Tipp! Ein WiFi-Netzwerk wird deutlich schwächer, wenn 5000 Leute während einer Party snapchatten.

Wenn Sie OSC von einem Computer zu einem anderen senden möchten, müssen Sie zuerst wissen, wohin Sie die Meldungen übertragen sollen. Sobald die OSC-Eingabe in Resolume aktiviert ist, werden die anderen Computer darüber informiert, wohin sie ihre Meldungen senden sollen. Hierfür wird ein Protokoll namens ZeroConf verwendet, das beim Mac auch Bonjour genannt wird. Wenn die Sender-Anwendung das Protokoll unterstützt, wird Resolume direkt als Ziel angezeigt.

Wenn Ihre Sender-Anwendung ZeroConf/Bonjour nicht unterstützt, müssen Sie die IP-Adresse und Port-Nummer manuell eintragen.

IP-Adressen sind eigentlich Zahlenreihen, die Computer darüber informieren, wo sie einander finden können. Resolume zeigt die IP-Adresse des Computers, auf dem es läuft, am oberen Rand der OSC-Voreinstellungen an.

Jede Anwendung kann die Port-Nummer definieren, über die es gerne OSC-Meldungen empfangen würde. Standardmäßig ist Resolume auf Port-Nummer 7000 eingestellt. Diese lässt sich jedoch beliebig ändern.

Das OSC Voreinstellungen-Tab verfügt über ein Ausklapp-Fenster, in dem die letzten 200 von Resolume empfangenen OSC-Meldungen angezeigt werden. Hier kann man komfortabel prüfen, ob man überhaupt etwas empfängt und um welche Meldungen es sich handelt.

OSC-Ausgabe

Resolume kann nicht nur OSC-Meldungen empfangen, sondern via OCS auch darauf antworten. Die Option „OSC Output“ lässt sich auch in den OSC Voreinstellungen aktivieren.

Welche Meldungen Resolume sendet, kann man auf verschiedene Weise verwalten. Die einfachste Möglichkeit sind OSC Shortcut-Vorlagen.

Schalten Sie via Shortcuts > Edit OSC in den OSC Shortcut-Modus. Es erscheint das Shortcuts Panel. Hier können Sie Ihr aktuelles OSC Ausgabe-Setup prüfen und zwischen einigen Vorlagen wechseln.

Wenn die Vorlage "Output All OSC Messages" gewählt ist, gibt Resolume ALLE OSC-Meldungen aus.

Es wird also alles übertragen, das sich im Interface verändert. Clip Trigger, Maus- und MIDI-Eingaben, Parameter-Automation, Abspielkopf-Position des Clips usw. Einfach alles. An alle Adressen. Absolut und relativ.

Auf diese Weise kann man den aktuellen Status von Resolume bequem überwachen. Beispiel: Sie entwickeln eine Anwendung, die basierend auf Clip Triggern eine bestimmte Aktion durchführt. Mit der Output All-Vorlage können Sie die eingehenden Daten ziemlich einfach nach den für Sie interessanten Adressen filtern und Ihre Logik darauf aufbauen.

Die Dinge können sich allerdings auch schnell ansammeln. Wenn Sie dann Meldungen über eine schwankende Drahtlosverbindung übertragen, können hier und da auch mal ein paar Meldungen verloren gehen.

Damit Sie die benötigten Daten und NUR die benötigten Daten auch erhalten, können Sie Ihre eigene Vorlage erstellen. Hierfür wählen Sie „New...“ aus dem Preset-Dropdown-Menü. Geben Sie der Vorlage einen passenden Namen und gehen Sie alle UI-Elemente durch, für die Sie OSC-Ausgaben übertragen möchten.

Beispiel: Sie möchten nur wissen, ob Master Bypass aktiviert ist. Damit Ihr Steuerprogramm weiß, dass es in diesem Fall gefahrlos bestimmte Änderungen vornehmen kann.

Suchen Sie hierfür oben links den Master Bypass Button. Mit einem Rechtsklick können Sie die OSC-Ausgabe nur für diesen Button aktivieren. Alternativ können Sie auch die OSC-Ausgabe für ein UI-Element im OSC Shortcuts Panel aktivieren.

Indem Sie die Ausgabe nur selektiv für interessante Elemente aktivieren, können Sie den Netzwerk-Datenverkehr deutlich reduzieren.

Wildcards

Warte mal, Resolume. Ich interessiere mich für die Deckkraft jeder meiner 12 Ebenen und die Clip Trigger aller 472 Clips in meinem Deck. Ich werde jetzt nicht jedes dieser Elemente einmal anklicken. Da hab‘ ich wirklich Besseres zu tun.

OK, der Einwand ist berechtigt. Dafür haben wir Wildcards integriert. Bei Clips, Ebenen und Gruppen kann man die OSC-Ausgabe für alle Elemente gleichzeitig aktivieren.

Beispiel: Wir interessieren uns für die Video-Deckkraft jeder Ebene. Nachdem wir einen OSC Output Shortcut für eine Ebene erstellt haben, können wir den Umfang (Scope) auf 'All Layers' erweitern.

Boom. In einem Rutsch haben wir die Ausgabe der Video-Deckkraft für alle Ebenen aktiviert. Sie können das Gleiche für Clip Trigger und sogar Clips, die noch gar nicht hinzugefügt wurden, nachvollziehen.

Eigene OSC-Meldungen

Manchmal interessiert man sich nicht für den Zustand des Resolume Interface. Manchmal will man nur eine kleine Meldung an eine andere Anwendung senden. Vielleicht wollen Sie einen Cue-Punkt in Vezer triggern, wenn Sie einen bestimmten Clip in Resolume triggern. Oder Sie wollen den Abspielkopf eines Clips in Resolume mit den Formen in einem Processing Sketch koppeln. 

Vielleicht sind das jetzt nicht die besten Beispiele. Eigentlich sind Sie ja der kreative Kopf. Ich sitze nur im Büro und schreibe ein Handbuch, das eh keiner liest.

Dies ist via "Custom Address" möglich.

Nachdem Sie eine OSC-Ausgabe für etwas erstellt haben, können Sie diese Option mit dem Dropdown-Menü wählen.

Resolume füllt die aktuelle Adresse für Sie aus, aber man kann sie beliebig ändern. Resolume überträgt dann den Wert, den das Element im Resolume Interface hat, aber nicht an die feststehende Adresse, sondern an die neue.

Ziele

So wie andere Anwendungen OSC speziell zu Resolume senden müssen, so muss auch die OSC-Ausgabe von Resolume ein bestimmtes Ziel haben.

In den OSC-Voreinstellungen kann man alle Anwendungen im Netzwerk wählen, die sich via ZeroConf/Bonjour angemeldet haben.

Man kann auch wahlweise nur an diesen Computer (Localhost) oder an alle Computer im Netzwerk (Broadcast) senden.

Wenn Sie an eine Anwendung senden möchten, die ZeroConf/Bonjour nicht unterstützt, können Sie die IP-Adresse auch manuell einstellen.

Im Fall von Localhost, Broadcast und manueller IP müssen Sie auch den Ausgabe-Port (Outgoing Port) einstellen. Dies sollte natürlich der Eingangs-Port der anderen Anwendung sein.

Im Bundle oder nicht

Bei Aktivierung der Option "Use Bundles" werden alle Meldungen zusammengepackt und in einem großen Bündel gesendet. Für die meisten OSC-Anwendungen spielt es keine Rolle, ob im Bundle übertragen wird oder nicht. Manche Anwendungen ziehen allerdings die aktivierte oder deaktivierte Option vor.

Abfragen

Man kann Resolume auch fragen, wie ein bestimmter Parameter eingestellt ist. Dies ist sehr praktisch beim Aufbau komplexer Steuermechanismen, die abhängig von den Ereignissen in Resolume eine andere Ansicht haben.

Anstatt ständig die Ausgaben von Resolume zu überwachen, kann man Resolume genau dann nach den benötigten Informationen fragen, wenn man sie braucht.

Hierzu schickt man einfach ein "?" an die betreffende Adresse.

Beispiel: Wenn man

/composition/layers/1/video/mixer/blendmode "?"

an Resolume sendet, erhält man eine Antwort von der gleichen Adresse mit dem ganzzahligen Wert der aktuellen Überlagerung von Ebene 1. Der Hammer!