SINTETIZADOR
DE BATERÍA UTILIZANDO PROCESSING Y ANDROID
Introducción
a la batería y sus orígenes
Como definición, podemos decir que la batería es un conjunto de
instrumentos de percusión formado por varios tambores y platos metálicos que se
tocan mediante baquetas y pedales, cuya ejecución habitualmente corresponde a
un solo músico.
Su función básica dentro de cualquier conjunto musical, es
marcar el ritmo y los tiempos de la melodía, aunque con su evolución ha cobrado
su propio protagonismo dentro de muchas bandas, sobre todo de Rock y Hard Rock,
llegando a constituirse como un instrumento solista.
Composición de la batería
moderna
La batería moderna se compone de varios elementos básicos como son los
tambores y los platos existiendo varios tipos de ambos, a los que se pueden
añadir otra serie de instrumentos como cencerros, panderetas, gongs o bloques
de madera, entre otros.
Así la batería se construye en base a las necesidades y gustos del
guitarrista, llegando a extremos verdaderamente complejos como la que ejecuta
por ejemplo el virtuoso Mike Portnoy.
Los tambores en la batería
Lo habitual es que estén fabricados en madera y tengan un parche
fabricado en plástico, en cada uno de sus extremos, uno de golpeo y otro
resonante.
Existen varios tipos de tambores en la batería:
·
Bombo. Se toca a través de un pedal al que se une una maza. Es el tambor
de mayor tamaño en la batería y aporta los sonidos más graves al conjunto.
·
Caja. Su función es marcar los compases. Tiene poca altura y se
caracteriza por la existencia en su parche inferior de unas hebras o bordones
que le dan un sonido característico, estridente y metálico.
·
Tom toms. Son timbales colocados generalmente sobre el bombo y pueden
variar sus tamaños y tono.
·
Tom base. Su sonido es más grave que el de los otros toms y suele estar
situado sobre patas individuales.
Los platos en la batería
Construidos normalmente en una aleación de bronce a latón, con una
estructura cóncava y agujereado en su centro, presentan diversas clases:
·
Hi hats. Se compone de dos platillos instalados sobre un soporte de
metal y tocados con un pedal que al accionarse permite que uno caiga sobre otro
generando un sonido característico.
·
Existen además muchos otros tipos de plato que varían en función del
tamaño y la sonoridad emitida y que tiene diversos nombres como por ejemplo,
Ride, Splash, Crash Ride, China, Cup Chime, Bell o Choper.
Forma de ejecución de la
batería, las baquetas
Además de los pedales, la forma de tocar la batería pasa por el uso de
baquetas que se construyen en diversos materiales y con distintos pesos para
favorecer la velocidad de ejecución.
Pero además de las baquetas y con el objetivo de conseguir diferentes
sonidos, también se utilizan escobillas o escobetillas, baquetones de goma o de
fieltro.
Orígenes de la batería
La batería nace a finales del siglo XIX y principios del XX en Estados
Unidos, como la unión de diversos instrumentos de percusión presentes en
distintas partes del mundo y su nacimiento está enlazado con la aparición de
la música Jazz.
Así, el bombo y la caja vienen de Europa, los platos de Turquía y de
China, los toms de China, de Africa y de los indios Americanos.
Inicialmente su ejecución se encargaba a varios percusionistas, pero con
la aparición del pie de caja y del pie de bombo en 1910 y el ensamblaje de
todos los instrumentos, se consigue que un sólo músico sea capaz de tocar toda
la percusión; así que se podría decir que ese fue el nacimiento de la batería tal y como la
conocemos en la actualidad.
Al principio comienza siendo un instrumento que sirve exclusivamente
para mantener el ritmo y marcar los tiempos de la melodía, pero a finales de
los años 20, surgen los primeros virtuosos de la batería como Baby
Dodds o Zutty Singleton, que empiezan a introducir solos y a
reclamar el protagonismo que le corresponde al instrumento.
A partir de esos momentos y con la mejora de materiales, la batería
empezó a ser utilizada en casi todos los estilos musicales, teniendo su punto
de mayor auge en los años 50 con el nacimiento del sonido Rock 'n Roll, donde
consiguió alcanzar la categoría de imprescindible para cualquier composición
musical.
Tomado de (http://suite101.net/article/instrumentos-musicales-introduccion-a-la-bateria-y-sus-origenes-a62996).
EXPLICACION DEL CODIGO EN PROCESSING
A continuación explicare paso a paso cada segmento de código en el orden
de su ejecución en processing.
Para el desarrollo del sintetizador se utilizara la librería
MaximJava_api, la cual estará incluida en el enlace que publicaré a final donde
podrán encontrar una carpeta con los archivos correspondientes al proyecto
completo.
Declaración de variables como formato de audio para que la librería
reconozca, en este caso se utilizan archivos de audio .wav
Maxim maxi;
AudioPlayer t1; AudioPlayer t2; AudioPlayer t3; AudioPlayer t4; AudioPlayer
t5; AudioPlayer t6; AudioPlayer t7; AudioPlayer t8; AudioPlayer t9; AudioPlayer
t10; AudioPlayer t11; AudioPlayer t12; AudioPlayer t13; AudioPlayer t14; AudioPlayer
t15;
Luego se declaran las variables donde se guardará el fondo de la
aplicación y las que controlaran en color (RGB) de la selección del objeto que
suena al presionar o hacer click sobre él.
PImage bateria;
int R=0; int G=0; int B=0;
En el void setup se le asignan o cargan a todas las variables su archivo
correspondiente y configuraciones que tendrán una vez empiece a ejecutarse el
programa.
void setup() // Configuracion Principal y carga de variables
{bateria = loadImage("bateria.jpg"); //Carga la imagen de
fondo guardada en el folder data del proyecto.
size(bateria.width, bateria.height); //Asignar el tamaño de la Interfaz
igual que el tamaña de la Imagen cargada
maxi = new Maxim(this); //objeto maxi inicio
Se cargar los sonidos de cada tambor a la variable teniendo en cuenta
que cada sonido debe estar guardado en la carpeta “data” que se encuentra junto
al archivo de nuestro proyecto, de lo contrario se tendrá que especificar la
dirección exacta donde se encuentre el archivo .wav.
asi: variable = maxi.loadFile("Letra Disco:\ Direccion del Archivo\
nombre.extencion");
t1 = maxi.loadFile("t1.wav"); //cargar archivo de sonido .wav
t2 = maxi.loadFile("t2.wav"); t3 = maxi.loadFile("t3.wav");
t4 = maxi.loadFile("t4.wav"); t5 =
maxi.loadFile("t5.wav");
t6 = maxi.loadFile("t6.wav"); t7 =
maxi.loadFile("t7.wav");
t8 = maxi.loadFile("t8.wav"); t9 =
maxi.loadFile("t9.wav");
t10 = maxi.loadFile("t10.wav"); t11 = maxi.loadFile("t11.wav");
t12 = maxi.loadFile("t12.wav"); t13 =
maxi.loadFile("t13.wav");
t14 = maxi.loadFile("t14.wav"); t15 =
maxi.loadFile("t15.wav");
Para evitar que el sonido se siga reproduciendo continuamente una vez
sea reproducido al dar click sobre el instrumento.
t1.setLooping(false); t2.setLooping(false); t3.setLooping(false);
t4.setLooping(false); t5.setLooping(false); t6.setLooping(false);
t7.setLooping(false); t8.setLooping(false); t9.setLooping(false);
t10.setLooping(false); t11.setLooping(false); t12.setLooping(false);
t13.setLooping(false); t14.setLooping(false); t15.setLooping(false);}
El void draw() se encarga de hacer toda la configuración grafica que tendrá
nuestra aplicación en este caso solo pondremos una imagen de fondo de medidas
(800p x 600p) para la de escritorio y (480p x 320p) para el Android.
void draw()
{ image(bateria, 0, 0); //Fondo
de La aplicación en la posición (0,0) de la pantalla }
En el void mousePressed() se
detecta la posición donde se encuentre el mouse cada vez que sea presionado y
ejecutar el sonido correspondiente
Void mouse
{ println(mouseX); println(mouseY);
//Imprime la Posiciones del mouse en coordenada (x,y)
Para controlar las variables del color de la selección
If (dist(83,498 , mouseX, mouseY) <=16) //Preguntar si el cursor del
mouse se presiona cerca de la región con centro (x,y)= 83,498 y que se
encuentre en un radio de 16 Pixeles a la redonda.
{ R = R+10; // Aumentar el color R de 10 en 10 Hasta los
255
fill(R, G, B, 115); //Color de la
selección formada por la elipse
ellipse(83,498 ,32 , 32);
//ubicación de la elipse que marcará la selección
(Centro(x,y) ; Diametro X ; Diametro Y); frameRate(5);
if (R>=255) //para no permitir
que R supere el valor de 255 y mandar un mensaje de que llego al máximo.
{ R=255;
print(R);
print(" es Maximo
Valor de R \n"); } }
Para el botón que reduce el valor de R al hacer click sobre el signo (-)
de la imagen.
if (dist(34,498 , mouseX, mouseY) <=16)
{ R = R-10;
fill(R, G, B, 115); ellipse(34,498 , 32, 32); frameRate(5);
if (R<=0)
{R=0; print(R); print(" es el Mininimo Valor de R
\n"); } }
Este código se repite para cada Letra de los colores R, G y B cambiando
la posición de los pixeles donde se encuentra la letra en la imagen con un
radio de 16p para su selección.
El siguiente código se repite para cada instrumento por tanto solo
explicaré el funcionamiento de uno de ellos:
En el condicional se pregunta cada vez que presionamos el mouse si la
distancia entre el centro de nuestro instrumento y donde hacemos el click es
menor al radio estipulado para ese instrumento.
Donde el radio en cada instrumento es diferente debido a que la imagen
que tenemos no tiene figuras del mismo tamaño y de la misma figura por lo que
debemos crear elipses en vez de círculos y esto nos genera un margen de error
muy pequeño con respecto a la precisión que tendremos para seleccionar un
determinado objeto.
Para encontrar cada posición de centro, radio y diámetros utilice una
tabla de Excel para la cual dándole las posiciones de los bordes X e Y máximos
y mínimos me determinara el radio y el diámetro que se utilizaría en las
funciones ellipse y dist.
If (dist(124,194 , mouseX, mouseY) <=62) //(centroX, CentroY,
PosicionMouseX, PosicionMouseY <=
Radio de la selección) Preguntar si la distancia del centro a la posición del
mouse es menor a el radio.
{ t1.play(); //reproducir el sonido cuando se cumpla la
condición.
fill(R, G, B, 115); //color de la
elipse que se dibujará y que depende del color asignado en los controles de RGB
ellipse(124,194 ,141 ,108 ); // (centroX, CentroY, DiametroX, DiametroY)
para la elipse del instrumento
frameRate(5); //velocidad o tiempo en que se disolverá la selección.
}
Repitiendo el anterior código 14 veces ya que son 15 sonidos diferentes.
Para la implementación del código en android solo incluye la librería Android_api
en nuestro proyecto y se deben cambiar los pixeles de cada instrumento debido a
que la resolución no es la misma.
Finalidad del proyecto
La aplicación incluiría interacción con Arduino por medio del cual cada
vez que se produzca un sonido en la aplicación controle el ritmo de unas luces
que se encuentran en un circuito externo.
La aplicación no se puedo terminar debido que se presentó un error con
referencia al SO de mi PC y no reconoce algunos controladores del Arduino.
En el siguiente link se encuentra tanto el código de Processing Como el
de Android. Para utilizar el de android deben indagar sobre como instalar un
adt, sdk de android y fusionar ambas plataformas.
Link de la carpeta Public de Dropbox con 6,1MB
Documento en Work
https://dl.dropboxusercontent.com/u/98046791/SINTETIZADOR%20DE%20BATERIA%20UTILIZANDO%20PROCESSING%20Y%20ANDROID.docx
https://dl.dropboxusercontent.com/u/98046791/SINTETIZADOR%20DE%20BATERIA%20UTILIZANDO%20PROCESSING%20Y%20ANDROID.docx
Por FRANK HERRERA OSPINO
Código: 2009219036
Universidad del Magdalena
Programa de Ingeniería Electrónica

No hay comentarios:
Publicar un comentario