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
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.

























