triggerbox: try to avoid tempo that results in fractional bar cnts
If minibpm's estimate of tempo implies that the clip has a duration measured in fractional bars, use the estimate as a starting point to get to a tempo that will lead to an integer number of bars (and quarters)
This commit is contained in:
parent
ed6121d76e
commit
1ecdc5c515
@ -826,6 +826,14 @@ AudioTrigger::determine_tempo ()
|
|||||||
const double quarters = (seconds / 60.) * _apparent_tempo;
|
const double quarters = (seconds / 60.) * _apparent_tempo;
|
||||||
_barcnt = quarters / metric.meter().divisions_per_bar();
|
_barcnt = quarters / metric.meter().divisions_per_bar();
|
||||||
|
|
||||||
|
if ((_apparent_tempo != 0.) && (rint (_barcnt) != _barcnt)) {
|
||||||
|
/* fractional barcnt */
|
||||||
|
int intquarters = floor (quarters);
|
||||||
|
double at = _apparent_tempo;
|
||||||
|
_apparent_tempo = intquarters / (seconds/60.);
|
||||||
|
DEBUG_TRACE (DEBUG::Triggers, string_compose ("adjusted barcnt of %1 and q = %2 to %3, old %4 new at = %5\n", _barcnt, quarters, intquarters, at, _apparent_tempo));
|
||||||
|
}
|
||||||
|
|
||||||
/* use initial tempo in map (assumed for now to be the only one */
|
/* use initial tempo in map (assumed for now to be the only one */
|
||||||
|
|
||||||
const samplecnt_t one_bar = tm->bbt_duration_at (timepos_t (AudioTime), BBT_Offset (1, 0, 0)).samples();
|
const samplecnt_t one_bar = tm->bbt_duration_at (timepos_t (AudioTime), BBT_Offset (1, 0, 0)).samples();
|
||||||
|
Loading…
Reference in New Issue
Block a user