[gelöst]wxTimer seeeeehr ungenau
-
Hallo,
ich brauch mal theoretische Hilfe.
Ich habe ein Alleinunterhalterprogramm geschrieben. In der Musik wird die Geschwindigkeit der Musikstücke in BPM gerechnet. Das Bedeutet Beats per Minute.Also habe ich bei 120 BPM normalerweise 2 Schläge pro Sekunde.
Nun hab ich den wxTimer gestartet mit
m_timer.Start((1000 * 60) / 120);
für 120 BPM. Es müsste eigentlich meine Funktion OnTimer ca. 120 Mal in der Minute aufgerufen werden. Im wenn diese Aufgerufen wird, schreibe ich einen * in ein wxTextCrtl. Wenn ich nun nach einer Minute die Sterne zähle, dann hab ich aber nur knapp 90 Sterne stehen.
Das ist natürlich sehr schlecht, gerade wenn man von ausgeht, dass ich Tanzmusik spielen will un die Tänzer jetzt deutlich langsamer tanzen müssten.
Mich wendert das etwas, weil ich ja derzeit nichts anderes mache, als eine (simle) Bildschirmausgabe. Kann die denn den Timer so bremsen?
Und jetzt meine eigentliche Frage: Wie kann ich das Tempo bei 120 BPM auch wirklich auf ca. 120 Aufrufe meiner Funktion OnTimer ändern? Was habe ich theoretisch für Möglichkeiten den Timer genauer zu machen.
Es müssen nicht genau 120 Aufrufe sein. Plus minus 5 ist absolute OK.
Danke,
Stefan
-
Hört sich so an, als würde der Timer so funktionieren:
warte x ms führe OnTimer aus //dauert y ms warte im Anschluss wieder x ms //vom Startpunkt aus wurde nun x+y+x ms gewartet...
Wenn dem so ist, summiert sich das Ganze natürlich immer weiter auf.
Da würde ich eine eigene "Timer-Schleife" machen, in der ich mit einer absoluten Zeit vergleiche (also immer wieder mit dem Startpunkt abgleichen). So könntest du wahrscheinlich ziemlich genau timen (+-10ms oder so sollten ja egal sein).
-
Ich hoffte um das Thema Threads und "Leerlauf im Thread" ausenrum zu kommen. Aber wird wohl nicht fehlen. Momentan experimentiere ich damit eine Zeitmessung im Hintergrund durchzuführen, die mir die BMPs so lange nach oben zieht, bis das Tempo stimmt. Allerdings hab ich bei Tempowechsel im Song dabei richtig Probleme.
Wir wohl ein eigener Thread werden.
-
stefanjann schrieb:
Ich hoffte um das Thema Threads und "Leerlauf im Thread" ausenrum zu kommen.
Ach was, Threads sind doch nix Böses.
stefanjann schrieb:
Momentan experimentiere ich damit eine Zeitmessung im Hintergrund durchzuführen, die mir die BMPs so lange nach oben zieht, bis das Tempo stimmt. Allerdings hab ich bei Tempowechsel im Song dabei richtig Probleme.
Na das ist ja auch quasi von hinten durch die Brust.
Dann lieber 'nen eigenen Thread und gut is'.
stefanjann schrieb:
Wir wohl ein eigener Thread werden.
So sieht's aus.