Hiduino - Arduino en un instrumento musical Midi

Repo oficial

El proceso creativo para desarrollar este ejercicio se lleva a cabo en varios momentos, primero se diseña y se realiza la parte de Hardware, luego de software y por ultimo las respectivas programaciones y composiciones musicales o para lo que se este desarrollando.

En este caso automatizaremos un xilofono para que actue como un instrumento musical esclavo.

Elaboración y diseno del instrumento Robotico.

Programación y composicion en el Tracker de la Gameboy

Programación y composicion en el Tracker de la Gameboy.

Sincronización midi Gameboy como MidiOut y controlador USB (Hiduino) como esclavo.

Programación y composicion en el computador con la musica construida en la Gameboy.

Composición de la musica final añadiendo las partes y melodias del instrumento robotico.

Elaboración y diseño del instrumento robotico

El desarrollo del instrumento robotico se lleva a cabo en diferentes partes, tanto hardware como software:

Construcción del instrumento

El instrumento musical es un rediseño de un viejo xilofono, adaptado para ejecutar un golpe con un voltaje definido y realizado por los solenoides y que además no distorsione el sonido del instrumento.

Para llevar a cabo este proceso se experimenta con varios modelos, alturas y voltajes que llegan a los actuadores hasta encontrar la posicion ideal. Posteriormente se construye un circuito electrónico que permite accionar cada percutor y este a su vez; es controlado electricamente por un microcontrolador(Arduino).

Este microcontrolador es el encargado de convertir notas musicales (datos digitales) en voltaje o datos analogos, que seran los respectivos percutores de cada nota del xilofono.

Elaboracion del circuito electrónico

Para que el instrumento pueda funcionar es necesario realizar un circuito para controlar y alimentar los actuadores y estos a su vez, puedan golpear las laminas del xilofono como vimos en el anterior video.

El circuito esta compuesto de varios transistores TIP122, además de un adaptador de 9v y algunos diodos para que no hayan cortos en el proceso de alimentacion de los actuadores. Los transistores serán nuestro puente entre la comunicación del Arduino y el circuito.

Cambio de firmware en el chip original del Arduino

La placa Arduino que usamos en este proyecto cuenta con un microcontrolador ATmega16U2, que cumple la función de traducir los datos de serial a usb, es decir; es un conversor USB-serial. Para que este chip pueda llevar a cabo el proceso de transduccion, este es previamente programado a un lenguaje de programacion de bajo nivel, y este tipo de programas se llaman Firmware.

Hiduino es un firmware del chip Atmega16U2 que permite que la placa Arduino sea reconocida por computadores como dispositivos HID, es decir; teclados, mouses y perifericos conectados al computador. (human interface device)

El proceso de cambiar un firmware a otro se le conoce como flashear. Para flashear el Arduino se pueden tomar diferentes caminos, en este caso usamos Ubuntu 14.04 LTS.25

En general se siguen los siguientes pasos:

Primero se abre una terminal, luego se escriben los siguientes comandos: [lubusb-1.0-0 libusb-1.0-0-dev libusb-dev]

Luego instalamos el dfu-programmer escribiendo: [sudo apt-get install dfu-programmer]

Conectamos el Arduino por usb y lo ponemos en modo dfu, que consiste en conectar dos pines entre si de la interfaz ISP.

Borramos el firmware: [sudo dfu-programmer atmega16u2 erase]

Cargamos el nuevo firmware: [sudo dfu-programmer atmega16u2 flash MYFIRMWARE.hex]

Reiniciamos el chip: [sudo dfu-programmer atmega16u2 reset]

Despues de hacer este proceso, es conveniente programar el chip Atmega que controla los pines por medio de un programador AVR usando las entradas ISP del Arduino.

El programador ISP es necesario porque una vez el Arduino es flasheado, no pueden subirse programas por el puerto USB . Ahora el paso a seguir es programar los Pines del Arduino usando una libreria Midi, para que la placa reconozca los mensajes Midi provenientes del DAW.

Programacion de la placa Arduino para que funcione como Input-MIDI debido a las condiciones motoras del Instrumento.

Luego de que el chip ATmega esta flasheado, procedemos a programar las salidas digitales de la placa segun nuestras necesidades. Este proceso se lleva a cabo mediante el Ide proporcionado por Arduino para programar la placa.

En este caso necesitamos reconocer notas midi que seran programadas en el software Ableton Live. La programación del código se basa en escribir funciones que reconozcan velocity, channel y pitch, que son variables del protocolo Midi para reconocer que nota es, que dinámica tiene esa nota, y un canal que le dice al computador cual es ese instrumento Midi.

Cuando este código en software esta listo, procedemos a conectar el programador ISP y luego abrimos la interfaz de Arduino.

El ISP es una placa electrónica que nos permite programar el Arduino por los pines ISP que dispone. Es muy importante elegir el programador a usar en el IDE del Arduino, porque ya no estamos usando la interfaz USB para hacerlo comunmente. Para sellecionar el programardor adecuado, por favor mire la imagen de arriba.

Con los pasos descritos anteriormente hemos finalizado la construcción del instrumento robotico, pasamos entonces a la composición en el software LSDJ.

Aqui un video del flasheo del arduino.

programando_isp.mp4

Programación y composición de la Música en el Tracker de la Gameboy

Este proceso se lleva a cabo mediante el software LSDJ corriendo en la Gameboy, los tracker's son programas que dependiendo de su interfaz de entrada diversifican su funcionalidad y funcionamiento para llevar a cabo la composición. De este modo, el ejercicio de la composición varia dependiendo del tracker y de su hardware.

LSDJ es un tracker que tiene la posibilidad de correr en un cartucho de la Gameboy, este recibe comandos en sistema hexadecimal para escribir y componer partes de música, estas le- tras y números se escriben en diferentes ventanas del programa, para identificar al músico si esta escribiendo una melodía, o esta creando un instrumento o si esta procesando algún ins- t rumento. En la vista Song es en donde se escriben pequeños compases que contienen diferentes ins- trumentos y melodías, dentro de cada dato que agregamos, podemos crear pequeños loops musicales o rítmicos dependiendo del canal en el cual estemos componiendo.