55 {4, 1}, {6, 1}, {8, 3}, {2, 1}, {3, 1}, {4, 3}, {1, 1}, {3, 2}, {2, 3}, {1, 2}, {3, 4},
56 {1, 3}, {1, 4}, {3, 8}, {1, 6}, {1, 8}, {3, 16}, {1, 12}, {1, 16}, {3, 32}, {1, 24},
69 const auto index =
static_cast<std::uint8_t
>(division);
78 const auto index =
static_cast<std::uint8_t
>(division);
92 const auto value = fraction.value();
96 if (value.numerator > 0 && unit > std::numeric_limits<std::int64_t>::max() / value.numerator)
Result<T, E> — either holds a T or an E, never both.
Definition result.hpp:76
@ Ok
No error; bytes is authoritative.
Definition stream.hpp:32
Definition beat_division.hpp:52
constexpr BeatFraction kBeatDivisionFractions[]
Definition beat_division.hpp:54
Definition beat_division.hpp:11
BeatDivision
Definition beat_division.hpp:15
@ HalfDotted
Definition beat_division.hpp:20
@ ThirtySecond
Definition beat_division.hpp:31
@ SixteenthTriplet
Definition beat_division.hpp:30
@ SixteenthDotted
Definition beat_division.hpp:29
@ SixtyFourth
Definition beat_division.hpp:34
@ Eighth
Definition beat_division.hpp:25
@ EighthTriplet
Definition beat_division.hpp:27
@ ThirtySecondTriplet
Definition beat_division.hpp:33
@ WholeDotted
Definition beat_division.hpp:17
@ ThirtySecondDotted
Definition beat_division.hpp:32
@ QuarterTriplet
Definition beat_division.hpp:24
@ EighthDotted
Definition beat_division.hpp:26
@ Quarter
Definition beat_division.hpp:22
@ Half
Definition beat_division.hpp:19
@ Whole
Definition beat_division.hpp:16
@ SixtyFourthTriplet
Definition beat_division.hpp:36
@ Sixteenth
Definition beat_division.hpp:28
@ QuarterDotted
Definition beat_division.hpp:23
@ SixtyFourthDotted
Definition beat_division.hpp:35
@ HalfTriplet
Definition beat_division.hpp:21
@ Count
Definition beat_division.hpp:37
@ WholeTriplet
Definition beat_division.hpp:18
constexpr std::int64_t kTicksPerQuarter
Definition tick.hpp:54
runtime::Result< BeatFraction, BeatDivisionError > beat_fraction(BeatDivision division) noexcept
Definition beat_division.hpp:77
runtime::Result< TickDuration, BeatDivisionError > division_ticks(BeatDivision division) noexcept
Definition beat_division.hpp:88
BeatDivisionError
Definition beat_division.hpp:46
@ InvalidDivision
Definition beat_division.hpp:47
@ NotExactlyRepresentable
Definition beat_division.hpp:48
@ RangeExceeded
Definition beat_division.hpp:49
constexpr BeatFraction beat_fraction_or(BeatDivision division, BeatFraction fallback) noexcept
Returns the exact fraction for division, or fallback for an invalid ordinal.
Definition beat_division.hpp:67
Result<T, E> — success / failure union for fallible operations.
Definition beat_division.hpp:40
constexpr auto operator<=>(const BeatFraction &) const =default
std::int64_t denominator
Definition beat_division.hpp:42
std::int64_t numerator
Definition beat_division.hpp:41