sábado, 31 de mayo de 2014

Proyecto Final

Descripción.


Para esta ocasion vamos a crear una batería electrónica por medio del arduino,Utilizando este ultimo como controlador MIDI. en este proyecto utilizaremos programas externos que servirán como controladores y instrumentos virtuales como lo son el superior drummer,el serial MIDI converter y el loopbe1.



Lista de elementos utilizados:

  • Un Arduino UNO
  • 6 Piezoelectricos 
  • 6 resistencias de 100 k ohms
  • 6 diodos de cilicio 
  • Cable (Conexiones)
  • Protoboard

Diagrama del Montaje en la Protoboard:




Diagrama Esquemático del Circuito:






Fotos del Montaje (paso a paso):

primero armamos la base de la batería con tubos pvc y organizamos cada uno de los elementos de la batería de forma que quede cómoda para poder tocar en ella.









Luego de esto agregamos los pads hechos de madera para simular una batería real



Una vez terminada esta parte,vamos a enfocarnos en la parte electrónica. primero conectamos las resistencias.


Luego los diodos.


 luego de esto pegamos los cables al piezoelectrico en cada uno de sus polos (negativo y positivo).


luego de esto perforamos cada uno de los pads de la batería así como en la foto.


una vez terminada esta parte pasamos un cable por medio del orificio que le hicimos a nuestro pad anterior mente.



luego le pegamos a otro pedazo de madera triplex el piezo electrico y lo juntamos con el pad así como se muestra en las siguientes imágenes.



Luego de esto instalamos el loopbe y configuramos nuestro arduino como controlador midi por medio de un programa llamado serial midi converter de la siguiente forma.


 primero seleccionamos el puerto COM 7 presionando a


Luego seleccionamos la opción de tiempo de retraso de 115200 bps con la opcion f 

luego escogemos el puerto midi loopBe internal midi presionando a




 Luego escogemos por segunda vez el puerto midi  loopBe internal midi presionando d

por ultimo nos saldra la siguiente pantalla y asi temrmina la configuracion del arduino como controlador midi.


Luego cargamos en un DAW (en este caso utilice cubase 5) el pluguin superior drummer 2.0


Inmediatamente al haber instalado el loopbe 1 y al haber configurado el serial midi converter como lo explique anterior mente nuestro DAW va a reconocer cada uno de los golpes que se genere en el pad que diseñamos anterior mente el cual contiene el piezoelectrico en su interior.




Código Fuente en Arduino:.


//*******************************************************************************************************************
// User settable variables                         
//*******************************************************************************************************************

unsigned char PadNote[6] = {66,81,77,74,16,52};         // MIDI notes from 0 to 127 (Mid C = 60)

int PadCutOff[6] = {600,600,600,600,600,600};           // Minimum Analog value to cause a drum hit

int MaxPlayTime[6] = {90,90,90,90,90,90};               // Cycles before a 2nd hit is allowed

#define  midichannel     0;                              // MIDI channel from 0 to 15 (+1 in "real world")

boolean VelocityFlag  = true;                           // Velocity ON (true) or OFF (false)





//*******************************************************************************************************************
// Internal Use Variables                          
//*******************************************************************************************************************

boolean activePad[6] = {0,0,0,0,0,0};                   // Array of flags of pad currently playing
int PinPlayTime[6] = {0,0,0,0,0,0};                     // Counter since pad started to play

unsigned char status;

int pin = 0;     
int hitavg = 0;

//*******************************************************************************************************************
// Setup                        
//*******************************************************************************************************************

void setup() 
{
  Serial.begin(115200);                                  // connect to the serial port 115200
}

//*******************************************************************************************************************
// Main Program                    
//*******************************************************************************************************************

void loop() 
{
  for(int pin=0; pin < 6; pin++)
  {
    hitavg = analogRead(pin);                              // read the input pin

    if((hitavg > PadCutOff[pin]))
    {
      if((activePad[pin] == false))
      {
        if(VelocityFlag == true)
        {
//          hitavg = 127 / ((1023 - PadCutOff[pin]) / (hitavg - PadCutOff[pin]));    // With full range (Too sensitive ?)
          hitavg = (hitavg / 8) -1 ;                                                 // Upper range
        }
        else
        {
          hitavg = 127;
        }

        MIDI_TX(144,PadNote[pin],hitavg); 
        PinPlayTime[pin] = 0;
        activePad[pin] = true;
      }
      else
      {
        PinPlayTime[pin] = PinPlayTime[pin] + 1;
      }
    }
    else if((activePad[pin] == true))
    
    {
      PinPlayTime[pin] = PinPlayTime[pin] + 1;
      
      if(PinPlayTime[pin] > MaxPlayTime[pin])
      {
        activePad[pin] = false;
        MIDI_TX(128,PadNote[pin],127); 
      }
    }
  } 
}


//*******************************************************************************************************************
// Transmit MIDI Message                        
//*******************************************************************************************************************
void MIDI_TX(unsigned char MESSAGE, unsigned char PITCH, unsigned char VELOCITY) 
{
  status = MESSAGE + midichannel;
  Serial.write(status);
  Serial.write(PITCH);
  Serial.write(VELOCITY);
}


Video de funcionamiento del proyecto:



para el desarrollo de este proyecto utilice informacion de los siguientes links:

https://www.youtube.com/watch?v=odVLSXJ414Q

http://spikenzielabs.com/SpikenzieLabs/DrumKitKit.html

http://spikenzielabs.com/SpikenzieLabs/Serial_MIDI.html

https://www.youtube.com/redirect?q=http%3A%2F%2Fwww.nerds.de%2Fdata%2Fsetuploopbe1.exe&redir_token=VtB1pMGgvsnn-jCBmFaI4XXzlJZ8MTQwMTY3MzI4MEAxNDAxNTg2ODgw

https://www.youtube.com/redirect?q=http%3A%2F%2Farduino.cc%2Fforum%2Findex.php%3Ftopic%3D84195.0&redir_token=VtB1pMGgvsnn-jCBmFaI4XXzlJZ8MTQwMTY3MzI4MEAxNDAxNTg2ODgw

No hay comentarios:

Publicar un comentario