
Open Sound Control (OSC)
Senden Sie Befehle an DMXDesktop und empfangen Sie Statusübertragungen über OSC
Was ist OSC?
Open Sound Control (OSC) ist ein offenes, transportunabhängiges, nachrichtenbasiertes Protokoll zur Kommunikation zwischen Computern, Klangsynthetisierern, Lichtsoftware und anderen Multimedia-Geräten. Es wurde von Matt Wright und Adrian Freed am CNMAT, University of California, Berkeley, entwickelt, und die Version 1.0 wurde im März 2002 veröffentlicht. DMXDesktop implementiert OSC in beide Richtungen: Es empfängt Befehle von externen Controllern und sendet Statusänderungen an andere Anwendungen.
Während DMX512 einen festen Stream nummerierter Slots sendet, sendet OSC benannte Nachrichten. Das ist der ganze Unterschied in einem Satz. Eine OSC-Nachricht besteht aus drei Teilen:
- Ein Adressmuster, eine Textzeichenfolge, die mit einem Schrägstrich beginnt und wie ein URL-Pfad aussieht, zum Beispiel
/master/dimmer. - Eine Typ-Tag-Zeichenfolge, ein Komma gefolgt von einem Buchstaben pro Argument. Jede OSC-Implementierung unterstützt
i(32-Bit-Ganzzahl),f(32-Bit-Gleitkommazahl),s(Zeichenfolge) undb(binärer Blob). - Die Argumente selbst, in der Reihenfolge, die die Typ-Tags deklarieren. Alle Zahlen sind big-endian und jeder Wert wird auf ein Vielfaches von 32 Bit aufgefüllt.
Zwei Dinge überraschen Menschen, die von MIDI oder DMX kommen. Erstens, OSC hat keine offizielle Portnummer. Die Spezifikation ist absichtlich transportunabhängig und weist keine zu, und es gibt auch keinen registrierten OSC-Port bei IANA, sodass jede Anwendung ihren eigenen wählt und du ihn an beiden Enden einstellst. DMXDesktop hört standardmäßig auf Port 8000 und sendet Ausgaben an Port 9000.
Zweitens unterstützen OSC-Adressmuster Platzhalter, sodass eine Nachricht mehrere Ziele gleichzeitig erreichen kann: ? entspricht einem beliebigen einzelnen Zeichen, * entspricht einer beliebigen Zeichenfolge, [abc] entspricht einem beliebigen Zeichen in einer Menge, und {foo,bar} entspricht einer beliebigen Zeichenfolge in einer Liste.
OSC hat auch Bundles: mehrere Nachrichten, die mit einem 64-Bit-Zeitstempel im NTP-Format gruppiert sind, sodass ein Empfänger sie als eine atomare Gruppe anwendet, entweder sofort oder zu einem geplanten Zeitpunkt. OSC trägt den Zeitstempel, synchronisiert jedoch die Uhren nicht selbst, sodass beide Maschinen ihre eigene korrekte Zeit benötigen.
Ein Hinweis zu den Versionen, da es die Leute verwirrt: OSC 1.1 existiert, aber es gibt kein Spezifikationsdokument für 1.1. Seine Autoren veröffentlichten stattdessen ein Papier für NIME 2009 und ließen es als Referenz stehen. OSC 1.1 behält das 1.0-Nachrichtenformat bei, fördert mehrere optionale Typen wie True, False, Null und Impulse zu erforderlichen und fügt das // Mehrfachplatzhalter hinzu. Nachrichten, die für 1.0 geschrieben wurden, funktionieren weiterhin mit 1.1-Empfängern.
So funktioniert es
DMXDesktop unterstützt sowohl OSC-Eingang als auch -Ausgang. Der OSC Input Server lauscht auf eingehende Nachrichten, um verschiedene Aspekte der Software zu steuern. OSC Output überträgt Statusänderungen und Ereignisse an externe Anwendungen, was eine Echtzeitsynchronisation mit Videosoftware, Visualisierern und benutzerdefinierten Integrationen ermöglicht. Beide unterstützen das UDP-Protokoll für eine latenzarme Kommunikation.
Erste Schritte
- Öffnen Sie DMXDesktop und navigieren Sie zu Einstellungen → Allgemein
- Im OSC-Bereich finden Sie:
- Aktivieren/Deaktivieren des OSC Input-Buttons
- Auswahl der Netzwerk-Schnittstelle
- Portnummer für den Eingang (Standard: 8000)
- Protokollauswahl (UDP/TCP)
- Aktivieren/Deaktivieren des OSC Output-Buttons
- Ausgabe-Host und Port (Standard: 127.0.0.1:9000)
- Der Entdeckungsdienst läuft auf Port 9000 und ermöglicht es kompatiblen Apps, DMXDesktop automatisch im Netzwerk zu finden
Verbindung mit TouchOSC
TouchOSC ist ein beliebtes Tool zur Steuerung einer Vielzahl von Anwendungen und kann verwendet werden, um DMXDesktop über das OSC-Protokoll zu steuern.
Bitte beachten Sie: TouchOSC ist kostenpflichtige Software, bitte besuchen Sie die offizielle Website für Details.
- Laden Sie TouchOSC auf Ihr Gerät herunter und installieren Sie es:
- iOS: App Store
- Android: Google Play
- Desktop: Desktop
- Öffnen Sie TouchOSC und erstellen Sie eine neue Verbindung:
- Protokoll: OSC
- Host: Die IP-Adresse Ihres Computers (angezeigt in den DMXDesktop-Einstellungen)
- Sendepot: 8000 (Standard)
- Empfangsport: 9000 (für den Entdeckungsdienst)
- Verwenden Sie die Entdeckungsfunktion in TouchOSC, um DMXDesktop automatisch in Ihrem Netzwerk zu finden
- Erstellen Sie Ihr Layout mit den OSC-Pfaden, die in der Tabelle unten aufgeführt sind
Netzwerktipps
- Stellen Sie sicher, dass Ihr Gerät und Computer im selben Netzwerk sind
- Wenn Sie eine Firewall verwenden, erlauben Sie eingehende Verbindungen auf den Ports 8000 und 9000
- Für optimale Leistung verwenden Sie ein dediziertes Netzwerk oder eine 5GHz-WLAN-Verbindung
- Für OSC Output konfigurieren Sie die Ziel-Host-IP und den Port in den Einstellungen
Zusätzliche Ressourcen
- Offizielle OSC-Website - Erfahren Sie mehr über das OSC-Protokoll
- TouchOSC-Dokumentation - Detaillierte Anleitung für TouchOSC
- OSC-Protokollspezifikation - Technische Details des OSC-Protokolls
OSC Eingabebefehle
Sendet diese Befehle an DMXDesktop, um eure Beleuchtung zu steuern. Alle Pfade sind groß-/kleinschreibungsempfindlich.
Hinweis: OSC Input erfordert ein kostenpflichtiges Abonnement und muss in den Einstellungen aktiviert werden. Der Standard-Eingangsport ist 8000.
| OSC Pfad | Parameter | Beschreibung |
|---|---|---|
| MASTER STEUERUNGEN | ||
| /master/dimmer | float (0-1) | Steuert die Intensität des Master-Dimmers |
| LEBENDE EFFEKTE | ||
| /live/strobe/{on|off|pulse} | keine | Steuert den Zustand des Stroboskoplichts |
| /live/blackout/{on|off|pulse} | keine | Steuert den Zustand des Blackouts |
| /live/blinder/{on|off|pulse} | keine | Steuert den Zustand des Blinders |
| /live/freeze/{on|off|pulse} | keine | Steuert den Zustand des Freeze |
| /live/fog/{on|off|pulse} | keine | Steuert den Zustand der Nebelmaschine |
| SPEZIAL EFFEKTE | ||
| /effects/{effect}/start | keine | Startet den angegebenen Effekt (Welle, Paparazzi, Farbenwechsel, Donner, Puls, Funkeln, Zufall) |
| /effects/{effect}/stop | keine | Stoppt den angegebenen Spezialeffekt |
| /effects/stop | keine | Stoppt alle aktuell laufenden Spezialeffekte |
| /effects/bpm | float (0-1) | Setzt BPM für die Zeitsteuerung der Spezialeffekte (ordnet 0-1 auf 60-200 BPM zu) |
| LIVE BEARBEITUNGEN | ||
| /live/edit/{action}/{name} | action: enable|disable|toggle | Steuert den Zustand der Live-Bearbeitung nach Name |
| /live/edit/group/{action}/{name} | action: enable|disable|toggle | Steuert den Zustand der Live-Bearbeitungsgruppe nach Name |
| /live/edit/disable-all | keine | Deaktiviert alle Live-Bearbeitungen |
| CUE STEUERUNGEN | ||
| /cue/effect/play/{name} | string | Spielt den spezifischen Effekt-Cue nach Name |
| /cue/effect/{action} | play|stop|next|prev | Steuert die Wiedergabenavigation des Effekt-Cues |
| DJ STEUERUNGEN | ||
| /dj/app/{app} | musicplayer|virtualdj|traktor | Wechselt die spezifische DJ-Anwendung |
| /dj/deck{1|2}/{action} | play|stop|eject | Deck-Transportsteuerungen |
| /dj/deck{1|2}/volume | float (0-1) | Steuert die Deck-Lautstärke |
| /dj/crossfader | float (0-1) | Steuert die Position des Crossfaders |
| DIREKTE DMX STEUERUNG | ||
| /dmx/{universe}/{channel} | float (0-1) | Setzt den DMX-Kanalwert (ordnet 0-1 auf 0-255 zu) |
| /dmx/{universe}/{channel}/clear | keine | Löscht die DMX-Kanal-Übersteuerung |
| /dmx/clear | keine | Löscht ALLE DMX-Kanal-Übersteuerungen |
| STACK STEUERUNGEN | ||
| /stack/{id}/go | keine | Feuert den nächsten Cue im angegebenen Stack |
| /stack/{id}/back | keine | Geht zurück zum vorherigen Cue |
| /stack/{id}/halt | keine | Stoppt den aktuellen Crossfade mitten im Übergang |
| /stack/{id}/stop | keine | Stoppt die Wiedergabe im angegebenen Stack |
| /stack/{id}/level | float (0-1) | Setzt die Master-Ebene des Stacks |
| EXECUTE GRID | ||
| /execute/{row}/{col} | keine | Auslösen des Execute-Grid-Buttons an der angegebenen Position |
Live Wire und Tempo-Befehle
Der Live Wire-Modus, Live Wire Hold und die Halb- und Doppeltempo-Steuerungen können alle über OSC gesteuert werden. Live Wire ist eine Standard- und Pro-Funktion. Verfügbar ab v1.0.52
| OSC-Pfad | Parameter | Beschreibung |
|---|---|---|
| Live Wire | ||
| /livewire/mode/{band|dj|ambient} | keine | Wechselt Live Wire in diesen Modus und startet Live Wire, wenn es nicht bereits die laufende Audio-App ist |
| /livewire/hold/{on|off|toggle} | keine | Hält Live Wire im Standby-Look des Modus oder gibt es zurück zum Hören. Wird abgelehnt, wenn der laufende Modus keinen Standby-Look hat, den man halten kann |
| TEMPO | ||
| /live/tempo/{half|double|normal} | keine | Führt die Anlage mit halber oder doppelter Geschwindigkeit aus oder gibt sie auf normal zurück. Halb und doppelt sind festgelegt, sodass das erneute Senden des gleichen Befehls auf normal zurückkehrt |
Eine Tempoeinstellung, überall. Halb- und Doppeltempo ist eine einzelne Einstellung, die das Pult, MIDI-Pads, OSC und die mobile Fernbedienung alle lesen und schreiben, sodass sie sich nicht über die Geschwindigkeit, mit der die Anlage läuft, uneinig sein können.
OSC kann Audio, von dem eine laufende Funktion abhängt, nicht mehr stummschalten. Live Wire benötigt eine Live-Audioaufnahme und BPM-Erkennung, und eine OSC-Nachricht konnte zuvor entweder beides darunter ausschalten, sodass es aktiviert, aber taub blieb. Diese Nachrichten werden jetzt abgelehnt, solange eine laufende Funktion von ihnen abhängt.
OSC-Ausgabemeldungen
DMXDesktop überträgt Status und Ereignisse an externe Anwendungen über OSC. Konfigurieren Sie den Zielhost und den Port in den Einstellungen. Verfügbar ab v1.0.46
Live-Kontrollen
/dmxdesktop/v1/master float 0-1 (0-100%)/dmxdesktop/v1/blackout int 0|1/dmxdesktop/v1/strobe int 0|1/dmxdesktop/v1/blinder int 0|1/dmxdesktop/v1/freeze int 0|1/dmxdesktop/v1/fog int 0|1/dmxdesktop/v1/effect int 0|1/dmxdesktop/v1/specialeffect/{name} int 0|1 (wave, thunder, etc.)Audio & BPM
/dmxdesktop/v1/bpm float (BPM-Wert)/dmxdesktop/v1/beat float, int, int, float (bpm, ts_high, ts_low, confidence)/dmxdesktop/v1/audio/level float 0-1 (RMS-Level)/dmxdesktop/v1/audio/energy float 0-1 (Energielevel)Effect Cues
/dmxdesktop/v1/cue/active string (Cue-Name oder "")/dmxdesktop/v1/cue/name string (aktueller Cue)/dmxdesktop/v1/cue/action string (play|stop)/dmxdesktop/v1/cue/lifecycle string (fadeIn/OutStarted/Finished)/dmxdesktop/v1/cue/lifecycle/duration int (ms)/dmxdesktop/v1/cue/lifecycle/newCue string (nächster Cue-Name)Cue-Stapel
/dmxdesktop/v1/stack/{id}/step int (Schrittindex)/dmxdesktop/v1/stack/{id}/fading int 0|1/dmxdesktop/v1/stack/{id}/paused int 0|1Live-Bearbeitungen & Überschreibungen
/dmxdesktop/v1/liveedit/{id} int 0|1/dmxdesktop/v1/liveedit/group/{id} int 0|1/dmxdesktop/v1/override/color string (Palette-ID oder "")/dmxdesktop/v1/override/position string (Preset oder "")DJ Mode
/dmxdesktop/v1/dj/enabled int 0|1/dmxdesktop/v1/dj/app string (App-Name oder "")/dmxdesktop/v1/dj/master int 1-4 (Master-Deck)/dmxdesktop/v1/dj/crossfader float 0-1/dmxdesktop/v1/dj/deck{1-4}/playing int 0|1/dmxdesktop/v1/dj/deck{1-4}/paused int 0|1/dmxdesktop/v1/dj/deck{1-4}/track string (Künstler - Titel)/dmxdesktop/v1/dj/deck{1-4}/loaded int 0|1 (Track geladen)/dmxdesktop/v1/dj/deck{1-4}/loading int 0|1 (analysiere)/dmxdesktop/v1/dj/deck{1-4}/showready int 0|1 (DMX-Show bereit)/dmxdesktop/v1/dj/deck{1-4}/vu float (VU-Meter-Level)Live Wire
/dmxdesktop/v1/livewire/mode/active string (band|dj|ambient, or "")/dmxdesktop/v1/livewire/hold/state string (held|listening|unavailable)/dmxdesktop/v1/livewire/mode string (mode selected)/dmxdesktop/v1/livewire/hold int 0|1QuickShow - Beam Effects
/dmxdesktop/v1/quickshow/beam string (Effektname oder "")/dmxdesktop/v1/quickshow/beam/speed int (roher Schiebereglerwert)/dmxdesktop/v1/quickshow/beam/phase int (roher Schiebereglerwert)/dmxdesktop/v1/quickshow/beam/background int (roher Schiebereglerwert)/dmxdesktop/v1/quickshow/beam/spread int (roher Schiebereglerwert)/dmxdesktop/v1/quickshow/beam/intensity int (roher Schiebereglerwert)QuickShow - Bewegungseffekte
/dmxdesktop/v1/quickshow/move string (Effektname oder "")/dmxdesktop/v1/quickshow/move/speed int (roher Schiebereglerwert)/dmxdesktop/v1/quickshow/move/size int (roher Schiebereglerwert)/dmxdesktop/v1/quickshow/move/phase int (roher Schiebereglerwert)/dmxdesktop/v1/quickshow/move/fanning int (roher Schiebereglerwert)/dmxdesktop/v1/quickshow/move/direction int -1|0|1QuickShow - Allgemein
/dmxdesktop/v1/quickshow/theme int (Thema-ID)/dmxdesktop/v1/quickshow/themecount int (8|16|24|32)/dmxdesktop/v1/quickshow/preset string (Preset-ID oder "")/dmxdesktop/v1/quickshow/groups string (JSON-Array)/dmxdesktop/v1/quickshow/groups/move string (JSON-Array)/dmxdesktop/v1/quickshow/stopall int 1 (Pulse-Ereignis)QuickShow - Encoder
/dmxdesktop/v1/quickshow/encoder/beam/{id} int 0-255 (DMX-Wert)/dmxdesktop/v1/quickshow/encoder/move/{id} int 0-255 (DMX-Wert)Encoder-IDs haben das Format: beam_aux_{groupId}_{channelKey} oder move_aux_{groupId}_{channelKey}
Hinweis: OSC Output erfordert ein kostenpflichtiges Abonnement und muss in den Einstellungen aktiviert werden. Der Standardport ist 9000.
Beat-Zeitstempel werden in zwei 32-Bit-Ganzzahlen (ts_high, ts_low) aufgeteilt, da OSC keine 64-Bit-Werte unterstützt.
