Metrónomo MIDI
El protocolo MIDI (Musical Instrument Digital Interface) fue creado con el propósito de establecer un lenguaje de comunicación entre los distintos tipos de sistemas (secuenciadores, samplers, drum machines, computadoras, controladores, mezcladoras, teclados, etc.) usados en la industria musical para producción y performance en vivo. Al mismo tiempo, es un protocolo muy simple de entender cuando uno desea abstraerse y crear sus propios sistemas, los cuales pueden salir de lo convencional y facilitar la creación de sonidos en tiempo real que de ser creados con instrumentos tradicionales nunca hubieran sido posibles.
Hoy trabajaremos en la plataforma libre llamada Arduino, la cual es realmente conveniente para todo lo que las artes y la interactividad entre la computadora y el hombre concierne. Esta plataforma trabaja con un microcontrolador de la familia AVR de Atmel Atmega328 (para los estudiantes de la carrera de ingeniería electrónica, este es un hermano gemelo del Atmega8, sólo que con más memoria flash interna así como eeprom). El propósito de este proyecto es animar al lector a iniciarse en el uso del protocolo MIDI orientado a las artes mediante un programa sumamente simple que lo ayudará a entender su funcionamiento.
Ver el circuito en protoboard
Materiales:
- Conector MIDI DIN hembra.
- Resistencias de 220 ohms y 270 ohms.
- Diodo 1N4001.
- Diodo LED rojo o del color de su preferencia.
- Transistor 2N3904.
- Optoacoplador 6N138
- Plataforma Arduino Duemilanove
El Esquemático

Ver en tamaño grande
El Código
//MIDI Metronome
//by Carlos Hurtado Montenegro
//This sketch allows you to have a visual click (metronome) in an LED
//Copyright 2010
//MIDI messages
byte midi_clock = 0xf8;
byte data;
//Control variables
int ledPin = 5;
int counter = 0;
void setup() {
Serial.begin(31250);
pinMode(ledPin, OUTPUT);
}
void loop() {
if(Serial.available() > 0) {
data = Serial.read();
if(data == midi_clock){
counter++;
if(counter == 24){
digitalWrite(ledPin, HIGH);
counter = 0;
}
else{
digitalWrite(ledPin, LOW);
}
}
else{
digitalWrite(ledPin, LOW);
}
}
}
De manera general, este sketch hace lo siguiente:
- Lee el puerto serial, previamente configurado a la frecuencia del protocolo MIDI (31.250 kbaud)
- Revisa si el mensaje recibido (data) es igual a 0xF8, el cual es un mensaje de MIDI clock. Vale la pena informar que cada nota negra de una canción determinada, en otras palabras, cada vez que el bombo suena en una canción, equivale a 24 mensajes de MIDI Clock.
- Un contador cuenta hasta 24 veces que se ha recibido el mensaje de MIDI Clock, de ser esto cierto (contador = 24) se satura el transistor, haciendo que el LED se prenda.
- Una vez que se reinició la cuenta o si es que el mensaje recibido no fue de MIDI Clock, el transistor se pone en corte, apagando el LED.
Este proyecto es sumamente simple y al mismo tiempo está destinado a muchos hobbistas o ingenieros que deseen iniciarse en la creación de sistemas que funcionen en base al ritmo de una pista de audio o que tengan que ser sincronizados con una computadora, un software de producción musical u otro dispositivo MIDI haciendo el papel de Master Clock.
En el futuro veremos como programar un Atmega16 con este mismo principio para los que carecen de la plataforma Arduino o desean fabricar sistemas comerciales de audio. Por otro lado veremos algunas abstracciones para este pequeño proyecto.
Publicado el 13/11/10 por salvadorcd | Categoría: General | Visto 542 veces |









Comentarios
Agregar comentario