9.5. Open Sound Control

Open Sound Control (OSC) es un protocolo de comunicación entre dispositivos electrónicos multimediales conectados en red, desarrollado para la transmisión de datos entre aplicaciones.

Originalmente, el proyecto fue pensado para el control de instrumentos musicales, como reemplazo de la norma MIDI, pero luego cobró mayores dimensiones debido a su alto grado de aceptación como medio de transmisión de información entre programas en red.

Las áreas de aplicación de OSC son muy variadas. Entre ellas. la comunicación entre sensores conectados en red con sintetizadores virtuales, conversión de datos no musicales para la generación de sonido, control de procesos sonoros o musicales a través de múltiples usuarios, interfaces web, ejecuciones musicales en red, etcétera.

G.9.9. muestra el envío y la recepción de información mediante el protocolo OSC, empleando a UDP como protocolo de transporte. Los objetos udpsend y udpreceive, de la librería mrpeach, son los encargados de realizar la conexión y, según se observa, utilizan los parámetros de forma similar a netsend y netreceive. El objeto packOSC empaqueta la información a enviar, y los objetos routeOSC y unpackOSC clasifican los datos recibidos y los desempaquetan.

G.9.9. OSC a través del protocolo UDP

 

La programación del patch de G.9.9. se encuentra en el archivo “72-OSC básico.pd”. Para poder utilizarlo, si cuenta con una red, no olvide reemplazar la dirección IP del ejemplo por la de su computadora.

Las versiones para conexiones TCP de los objetos de envío y recepción son tcpsend y tcpreceive.

El protocolo OSC no posee mensajes predefinidos, lo cual lo vuelve muy interesante. Cada usuario puede definir sus propios mensajes de la manera que considere más apropiada.

Los mensajes pueden comenzar con una ruta que permita clasificarlos. Esta ruta luce como un sendero de subdirectorios, por ejemplo “/frecuencia”.

Si deseamos enviar a un oscilador de un patch información sobre la frecuencia y la amplitud con las que debe operar, podemos organizar los datos bajo una etiqueta común “/oscilador”, y luego etiquetas individuales seguidas de los datos. G.9.10. ilustra este procedimiento, y el modo en que se utilizan los objetos routeOSC para extraer la información. Conectados en serie permiten acceder a los sucesivos niveles de una ruta, pero si se declaramos dos o más argumentos, el objeto incrementa automáticamente su número de outlets y dos o más parámetros de un mismo nivel pueden ser extraídos.

G.9.10. Organización de los mensajes

 

La programación del patch de G.9.10. se encuentra en el archivo “73-OSC con rutas.pd”.

 

A través de los objetos tcpsend o udpsend también podemos enviar listas de datos y desempaquetarlas al recibirlas con el objeto unpack.

Mediante los protocolos vistos podremos no solo conectar distintas computadoras ejecutando a PD, sino también a este con otras aplicaciones destinadas a desarrollo de software, como Processing.

Del mismo modo, recibir datos de sensores o controladores, empleando programas especializados en obtener información de estos dispositivos y comunicarla a otros programas a través de OSC. Ejemplos de este tipo de aplicaciones son OSCulator, que permite comunicar a una computadora Mac con Wiimotes de Nintendo, Iphones, etc., o Synapse, para comunicar el sensor Kinect de Microsoft con otras aplicaciones.

 

Causa, E. (2011), “Diseño de Interface para el desarrollo de una pantalla sensible al tacto con aplicación musical” en: Revista de Investigación Multimedia Nro. 3. IUNA, Buenos Aires, pp. 45-53.

 

Causa, E. (2011), “Desarrollo de un sistema óptico para interfaces tangibles (mesa con pantalla reactiva)” en: Revista de Investigación Multimedia Nro. 3. IUNA, Buenos Aires, pp. 54-67.

Actividad 1

Partiendo una red de dos computadoras, o bien comunicando una computadora consigo misma, utilice el patch de síntesis que desarrolló en la Actividad 6, ubicando los parámetros de control del lado del transmisor, y el resto,como receptor.

 

Actividad 2

Opción a) El objeto hid, de la librería que lleva el mismo nombre, permite leer las acciones realizadas sobre un controlador de video juegos (joystick, gamepad) conectado al puerto USB de la computadora. Si posee un controlador de ese tipo, programe un patch que detecte todas las acciones que puedan realizarse sobre el dispositivo.

Opción b) Desarrolle una aplicación que modifique sus parámetros a través del mouse y del teclado de la computadora. Los objetos clave para esta tarea son key y cursor (de la librería hcs).

En ambos casos puede consultar el siguiente texto: Floss Manuals-Pure Data <http://en.flossmanuals.net/pure-data/sensors/game-controllers/> [Consulta: 3 de Agosto de 2013]. Controladores para Pure Data.