# Open Sound Control

Open Sound Control (OSC) es un protocolo para conectar en red sintetizadores, ordenadores y otros dispositivos multimedia con fines como la interpretación musical o el control de espectáculos. Las ventajas de OSC son la interoperabilidad, la precisión, la flexibilidad y una mejor organización y documentación. La primera especificación se publicó en marzo de 2002.

## Motivación

OSC es un formato de contenido desarrollado en CNMAT por Adrian Freed y Matt Wright comparable a XML, WDDX o JSON. En un principio, fue concebido para compartir datos de interpretación musical (movimientos, parámetros y secuencias de notas) entre instrumentos musicales (especialmente instrumentos musicales electrónicos como sintetizadores), ordenadores y otros dispositivos multimedia. A veces, se utiliza OSC como alternativa al estándar MIDI de 1983, cuando se busca una mayor resolución y un espacio de parámetros más rico. Los mensajes OSC se transportan a través de Internet y dentro de las subredes locales mediante UDP/IP y Ethernet. Los mensajes OSC entre controladores gestuales suelen transmitirse a través de puntos finales de serie de USB envueltos en el protocolo SLIP.

## Características

Las principales características de OSC, en comparación con MIDI, son:
* Esquema de nomenclatura simbólica abierto y dinámico al estilo URI.
* Datos simbólicos y numéricos de alta resolución.
* Lenguaje de concordancia de patrones para especificar múltiples destinatarios de un mismo mensaje.
* Etiquetas de tiempo de alta resolución.
* "Paquetes" de mensajes cuyos efectos deben producirse simultáneamente.

## Aplicaciones

Existen decenas de aplicaciones de OSC, como entornos de procesamiento de sonido y medios en tiempo real, herramientas de interactividad web, sintetizadores de software, lenguajes de programación y dispositivos de hardware. Las OSC han alcanzado un amplio uso en campos como la expresión musical, la robótica, las interfaces de interpretación de vídeo, los sistemas musicales distribuidos y la comunicación entre procesos.
El estándar de la comunidad TUIO para interfaces tangibles, como las multitáctiles, se basa en OSC. Asimismo, el sistema GDIF para representar gestos integra OSC. También se utiliza ampliamente en controladores musicales experimentales y se ha incorporado a varios productos comerciales y de código abierto. El lenguaje de programación musical Open Sound World (OSW) está diseñado en torno a la mensajería OSC.
OSC es el corazón de la API de plugins DSSI, una evolución de la API LADSPA, para que la eventual interfaz gráfica de usuario interactúe con el núcleo del plugin a través de la mensajería del host del mismo. LADSPA y DSSI son APIs dedicadas a efectos de audio y sintetizadores.
En 2007, se propuso un espacio de nombres estandarizado dentro de OSC llamado SYN, para la comunicación entre controladores, sintetizadores y hosts,

## Diseño

Los mensajes OSC constan de un patrón de direcciones, una cadena de etiquetas de tipo, argumentos y una etiqueta de tiempo opcional. Los patrones de dirección forman un espacio de nombres jerárquico, que recuerda a la ruta de un sistema de archivos Unix o a una URL. Las cadenas de etiquetas de tipo son una representación compacta de los tipos de argumentos. Los argumentos se representan en forma binaria con una alineación de cuatro bytes. Los tipos básicos admitidos son:
* enteros con signo en complemento a dos de 32 bits;
* números de coma flotante IEEE de 32 bits;
* matrices con terminación nula de datos codificados de ocho bits (cadenas estilo C);
* blob de tamaño arbitrario (por ejemplo, datos de audio o un fotograma de vídeo).
Las aplicaciones suelen emplear extensiones de este conjunto básico. Más recientemente, algunas de estas extensiones, como un tipo booleano compacto, se integraron en los tipos básicos requeridos de OSC 1.1.
Las ventajas de OSC sobre MIDI son principalmente la conectividad a Internet, la resolución de los tipos de datos y la facilidad comparativa de especificar una ruta simbólica, en lugar de especificar todas las conexiones como números de siete bits con tipos de datos de siete o catorce bits.

## Bibliografía

* Schmeder, A., Freed, A., and Wessel, D., "Best practices for Open Sound Control", Linux Audio Conference, Utrecht, The Netherlands, 2010.
* Freed, A., Schmeder, A., "Features and Future of Open Sound Control version 1.1 for NIME", NIME Conference 2009.
* Wright, M., Freed, A., "Open Sound Control: A New Protocol for Communicating with Sound Synthesizers", International Computer Music Conference, Thessaloniki, Greece, 1997.