diff options
author | JSDurand <mmemmew@gmail.com> | 2022-08-27 15:38:23 +0800 |
---|---|---|
committer | JSDurand <mmemmew@gmail.com> | 2022-08-27 15:38:23 +0800 |
commit | b7e0fa06ca5454314f1341a63148001f497ff018 (patch) | |
tree | 89c955660162de96919d4bc6efa98d791c88c8de /src/lib.rs | |
parent | e954df3f896bd18494cd27d77b26bbb2005de8a7 (diff) |
some new songs and small modifications
Diffstat (limited to 'src/lib.rs')
-rw-r--r-- | src/lib.rs | 13 |
1 files changed, 13 insertions, 0 deletions
@@ -245,6 +245,19 @@ impl Default for Hertz { } } +impl Semitones { + /// Return the octave of the semitone. + fn octave(self) -> (usize, usize) { + let translated = *self + 9f64; + + let quotient = translated.div_euclid(12f64) as i64; + + let rem = translated.rem_euclid(12f64) as usize; + + ((quotient + 4) as usize, rem) + } +} + impl From<Semitones> for Hertz { fn from(st: Semitones) -> Self { (*Self::default() * STD_BASE.powf(*st)).into() |