Lubowski Design.

18. Feb 2025
2 Min

TouchDesignerOSCTool

OSC Global Remote für TouchDesigner

Beliebige Operatoren über OSC steuern

TouchDesigner hat Global OP Shortcuts: ein Name, den du einmal irgendwo in deinem Netzwerk setzt und den du dann aus jedem Script erreichen kannst. Ich wollte das auf OSC erweitern, sodass eine Control Surface (TouchOSC, mein Handy, ein Controller) jeden Parameter jedes Operators über ein klares Adressschema ansprechen kann.

Das Ergebnis ist OSC_Globalremote auf GitHub.

Wie es funktioniert

  1. Erstelle eine Base oder einen Container und gib ihm einen Global OP Shortcut wie para1
  2. Füge Custom Parameter hinzu: Gain, Color, was immer du brauchst
  3. Ziehe die OSC_Globalremote-Base ins Projekt. Sie startet bis zu 10 OSC-In-DATs, die sich einen Callback teilen

Das Adressformat

/<GlobalOPShortcut>/<Parameter>

Ein TouchOSC-Fader, der an /para1/Gain sendet, schreibt direkt in op('para1').par.Gain. Keine Mapping-Tabelle, keine projektspezifische Konfiguration.

Der Callback

Der onReceiveOSC-Handler ist der ganze Trick. Er parst die Adresse, teilt sie in Shortcut + Parameter und schreibt den Wert:

def onReceiveOSC(dat, rowIndex, message, bytes, timeStamp, address, args, peer):
    parts = address.strip('/').split('/')
    if len(parts) < 2: return
    shortcut, param = parts[0], parts[1]
    target = op(shortcut)
    if not target: return
    try:
        target.par[param] = args[0]
    except Exception:
        pass

Den eigentlichen Schreibvorgang lasse ich über einen winzigen Table → CHOP-Pfad laufen, damit ich die Werte im Netzwerk weiterverwenden kann, ohne sie erneut zu parsen.

Feedback zurück an TouchOSC

Verwende die OSC_GlobalFeedback-Base, aber sie muss innerhalb des Zielobjekts platziert werden, damit das Script weiss, wessen Wert zu veröffentlichen ist. Das ist die einzige Einschränkung des Systems; alles andere funktioniert.

Repo

github.com/CALKLECLE/OSC_Globalremote