temporal: add round_up_to_bar() methods to Meter, Metric and TempoMap
This commit is contained in:
parent
428437ed72
commit
364598e94f
@ -359,6 +359,17 @@ Meter::round_to_bar (Temporal::BBT_Time const & bbt) const
|
|||||||
return BBT_Time (bbt.bars, 1, 0);
|
return BBT_Time (bbt.bars, 1, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Temporal::BBT_Time
|
||||||
|
Meter::round_up_to_bar (Temporal::BBT_Time const & bbt) const
|
||||||
|
{
|
||||||
|
if (bbt.beats == 1 && bbt.ticks == 0) {
|
||||||
|
/* on bar, do not round up */
|
||||||
|
return bbt;
|
||||||
|
}
|
||||||
|
|
||||||
|
return BBT_Time (bbt.bars+1, 1, 0);
|
||||||
|
}
|
||||||
|
|
||||||
Temporal::BBT_Time
|
Temporal::BBT_Time
|
||||||
Meter::round_up_to_beat_div (Temporal::BBT_Time const & bbt, int beat_div) const
|
Meter::round_up_to_beat_div (Temporal::BBT_Time const & bbt, int beat_div) const
|
||||||
{
|
{
|
||||||
|
@ -304,6 +304,7 @@ class LIBTEMPORAL_API Meter {
|
|||||||
BBT_Time bbt_add (BBT_Time const & bbt, BBT_Offset const & add) const;
|
BBT_Time bbt_add (BBT_Time const & bbt, BBT_Offset const & add) const;
|
||||||
BBT_Time bbt_subtract (BBT_Time const & bbt, BBT_Offset const & sub) const;
|
BBT_Time bbt_subtract (BBT_Time const & bbt, BBT_Offset const & sub) const;
|
||||||
BBT_Time round_to_bar (BBT_Time const &) const;
|
BBT_Time round_to_bar (BBT_Time const &) const;
|
||||||
|
BBT_Time round_up_to_bar (BBT_Time const &) const;
|
||||||
BBT_Time round_up_to_beat_div (BBT_Time const &, int beat_div) const;
|
BBT_Time round_up_to_beat_div (BBT_Time const &, int beat_div) const;
|
||||||
BBT_Time round_up_to_beat (BBT_Time const & bbt) const { return round_up_to_beat_div (bbt, 1); }
|
BBT_Time round_up_to_beat (BBT_Time const & bbt) const { return round_up_to_beat_div (bbt, 1); }
|
||||||
BBT_Time round_to_beat (BBT_Time const &) const;
|
BBT_Time round_to_beat (BBT_Time const &) const;
|
||||||
@ -470,6 +471,7 @@ class LIBTEMPORAL_API TempoMetric
|
|||||||
BBT_Argument bbt_add (BBT_Time const & bbt, BBT_Offset const & add) const { return BBT_Argument (reftime(), _meter->bbt_add (bbt, add)); }
|
BBT_Argument bbt_add (BBT_Time const & bbt, BBT_Offset const & add) const { return BBT_Argument (reftime(), _meter->bbt_add (bbt, add)); }
|
||||||
BBT_Argument bbt_subtract (BBT_Time const & bbt, BBT_Offset const & sub) const { return BBT_Argument (reftime(), _meter->bbt_subtract (bbt, sub)); }
|
BBT_Argument bbt_subtract (BBT_Time const & bbt, BBT_Offset const & sub) const { return BBT_Argument (reftime(), _meter->bbt_subtract (bbt, sub)); }
|
||||||
BBT_Argument round_to_bar (BBT_Time const & bbt) const { return BBT_Argument (reftime(), _meter->round_to_bar (bbt)); }
|
BBT_Argument round_to_bar (BBT_Time const & bbt) const { return BBT_Argument (reftime(), _meter->round_to_bar (bbt)); }
|
||||||
|
BBT_Argument round_up_to_bar (BBT_Time const & bbt) const { return BBT_Argument (reftime(), _meter->round_up_to_bar (bbt)); }
|
||||||
Beats to_quarters (BBT_Offset const & bbo) const { return _meter->to_quarters (bbo); }
|
Beats to_quarters (BBT_Offset const & bbo) const { return _meter->to_quarters (bbo); }
|
||||||
|
|
||||||
/* combination methods that require both tempo and meter information */
|
/* combination methods that require both tempo and meter information */
|
||||||
@ -929,10 +931,13 @@ class /*LIBTEMPORAL_API*/ TempoMap : public PBD::StatefulDestructible
|
|||||||
*/
|
*/
|
||||||
LIBTEMPORAL_API double quarters_per_minute_at (timepos_t const & pos) const;
|
LIBTEMPORAL_API double quarters_per_minute_at (timepos_t const & pos) const;
|
||||||
|
|
||||||
/* convenience function */
|
/* convenience functions */
|
||||||
LIBTEMPORAL_API BBT_Argument round_to_bar (BBT_Argument const & bbt) const {
|
LIBTEMPORAL_API BBT_Argument round_to_bar (BBT_Argument const & bbt) const {
|
||||||
return metric_at (bbt).round_to_bar (bbt);
|
return metric_at (bbt).round_to_bar (bbt);
|
||||||
}
|
}
|
||||||
|
LIBTEMPORAL_API BBT_Argument round_up_to_bar (BBT_Argument const & bbt) const {
|
||||||
|
return metric_at (bbt).round_up_to_bar (bbt);
|
||||||
|
}
|
||||||
|
|
||||||
LIBTEMPORAL_API BBT_Argument bbt_at (timepos_t const &) const;
|
LIBTEMPORAL_API BBT_Argument bbt_at (timepos_t const &) const;
|
||||||
LIBTEMPORAL_API BBT_Argument bbt_at (Beats const &) const;
|
LIBTEMPORAL_API BBT_Argument bbt_at (Beats const &) const;
|
||||||
|
Loading…
Reference in New Issue
Block a user