summaryrefslogtreecommitdiff
path: root/gtk2_ardour/tempo_dialog.cc
diff options
context:
space:
mode:
authorColin Fletcher <colin.m.fletcher@googlemail.com>2015-03-21 12:12:11 +0000
committerColin Fletcher <colin.m.fletcher@googlemail.com>2015-03-27 13:23:33 +0000
commitd3d7428a189d031739f901472f016b2907752640 (patch)
treecb04a575f7139e7c74dc9fbd23aedca01162ee6a /gtk2_ardour/tempo_dialog.cc
parent3127587f9a9acb5bc19efea9a0aab8ad3214640b (diff)
tap-tempo: reset running average whenever tapped tempo deviates by +/- 20%
Diffstat (limited to 'gtk2_ardour/tempo_dialog.cc')
-rw-r--r--gtk2_ardour/tempo_dialog.cc12
1 files 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;
}