(consulta) MIDI Clock

Hola a todos! Espero puedan ayudarme.

Desde ya les agradezco!

Encontré un tutorial en internet (lo recomiendo), con el cual pude entender de mejor forma las interrupciones y como configurarlas. El articulo es este: ESTE.

Dándole una vuelta, pude configurar el lapso de las interrupciones "a gusto". Lo cual, me permite definir la frecuencia en la cual se lanza la interrupción y se ejecuta la función asociada. En mi caso, esta función envía un mensaje MIDI.

Por otra parte, entiendo que existe el mensaje MIDI 0xF8 con el cual podría definir los BPM en una unidad "esclava". Cada mensaje 0xF8 vendría siendo un "tick" del clock y para definir los BPM en un dispositivo MIDI 'esclavo' la unidad 'maestra' debe enviar 24 "tick's" por cada tiempo musical.

Luego, si yo tengo un valor BPM calculo la frecuencia y por ende, la duración cada pulso. Este valor me permite configurar la frecuencia en la que se lanza la interrupción y ejecuto mi función asociada, la cual envía el mensaje MIDI 0xF8, es decir, cada vez que se 'lanza' la interrupción, envío un "tick". Así, a los 24 ticks enviados el dispositivo debería cambiar sus BPM.

Creo ir bien... Me costó un montón entender esta dinámica! jajaja

Si pensamos en un BPM de 190, cada tiempo tiene una duración de 0.3158 segundos o 315800us
Este tiempo, lo divido por 24 y resuelvo que cada "tick" debe enviarse a 13158,333us

Si configuro mi interrupción, estos 24 "ticks" se envían bastante rápido...al menos, si uno mira los tiempos, pareciera no haber una demora excesiva en que la unidad "esclava" reaccione...

Pero que hay si mi BPM es de, por ejemplo 60 o menos?. Estos 24 "ticks" se enviaran en una frecuencia mucho mas lenta y por ende, la unidad "esclava" se demorará mas en reaccionar.

Hasta aquí, todo son supuestos ya que no tengo ningún dispositivo MIDI para probar. Vivo en una ciudad bastante apartada y adquirir algún dispositivo MIDI me resultaría una gran inversión. :confused:

Por eso mi consulta es la siguiente:
Un dipositivo MIDI requiere NECESARIAMENTE de esos 24 "tick" para determinar los BPM? En el caso de los 190 BPM, en vez de enviar 24 "tick" en total, a 13158,33us cada uno, podría solamente enviar 4 o 6 a la misma frecuencia y que el dispositivo MIDI esclavo solo con esos 4 o 6 mensajes recibidos calcule los BPM?

Mi consulta principalmente apunta a reducir de alguna manera el tiempo que demoran en enviarse los 24 "ticks" en valores BPM bajos. Si pienso en 30BPM, se demora bastante en que los 24 clocks lleguen a la unidad 'esclava' y por ende el dispositivo tardará mas en reaccionar.

Si pienso en asociar esto a un botón, la idea es que cuando el usuario presione el cambio sea si no inmediato, lo bastante rápido como para evitar que el retraso sea notorio, que gener esa incomodidad que dice :"que lento".

Se que existen otros mensajes asociados al clock: START, STOP y CONTIUE pero no se si algo tienen que ver.

Pienso en algo como: START->TICK->TICK->TICK->TICK-STOP

pero como ya les decia, no tengo ningun dispositivo MIDI para probar. Ya me imagino a futuro enviando esto a un teclado, efecto de guitarra o DAW y que el mensaje "START" le ponga play a alguna secuencia o musiquita que no queremos que suene :stuck_out_tongue_closed_eyes:

Eso...

Espero no haber dado la lata, trate de ser claro...es un buen ejercicio incluso para mi mismo u otro usuario que puede estar buscando desarrollar algo parecido.

Desde ya, les agradezco!