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.
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.
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