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









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