sábado, 14 de septiembre de 2013

ACORDEÓN CON PROCESSING + ARDUINO.

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 VascoNavarraAsturiasCantabria,Galicia y el norte de Castilla (España), París (Francia), Europa central (AlemaniaAustria), sur de Italia, la Costa Caribe de ColombiaPanamá, norte de México, noreste de ArgentinaRepública DominicanaPerú 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