File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -35,15 +35,14 @@ class UIBPMTapper : public UIComponent {
3535 return ;
3636 }
3737
38- // Calculate average interval from last 3 taps (2 intervals)
39- size_t size = tap_times.size ();
40- uint64_t newest = tap_times[size - 1 ];
41- uint64_t middle = tap_times[size - 2 ];
42- uint64_t oldest = tap_times[size - 3 ];
38+ // Use last 5 taps or all available taps if fewer
39+ size_t taps_to_use = std::min (tap_times.size (), (size_t )5 );
40+ size_t start_index = tap_times.size () - taps_to_use;
4341
44- uint64_t interval1 = newest - middle;
45- uint64_t interval2 = middle - oldest;
46- uint64_t avg_interval = (interval1 + interval2) / 2 ;
42+ // Calculate average interval
43+ uint64_t total_interval = tap_times[tap_times.size () - 1 ] - tap_times[start_index];
44+ uint64_t num_intervals = taps_to_use - 1 ;
45+ uint64_t avg_interval = total_interval / num_intervals;
4746
4847 // BPM = 60 seconds * 1,000,000 microseconds / average interval
4948 uint16_t bpm = 60000000 / avg_interval;
You can’t perform that action at this time.
0 commit comments