21struct Sample : au::UnitImpl<au::Dimension<SampleBaseDim>>
23 static constexpr const char label[] =
"sample";
25constexpr auto sample = au::SingularNameFor<Sample>{};
26constexpr auto samples = au::QuantityMaker<Sample>{};
29using sample_t = au::QuantityI64<Sample>;
30using precise_sample_t = au::QuantityD<Sample>;
33struct Tick : au::UnitImpl<au::Dimension<TickBaseDim>>
35 static constexpr const char label[] =
"tick";
37constexpr auto tick = au::SingularNameFor<Tick>{};
38constexpr auto ticks = au::QuantityMaker<Tick>{};
41using tick_t = au::QuantityI64<Tick>;
42using precise_tick_t = au::QuantityD<Tick>;
45constexpr tick_t PPQ = ticks (960);
50 static constexpr const char label[] =
"quarterNote";
52constexpr auto quarter_note = au::SingularNameFor<QuarterNote>{};
53constexpr auto quarter_notes = au::QuantityMaker<QuarterNote>{};
56using SampleRate =
decltype (Sample{} / au::Seconds{});
57constexpr auto sample_rate = samples / au::second;
58using sample_rate_t = au::QuantityI<SampleRate>;
59using precise_sample_rate_t = au::QuantityD<SampleRate>;
62constexpr auto seconds = au::seconds;
63using precise_second_t = au::QuantityD<au::Seconds>;