Saltar al contenido

OSC ​

La pantalla OSC es donde hablas Open Sound Control (OSC 1.0) por UDP a mano. Tiene tres partes:

  • Emisor: un mensaje, argumentos con tipo, enviado cuando pulsas Enter.
  • Monitor: escucha en un puerto y decodifica cada paquete que llega.
  • Generador de señal: envía un valor que sigue una forma de onda, muchas veces por segundo, y lo dibuja.

Signal Lab codifica y decodifica OSC por sí mismo. Lo que envía es lo que el Inspector muestra, byte a byte.

Enviar un mensaje ​

  1. Abre OSC.
  2. En Host:puerto de destino, escribe la dirección IP o el nombre de host del dispositivo y su puerto, por ejemplo 127.0.0.1:9000 o stage-mixer.local:9000.
  3. En Dirección OSC, escribe la dirección que espera el dispositivo, por ejemplo /mixer/fader/1.
  4. En Argumentos, define el tipo y el valor de cada argumento. Pulsa + argumento para añadir otro; ✕ quita uno.
  5. Pulsa Enviar, o Enter en cualquier campo del emisor.

La línea bajo los botones dice lo que salió: la dirección, su tamaño en bytes y el destino. Volver a enviar el mismo mensaje suma (×2, ×3…), así que puedes ver que un envío repetido hizo algo. Un fallo se muestra ahí en su lugar, y en la consola.

El destino, la dirección y los argumentos se conservan cuando cambias de pantalla y cuando reinicias la aplicación.

Campos ​

CampoQuéPredeterminado
Host:puerto de destinoIP:port o host:port del receptor. Una dirección IPv6 va entre corchetes: [::1]:9000. Un nombre de host se resuelve cada vez que envías; cuando tiene una dirección IPv4, se usa esa (así localhost llega a un receptor que escucha en 127.0.0.1), si no, su IPv6. Un destino sin puerto se rechaza.127.0.0.1:9000
Dirección OSCLa dirección OSC, que empieza por /, con las partes separadas por /. Una sin la / inicial se rechaza antes de enviar nada./hello/avatar/1
ArgumentosValores con tipo tras la dirección, en orden. Un mensaje puede no tener ninguno.un float, 1.0

Tipos de argumento ​

El tipo de cada argumento forma parte del mensaje (su etiqueta de tipo), así que un dispositivo que espera un float puede ignorar un int con el mismo valor.

Tipo en la listaEtiqueta OSCValorCómo lo escribes
intientero con signo de 32 bitsun número entero
floatfcoma flotante de 32 bitsun número, 0.75
strstextocualquier texto, enviado como UTF-8
boolT / Fverdadero o falsotrue o false de una lista; no lleva bytes, solo la etiqueta
longhentero con signo de 64 bitsun número entero
doubledcoma flotante de 64 bitsun número
nilNnadaningún valor
blobbbytesno se escribe aquí: aparece, de solo lectura y en hex, cuando abres una señal que tiene uno

Un campo numérico que no contiene un número envía 0.

TIP

Un true de OSC es la etiqueta T, no el texto "true". Un dispositivo que espera un bool ignora en silencio una cadena.

Bundles ​

El emisor envía mensajes sueltos, no bundles. Cuando llega un bundle (#bundle), el monitor, las esperas de los experimentos y los emuladores lo desempaquetan: cada mensaje que contiene se trata por su cuenta, y su etiqueta de tiempo se ignora.

Observar un puerto ​

Para ver lo que envía un dispositivo o un controlador de espectáculo:

  1. En Dirección de escucha, escribe la dirección y el puerto donde escuchar. 0.0.0.0:9000 (el predeterminado) escucha en todas las tarjetas de red; 127.0.0.1:9000 solo en este equipo.
  2. Pulsa Escuchar. El campo se bloquea mientras el monitor funciona.
  3. Apunta el emisor a la dirección IP de este equipo y a ese puerto.

Cada paquete se convierte en una fila, el más reciente arriba:

ColumnaQué
HoraCuándo llegó, al milisegundo
OrigenEl IP:port del emisor
DirecciónLa dirección OSC, o (error de decodificación) cuando el paquete no es OSC válido
ArgsLos valores de los argumentos; un blob se muestra como blob[n], nil como nil. Para un paquete que no se pudo decodificar, el motivo.

Un bundle da una fila por mensaje. La lista conserva las 300 filas más recientes; Borrar la vacía. Pulsa Detener para cerrar el puerto. El monitor es también una tarea en la franja de la consola, así que se puede detener desde ahí.

El monitor lee paquetes de hasta 64 KiB. Decodifica las etiquetas i f s S b h d T F N I (S se lee como texto, I como nil); un paquete con cualquier otra etiqueta, o cortado, se muestra como un error de decodificación en lugar de descartarse.

Convertir un mensaje en una espera ​

Cada fila tiene un botón ⇠, Esperar esto. Añade un paso Esperar OSC al experimento abierto que escucha en el Dirección de escucha del monitor para esta dirección, con una regla "es igual a" por cada argumento de texto, entero y verdadero/falso — los float, blob y nil no tienen ninguna — hasta 16 reglas. Su tiempo de espera es 2000 ms. El editor se abre con el nuevo paso seleccionado.

WARNING

Detén el monitor antes de ejecutar ese experimento. La ejecución abre el mismo puerto ella misma, y dos escuchas no pueden compartirlo.

Dirigir una onda ​

El Generador de señal envía un mensaje tras otro a una dirección, con un único argumento cuyo valor sigue una forma de onda — un fader, un nivel de luz, una posición. Úsalo para ver cómo sigue un dispositivo un valor en movimiento, o para cargar un receptor con un flujo constante.

  1. Define Host:puerto de destino y Dirección. Ambos se comprueban cuando pulsas Iniciar generador, como los comprueba el emisor.
  2. Elige una Forma de onda, su Frec. (Hz) y la Tasa (pps).
  3. Define Mín. y Máx., el rango del valor.
  4. Pulsa Iniciar generador. Funciona hasta que pulses Detener generador o detengas su tarea en la franja de la consola.
CampoQuéPredeterminado
Host:puerto de destinoIP:port o host:port del receptor; un nombre se resuelve una vez, cuando arranca el generador127.0.0.1:9000
DirecciónLa dirección a la que se envía cada mensaje; empieza por //hello/lfo
Forma de ondaLa forma del valor a lo largo del tiempo (abajo)senoidal
Frec. (Hz)Ciclos de la forma de onda por segundo1
Tasa (pps)Mensajes por segundo, de 0,1 a 5000; un valor fuera se ajusta a ese rango60
Mín., Máx.El valor más bajo y el más alto. Si Máx. es menor que Mín., el valor no se mueve.0, 1
enviar como intRedondear al número entero más cercano y enviar un int en lugar de un floatdesactivado
Forma de ondaQué hace el valor en cada ciclo
senoidalOscila suavemente entre Mín. y Máx., empezando en el medio y subiendo
triangularSube de Mín. a Máx., luego baja de nuevo a Mín., empezando en Mín.
diente de sierraUna sierra descendente: empieza en Máx., baja a Mín. y salta de nuevo a Máx.
rampaUna sierra ascendente: empieza en Mín., sube a Máx. y salta de nuevo a Mín.
cuadradaMáx. durante la primera mitad, Mín. durante la segunda
aleatoriaUn valor aleatorio nuevo entre Mín. y Máx. con cada mensaje; la frecuencia no se usa
constanteMáx., siempre; la frecuencia no se usa

El osciloscopio ​

Junto a los campos, el osciloscopio dibuja el valor tal como se envía: los últimos 300 puntos, escalados para encajar. Debajo están la forma de onda, la frecuencia y la tasa, y el último valor enviado. El osciloscopio se actualiza unas 30 veces por segundo por rápido que envíe el generador, así que a tasas altas muestra una muestra de los mensajes, no cada uno.

Si un envío falla, el generador se detiene y la consola dice por qué.

En el Inspector ​

Con la captura activada (Activar captura en el Inspector), el tráfico OSC aparece con el protocolo osc:

OrigenQuéNotas
osc-sendCada mensaje que envían el emisor, una señal de la biblioteca, un paso Mensaje OSC o signallab send oscUn paso que espera una respuesta se muestra como experiment
osc-monitorCada paquete que recibe el monitorUn bundle se resume por su primer mensaje y +n more in bundle; un paquete mal formado tiene el veredicto decode error: …
osc-genLos mensajes del generadorSe captura como máximo uno cada 100 ms, con el veredicto sampled; el siguiente después de los mensajes omitidos añade cuántos no se dibujaron, como sampled · +5 not shown

Cada trama conserva los bytes con los que se construyó. Consulta Inspector.

Guardar y reutilizar ​

  • Guardar como señal. Guardar… bajo los botones guarda el mensaje — destino, dirección y argumentos — en la biblioteca de señales, en una carpeta que elijas. A partir de entonces el emisor queda vinculado a esa señal: Guardar (o Ctrl+S en el emisor) la actualiza, Guardar como… hace una copia, y la etiqueta a su lado la abre en Señales. Envíala más tarde desde Señales o con Ctrl+K desde cualquier pantalla. Consulta Señales.
  • Añadir a un experimento. Al experimento añade un paso Mensaje OSC con el mismo destino, dirección y argumentos al experimento abierto — justo antes de Fin, o después del paso seleccionado — y lo abre. Mientras el experimento se ejecuta, no se puede añadir nada; la consola lo dice.

En experimentos ​

PasoQué hace
Mensaje OSCEnvía un mensaje. Su destino, dirección y argumentos de texto aceptan {{templates}}. Con esperar una respuesta envía desde un puerto propio y espera ahí la respuesta en el mismo paso. Detalles
Esperar OSCEspera un mensaje cuya dirección coincide con un patrón y cuyos argumentos pasan las reglas. Detalles
EmuladorUn dispositivo OSC que responde según reglas durante toda la ejecución. Consulta Emuladores.

El paso de mensaje OSC acepta IP:port o host:port como la pantalla, y su dirección debe empezar por /. Un nombre de host se resuelve cada vez que el paso envía.

Patrones de dirección ​

Esperar OSC, la respuesta de Mensaje OSC y las reglas de un emulador OSC comparan direcciones con patrones OSC 1.0:

PatrónCoincide con
*cualquier serie de caracteres, también ninguno
?exactamente un carácter
[0-9], [a-c]un carácter del conjunto o rango
[!0-9]un carácter que no está en el conjunto
{ping,pong}una de las palabras

Los comodines se quedan dentro de una parte entre barras: /cue/* coincide con /cue/7 pero no con /cue/7/go, y un patrón solo coincide con una dirección con el mismo número de partes. La comparación distingue mayúsculas de minúsculas. Un patrón empieza por /, no tiene ninguna parte vacía (//), ni espacios, ni # ni caracteres fuera de ASCII, y tiene como máximo 512 caracteres.

Las reglas de argumentos comparan el argumento número 0–63 con un valor (es igual a, menor que, contiene, coincide con una expresión regular, etc.); una espera tiene como máximo 16. Cuando llega un bundle, la espera lo toma si cualquiera de sus mensajes coincide. Consulta Datos y plantillas para saber qué da un mensaje coincidente a los pasos siguientes.

Desde la línea de comandos ​

signallab send osc envía un mensaje como lo hace el emisor:

bash
signallab send osc 127.0.0.1:9000 /cue/go f:0.75 s:main
text
✔ sent /cue/go (24 bytes) → 127.0.0.1:9000

Cada argumento es tag:value: i:3, f:0.5, d:1.5, h:64, s:text, b:de ad be ef (bytes en hex), o T, F, N solos. Sin etiqueta, un número entero es i, un número con punto decimal es f, y cualquier otra cosa es s; escribe s:7 para enviar el texto 7. El destino es IP:port o host:port. Sale con 0 cuando el mensaje salió, 1 cuando el envío falló (un nombre de host que no resuelve incluido), y 2 cuando un argumento, la dirección o el destino no son válidos. signallab fire envía una señal guardada. Consulta Línea de comandos.

TIP

En Git Bash en Windows, un argumento que empieza por / se convierte en una ruta de archivo antes de que signallab lo vea. Ejecuta el comando con MSYS_NO_PATHCONV=1 delante, o usa PowerShell o cmd.

Problemas ​

Lo que vesCausa habitual
… is not a valid address al enviarEl destino no tiene puerto, o no es ni IP:port ni host:port.
Cannot resolve … al enviarEl nombre de host no resuelve en este equipo. Compruébalo, o usa la dirección IP.
OSC addresses start with / (…)La dirección no tiene la / inicial.
El mensaje se envía pero el dispositivo no hace nadaPuerto o dirección equivocados; un tipo distinto del que espera (int en lugar de float, un texto "true" en lugar de un bool). Obsérvalo en el Inspector, o apunta el destino al monitor de este equipo para ver qué sale.
… is already in use by another program en EscucharOtro programa — o un experimento, emulador o un segundo monitor en marcha — tiene el puerto.
… is not an address of this computerLa IP de Dirección de escucha pertenece a otro equipo. Usa 0.0.0.0 o una de las direcciones de este equipo.
Los paquetes de otros equipos nunca lleganEn Windows, el firewall puede impedirlo: permite Signal Lab cuando la aplicación lo ofrezca. El tráfico local (127.0.0.1) no se ve afectado. Consulta Solución de problemas.
Filas (error de decodificación)El emisor no habla OSC 1.0 en ese puerto, o usa una etiqueta de tipo que Signal Lab no decodifica.

En un servidor, la pantalla funciona en la red del servidor: 127.0.0.1 es el servidor mismo, y el monitor escucha en los puertos del servidor. Consulta Servidor.

Cada mensaje de error está en Mensajes de error.