martes, 17 de septiembre de 2013


ARPA VIRTUAL CON PROCESSING Y ARDUINO
Carlos David Puerta Sánchez.
Control I
Ingeniería Electrónica.
Universidad del Magdalena.

El siguiente proyecto corresponde a la simulación de forma virtual de los sonidos de un arpa. Para lograr dicha tarea se hace uso de herramientas de hardware y software libre por su facilidad y versatilidad que presentan.
En esta ocasión se hace uso de Processing no solo por la sencillez que presenta este software, sino también por la utilidad que presenta en caso que se desee implementar el proyecto en sistemas Android.


EL ARPA
Este fascinante instrumento de cuerda tiene sus orígenes en Asia y África desde hace miles de años. Debido a su larga edad, ha tenido varios cambios en su fabricación a lo largo de los años.
Actualmente se pueden encontrar distintos tipos de arpas, donde sus principales variaciones radican en el tamaño del instrumento, el número de cuerdas y el material de las mismas.
El número de cuerdas de un arpa puede extenderse hasta las 47, sin embargo hay variaciones en la que estas pueden reducirse hasta 26 cuerdas.
Es interesante resaltar que en algunas arpas las tonalidades correspondientes a los sostenidos y bemoles se obtienen por medio de pedales.




DESARROLLO DEL PROYECTO
Lo primero que se hizo fue seleccionar una imagen, la cual se editó de tal forma que fuese posible separa lo suficiente las cuerdas para una mejor distinción entre ellas a la hora de deslizar el mouse sobre ellas.
Después de haber seleccionado  la imagen y cargarla en processing, fue necesario correr un pequeño programa para poder saber la coordenada de cada una de las cuerdas y sobre esta información trabajar en la clasificación de cada cuerda.

Este código fue el empleado para obtener la coordenada X de cada cuerda del arpa virtual con la q se trabajó.
Una vez conocida la posición de cada una de las cuerdas, se procedió asignando a cada una de ellas una respectiva nota de la escala musical. Vale la pena resaltar que las cuerdas rojas son la de la tonalidad de DO y van aumentando de izquierda a derecha. Las cuerdas azules corresponden a FA.


Posteriormente se procedió a la asignación de los sonidos a cada cuerda, para eso se hizo uso de la librería maxim y se definieron las variables necesarias donde a cada una de ellas se cargó un archivo de audio con la nota musical respectiva.




En la porción de código anterior se observa cómo se cargan los archivos .wav donde está el sonido de cada nota del arpa. Y se selecciona el setLooping (false) para que no se repita el sonido sino que suene una vez cada vez q se seleccione la cuerda.
Una vez cargada la imagen y los sonidos, se hizo uso de la función mouseDragged, la cual nos permite reproducir la nota correspondiente cada vez que pasamos el cursor del mouse (presionado) sobre la cuerda.



Como se puede observar, se pregunta por la coordenada del mouse y dependiendo de esta, se reproduce el sonido almacenado en la variable player que corresponda.
Es importante indicar que la velocidad de reproducción se va aumentando a medida que la escala de notas aumente, es decir, para la primera escala la velocidad de reproducción es 1, mientras que para la segunda escala musical la velocidad se duplica y así hasta abarcar las 4 escalas que posee esta arpa.
Un ítem adicional, fue la implementación de hardware en el proyecto. En este caso se utilizó la tarjeta arduino uno, para que encendiera un led por cada nota musical que sonaba en el instrumento virtual. La comunicación entre arduino y processing se hizo mediante el puerto serial. Como se vio en la porción de código anterior dependiendo de la coordenada en que esta el mouse, se va a reproducir cierto sonido, pero a su vez se escribe un dato en el puerto “puerto.Write(‘dato’)”
Una vez asignado dicho dato en el puerto, lo que se hace en arduino es preguntar por el valor que esté en el puerto serial y dependiendo de la información que  haya se va a encender el led correspondiente.


En este caso se encenderá el led que está en el pin 13 cada vez que la nota que suene sea DO.

Para finalizar solo resta destacar lo interesante que resulta hacer uso del software y hardware libre donde los proyectos o tareas a realizar pueden ser prácticamente ilimitadas. Fue muy grato conocer herramientas como processing y darse cuenta que es posible programar y generar códigos capaces de interactuar con distintos dispositivos Android.

Sin duda esta fue una experiencia gratificante y que nos permite ver que muchas veces las cosas no son tan difíciles como quizá imaginamos. 

No hay comentarios:

Publicar un comentario