sábado, 14 de septiembre de 2013

BAJO PROCESSING ARDUINO



BAJO EN PROCESSING ARDUINO 
(Marlon Hernandez Armenta )


INTRODUCCIÓN.
hoy en día gracias a los avances en desarrollo de software, se a logrado que cualquier persona sin necesidad de ser programador se encuentre en la capacidad de implementar todo tipo de inventos, en pro del beneficio mismo y la necesidad de suplir ciertas falencias en infinidades de situaciones. por medio de processing que es un software que le permite a todo tipo de usuario crear infinidades de interfaces.

OBJETIVO. 
por medio del processing implementar  un bajo electrónico que me permita simular sus sonidos lo mas reales posibles y utilizando el arduino para poder controlarlo por hardware  a través de pulsadores u otro tipo de dispositivo. en esta presentación no fue posible controlar todos los sonidos de todo el diapasón del bajo ya que el bajo maneja muchos sonidos y para grabarlos todos representa mucho mas tiempo, pero lo importante seria entender el método y dependiendo de los interesados pueden grabar todos los sonidos.
en este ejemplo solo se mostraran de las cuatro cuerdas los tres primeros trastes.

DESCRIPCIÓN DEL BAJO.
El bajo eléctrico, también llamado sencillamente bajo. es un instrumento musical de que en este caso es de cuatro cuerdas y 24 trastes, similar en apariencia y construcción a la guitarra eléctrica, pero con un cuerpo de mayores dimensiones, un mástil de mayor longitud y escala, normalmente, cuatro cuerdas afinadas según la afinación estándar del contrabajo. este instrumento es de gran importancia en una orquesta musical ya que se encarga de llenar muchos vacíos en la melodía de un disco.  



DESARROLLO DEL PROYECTO.
inicialmente el principal interés era  buscar una imagen de un bajo que fuera lo mas clara posible y que no se pixelara mucho con el propósito de utilizarla como imagen de fondo del proyecto, de donde se controlarían los sonidos de cada nota dependiendo de la posición en la que se encontrara en la imagen. luego de eso buscar los sonidos de cada nota lo cual se logro grabándolos cada uno en (audacity) el cual es un programa que me permite grabar sonidos en estéreo o monofonico en diferentes formatos el cual para mi conveniencia es en formato WAV. ya una ves  teniendo los sonidos y la foto necesaria seria comenzar a implementar en processing. a continuación se mostraran  la libreria necesaria para la simulación  de este instrumento

inicialmente se hablara de la librería la cual fue la librería Maxim ya que está diseñada para facilitar la programación  en  audio multiplataforma para escritorio amd plataformas móviles. Proporciona una única API para crear aplicaciones de audio complejos en Android, iOS y el escritorio, utilizando el WebAudioAPI en combinación con los enfoques tradicionales de Java para la compatibilidad.


Aquí les dejo el código con la explicación de cada uno de los bloques 

//comunicacion serial arduino processing 
import processing.serial.*;
import cc.arduino.*; 
Arduino arduino;

// DECLARACION DE LOS PINES DEL ARDUINO QUE SE VAN A UTILIZAR COMO ENTRADAS DE CONTROL

int Pin2= 2; 
int Pin3= 3;
int Pin4= 4;
int Pin5= 5;
int Pin6= 6;
int Pin7= 7;
int Pin8= 8;
int Pin9= 9;
int Pin10= 10;
int Pin11= 11;
int Pin12= 12;
int Pin13= 13;

Maxim maxim;

// DECLARACION DE LAS VARIABLES DE AUDIO

AudioPlayer player2;
AudioPlayer player3;
AudioPlayer player4;
AudioPlayer player15;
AudioPlayer player16;
AudioPlayer player17;
AudioPlayer player28;
AudioPlayer player29;
AudioPlayer player30;
AudioPlayer player41;
AudioPlayer player42;
AudioPlayer player43;

// DECLARANDO LA VARIABLE DE LA IMAGEN

PImage img;
int y;



void setup()
{
       println(Arduino.list());
       arduino = new Arduino(this, Arduino.list()[0], 57600);
       arduino.pinMode (Pin2, Arduino.INPUT);
       arduino.pinMode (Pin3, Arduino.INPUT);
       arduino.pinMode (Pin4, Arduino.INPUT);
       arduino.pinMode (Pin5, Arduino.INPUT);
       arduino.pinMode (Pin6, Arduino.INPUT);
       arduino.pinMode (Pin7, Arduino.INPUT);
       arduino.pinMode (Pin8, Arduino.INPUT);
       arduino.pinMode (Pin9, Arduino.INPUT);
       arduino.pinMode (Pin10, Arduino.INPUT);
       arduino.pinMode (Pin11, Arduino.INPUT);
       arduino.pinMode (Pin12, Arduino.INPUT);
       arduino.pinMode (Pin13, Arduino.INPUT);
      
       
  size(1350,400);
   
// CONFIGURACION DE LA IMAGEN   

   img= loadImage("l7-stlx4hpbk.jpg");
   maxim= new Maxim(this);
   
// CONFIGURACION DE CADA UNO DE LOS SONIDOS

   player2= maxim.loadFile("2_FA_DE_4.wav");
   player3= maxim.loadFile("3_FA#_DE_4.wav");
   player4= maxim.loadFile("4_SOL_DE_4.wav");
   player15= maxim.loadFile("15_LA#_DE_3.wav");
   player16= maxim.loadFile("16_SI_DE_3.wav");
   player17= maxim.loadFile("17_DO_DE_3.wav");
   player28= maxim.loadFile("28_RE#_DE_2.wav");        
   player29= maxim.loadFile("29_MI_DE_2.wav");
   player30= maxim.loadFile("30_FA_DE_2.wav");
   player41= maxim.loadFile("41_SOL#_de_1.wav");
   player42= maxim.loadFile("42_LA_DE_1.wav");
   player43= maxim.loadFile("43_LA#_DE_1.wav");
   
// ESTA INSTRUCCIÓN LO QUE NOS PERMITE ES QUE UNA VES 
// PULSADO LA NOTA NO SE REPITA CONTINUAMENTE EL SONIDO   

   player2.setLooping(true); 
   player3.setLooping(true);
   player4.setLooping(true);
   player15.setLooping(true);
   player16.setLooping(true);
   player17.setLooping(true);
   player28.setLooping(true); 
   player29.setLooping(true);
   player30.setLooping(true);    
   player41.setLooping(true); 
   player42.setLooping(true);
   player43.setLooping(true);
           
         }

void draw()   {
     
  // ESTAS INSTRUCCIONES LO QUE ME PERMITEN ES DARLE DIMENCION A LA IMAGEN
  
      image(img, 0, 0, 1350, 400);  
      println("mouseX: " + mouseX + " mouseY: " + mouseY);
      image(img, 0, 0, 1350, 400);
      
  // ESTAS INSTRUCCIONES SON PARA CONFIGURAR CADA UNO
  // DE LOS SONIDOS DEL BAJO CON LOS PINES DEL ARDUINO     
  // Y DE ESA MANERA CADA VES QUE SE PULSE UNO DE ESTOS 
  // PINES SE REPRODUSCA UN SONIDO
  
      if (arduino.digitalRead(Pin2)==Arduino.HIGH){
      rect(1094,1150,169,179);
      player2.play(); }
      else{
      player2.stop();
      player2.cue(0);}  // ESTA INSTRUCCION ES PARA QUE LA REPRODUCCION DE CADA SONIDO NO SE REPITA 
          
      if (arduino.digitalRead(Pin3)==Arduino.HIGH){
      rect(1040,1090,168,178);
      player3.play(); }
      else{
      player3.stop();
      player3.cue(0);}
      
      if (arduino.digitalRead(Pin4)==Arduino.HIGH){
      rect(988,1035,168,178);
      player4.play(); }
      else{
      player4.stop();
      player4.cue(0);}   
          
      if (arduino.digitalRead(Pin5)==Arduino.HIGH){
      rect(1094,1150,180,190);
      player15.play(); }
      else{
      player15.stop();
      player15.cue(0);}
      
      if (arduino.digitalRead(Pin6)==Arduino.HIGH){
      rect(1040,1090,180,190);
      player16.play(); }
      else{
      player16.stop();
      player16.cue(0);}   
          
      if (arduino.digitalRead(Pin7)==Arduino.HIGH){
      rect(988,1035,180,191);
      player17.play(); }
      else{
      player17.stop();
      player17.cue(0);}
      
      if (arduino.digitalRead(Pin8)==Arduino.HIGH){
      rect(194,1150,195,203);
      player28.play(); }
      else{
      player28.stop();
      player28.cue(0);}   
          
      if (arduino.digitalRead(Pin9)==Arduino.HIGH){
      rect(1040,1090,195,203);
      player29.play(); }
      else{
      player29.stop();
      player29.cue(0);}
      
      if (arduino.digitalRead(Pin10)==Arduino.HIGH){
      rect(988,1035,196,204);
      player30.play(); }
      else{
      player30.stop();
      player30.cue(0);}   
          
      if (arduino.digitalRead(Pin11)==Arduino.HIGH){
      rect(1094,1150,208,216);
      player41.play(); }
      else{
      player41.stop();
      player41.cue(0);}
      
      if (arduino.digitalRead(Pin12)==Arduino.HIGH){
      rect(1040,1090,209,217);
      player42.play(); }
      else{
      player42.stop();
      player42.cue(0);}   
          
      if (arduino.digitalRead(Pin13)==Arduino.HIGH){
      rect(988,1035,210,219);
      player43.play(); }
      else{
      player43.stop();
      player43.cue(0);}
}  

ANEXO.

imágenes del  proyecto funcionando con el arduino 









No hay comentarios:

Publicar un comentario