From d3d7428a189d031739f901472f016b2907752640 Mon Sep 17 00:00:00 2001 From: Colin Fletcher Date: Sat, 21 Mar 2015 12:12:11 +0000 Subject: tap-tempo: reset running average whenever tapped tempo deviates by +/- 20% --- gtk2_ardour/tempo_dialog.cc | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/gtk2_ardour/tempo_dialog.cc b/gtk2_ardour/tempo_dialog.cc index 02686b62ff..8ccafecab2 100644 --- a/gtk2_ardour/tempo_dialog.cc +++ b/gtk2_ardour/tempo_dialog.cc @@ -274,15 +274,21 @@ TempoDialog::tap_tempo_button_press (GdkEventButton *ev) interval = (now - last_tap) * 1.0e-6; if (interval <= 6.0) { // <= 6 seconds (say): >= 10 bpm - if (average_interval > 0 && average_interval > interval / 1.2 && average_interval < interval * 1.2) { + if (average_interval > 0) { + if (average_interval > interval / 1.2 && average_interval < interval * 1.2) { average_interval = interval * decay + average_interval * (1.0-decay); + } else { + average_interval = 0; + } } else { average_interval = interval; } - bpm = 60.0 / average_interval; - bpm_spinner.set_value (bpm); + if (average_interval > 0) { + bpm = 60.0 / average_interval; + bpm_spinner.set_value (bpm); + } } else { average_interval = 0; } -- cgit v1.2.3