Hallo!
Ich möchte meinen Arduino in eine MIDI-Master-Clock verwandeln. Hardwaremäßig läuft das auch schon, und auch das Serial.write(0xF8) für den Clock-Code kann ich senden. Nun habe ich aber ein problem: Wie lasse ich ihn die Clocks/Sekunde berechnen?
MIDI definiert 96Clocks pro Viertelnote, bei einem 4/4Takt sind das 4*96Clocks/Takt. Und bei 120BPM => 2Beats/Sekunde => 192Clocks in der Sekunde? Stimmt diese mathematische Annahme?
Zweiter Problem, der Code:
float time = 0.0;
int i = 0;
void loop()
{
time = (1 / 96)*10000000;
while(i == 0)
{
Serial.write(0xF8);
delay(time);
}
}
Nur leider rattert er dann meistens bei 500-800BPM rum... Wo habe ich den Denkfehler? Kann ich das überhaupt per Delay machen oder gibts da bessere Lösungen?
Viele Grüße!