viernes, 13 de septiembre de 2013

SINTETIZADOR DE ARMÓNICA
CON PROCESSING
(DANIEL MUÑOZ DIAZ)

Las aplicaciones musicales son las más llamativas por los usuarios de diversas plataformas tecnológicas, estas llaman poderosamente la atención porque la música es universal y variada, para cada persona resulta interesante algún ritmo o instrumento musical.
El objetivo de este proyecto es diseñar un sintetizador para una armónica utilizando Processing como plataforma y lenguaje de programación. Processing es una plataforma de Software libre con multiples opciones para el programador, su sitio oficial es http://www.processing.org, donde ademas se pueden encontrar muchas rutinas y ejemplos de alta utilidad.


LA ARMONICA

La armónica es un instrumento de viento, del grupo  de instrumentos viento madera, se toca soplando o aspirando el aire sobre uno de sus agujeros individuales o sobre múltiples agujeros a la vez. La armónica diatónica tiene 10 agujeros y una extensión de 3 octavas. En este proyecto se simulara el comportamiento de una armónica diatónica. (1)
DESARROLLO DE LA LÓGICA DEL CÓDIGO
En este caso se realiza una aplicación de escritorio sencilla, en la que se emula el funcionamiento de una armónica diatónica de 10 canales, para ello se utilizó Processing, el cual es un entorno y lenguaje de programación muy sencillo, cuyas sintaxis son basadas en Java. Para el desarrollo de esta aplicación se desarrollo un programa que emulara cada uno de los sonidos de una armónica diatónica de diez canales, sin embargo por limitantes propias del diseño solo se utilizaron los tonos producidos al soplar, quedando excluidos aquellos que se generan al inhalar. Fue necesario utilizar una imagen de una armónica con cada una de las aberturas que esta presenta y agregando tal imagen como fondo de la aplicación fue necesario calcular las coordenadas de cada una de estos canales para así asignarle un tono o sonido especifico correspondiente al sonido que en la realidad se escucharía al soplar por el canal que se especifique.
Por la geometría de la imagen de la armónica todos los canales de esta quedan bajo el mismo rango de coordenadas de y, así pues que al evaluar primero si la posición del cursor se encuentra en el rango de y, solo es necesario indagar por los rangos de x de cada hendija, lo que facilita y reduce código, pues si no se encontraran en el mismo rango de y sería necesario preguntar para cada canal tanto por las coordenadas y como por las coordenadas x. De este modo al evaluar cada rango de x, si esta en el rango de una hendija determinada y se está presionando el cursor, entonces se escuchara el sonido que corresponda; de este modo el control de las notas a reproducir se hace mediante la posición del cursor en la aplicación.

Puede decirse que los agujeros que producen el sonido se encuentran en una misma línea recta, realmente entre dos líneas, por tanto el algoritmo se reduce a un condicional inicial para saber si el cursor se encuentra entre las coordenadas de y especificadas que en este caso fueron 430 y 460, posteriormente se busca establecer en cuál de los agujeros se encuentra la posición del cursor, lo que no es más que preguntar por la posición en x del cursor y saber en cual rango se encuentra; gráficamente en un diagrama de flujo se ve de este modo: 
En este gráfico solo se consulta por tres posiciones de x y se reproducen tres sonidos, el proceso completo sé hacer para cada una de las 10 posiciones y el mismo número de sonidos.


DESARROLLO DEL CÓDIGO FUENTE
De este modo se explica la lógica utilizada para desarrollar la aplicación, sin embargo el desarrollo del código se describe como sigue:
En primera instancia se llama o se declara a maxim, para poder utilizar las ventajas de esta librería y así tener los reproductores que son necesarios, en este caso 10, uno por cada nota, luego se declaran las variables que se utilizaran, las de tipo grafico, son images y FONDO, donde images se utilizo para crear una animación sin embargo no se implemento en el resultado final, no obstante FONDO si se utilizo para ser el fondo de la aplicación como ya se vio en la figura 1. Luego se declaran e inicializan en cero las variables auxiliares de tipo entero currentPosition y j.

Al tener las variables y librerías declaradas se sigue la construcción del código.



En el  void setup se configuran las diversas características que tendrá la aplicación, como el fondo y las dimensiones de la aplicación al ser presentada en el escritorio del computador, a la variable fondo se le asigna la imagen ARMONICA_172.jpg y toma las dimensiones de la imagen en mención; como también se declaran cada uno de los reproductores desde player1, hasta player10, utilizando la sentencia maxim.loadFile y el argumento de esta sentencia es el sonido que se busca reproducir que debe estar en la carpeta de datos de la aplicación.






Ahora se procede a realizar todo lo relacionado con gráficos y dibujos en void draw, en este caso basta con colocar de fondo la imagen que le fue asignada a la variable FONDO.

Es necesario configurar el comportamiento de la aplicación con el movimiento del cursor, se le aplicara un sutil efecto de color que seguirá la posición del puntero cuando este se encuentre presionado y además se realizara la comparación de las coordenadas del cursor cuando se presione el click de forma sostenida, para poder detectar en cuál de los canales de la armónica se encuentra y reproducir el sonido respectivo, ya se conoce la lógica a utilizar, el código es el siguiente:
Aquí se realiza un leve efecto de color para el click sostenido, donde mousex entrega la posición x del cursor y mouseY la posición y del cursor, el resto se usa para dar un color muy ligero durante el clik sostenido.

Se pregunta primero por las coordenadas en y,  luego las respectivas coordenadas en x seguido se reproducen los sonidos respectivos.
Esta rutina se realiza también con el mousePressed, para conseguir que los sonidos se reproduzcan tanto en al hacer click, como al hacer click sostenido sobre cualquiera de los canales de la armónica.

ADQUISICIÓN DE LOS SONIDOS
Para adquirir cada uno de los sonidos de la armónica se utilizo el programa AUDACITY, que un software libre que se puede descargar en http://audacity.sourceforge.net/?lang=es; tomando el sonido de la página web: http://harmopoint.com/harmonica-virtuel/, cabe destacar que solo se utilizaron los sonidos generados al soplar la armónica, pues el trabajo se hizo complejo para reproducir tanto el sonido al soplar como el sonido al inhalar aire.
http://harmopoint.com/harmonica-virtuel:





Video Descriptivo



DANIEL MUÑOZ DIAZ
EST. ING. ELECTRÓNICA


1 comentario:

  1. Hola, para la clase maxim hay que descargase alguna librería es que no me funciona, me da un error, hay que bajar algo?? un saludo

    ResponderEliminar