Universidad Maimónides: Escuela de Multimedia
1 Abril 2017

Tecnologías multimedia para generar interactividad en eventos de la escena electrónica

Por Leandro Amaro

Licenciado en Tecnología Multimedial por la Universidad Maimónides
Co-Fundador y CEO de Minimal (minimal.com.ar)

  • facebook
  • google plus
  • twitter

El presente artículo forma parte de la tesis de grado "Undermedia: Multimedia interactiva en la escena electrónica under" presentada en abril de 2016. Undermedia propone diversas maneras de enriquecer la experiencia del público en un evento o show de la escena electrónica under de la Ciudad de Buenos Aires. Se trata de una interfaz capaz de interactuar con varios usuarios al mismo tiempo. La interactividad se produce entre el usuario y espacio en donde se desarrolla el evento a partir de la manipulación de distintos aspectos multimediales (sonido, pantallas, luces, ambientación) y el uso de tecnología de vanguardia. En resumen, Undermedia es una nueva forma de realizar eventos cuyo principal objetivo es potenciar la interacción de las personas con el show a partir de variados elementos multimediales.

1. Tecnologías investigadas

Se ha realizado un relevamiento de las principales herramientas multimediales y sensores utilizados como input en el ámbito artístico y de entretenimiento en 2016.

OSC

Open Sound Control (OSC) es un protocolo de comunicaciones que permite comunicar instrumentos de música, computadoras y otros dispositivos multimedia (por ejemplo móviles o tablets equipados con bluetooth) pensado para compartir información musical en tiempo real sobre una red.

Características principales del protocolo:

Ampliable, dinámico. Esquema de nombres simbólicos tipo URL
Datos numéricos simbólicos y de alta resolución
Lenguaje de coincidencia de patrones (pattern matching) para especificar múltiples receptores de un único mensaje
Marcas de tiempo (time tags) de alta resolución.
Mensajes “empaquetados” para aquellos eventos que deben ocurrir simultáneamente
Sistema de interrogación para encontrar dinámicamente las capacidades de un servidor OSC y obtener documentación.
Puede ser transportado por varios protocolos, pero comúnmente se usa UDP.
Algunos proyectos conocidos que tienen su implementación: ChucK, CSound, Max/MSP, Pure Data, Reaktor, SuperCollider, Squeak, VVVV.

Processing

Es un lenguaje de programación y entorno de desarrollo integrado de código abierto basado en Java, de fácil utilización, y que sirve como medio para la enseñanza y producción de proyectos multimedia e interactivos de diseño digital.
Al estar basado en Java, puede heredar todas sus funcionalidades, convirtiéndose en una herramienta poderosa a la hora de encarar proyectos complejos.

Quartz Composer

Es un lenguaje de programación visual basado en nodos proporcionado como parte del entorno de desarrollo Xcode en Mac OS X para el procesamiento y representación de datos gráficos.
Quartz Composer utiliza OpenGL (incluyendo GLSL), OpenCL (sólo en Mac OS X 10.6 y posteriores), Core Image, Core Video, JavaScript y otras tecnologías para construir una API y una herramienta de desarrollo en torno a un paradigma de programación visual simple.

Syphon

Syphon es una tecnología de código abierto de Mac OS X que permite que las aplicaciones compartan frames (cuadros por segundo) unas con las otras en tiempo real. Es una aplicación Cliente-Servidor que facilita la integración de distintas herramientas audiovisuales, facilitando el transporte de información en tiempo real.

Resolume Arena 4

Esta herramienta es utilizada para realizar mezclas de video en tiempo real.
En la actualidad es la herramienta de mayor implementación y aceptación en el mundo del VJ (Visual Jockey) ya que permite realizar mappings de manera simple y directa, sin la necesidad de otras aplicaciones complementarias.

Ableton Live

Ableton Live es el programa preferido a la hora de producir música. Su interfaz está compuesta de dos vistas las cuales permiten componer música y la otra para disparar fragmentos de audio o pistas MIDI. Este software se utilizó para manejar el contenido sonoro del prototipo.

 

Hardware

Leap Motion

Leap Motion

Es un sensor de trackeo de manos.
De tamaño pequeño y maleable, permite capturar con gran precisión los movimientos y gestos realizados por las manos de un usuario, enviando a la computadora las coordenadas de cada uno de los dedos o gestos como TAP, SWIPE, SCROLL, etc.
Este dispositivo es relativamente nuevo y en Argentina no se ha implementado más allá de algunas muestras artísticas como por ejemplo en el Centro Cultural Recoleta bajo la muestra FASE 2015, donde la obra Existencia Inauténtica de Leandro Amaro, lo utilizó para controlar una marioneta de madera mediante la implementación de la librería de Leap Motion en Processing y conectado a un Arduino Mega y tres servomotores.

Microsoft Kinect

Microsoft Kinect

Es un dispositivo de trackeo desarrollado originalmente para la consola Xbox 360 en el 2011. Mediante este dispositivo se puede capturar el movimiento de distintos usuarios a la vez, obteniendo información precisa de la posición en el espacio de sus cuerpos, esqueletos y acciones que estos realicen.
Al estar conectado a una computadora, toda la información proveniente de las cámaras (infraroja, RGB y de profundidad) es interpretada, analizada y utilizada para generar diferentes animaciones reactivas al movimiento de los usuarios.

 

2. Proceso creativo

Conjuntamente con la elección del partido conceptual en el cual se basará el contenido audiovisual de la instalación, se presentan las diferentes etapas por las cuales se transitó para concluir con el prototipo funcional.

A lo largo de este proceso de desarrollo se indagó en las herramientas disponibles, tanto de software open source como de hardware. Desafortunadamente para el desarrollo de este trabajo no se cuenta con los últimos modelos de los sensores Microsoft Kinect, con lo cual se utilizará la versión Microsoft Kinect 1, Modelo 1414. El cual funciona correctamente con computadoras con Mac Os X. Este modelo es el más fácil de conseguir tanto en Argentina como en el Exterior.

El hardware con que se dispone para la realización del prototipo es: Computadora Macbook Pro Retina 2015. / Dos Microsoft Kinect v1. / Un Leap Motion / Un Arduino Mega SDK / Una Tira de leds RGB / Una Raspberry PI II / Un Proyector Epson X12 / Una Cámara Canon EOS 600D

Las herramientas utilizadas para la investigación del prototipo fueron:

Osculator
TouchOSC
Syphon
Quartz Composer [Syphon Plugin, qcOSC Plugin, Ballet OSC (Sketch de Motus Lumina),Golden Shapes (Sketch de Motus Lumina)]
Leap Motion Controller v2 [GecoMidi, OSCMotion]
Resolume Arena 4
Processing 2 [SimpleOpenNI, oscP5, netP5, Leap Motion Library, OSC_Kinect_1_08 (Sketch)]
Ableton Live 9 Suit [Livegrabber-v3.3.3, Max4Live]

A continuación se presenta el recorrido e investigación realizada a través de las distintas herramientas de software y hardware utilizadas para las pruebas de conectividad del prototipo.

Esta parte de la investigación se dividió en etapas, las cuales marcan el orden evolutivo de conectividad de las distintas herramientas. Al finalizar cada etapa se está en condiciones de agregar un nuevo nivel de dificultad y complejidad, sumando otra herramienta al sistema.

 

PRIMERA TAREA

Objetivos:
Enviar mensajes OSC entre aplicaciones en localhost.
Conectar Processing y TouchOSC con Quartz Composer.

Procedimiento:
El primer envío de mensajes entre aplicaciones se realizó con el ejemplo oscP5SendReceive de la librería oscP5 de Processing 2. Al definir el puerto de salida con el mismo valor del puerto de entrada, la aplicación se envía mensajes OSC a sí misma, garantizando el correcto funcionamiento, sobre el protocolo UDP.
La dirección IP de ruteo en primera instancia fue localhost (127.0.0.1).

IP de ruteo

A medida que se avanzaron con las pruebas, se utilizaron direcciones IP de distintos dispositivos dentro de la red LAN con el fin de asegurar la interconectividad dentro de la misma.

TouchOSC en un dispositivo iPhone 5

A continuación se configuró la aplicación TouchOSC en un dispositivo iPhone 5. Esta aplicación permite la creación de distintos templates con elementos como faders, botones toggle, perillas y áreas de coordenadas, los cuales pueden ser fácilmente asociados a mensajes OSC, creando interfaces táctiles personalizadas cuyo funcionamiento es similar a los controladores físicos utilizados a la hora de producir contenido en vivo.

En el diseño de esta interfaz se crearon distintos faders y botones con el fin de enviar mensajes a una composición de Quartz Composer. En esta composición se incluyó un patch de esfera (Sphere) a la cual se le modificaría entre otras cosas su diámetro y posición en el eje Y. A su vez, se agregó una instancia del patch qcOSC el cual permite recibir mensajes OSC, estableciendo un puerto de entrada.

Control OSC desde TouchOSC

Al mover los faders del TouchOSC en el celular, los valores enviados son recibidos por Quartz Composer y listados como outputs en el patch de qcOSC, una vez agregados al patch, pueden ser conectados a los inputs del patch de la esfera. Linkeando los valores recibidos con distintos comportamientos y valores de la misma, como su posición, tamaño o rotación. De esta misma manera se podría seguir utilizando los distintos valores recibidos y alterar comportamientos de otros objetos o mismo cámaras de la composición.

 

SEGUNDA TAREA

Objetivos:
Establecer OSCulator como aplicación que realice el trabajo de forwarder de mensajes OSC.
Rutear mensajes desde una Kinect hasta Quartz Composer.

Procedimiento:
OSCulator es una aplicación para Mac que permite centralizar mensajes provenientes de diferentes clientes OSC y rutearlos hacia distintas direcciones IP dentro de una misma red.
A su vez su interfaz permite establecer mapeos de valores de entrada y su posterior salida a intervalos definidos. De esta manera se puede acotar o normalizar un valor, haciendo que su salida esté comprendida entre 0 y 1 por dar un ejemplo.

OSC Forwarder

Como se puede observar en la imagen algunos de los mensajes OSC recibidos por OSCulator fueron duplicados para ser ruteados a dos aplicaciones diferentes, en distintos puertos UDP. Esto se usará en tareas subsiguientes a la hora de enviar el mismo mensaje tanto a Quartz Composer como a Ableton Live.

El siguiente paso fue enviar las coordenadas de las distintas partes del cuerpo obtenidas mediante la Kinect a Quartz composer, utilizando como ruter el OSCulator.

Para ello se pensó en un Sketch de Processing que integre la librería SimpleOpenNI encargada de obtener la información enviada por la Kinect, con la librería oscP5 la cual tiene la funcionalidad de enviar y recibir mensajes OSC.

Al detectar un usuario la Kinect debería enviar la posición de las manos, la cabeza, piernas y centro de masa del mismo. Estos valores son útiles para definir coordenadas de objetos dentro de Quartz Composer, como se vió anteriormente con la esfera. La diferencia en este caso está dada en es el cuerpo del usuario quien define los movimientos de los objetos otorgandole realismo a la interactividad producida por la interfaz. El usuario al ver sus movimientos reflejados en las pantallas instintivamente busca moverse y generar variaciones en los objetos visuales. Es por eso que este sensor ha sido de gran utilidad a la hora de generar arte electrónico interactivo, convirtiendo a los visitantes de las obras en partícipes y haciendo que estas se completen mediante la interactividad y los cambios que genera.

Buscando sketchs de Processing similares se dío con OSC_KINECT_1_08, el cual integra estas mismas dos librerías permitiendo enviar los puntos de la Kinect por OSC. Como las intenciones de la misma eran similares a los objetivos de esta etapa, se continuó utilizandola.

OSC_KINECT

Al igual que el ejemplo DepthImage este sketch reconoce la profundidad de campo del lugar, detectando usuarios. A su vez este sketch dibuja puntos de colores en cada lugar del cuerpo detectado y los envía por OSC a la dirección y puerto escritos en la variable myRemoteLocation.

OSC Routing

Los valores son recibidos por el OSCulator en el puerto 4000 y ruteados a Quartz Composer en el puerto 7010. Para controlar cada valor recibido se utiliza el visualizador “Quick Look” del OSCulator el cual grafica los distintos valores recibidos en tiempo real.

En Processing las coordenadas están acotadas por las dimensiones del sketch, en un sketch de 640×480 pixeles, los valores de X podrán ir entre 0 y 640 y los de Y entre 0 y 480. También dependerán de la ubicación de la Kinect y la distancia al objeto. Por lo cual se decide realizarles una normalización estableciendo que el menor valor (0) corresponderá a -1, y el mayor valor (640) corresponderá a 1. Lo mismo para el caso del eje Y pero con valor máximo en 480. Al trabajar con valores normalizados, Quartz Composer reconoce valores entre -1 y 1 para sus ejes, con lo cual a los valores enviados por la Kinect podrán ser reconocidos.

OSCulator

Finalmente en caso de que el mensaje OSC empaquete varios valores de variables, como por ejemplo las dos coordenadas X e Y en un mismo mensaje, del lado de Quartz Composer se debe utilizar una instancia del patch Structure Key Member, el cual descompone las variables y permite su utilización por separado, como se muestra a continuación.

Structure Key Member

 

TERCER TAREA

Objetivos:
Conseguir input de datos desde el dispositivo Leap Motion y enviarlos a Quartz Composer.

Procedimiento:
Anteriormente y para distintos trabajos de la carrera de multimedia, se realizaron instalaciones y desarrollos que involucran el uso del Leap Motion como input de datos ya que posee gran precisión en la detección de las manos, los dedos y otros gestos como “tap”, “swap”, “roll”, etc.
Para estos trabajos se ha utilizado la librería LeapMotionForProcessing de Processing 2 en conjunto con Arduino y la librería de FirmData, la cual permite crear una instancia del Arduino y manejar sus pines desde Processing. Esto es útil si se quiere usar varias librerías distintas y mezclar sus funcionalidades en un solo sketch.

Otro ejemplo de utilización fue enviar las coordenadas de los inputs del Leap Motion al Arduino meditante MIDI. Los resultados fueron más satisfactorios al utilizar este método que mediante la FirmaData.

Nuevamente la librería de LeapMotionForProcessing puede ser integrada con la librería oscP5 con el fin de obtener mensajes OSC desde Leap Motion, pero en este caso se opto investigar que herramientas están disponibles en el App Store de Leap Motion, el cual se puede acceder desde https://apps.leapmotion.com/.

En primer lugar se descargó la aplicación OSC Motion (https://apps.leapmotion.com/apps/osc-motion/osx), por el precio de 2 dólares. Esta aplicación es bastante básica, tanto en su configuración como en sus prestaciones. Las puntas de cada uno de los dedos son trackeadas y representadas mediante puntos en una grilla en forma de L simulando los ejes X e Y. Se debe ingresar la IP de destino y puerto al cual se quiere enviar la información y en caso de ser necesario, se pueden editar los mensajes OSC con el fin de poder reconocer con facilidad de que dedo se trata en la aplicación cliente.

OSC Motion

Una vez instalada y configurada la aplicación OSC Motion se duplicaron los puntos dentro de Quartz Composer.

Quartz Composer

Utilizando el path qcOSC para recibir los valores de X, Y y Z de cada dedo de la mano derecha.
Se implementó el OSCulator para rutear los mensajes provenientes de SC Motion.

Una vez garantizada la correcta recepción de los mensajes OSC dentro de la composición de Quartz, se implementaron varios patches más complejos de prueba.

El primero, Ballet, desarrollado por la empresa Motus Lumina, contiene comportamientos de los objetos muy avanzados que generan efectos visuales muy interesantes.

Se realizó la adaptación de este patch para que reciba mensajes OSC, modificando la Amplitud del sistema en X e Y, con el movimiento ascendente o descendente de la mano derecha, capturada por el Leap Motion.

De esta manera ya se pueden controlar comportamientos más avanzados, ampliando las posibilidades visuales del prototipo.

Posibilidades visuales del prototipo

Si bien el valor de cada parámetro se puede acotar desde el OSCulator, se pueden incluir distintos patches como Smooth para suavizar o alterar algunos de los valores recibidos, produciendo mayor sensación de control de la visual por parte del usuario. En este caso el patch genera una curva exponencial en el tiempo que tarda en cambiar el valor, produciendo una sensación de inercia (ease in ease out).

OSC desde Leap Motion

Tras no quedar conforme con el comportamiento de la aplicación OSC Motion, la cual en ciertos momentos confunde las dos manos, alternando parámetros de la derecha, con otro de los dedos de la mano izquierda, produciendo fallas visuales, se decidió probar con una nueva aplicación que envíe mensajes OSC desde Leap Motion.

Luego de indagar en distintos foros y sitios de internet se dió con la aplicación GEGOMidi ( https://apps.leapmotion.com/apps/geco-midi/osx), la cual se puede descargar de la App Store de Leap Motion por el precio de 10 dólares. Si bien el precio parece elevado en comparación a otras herramientas disponibles para el mismo fin, el desempeño de esta aplicación es muy bueno, y permite realizar movimientos con las manos enviando tanto por MIDI como por OSC los resultados. Esta aplicación incluye movimientos de: Rotación, Traslación, Distancia, entre otras cosas. A su vez también permite acotar los valores previamente a ser enviados y establecer puntos de retorno de los valores, al quitar las manos del dispositivo.

Los movimientos obtenidos desde esta aplicación son más armónicos que con la herramienta anterior. Se procedió a enviar los datos a OSCulator y luego seleccionar algunos para ser enviados a Quartz Composer.

Golden Shapes

En este caso se duplicaron los mensajes dentro del OSCulator, para enviar una copia hacia el Quartz Composer, y como se verá más adelante, a Ableton Live.

Se seleccionaron los movimientos de posición en Y, pitch (rotación en dirección izquierda o derecha) y posición en X de la mano derecha. Estos valores se enviaron a una composición llamada Golden Shapes desarrollada nuevamente por Motus Lumina, la cual permite alterar el comportamiento de diferentes polígonos regulares, basado en los Sólidos platónicos. De esta manera se consiguió alterar la amplitud de las figuras con movimientos horizontales de la mano derecha y su velocidad con movimientos rotatorios de la mano izquierda.

 

CUARTA TAREA

Objetivos:
Enviar contenido visual de Quartz Composer a Resolume Arena

Procedimiento:
Una vez configuradas las composiciones de Quartz Composer para recibir mensajes OSC desde el Leap Motion, se está en condiciones de enviar contenido visual desde Quartz Composer a Resolume Arena. Este programa será el encargado del output de video principal del prototipo.

output de video principal del prototipo

Para ello se utiliza la tecnología Syphon la cual permite que dos o más aplicaciones compartan frames de video en tiempo alcanzando los 60fps.

Desde la web oficial de Syphon https://github.com/Syphon/Quartz-Composer/releases/tag/4 se puede descargar el plugin de Quartz Composer el cual debe ser instalado dentro de la carpeta de Plugins.

Syphon

Una vez agregado el patch de Syphon Server a la composición, esta comienza a hacer un broadcast de video, el cual puede ser fácilmente capturado por los distintos programas que compartan esta tecnología, como por ejemplo: VDMX, MadMapper, Processing, etc.

La señal de video enviada mediante Syphon, es obtenida por el Resolume Arena, desde las opciones de Source y bajo el subtítulo de Syphon. En este caso al servidor se le seteó el nombre de QC Leap.

Arrastrando el nombre del servidor dentro del Arena, a un casillero se obtiene la señal enviada desde Quartz Composer, basta con encuadrar la señal en el tamaño del output del Arena para disponer del contenido. Una vez en la capa deseada, se puede mezclar con otros loops y videos según se necesite.

Arena

De esta manera se cierra el ciclo de información el cual comenzó en el Leap Motion, enviando sus coordenadas a OSCulator, luego estas son transportadas a Quartz Composer, quien mediante Syphon publica su contenido de video, el cual se captura con el Arena para ser utilizado en la salida principal de video del prototipo.

Más adelante se verá la configuración avanzada del Arena, la cual permite utilizar más de un proyector y realizar un ajuste (mapping) en la superficie proyectada.

 

QUINTA TAREA

Objetivos:
Conectar Ableton Live recibiendo mensajes OSC desde GECOMidi

Procedimiento:
Ableton Live es el principal software para producir música en vivo utilizado tanto en la escena under como mainstream. Todos los djs que se animan a comenzar a producir música, ven en Ableton la puerta de entrada.

A su vez la interfaz de Ableton Live es una de las mejores interfaces de software disponible para la producción musical ya que entre otras ventajas, permite de manera simple mappear controladores y dispositivos MIDI.

Ableton Live LiveGraver

Para recibir y enviar mensajes OSC desde el Ableton Live se utilizó el plugin de Max4Life llamado LiveGraver 3.3. El mismo permite agregar un servidor OSC en ableton, setearle un puerto de entrada y/o uno de salida y mediante el ParamGraver o el TrackGraver, asociar mensajes OSC a controles de la interfaz de Ableton o mismo a sus plugins de efectos. De esta manera las posibilidades de control son casi infinitas.

 

El presente artículo constituye el capítulo 4 de la tesis de grado Undermedia: Multimedia interactiva en la escena electrónica under, presentada por el Lic. Leandro Amaro en abril de 2016.