Arduino UNO necesito guardar mensajes MIDI

Hola gente del foro! No soy de escribir mucho por aca pero bueno,espero me puedan dar una mano con esto.
Estoy simulando en Proteus 8.1 un Arduino UNO que nvia MIDI y necesito memorizar en la memoria del Arduino los mensajes MIDI que envia por el serial (TX) para poder leerlos de la memoria con un LCD de 2 lineas.
La verdad es que estoy bastante oxidado con programar y estoy usando el ejemplo que trae Arduino de MIDI.

Aca les va el codigo:

*/

void setup() {
// Set MIDI baud rate:
Serial.begin(31250);
}

void loop() {
// play notes from F#-0 (0x1E) to F#-5 (0x5A):
for (int note = 0x1E; note < 0x5A; note ++) {
//Note on channel 1 (0x90), some note value (note), middle velocity (0x45):
noteOn(0x90, note, 0x45);
delay(100);
//Note on channel 1 (0x90), some note value (note), silent velocity (0x00):
noteOn(0x90, note, 0x00);
delay(100);
}
}

// plays a MIDI note. Doesn't check to see that
// cmd is greater than 127, or that data values are less than 127:
void noteOn(int cmd, int pitch, int velocity) {
Serial.write(cmd);
Serial.write(pitch);
Serial.write(velocity);
}


Bueno ,desde ya muchisimas gracias y espero poder devolver con creces la ayuda!:)
 
¿Que es lo que tienes que guardar? para saber los valores tienes que leer la especificación MIDI
 
Hola Nuyel. Ante todo....Gracias!
Tengo que guardar los mensajes MIDI que envío por el puerto serial en la memoria del mismo Arduino ,hacer un feedback , digamos ,y poder almacenar los mensajes MIDI como bytes (status byte y data byte) SIN los bits de start y stop ( 1 y 0 respectivamente). Se me había ocurrido configurar un pin del Arduino como entrada digital y routear el monitor serial allí ,para poder capturar los mensajes MIDI ,pero ,la verdad ,no se me ocurre cómo hacer para guardar en memoria los mensajes!!! Guardarlos como un vector podría ser una solución?:confused:
De nuevo ,gracias miles!!!!!!!
 
Estas diciendo:
A) que Arduino recibe los mensaje de un dispositivo MIDI y los almacena
B) que Arduino actua como un dispositivo MIDI y guarda una copia de los comandos enviados
¿cual es que no te entiendo lo que planeas?
Osea el MIDI es UART a 31250baud, solo la frecuencia anormal difiere del clásico empleado en el RS-232,
de ahí solo son 3 bytes, el de status y 1 o dos de dato dependiendo del comando, el de status se divide en dos nibbles, el primero indica el tipo de mensaje y el segundo el canal, no es gran ciencia, solo leer los valores en cada bit en lugar de esperar un carácter de final de linea, solo tienes 8 comandos a leer de los cuales dos son de 1 byte de dato y solo el de sistema (0xF0) es de longitud indeterminada y debe finalizar con EOX(0xF7).
 
Gracias Nuyel por tu respuesta.
Sería la B) ,Arduino actuando como generador de mensajes MIDI y, a su vez ,memorizando los mismos. Pensaba en routearle la salida TX e ingresar por uno de los pines digitales configurado como entrada y guardar los datos como un vector (status ,data ,data).O bien usar el puerto serial RX para ello. Puede ser posible?
Gracias nuevamente!
 
Pues solo tendrías que guardar el dato que envias moviendolo a los dos punteros, el de serial.write() y el vector donde lo quieres guardar, creo que te estas complicando mucho, si el Arduino está enviando los mensajes entonces sabe los datos que envías, no requieres capturar nada, por ejemplo editas el void noteOn y agregas ahí las ntrucciones para guardar los comandos cuando los envias, tomas los mismos argumentos de la función, solo declaras las variables globales para el indice y los vectores donde guardarás los datos y vas asignando los valores.
 
Atrás
Arriba