Le calcul du tempo est glissant sur les 5 dernières frappes, donc on doit garder les 5 derniers timestamps car lorsqu'un nouveau timestamp arrive (une touche a été pressée), on décale la liste des timestamp. Le 4éme devient le 5éme, le 3éme le 4éme, etc. et le nouveau devient le 1er.
Un petit schéma vaut mieux qu'un grand discours :
On a 5 frappes enregistrées, le calcul du tempo se base sur t et t-4:
+------------+---+----+---+----+--------------------------> temps
t-4 t-3 t-2 t-1 t
Une nouvelle frappe arrive (t+1), le calcul se base maintenant sur t+1 et t-3:
+------------+---+----+---+----+---+----------------------> temps
(t-4) t-3 t-2 t-1 t t+1
Donc on est obligé de garder l'historique des timestamps sinon on aurait perdu t-3.
Dans l'implémentation, les timestamps sont enregistrés dans une file (std::queue) on ajoute au début la nouvelle frappe et on jette la plus ancienne (t-4 ici).
[^] # Re: Petite question d'implémentation
Posté par mzf (site web personnel) . En réponse au journal Un tap tempo en ligne de commande. Évalué à 4.
Merci pour tes félicitations.
Le calcul du tempo est glissant sur les 5 dernières frappes, donc on doit garder les 5 derniers timestamps car lorsqu'un nouveau timestamp arrive (une touche a été pressée), on décale la liste des timestamp. Le 4éme devient le 5éme, le 3éme le 4éme, etc. et le nouveau devient le 1er.
Un petit schéma vaut mieux qu'un grand discours :
On a 5 frappes enregistrées, le calcul du tempo se base sur t et t-4:
Une nouvelle frappe arrive (t+1), le calcul se base maintenant sur t+1 et t-3:
Donc on est obligé de garder l'historique des timestamps sinon on aurait perdu t-3.
Dans l'implémentation, les timestamps sont enregistrés dans une file (std::queue) on ajoute au début la nouvelle frappe et on jette la plus ancienne (t-4 ici).
J'espère que cela a répondu à tes questions :)