Skip to main content.
E C O S
Estudios Contemporáneos de Operaciones con Sonido

Metrónomo MIDI

Por Carlos Hurtado Montenegro

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

20101113-metronome_bb.png

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.

item rate

Vota por este artículo:

Ingrese su correo electrónico para suscribirse a los comentarios de este artículo:

Ingrese los caracteres de la imagen y presione el botón "Suscribirse":

Comentarios

En el esquema no está claro cuál resistencia es la de 220 y cuál la de 270...

Gracias/

Publicado por Juan Pablo at 28/02/11 15:05:39

Agregar comentario

:

: (obligatorio)



(obligatorio)

Su comentario deberá ser aprobado antes de ser publicado. Gracias!

~