13/11/10 |
Publicado por: salvadorcd | Categoría General
| Link permanente | Visto: 421 veces |
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
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.
04/11/10 |
Publicado por: salvadorcd | Categoría Noticias
- Añadir comentario | Link permanente | Visto: 177 veces |

Luego de un hiato en el grupo, ECOS ha decidido volver a las andanzas participando en la cuarta edición de la Feria E-quipu, realizándose el 11 de Noviembre de este año. Como saben, dentro del grupo desarrollamos tecnologías nuevas relacionadas al sonido, interactividad, música y espacios sonoros, por lo que este año presentaremos nuestros avances en espacialización usando un arreglo de sonido en 3D basado en los principios de Wave Field Synthesis y espacialización. Asimismo incorporaremos la parte visual dentro de una presentación de 30 minutos en el escenario de la feria, a cargo del DJ Karl Montenegro, con dispositivos desarrollados integramente en el grupo.
Los esperamos ese día dentro del siguiente horario al frente del Comedor Central para que conozcan al grupo y se deleiten con la presentación!
Horario:
- Stand ECOS 10 am - 5 pm
- Karl Montenegro DJ Set 12:30 pm - 1 pm
25/06/10 |
Publicado por: salvadorcd | Categoría Noticias
- Añadir comentario | Link permanente | Visto: 169 veces |
Se da a conocer que están abiertas las siguientes convocatorias:
a)
2011 IEEE Digital Signal Processing (DSP) Workshop and IEEE Signal Processing Education (SPE) Workshop, que se llevará a cabo en Arizona, EEUU.
b)
Peruvian Game Makers Challenge 2010, evento organizado por la rama IEEE-PUCP.
Bases y fechas límite en los enlaces respectivos.
24/06/10 |
Publicado por: salvadorcd | Categoría General
- Añadir comentario | Link permanente | Visto: 535 veces |
En el marco del
11vo Festival Internacional de Vídeo / Arte / Electrónico, 1 al 3 de Julio en el ICPNA del centro de Lima se llevará a cabo el 1er Foro de música por computadora (FLAMUC) que tiene como objetivo reunir a las personas interesadas para fomentar el intercambio y la adquisición de conocimientos en el tema.
El encuentro consta de interesantes conferencias, presentaciones individuales, paneles, mesas de diálogo sobre ejes temáticos, demostraciones y conciertos. Cabe resaltar que estarán presentes importantes expositores extranjeros entre ellos Ludger Brümmer y Miller Puckette, el creador del programa para música por computadora Pure Data. Entre los expositores nacionales se cuenta con Jaime Oliver y Leonardo Camacho, éste último perteneciente a nuestra casa de estudios.
El FLAMUC cuenta con el auspicio principal de la Cooperación Regional Francesa para los Países Andinos, el Instituto Cultural Peruano Norte Americano y el apoyo del Instituto Goethe. Desde ECOS saludamos esta iniciativa y reconocemos el gran esfuerzo de los organizadores por llevarla a cabo.
Enlace a la página del FLAMUC
aquí
01/06/10 |
Publicado por: salvadorcd | Categoría General
- Añadir comentario | Link permanente | Visto: 2004 veces |
Continuando con la entrada anterior:
Conexiones
Los pines DE DATOS (DB0..7) del LCD se conectan a los pines PB0..7 del Atmega16 mientras que los pines RS, RW y E a los pines PC0, PC1 y PC6 respectivamente.
Diagrama Flujo del programa
Las acciones a realizar son las siguientes:
1. Inicializar pila
2. Configurar puertos B y C como salida
3. Inicializar LCD
4. Mostrar mensaje
5. Lazo infinito
En el post anterior ya se ha mostrado el diagrama de flujo de la inicializacion del LCD. Como se puede observar ewn ese diagrama hay que enviar una serie de instrucciones al lcd dado que es una acción que se repite es conveniente crear una subrutina, lo mismo sucede cuando querramos enviar datos al lcd para que se muestren o instrucciones pre-definidas como reset por ejemplo. Estas subrutinas tendrán como entrada la instrucción o dato a enviar al LCD.
Para enviar el mensaje se ha hecho una subrutina que lee los caracteres de una tabla y los envía uno por uno. Finalmente el código en assembler
aquí
27/05/10 |
Publicado por: salvadorcd | Categoría General
- Añadir comentario | Link permanente | Visto: 1160 veces |
Por: José Luis Romero
El módulo LCD cuenta con una integrado que interpreta las órdenes y envía las señales apropiadas a la pantalla LCD para mostrar los caracteres deseados. El LCD se configura usando 2 pines de control y 8 pines de datos. También se puede usar 4 pines de datos cuando se requiera economizar la cantidad de pines usados, en este post veremos el caso específico de la configuración usando 8 pines. Antes de mostrar mensajes en el módulo LCD se debe realizar una configuración previa que indique algunos parámetros de funcionamiento como:
* Uso de 1 o 2 líneas.
* Activación de la luz de fondo.
* Número de bits del bus de datos.
* Aparición del cursor en pantalla.
* Orden de aparición de caracteres.
Son parámetros de configuración que veremos más adelante. Primero veamos los pines del TS-1620.
Los pines
De la hoja de datos:
1 Vss - Terminal de tierra
2 VDD - 5 V
3 V0 - pin de regulación de contraste
4 RS - Pin de configuración. Indica la interpretación de valores en los pines 7..14 corresponde a un dato (1) o a una instrucción (0)
5 RW - Pin de configuración. Indica si la acción a realizar es de lectura (1) o escritura (0)
6 E - Señal Enable, habilita el lcd para realizar cualquier acción.
7..14 DB0..7 Bus de datos
15 BLA luz de fondo + (5v)
16 BLK Luz de fondo - (gnd)
Así mismo se recomienda usar un potenciómetro de 10 K como divisor de voltaje en el pin de voltaje referencia (VO - pin3) de manera que puedan graduar la intensidad de los caracteres a mostrar en el lcd. Cabe mencionar que hay modelos de LCD que no cuentan con luz de fondo.
Tabla y diagrama de tiempos
De la hoja de datos podemos tomar nota de los tiempos que demora cada acción en el LCD. El el diagrama de tiempos podemos dar cuenta de cómo suceden los eventos. Sólo se verá el caso de escritura.
Cómo se observa para el caso del proceso de escritura de una instrucción, se siguen los siguientes pasos:
1 Pin Rs en '0' ( Indica que DB0..7 se interpretará como instrucción)
2 Pin RW en '0' ( Indica que la operación es de escritura)
3 Espera Tiempo Tsu1
4 Pin E en '1'
5 Espera Tiempo Tsu2
6 Instrucción cargada en DB0..7
7 Espera Tiempo Tw
8 Pin E en '0'
y en el caso de la escritura de un dato al LCD:
1 Pin Rs en '1' ( Indica que DB0..7 se interpretará como dato)
2 Pin RW en '0' ( Indica que la operación es de escritura)
3 Espera Tiempo Tsu1
4 Pin E en '1'
5 Espera Tiempo Tsu2
6 Instrucción cargada en DB0..7
7 Espera Tiempo Tw
8 Pin E en '0'
6 Pin Rs en '0'
Diagrama de flujo de Configuración
El procedimiento de la configuracion el LCD es señalado en la hoja de datos como se muestra a continuación. En ella se pueden seleccionar algunos parámetros de funcionamiento como por ejemplo seleccionar si se trabaja en 1 linea o en 2 líneas, para ello debemos colocar '1' o '0' en donde aparece N en la trama de datos.
Dado que el post se ha hecho ya muy extenso queda pendiente para una próxima entrega el diagrama de flujo general y el código en assembler.
14/05/10 |
Publicado por: salvadorcd | Categoría General
- Añadir comentario | Link permanente | Visto: 943 veces |
Parte 1: hojas de datos
La configuración de un LCD es sencilla si se tiene a la mano la hoja de datos pues en ella encontraremos los comandos para la configuración y los diagramas de flujo y tiempo necesarios para la configuración del dispositivo. En el caso específico del TS 1620 de Techstar aqui hay dos links:
Hoja de datos 1
Hoja de datos 2
En el siguiente post veremos los pines del LCD, los modos de configuración, las diversas opciones de funcionamiento, los diagramas de flujo y tiempo y el código en assembler.
