euphony_core/time/unquantized_beat.rs
1use crate::{ratio::Ratio, time::beat::Beat};
2
3#[derive(Clone, Copy, Debug, Default, PartialEq, PartialOrd, Ord, Eq)]
4pub struct UnquantizedBeat(pub u64, pub Beat);
5
6impl UnquantizedBeat {
7 pub fn quantize(self, min: Beat) -> Beat {
8 let count = self.1.as_ratio() / min.as_ratio();
9 let count = count.whole() + if count.fraction() > Ratio(1, 2) { 1 } else { 0 };
10 Beat(self.0, 1) + min * count
11 }
12}