bpm_spinner.set_digits (2);
bpm_spinner.set_wrap (true);
bpm_spinner.set_value (bpm);
+ bpm_spinner.set_alignment (1.0);
note_types.insert (make_pair (_("whole"), 1.0));
strings.push_back (_("whole"));
if (movable) {
when_bar_entry.set_width_chars(4);
when_beat_entry.set_width_chars (4);
+ when_bar_entry.set_alignment (1.0);
+ when_beat_entry.set_alignment (1.0);
when_bar_label.set_name ("MetricLabel");
when_beat_label.set_name ("MetricLabel");
set_response_sensitive (RESPONSE_ACCEPT, is_user_input_valid());
}
-
bool
TempoDialog::tap_tempo_button_press (GdkEventButton *ev)
{
- guint32 now;
- now = ev->time; // milliseconds
+ gint64 now;
+ now = g_get_monotonic_time (); // microseconds
if (tapped) {
double interval, bpm;
static const double decay = 0.5;
- interval = (now - last_tap) * 1.0e-3;
+ 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;
}
tapped = true;
}
last_tap = now;
- return false;
+
+ return true;
}
bool
snprintf (buf, sizeof (buf), "%.2f", bpb);
bpb_entry.set_text (buf);
bpb_entry.select_region (0, -1);
+ bpb_entry.set_alignment (1.0);
note_types.insert (make_pair (_("whole"), 1.0));
strings.push_back (_("whole"));
snprintf (buf, sizeof (buf), "%" PRIu32, when.bars);
when_bar_entry.set_text (buf);
+ when_bar_entry.set_alignment (1.0);
if (movable) {
Label* when_label = manage (new Label(_("Meter begins at bar:"), ALIGN_LEFT, ALIGN_CENTER));