Midi Cock Generator

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!

Was mir als erstes auffällt ist, das time ein "float" ist, delay() aber ein int (respektive unsigned long) als Parameter erwartet.

mkl0815:
Was mir als erstes auffällt ist, das time ein "float" ist, delay() aber ein int (respektive unsigned long) als Parameter erwartet.

Was mir als erstes auffällt ist der peinliche Schreibfehler in der Überschrift :wink:

rofl das hatte ich noch gar nicht bermerkt. :stuck_out_tongue_closed_eyes:
YMMD

 time = (1 / 96)*10000000;

Diese Zeile muss auch nicht unbedingt in der loop stehen.