From b9e5621e037a03ffb5d43a5f03a68638f500c4cf Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 5 May 2023 20:53:23 -0600 Subject: [PATCH] during map reset, force meter to bars, and tempo to beats --- libs/temporal/tempo.cc | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/libs/temporal/tempo.cc b/libs/temporal/tempo.cc index 831d1f08ef..7431e021e2 100644 --- a/libs/temporal/tempo.cc +++ b/libs/temporal/tempo.cc @@ -1522,8 +1522,18 @@ TempoMap::reset_section (Points::iterator& begin, Points::iterator& end, supercl core_remove_meter (*mp); } } else { - DEBUG_TRACE (DEBUG::MapReset, string_compose ("\tbased on %1 move to %2,%3\n", p->bbt(), sc, metric.meter().quarters_at (p->bbt()))); - p->set (sc, metric.meter().quarters_at (p->bbt()), p->bbt()); + + if (mp) { + /* Meter markers must be on-bar */ + BBT_Time rounded = metric.meter().round_to_bar (p->bbt()); + p->set (sc, metric.meter().quarters_at (rounded), rounded); + DEBUG_TRACE (DEBUG::MapReset, string_compose ("\tbased on %1 move meter point to %2,%3\n", p->bbt(), sc, p->beats())); + } else { + /* Tempo markers must be on-beat */ + BBT_Time rounded = metric.meter().round_to_beat (p->bbt()); + p->set (sc, metric.meter().quarters_at (rounded), rounded); + DEBUG_TRACE (DEBUG::MapReset, string_compose ("\tbased on %1 move tempo point to %2,%3\n", p->bbt(), sc, p->beats())); + } } } else {