18. Feb 2025
2 Min
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
- Erstelle eine Base oder einen Container und gib ihm einen Global OP Shortcut wie
para1 - Füge Custom Parameter hinzu:
Gain,Color, was immer du brauchst - 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