ACORDEÓN CON PROCESSING + ARDUINO.
citando el articulo del acordeón de la enciclopedia en linea Wikipeda la cual se encuentra en el siguiente link http://es.wikipedia.org/wiki/Acorde%C3%B3n hablamos un poco sobre este instrumento.
El acordeón es un instrumento musical de viento, de origen polaco, conformado por un fuelle, un diapasón y dos cajas armónicas de madera.
En sus dos extremos el fuelle está cerrado por las cajas de madera. La parte de la mano derecha del acordeón tiene además un "diapasón" con una disposición de teclas que pueden ser como las de un piano (acordeón a piano) o teclas redondas (también llamadas botones) (acordeón cromático) dependiendo del tipo de acordeón; la parte de la mano izquierda tiene botones en ambos tipos de acordeón para tocar los bajos y acordes de acompañamiento, también accionando una palanca se cambia el sistema de bajos, pasando al sistema BASSETI que coloca las 4 primeras filas desde afuera con notas cromáticas y por octavas, mientras que las dos últimas se dejan como bajos y contrabajos sin octavas. Es muy popular en el País Vasco, Navarra, Asturias, Cantabria,Galicia y el norte de Castilla (España), París (Francia), Europa central (Alemania, Austria), sur de Italia, la Costa Caribe de Colombia, Panamá, norte de México, noreste de Argentina, República Dominicana, Perú y Chile por su vinculación con el folclore. Para el instrumento semejante utilizado en Argentina y Uruguay, véase: Bandoneón, El acordeón también es muy utilizado por todo Brasil tanto el de teclas como el de botones de norte a sur del País en varios estilos y ritmos musicales.
El tipo de acordeón que escogí para realizar esta aplicación en processing es un acordeón cromático específicamente una HONNER CORONA II
El acordeón consta de 31 teclas del lado izquierdo (en la imagen) el cual es el derecho para quien lo toca, y 12 del lado derecho de la imagen.
El código que comparto acá en el blog es solamente el código base si así se podría decir, debido que son en total 43 teclas del acordeón y 86 tonos por tal razón decidí compartir con ustedes el código de esta forma.
CÓDIGO:
//importación de librerías
Maxim maxi; //reproductor
PImage img; //libreria de imagen
import java.awt.*; // libreria de java
import java.applet.*; // libreria de java
import processing.serial.*; //libreria serial
import cc.arduino.*; //librería arduino
Arduino arduino; //arduino
//acodeon abierta lado derecho
AudioPlayer teclaa1;
//acordeon cerrada lado derecho
AudioPlayer teclac1;
//acordeon abierta lado izquierdo
AudioPlayer tec1a;
//acordeon cerrado lado izquierdo
AudioPlayer tec1c;
void setup()
{
//CONFIGURACION DE ARDUINO
arduino = new Arduino(this, Arduino.list()[0], 57600);
arduino.pinMode(2, Arduino.INPUT); // tecla 1 lado izquierdo
arduino.pinMode(22, Arduino.INPUT); //tecla 22 para definir si está abierta o cerrada la acordeón del lado izquierdo
img = loadImage("dd65123.jpg"); //cargamos la imagen
size(640,640); // configuramos el tamaño de la pantalla
image(img, 0, 0); // cuadramos la posición de la imagen
maxi = new Maxim(this); // configuración del reproductor
//asignamos los archivos de audio a cada variable de la tecla.
teclaa1 = maxi.loadFile("TECLA1A.wav
//teclas derechas cerradas
teclac1 = maxi.loadFile("TECLA1C.wav");
//teclas izquierdas abiertas
tec1a = maxi.loadFile("TEC1A.wav");
//teclas izquierdas cerradas
tec1c = maxi.loadFile("TEC1C.wav");
//control de reproducción, básicamente es para que no se reproduzca infinitamente
teclaa1.setLooping(false);
teclac1.setLooping(false);
tec1a.setLooping(false);
tec1c.setLooping(false);
}
void draw()
{
//TECLA 1 IZQUIERDA
if (arduino.digitalRead(2) == Arduino.HIGH){ //primero preguntamos por el estado de la tecla1
if (arduino.digitalRead(22) == Arduino.HIGH){ //luego si está abierto o cerrado
tec1a.play(); // si el pin 22 está en alto reproduce el tono abierto
//ubicamos el punto de la tecla para dar el efecto de pulsado
fill(255,0,0, 100);
ellipse(555,341, 11, 11);
frameRate(6);}
else //si no esta en alto la tecla 22
{
tec1c.play(); // si esta en nivel bajo el pin 22 reproduce el tono cerrado
//ubicamos el punto para dar el efecto de pulsado
fill(0,0,255, 100);
ellipse(555,341, 11, 11);
frameRate(6);
}
// si no cumple la condición principal de si esta pulsado el pin 2 en nivel alto le damos stop a los tonos esto es para evitar que se reproduzca hasta terminar el tiempo del archivo. Mejor dicho dar stop mientra no este pulsada la tecla
else { tec1a.stop(); tec1c.stop();}
}
}
// Entra en este ciclo mientas se pulse una tecla del teclado del computador.
void keyPressed( ){
//acordeon abierta lado derecho
if(key=='w'||key=='w'){ //preguntamos si la tecla pulsada fue 'w'
//reproducimos el tono de la tecla del lado derecho 1 con el acordeón abierta.
teclaa1.play();
//ubicamos la tecla en la imagen para dar el efecto de pulsado
fill(255,0,0, 200);
ellipse(79,290, 15, 15);
frameRate(6);
}
}
//teclas cerrado lado derecho
if(key=='W'||key=='W'){ //preguntamos si la tecla pulsada fue 'W'
teclac1.play(); // reproducimos el tono en modo cerrado de la tecla 1 del lado derecho
//ubicamos la tecla en la imagen para dar el efecto de pulsado
fill(0,0,255, 200);
ellipse(79,290, 15, 15);
frameRate(6);
}
}
//entra en este ciclo si no hay ninguna tecla pulsada, en este ciclo paramos toda la reproducción que se haga con las teclas del computador que son las del teclado derecho del acordeón.
void keyReleased(){ teclaa1.stop();
teclac1.stop();
}
Como pueden ver el código se diseño de la siguiente forma
las teclas del teclado del computador sirve para manipular las teclas del fuelle izquierdo de la imagen, cuando la tecla es pulsada de forma normal se reproducen los tonos abiertos, cuando se presionan con la tecla shift las letra pasa de w a W lo cual hace que se reproduzcan los tonos cerrados.
Para la integración con arduino se usan las teclas derecha de la imagen para tal fin ya que requieren solamente de 12 pulsadores y uno para decir entre abierto o cerrado el cual funciona de la siguiente forma.
se pregunta por el estado del pin de la tecla si esta en nivel alto se pregunta pregunta por el estado del pin que decide la condición abierto/cerrado y se decide cual tono reproducir.

No hay comentarios:
Publicar un comentario