martes, 22 de noviembre de 2016

Batería electrónica MIDI con Pro Tools 10 y EZ Drummer


Gracias a este POST seremos capaces de construir nuestra propia batería electrónica MIDI,  basándonos en la placa ARDUINO UNO, que se comunicará a través del puerto USB con el software “Pro Tools 10”, para reproducir sonidos reales de batería gracias al “Plugin” EZ Drummer, para poder crear nuestras propias bases o nuestros propios temas como si de una batería electrónica se tratase.  Como es un proyecto algo complejo y extenso lo voy a dividir en dos partes, la parte correspondiente al HARDWARE necesario para simular la batería física, es decir, los PADS y pedales que accionaremos,  y la parte SOFTWARE correspondiente tanto a la instalación de los programas necesarios como del código que tendremos que cargar en nuestro ARDUINO UNO para que con cada golpe que demos en los PADS o cada vez que pisemos los pedales suenen los tambores, platos y el bombo de la batería virtual del EZ Drummer. Sin más demora comenzamos con todo este reto.

HARDWARE

La parte más importante de este proyecto, sin duda, es la creación de los PADS de la batería, que no es más ni menos donde vamos a golpear para generar una señal capaz de estimular nuestro ARDUINO y que este actúe en consecuencia a través de su programación interna para ejecutar sonidos mediante SOFTWARE. Para ello utilizaremos sensores piezoeléctricos como sensores de golpe, es decir, cada vez que los hagamos vibrar con un golpe, estos generarán una señal eléctrica entre sus dos terminales que podrá ser leída por ARDUINO a través de sus entradas analógicas.
Sensor piezoeléctrico

Los piezoeléctricos están polarizados, así que hay que conectarlos correctamente, es decir,  el terminal positivo que es el que va soldado a la parte central del piezo lo conectaremos a la entrada analógica de ARDUINO que le corresponda y el terminal negativo que es el que va soldado a la parte externa del piezo lo conectaremos siempre a la masa de ARDUINO (GND). Entre los dos terminales del piezo es necesario conectar en paralelo una resistencia de 1 MΩ para limitar el voltaje y corriente generados por el sensor y proteger así la entrada analógica de ARDUINO donde va conectado cada uno. A continuación os muestro la correcta instalación de dichos sensores piezoeléctricos a nuestro ARDUINO. 
Diagrama de conexión de los sensores piezoeléctricos 

Como nuestro ARDUINO UNO solamente posee 6 entradas analógicas, solo podremos conectar un máximo de 6 PADS para nuestra batería, lo que nos limita el número de tambores y platos a simular, para posteriormente enlazarlos mediante SOFTWARE a la batería virtual dentro del EZ Drummer. Para realizar una estructura mucho más compacta a la hora de golpear los sensores piezoeléctricos, tendremos que pegarlos con cola de contacto, en alguna superficie circular de mayor tamaño y que pueda vibrar también al golpearla. Yo he optado por utilizar un tupperware circular de plástico, aunque esta parte es a libre elección de cada uno. También, para dar una mayor vistosidad a nuestros PADS,  he añadido 6 LEDS alrededor de cada tupperware, que se iluminarán cada vez que golpeemos en el PAD correspondiente. Estos LEDS simplemente irán conectados en serie, es decir, el pin de masa (pata más corta) de cada uno de los LED lo conectaremos a masa (GND) a través de una resistencia de 220Ω para limitar la corriente que lo atraviesa para no quemarlo, y el otro pin (pata más larga) de cada uno de los LEDS irá conectado al pin digital de ADUINO programado para encender y apagar los LEDS del PAD correspondiente. Se conectan 6 LEDS por cada PAD por el motivo de que ARDUINO es capaz de generar la suficiente corriente en un pin digital como para encender todos al mismo tiempo cada vez que golpeamos en el PAD correspondiente sin tener problemas de alimentación. Muy importante a tener en cuenta es que el PAD 1 se compone del PIEZO 1 y del grupo de LEDS 1 dentro del tupperware de plástico.

Diagrama de conexión de los LEDS para cada PAD 

Por último y para amortiguar los golpes en la tapa y que esta suene lo menos posible a “plástico” al golpearla,  he añadido una pieza de goma EVA (Etilvinilacetato) en la parte superior de cada PAD. Al final de todo el proceso nos tiene que quedar todo integrado dentro de cada tupperware, obteniéndose tres salidas o cables por cada PAD, un cable que tendremos que conectar a la masa de ARDUINO (GND), puesto que la masa para el piezoeléctrico y para los LEDS es la misma, otro cable que conectaremos a la entrada analógica de ARDUINO correspondiente y el tercero que conectaremos al pin digital que maneja los LEDS de cada PAD.  A continuación se muestra cómo quedaría cada uno de los 6 PADS.

PAD correctamente finalizado

Para finalizar con la fabricación e instalación de la parte física de la batería (HARDWARE), vamos a ver cómo crear y conectar los dos pedales necesarios (Charles y bombo), además de conectar un pulsador para el control del “doble bombo” y dos LEDS para avisarnos del estado tanto del bombo como del plato Charles en cada momento. La construcción de los pedales simplemente la vamos a realizar con un pulsador de timbre convencional que cortaremos en ángulo de 30 grados para acomodarlo a la base, un trozo de madera que utilizaremos como base del pedal, donde fijaremos el pulsador de timbre para su correcta sujeción cuando lo apoyemos en el suelo y por supuesto cable para su conexión a nuestro ARDUINO. A continuación os muestro el resultado final de cómo nos tiene que quedar cada uno de los dos pedales.

Pedal para Charles y para Bombo 

También remarcar que tanto el pedal del plato Charles como el del bombo son idénticos en su estructura física, además ambos irán conectados a entradas digitales de ARDUINO mediante conexión PULL DOWN con una resistencia de 10KΩ,  pero dentro de la programación van a tener tareas distintas como era de esperar. Como ya os anticipaba anteriormente tendremos que conectar también un pulsador, de la misma manera que los pedales (PULL DOWN con resistencia de 10KΩ), a uno de los pines digitales de ARDUINO, que cuando sea presionado será el encargado de cambiar la función de “bombo simple” a “doble bombo” del pedal del bombo, y para saber en todo momento en que MODO de los dos nos encontramos se encenderá un LED conectado a través de una resistencia de 220Ω, para limitar la corriente que lo atraviesa, a otro pin digital de ARDUINO cuando estemos en “doble bombo” permaneciendo apagado cuando ejecutemos el “bombo simple”. Para rematar esta parte también tenemos otro LED conectado a un nuevo pin digital de ARDUINO, limitado en corriente mediante una resistencia de 220Ω, para indicarnos cuando estamos pisando (LED encendido) o no (LED apagado) el pedal del Charles en cada momento para que,  mediante programación y SOFTWARE,  suene a “Charles cerrado” cuando pisamos el pedal o a “Charles abierto” cuando el pedal se encuentra en reposo. A continuación os muestro todo el diagrama de conexión de todos estos últimos periféricos que vamos a añadir a nuestra batería.

Diagrama de conexión de los pedales y señalización de FUNCIONES 

Para recordar todas las conexiones de la batería a nuestro ARDUINO a continuación os dejo una tabla de conexiones detallada,  además de una imagen de cómo os tienen que quedar los 6 PADS de la batería. Las conexiones de todos los elementos de este proyecto las podéis realizar a través de una PROTOBOARD o crear vuestra placa de circuito impreso (PCB) que podamos conectar a nuestra batería a modo “PLUG AND PLAY”, cosa muy recomendable,  para no tener que estar montando todo desde el principio cada vez que utilicemos nuestra batería electrónica y que no haya falsos contactos entre los componentes.

Tabla de conexiones del HARDWARE de la batería electrónica 

A continuación os muestro la imagen final de cómo nos debe de quedar nuestra batería electrónica si nos decidimos a utilizar los tupperware redondos como PADS.

Batería electrónica MIDI completa

 
SOFTWARE

La parte SOFTWARE es bastante más compleja que la HARDWARE, aunque no os preocupéis demasiado puesto que no vamos a profundizar en exceso en el tema, simplemente nos vamos a limitar a instalar el SOFTWARE necesario para que la batería suene y cargar el programa a nuestro ARDUINO para que ejerza de interface entre el HARDWARE creado y el SOFTWARE instalado. Lo primero que vamos a hacer es instalar el programa “Pro Tools 10.3.7” para posteriormente añadirle el “Plugin” EZ Drummer. Este software es funcional en S.O Windows 7 y en adelante, aunque para aquellos usuarios que utilicen MAC OS o LINUX tendrán que buscarse la manera de obtener el SOFTWARE. A continuación les dejo los enlaces para la descarga, dentro de los cuales vienen todos los archivos y explicaciones necesarias para la correcta instalación de todo esto.



Una vez que tengamos instalados tanto el Pro Tools como el “Plugin” EZ Drummer, continuaremos instalando el LoopBe1 Monitor, que nos es más ni menos que un dispositivo MIDI interno (puerto MIDI Virtual) para transferir datos MIDI entre programas de computadora. Básicamente LoopBe1 es un "cable invisible" para conectar un puerto de salida MIDI de una aplicación a la entrada MIDI de cualquier otra aplicación, que en nuestro caso nos va a servir de enlace entre la salida del “Conversor Serie a MIDI” que ejecutaremos más adelante y la entrada MIDI de “Pro Tools”. El LoopBe1 una vez instalado quedará siempre ejecutándose en segundo plano dentro de la barra de tareas, a no ser que lo silenciemos (MUTE). En el siguiente enlace nos podemos descargar esta sencilla y práctica aplicación.

Descarga del Puerto MIDI Virtual - LoopBe1 Monitor


Después de tener correctamente conectado todo el HARDWARE a nuestro ARDUINO, el siguiente paso será conectarle al PC a través del USB, para posteriormente cargarle el programa denominado “Bateria_MIDI.ino” que tenemos en descarga directa al final de este POST justo antes del vídeo, como habitualmente venimos haciendo. Doy por hecho de que todos tenemos ya instalado tanto el IDE de ARDUINO como los drivers de la placa, si no es así, os recomiendo pasaros antes por el siguiente POST donde se detalla todo esto. Además, para aprender a subir o cargar correctamente el programa (Sketch) a nuestro ARDUINO tenemos este POST donde también se explica.  El siguiente paso será descargar y ejecutar el conversor serie a MIDI como a continuación se indica. 



Con el conversor en ejecución, la primera prueba que tenemos que hacer para comprobar que nuestro ARDUINO envía correctamente los mensajes MIDI al golpear los PADS o pisar el pedal del bombo es configurarlo como se muestra en la siguiente imagen.

Configuración serie a MIDI básica del conversor

Lo primero que hay que hacer es seleccionar el puerto COM donde tenemos conectado nuestro ARDUINO, después seleccionar la velocidad de comunicación, que en nuestro caso es siempre 57600 bps (BAUDIOS) y por último seleccionar tanto el puerto MIDI de entrada como el de salida como se muestra en la imagen. Todas las opciones de los menús se seleccionan pulsando las letras del teclado del PC que hay entre corchetes antes de cada opción. Si hemos configurado correctamente el conversor, al golpear cualquiera de los PADS o pisar el pedal del bombo sonarán las notas MIDI en piano que tengamos asignadas mediante programación para PAD o el pedal del bombo, además de encenderse los LEDS del PAD que estemos golpeando y por supuesto el cuadrado del Serial RX se tiene que poner de color verde. Esto todavía no tiene mayor relevancia puesto que es solamente para comprobar que todo va bien hasta el momento y que existe una buena comunicación MIDI con el PC, sino fuese así, tendríamos que revisar todo para ver que hemos hecho mal o que se nos ha olvidado hacer. Una vez corroborado todo esto pasamos a configurar definitivamente el conversor de la misma manera que lo acabamos de hacer, para que se comunique con “PRO TOOLS”, como se muestra en la siguiente imagen.

Configuración serie a MIDI del conversor para Pro Tools

Lo que hace el conversor ahora es enviar el MIDI por la salida “LoopBE Internal MIDI” y no directamente al “sintetizador de Microsoft” como hemos hecho en el caso anterior, para posteriormente poder enlazar esa salida MIDI directamente a una entrada MIDI de Pro Tools y a su vez asignar ese MIDI a los platos, tambores y el bombo del “Plugin” EZ Drummer. Siempre que queramos cargar nuevamente un programa en nuestro ARDUINO, tenemos que cerrar el conversor puesto que ocupa la comunicación USB y el IDE quedaría sin posible comunicación con nuestro ARDUINO (Nos tocaría volver a ejecutar y configurar el conversor cada vez que nos comuniquemos con el IDE). Ya nos estamos acercando al resultado final de nuestra batería electrónica, solo nos queda configurar la entrada MIDI en Pro Tools, asignar el “plugin” EZ Drummer a una pista MIDI que crearemos y además crear una pista de audio por si queremos ir grabando nuestros primeros temas y compases. Para ello primero nos descargaremos el siguiente PROYECTO de Proo Tools donde ya he incorporado todo lo necesario para que la batería funcione, aunque todavía tenemos que realizar unos pequeños ajustes dentro del programa.



Descomprimimos y abrimos la carpeta descargada y ejecutamos el archivo “Arduino.ptx”, de esta manera se nos abrirá ya directamente Pro Tools con todas las pistas necesarias para trabajar. Lo siguiente a realizar, y esto hay que hacerlo siempre que ejecutemos el EZ Drummer, es meter el código de autorización, para ello, vamos a la carpeta EZ Drummer que anteriormente nos descargamos y ejecutamos el “KeyGen.exe”. Después tenemos que copiar el “Computer ID” de la pantalla del EZ Drummer y pegarlo en el KeyGen para posteriormente dar al botón “Generate” y obtener así nuestro código de Autorización que tendremos que ingresar en el EZ Drummer. El programa una vez autorizado tarda unos segundos en cargarse por completo no os pongáis nerviosos. Para finalizar todo esto nos vamos a la pestaña del Pro Tools: “Configuración” à “Periféricos” à “Controladores MIDI” y lo configuramos como se muestra en la siguiente imagen (Tengo el canal 8 seleccionado puesto que es el canal que se utiliza para enviar el MIDI desde Arduino).

Configuración de la entrada MIDI en Pro Tools 10

Ahora solamente nos queda de revisar que la entrada MIDI esté correctamente activado, para ello nos vamos a la pestaña de Pro Tools: “Configuración” à “MIDI” à Dispositivos de entrada … y nos cercioramos de que la casilla “LoopBe Internal MIDI” esté activada. Para finalizar la configuración del SOFTWARE tenemos que revisar la configuración del “Plugin” EZ Drummer para que suene correctamente nuestra batería para ello tenemos que configurar las pistas de la siguiente manera:


Configuración de las pistas en Pro Tools 10 

Para que suene la batería solamente nos queda activar el botón “REC” de la pista de “Audio 1”, además para grabar nuestros temas tenemos que activar los botones “REC” y “PLAY” generales de Pro Tools (Arriba a la derecha de la pantalla principal), y comenzar a tocar.  A continuación os dejo un video donde podréis seguir paso a paso la configuración de todo lo anteriormente explicado.

 

Como os vengo repitiendo desde el inicio del POST el programa Bateria_MIDI.ino” que tenemos que  cargar en nuestro ARDUINO simplemente sirve para enviar un mensaje MIDI desde ARDUINO a través del puerto USB hacia el PC, cada vez que golpeamos un PAD o presionamos el pedal del Bombo. Dicho mensaje MIDI está compuesto por el estado de la nota MIDI (ON/OFF), el canal MIDI por el que realizamos la transmisión del mensaje, el tono de la nota MIDI que transmitimos y por último la velocidad con la que se tiene que reproducir dicha nota, para ello utilizamos la función “void MIDI_TX(unsigned char MENSAJE, unsigned char TONO, unsigned char VELOCIDAD)”. Además podemos configurar las siguientes funciones dentro del programa para personalizar nuestra batería electrónica:
·         #define canal 7;  à  Canal MIDI del 0 a 15 (+1 en el "mundo real"). Utilizo el 8 porque es el que utilizo dentro de Pro Tools 10.
·         unsigned char Nota[6] = {11,69,50,47,43,58}; à Contiene las notas MIDI que enviamos al presionar los PADS (del 1 al 6). Estas notas MIDI, dependiendo el SOTWARE que estemos utilizando, pueden ser unas u otras (de 0 a 127), aunque en este caso están configuradas para el “Plugin” EZ Drummer  dentro de Pro Tools 10 (Charles, caja, TOM 1, TOM 2, TOM de suelo y platillos).
·         int Nota_pedal = 36;  à Nota MIDI que enviamos cuando pisamos el pedal del Bombo, también configurada para el “Plugin” ES Drummer (Bombo). Mediante el pulsador denominando “pulsador_bombo”, conectado mediante PULL DOWN a la entrada digital 10 de Arduino, podremos cambiar el MODO del pedal del Bombo de “Bombo simple” a “Doble Bombo” al accionarle.

PADS relacionados y notas MIDI dentro de EZ Drummer 
  
·         int Sensibilidad_golpeo[6] = {400,400,400,400,400,400}; à  Es el valor de la sensibilidad de golpeo de los PADS (valor máximo 1023). A mayor valor menor sensibilidad, es decir, más golpe tendremos que dar en el PAD para que se reproduzca el sonido correspondiente.
·         int Respuesta[6] = {70,70,70,70,70,70}; à Es el tiempo mínimo de espera o respuesta entre golpes (en milisegundos). A mayor valor menor respuesta de la batería, es decir, tendremos que esperar más tiempo para poder golpear nuevamente un PAD y que tenga respuesta dentro del “plugin” EZ Drummer.
·         int Velocidad_pedal = 120; à  Velocidad del pedal entre 0 y 127 (elegir la que más os guste). 
·         int Tiempo_maximo = 70; à Tiempo mínimo de espera que tiene que transcurrir hasta que se permite pisar una segunda vez el pedal y que suene el Bombo (respuesta del pedal).
Para finalizar os dejo el “Keyboard Layout” de las notas MIDI que relacionan directamente el teclado del editor MIDI de Pro Tools con los respectivos sonidos de batería del “plugin” EZ Drummer.

  Keyboard Layout  del “plugin” EZ Drummer

Si queréis una mayor información acerca del funcionamiento del programa de ARDUINO os recomiendo revisar los múltiples comentarios añadidos dentro del mismo. Mucha suerte y espero que os funcione correctamente, para cualquier duda no dudéis en contactar conmigo. SALUDOS!!!



Lista de Materiales:


·         ARDUINO UNO Rev.3.

·         Cable USB tipo A-B.

·         6 Sensores piezoeléctricos.

·         6 Resistencias de 1MΩ.

·         38 LEDS de 3mm (de distintos colores).

·         8 Resistencias de 220Ω.

·         1 Pulsador.

·         2 Interruptores de timbre.

·         2 Trozos de madera (base pedales).

·         4 Tirafondos.

·         3 Resistencias de 10KΩ.

·         6 Tupperware redondos de plástico.

·         Plancha de Goma EVA.

·         Cola de contacto.

·         Soldador de 30W y estaño.

·         Protoboard o en su defecto fabricar PCB.

·         Cables de conexión.


Código del programa:




Video: