Leap Theremin – Experimentando con Leap Motion y sintesis de audio

La semana pasada llegó a mis manos el mágico y maravilloso Leap Motion (www.leapmotion.com).
Para quienes no lo conocen, se trata de un dispositivo que capta mediante camaras y sensores las posiciones en el espacio de manos, dedos y herramientas.
La tecnología es similar a la de otras interfaces gestuales como el Kinect. Sin embargo LeapMotion se enfoca solamente en analizar las manos y obtiene, gracias a ese enfoque, una presición sorprendente.
Como se trata de un producto nuevo, aún las aplicaciones disponibles son pocas, peeeero, trae todo lo que un enfermo geek como yo puede desear: Un SDK compatible con Linux 😀

Y lo mejor de todo: ¡Es re simple!. Esta maravilla te tira para cada frame que procesa, un array de manos, un array de dedos, un array de objetos puntiagudos, un array de gestos en el espacio (circulos, movimientos bruscos, etc), todo con sus respectivas coordenadas.
Es tan fácil que sin mucho esfuerzo y con un poquito de creatividad, se pueden crear montones de aplicaciones locas.

Se me ocurrió entonces utilizar el Leap Motion para construir algo que siempre quise: Un theremin.

La parte de las manos ya la tenía pensada y resuelta en la cabeza, me faltaba el audio.
Así pasé toda la semana investigando sobre bibliotecas para sintesis de audio.

Lo primero que encontré fue SuperCollider, un potentisimo motor de sintesis de audio con lenguaje de programación propio.

Lo probé y me encantó, uno de los ejemplos enseñaba con una sola linea de código cómo hacer un theremin ligado a la posición del mouse.

El problema con SuperCollider fue que no incluye ninguna api para interfacear, implementan un protocolo de comunicación llamado OSC y cualquier aplicación que quiera generar sonido por SuperCollider tiene que implementar ese protocolo. Ni el protocolo ni la lista de mensajes están del todo bien documentados. O al menos no puede encontrar la documentación que necesitaba.

Luego me topé con Overtone, un software hecho sobre SuperCollider pero más moderno. Se veía muy prometedor, con la salvedad de que se programa en Clojure.

Todo bien con Clojure, pero yo quería hacer mi experimento en C++.

Finalmente encontré lo que buscaba The Synthesis Toolkit (STK). Una serie de bibliotecas multiplataforma para sintesis de audio.

Armado con STK, anoche me senté durante varias horas y pude codear mi tan deseado theremin.

Les comparto a continuación un video del resultado:

Por ultimo, para aquellos afortunados que tengan un Leap Motion, y quieran probar la aplicación (y por que no, mejorarla) pueden descargar el código fuente en google code.

En fin, saludos!
Germán

Deja un comentario