DMX lighting effects background

Control de Sonido Abierto (OSC)

Envía comandos a DMXDesktop y recibe transmisiones de estado a través de OSC

¿Qué es OSC?

Open Sound Control (OSC) es un protocolo abierto, independiente del transporte y basado en mensajes para la comunicación entre computadoras, sintetizadores de sonido, software de iluminación y otros dispositivos multimedia. Fue creado por Matt Wright y Adrian Freed en CNMAT, Universidad de California, Berkeley, y la versión 1.0 fue publicada en marzo de 2002. DMXDesktop implementa OSC en ambas direcciones: recibe comandos de controladores externos y transmite cambios de estado a otras aplicaciones.

Donde DMX512 envía un flujo fijo de ranuras numeradas, OSC envía mensajes nombrados. Esa es toda la diferencia en una frase. Un mensaje OSC tiene tres partes:

  • Un patrón de dirección, una cadena de texto que comienza con una barra diagonal y se lee como una ruta de URL, por ejemplo /master/dimmer.
  • Una cadena de etiqueta de tipo, una coma seguida de una letra por argumento. Cada implementación de OSC soporta i (entero de 32 bits), f (flotante de 32 bits), s (cadena) y b (bloque binario).
  • Los argumentos en sí, en el orden que declaran las etiquetas de tipo. Todos los números son big-endian y cada valor está alineado a un múltiplo de 32 bits.

Dos cosas sorprenden a las personas que llegan de MIDI o DMX. Primero, OSC no tiene un número de puerto oficial. La especificación es deliberadamente independiente del transporte y no asigna ninguno, y tampoco hay un puerto OSC registrado en IANA, así que cada aplicación elige el suyo y lo configuras en ambos extremos. DMXDesktop escucha en el puerto 8000 por defecto y envía la salida al puerto 9000.

En segundo lugar, los patrones de dirección OSC soportan comodines, por lo que un mensaje puede llegar a varios destinos a la vez: ? coincide con cualquier carácter único, * coincide con cualquier secuencia de caracteres, [abc] coincide con cualquier carácter en un conjunto, y {foo,bar} coincide con cualquier cadena en una lista.

OSC también tiene paquetes: varios mensajes agrupados juntos con una etiqueta de tiempo de 64 bits en formato NTP, de modo que un receptor los aplica como un grupo atómico, ya sea inmediatamente o en un momento programado. OSC lleva la etiqueta de tiempo pero no sincroniza los relojes por sí mismo, por lo que ambas máquinas necesitan su propio tiempo correcto.

Una nota sobre versiones, porque confunde a la gente: OSC 1.1 existe, pero no hay un documento de especificación 1.1. Sus autores publicaron un artículo para NIME 2009 en su lugar y lo dejaron como referencia. OSC 1.1 mantiene el formato de mensaje 1.0, promueve varios tipos opcionales como True, False, Null e Impulse a requeridos, y añade el // comodín de múltiples niveles. Los mensajes escritos para 1.0 aún funcionan con receptores 1.1.

Cómo Funciona

DMXDesktop soporta tanto OSC Input como Output. El servidor OSC Input escucha mensajes entrantes para controlar varios aspectos del software. OSC Output transmite cambios de estado y eventos a aplicaciones externas, permitiendo la sincronización en tiempo real con software de video, visualizadores e integraciones personalizadas. Ambos soportan el protocolo UDP para comunicación de baja latencia.

Comenzando

  1. Abre DMXDesktop y navega a Configuraciones → General
  2. En la sección OSC, encontrarás:
    • Interruptor de Habilitar/Deshabilitar OSC Input
    • Selección de Interfaz de Red
    • Número de Puerto de Entrada (predeterminado: 8000)
    • Selección de Protocolo (UDP/TCP)
    • Interruptor de Habilitar/Deshabilitar OSC Output
    • Host y Puerto de Salida (predeterminado: 127.0.0.1:9000)
  3. El servicio de descubrimiento se ejecuta en el puerto 9000 y permite que aplicaciones compatibles encuentren automáticamente DMXDesktop en la red

Conectando con TouchOSC

TouchOSC es una herramienta popular para controlar multitudes de diferentes tipos de aplicaciones, y se puede usar para controlar DMXDesktop a través del Protocolo OSC.

Por favor nota: TouchOSC es un software de pago, consulta el sitio web oficial para más detalles.

  1. Descarga e instala TouchOSC en tu dispositivo:
  2. Abre TouchOSC y crea una nueva conexión:
    • Protocolo: OSC
    • Host: La dirección IP de tu computadora (mostrada en la configuración de DMXDesktop)
    • Puerto de Envío: 8000 (predeterminado)
    • Puerto de Recepción: 9000 (para el servicio de descubrimiento)
  3. Usa la función de descubrimiento en TouchOSC para encontrar automáticamente DMXDesktop en tu red
  4. Crea tu diseño utilizando las rutas OSC listadas en la tabla a continuación

Consejos de Red

  • Asegúrate de que tu dispositivo y computadora estén en la misma red
  • Si usas un firewall, permite conexiones entrantes en los puertos 8000 y 9000
  • Para un rendimiento óptimo, usa una red dedicada o conexión WiFi de 5GHz
  • Para OSC Output, configura la IP y el puerto del host objetivo en Configuraciones

Recursos Adicionales

Comandos OSC Input

Envía estos comandos a DMXDesktop para controlar tu iluminación. Todas las rutas son sensibles a mayúsculas y minúsculas.

Nota: La entrada OSC requiere una suscripción paga y debe ser habilitada en Configuración. El puerto de entrada por defecto es 8000.

Ruta OSCParámetrosDescripción
CONTROLES MAESTROS
/master/dimmerfloat (0-1)Controla la intensidad del atenuador maestro
EFECTOS EN VIVO
/live/strobe/{on|off|pulse}ningunoControla el estado del estroboscopio
/live/blackout/{on|off|pulse}ningunoControla el estado de apagón
/live/blinder/{on|off|pulse}ningunoControla el estado del blinder
/live/freeze/{on|off|pulse}ningunoControla el estado de congelación
/live/fog/{on|off|pulse}ningunoControla el estado de la máquina de humo
EFECTOS ESPECIALES
/effects/{effect}/startningunoInicia el efecto especificado (onda, paparazzi, barrido de colores, trueno, pulso, chispa, aleatorio)
/effects/{effect}/stopningunoDetiene el efecto especial especificado
/effects/stopningunoDetiene todos los efectos especiales que se están ejecutando actualmente
/effects/bpmfloat (0-1)Establece BPM para el tiempo de los efectos especiales (mapea 0-1 a 60-200 BPM)
EDICIONES EN VIVO
/live/edit/{action}/{name}acción: enable|disable|toggleControla el estado de la edición en vivo por nombre
/live/edit/group/{action}/{name}acción: enable|disable|toggleControla el estado del grupo de edición en vivo por nombre
/live/edit/disable-allningunoDesactiva todas las ediciones en vivo
CONTROLES DE CUE
/cue/effect/play/{name}cadenaReproduce el cue de efecto específico por nombre
/cue/effect/{action}play|stop|next|prevControla la navegación de reproducción del cue de efecto
CONTROLES DJ
/dj/app/{app}musicplayer|virtualdj|traktorAlterna la aplicación DJ específica
/dj/deck{1|2}/{action}play|stop|ejectControles de transporte del deck
/dj/deck{1|2}/volumefloat (0-1)Controla el volumen del deck
/dj/crossfaderfloat (0-1)Controla la posición del crossfader
CONTROL DMX DIRECTO
/dmx/{universe}/{channel}float (0-1)Establece el valor del canal DMX (mapea 0-1 a 0-255)
/dmx/{universe}/{channel}/clearningunoLimpia la anulación del canal DMX
/dmx/clearningunoLimpia TODAS las anulaciones de canales DMX
CONTROLES DE PILA
/stack/{id}/goningunoDispara el siguiente cue en la pila especificada
/stack/{id}/backningunoRetrocede al cue anterior
/stack/{id}/haltningunoCongela la transición actual del crossfade
/stack/{id}/stopningunoDetiene la reproducción en la pila especificada
/stack/{id}/levelfloat (0-1)Establece el nivel maestro de la pila
EJECUTAR GRID
/execute/{row}/{col}ningunoActiva el botón de ejecutar en la posición especificada

Comandos de Live Wire y Tempo

El modo Live Wire, Live Wire Hold y los controles de tempo medio y doble pueden ser controlados a través de OSC. Live Wire es una característica de Standard y Pro. Disponible desde v1.0.52

Ruta OSCParámetrosDescripción
Live Wire
/livewire/mode/{band|dj|ambient}ningunoCambia Live Wire a ese modo y comienza Live Wire si no es ya la aplicación de audio en ejecución
/livewire/hold/{on|off|toggle}ningunoMantiene Live Wire en la apariencia de espera del modo, o lo libera para escuchar. Rechazado cuando el modo en ejecución no tiene apariencia de espera para mantener
TEMPO
/live/tempo/{half|double|normal}ningunoEjecuta el equipo a medio o doble tiempo, o lo devuelve a la normalidad. Medio y doble son bloqueos, por lo que enviar el mismo de nuevo regresa a la normalidad

Una configuración de tempo, en todas partes. Medio y doble tempo es una sola configuración que la consola, los pads MIDI, OSC y el control remoto móvil leen y escriben, por lo que no pueden discrepar sobre la velocidad a la que está funcionando el equipo.

OSC ya no puede silenciar el audio del cual depende una función en ejecución. Live Wire necesita captura de audio en vivo y detección de BPM, y un mensaje OSC podría anteriormente desactivar cualquiera de ellos, dejándolo habilitado pero sordo. Esos mensajes ahora son rechazados mientras una función en ejecución dependa de ellos.

Mensajes OSC Output

DMXDesktop transmite estado y eventos a aplicaciones externas a través de OSC. Configura el host y el puerto objetivo en Configuraciones. Disponible desde v1.0.46

Controles en Vivo

/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 (onda, trueno, etc.)

Audio y BPM

/dmxdesktop/v1/bpm float (valor BPM)
/dmxdesktop/v1/beat float, int, int, float (bpm, ts_high, ts_low, confianza)
/dmxdesktop/v1/audio/level float 0-1 (nivel RMS)
/dmxdesktop/v1/audio/energy float 0-1 (nivel de energía)

Effect Cues

/dmxdesktop/v1/cue/active string (nombre del cue o "")
/dmxdesktop/v1/cue/name string (cue actual)
/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 (nombre del siguiente cue)

Pilas de Cues

/dmxdesktop/v1/stack/{id}/step int (índice del paso)
/dmxdesktop/v1/stack/{id}/fading int 0|1
/dmxdesktop/v1/stack/{id}/paused int 0|1

Ediciones en Vivo & Sobrescrituras

/dmxdesktop/v1/liveedit/{id} int 0|1
/dmxdesktop/v1/liveedit/group/{id} int 0|1
/dmxdesktop/v1/override/color string (ID de paleta o "")
/dmxdesktop/v1/override/position string (preset o "")

DJ Mode

/dmxdesktop/v1/dj/enabled int 0|1
/dmxdesktop/v1/dj/app string (nombre de la app o "")
/dmxdesktop/v1/dj/master int 1-4 (deck maestro)
/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 (Artista - Título)
/dmxdesktop/v1/dj/deck{1-4}/loaded int 0|1 (track cargado)
/dmxdesktop/v1/dj/deck{1-4}/loading int 0|1 (analizando)
/dmxdesktop/v1/dj/deck{1-4}/showready int 0|1 (show DMX listo)
/dmxdesktop/v1/dj/deck{1-4}/vu float (nivel del medidor VU)

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|1

QuickShow - Efectos de Haz

/dmxdesktop/v1/quickshow/beam string (nombre del efecto o "")
/dmxdesktop/v1/quickshow/beam/speed int (valor del control deslizante en bruto)
/dmxdesktop/v1/quickshow/beam/phase int (valor del control deslizante en bruto)
/dmxdesktop/v1/quickshow/beam/background int (valor del control deslizante en bruto)
/dmxdesktop/v1/quickshow/beam/spread int (valor del control deslizante en bruto)
/dmxdesktop/v1/quickshow/beam/intensity int (valor del control deslizante en bruto)

QuickShow - Efectos de Movimiento

/dmxdesktop/v1/quickshow/move string (nombre del efecto o "")
/dmxdesktop/v1/quickshow/move/speed int (valor del control deslizante en bruto)
/dmxdesktop/v1/quickshow/move/size int (valor del control deslizante en bruto)
/dmxdesktop/v1/quickshow/move/phase int (valor del control deslizante en bruto)
/dmxdesktop/v1/quickshow/move/fanning int (valor del control deslizante en bruto)
/dmxdesktop/v1/quickshow/move/direction int -1|0|1

QuickShow - General

/dmxdesktop/v1/quickshow/theme int (ID del tema)
/dmxdesktop/v1/quickshow/themecount int (8|16|24|32)
/dmxdesktop/v1/quickshow/preset string (ID del preset o "")
/dmxdesktop/v1/quickshow/groups string (array JSON)
/dmxdesktop/v1/quickshow/groups/move string (array JSON)
/dmxdesktop/v1/quickshow/stopall int 1 (evento de pulso)

QuickShow - Codificadores

/dmxdesktop/v1/quickshow/encoder/beam/{id} int 0-255 (valor DMX)
/dmxdesktop/v1/quickshow/encoder/move/{id} int 0-255 (valor DMX)

Los IDs de los encoders están en el formato: beam_aux_{groupId}_{channelKey} o move_aux_{groupId}_{channelKey}

Nota: OSC Output requiere una suscripción de pago y debe ser habilitado en Configuraciones. El puerto predeterminado es 9000.

Las marcas de tiempo de los beats se dividen en dos enteros de 32 bits (ts_high, ts_low) ya que OSC no soporta valores de 64 bits.

¿Listo para controlar tus luces de forma remota?

Descargar DMXDesktop