summaryrefslogtreecommitdiff
path: root/src/lib.rs
diff options
context:
space:
mode:
authorJSDurand <mmemmew@gmail.com>2022-08-27 15:38:23 +0800
committerJSDurand <mmemmew@gmail.com>2022-08-27 15:38:23 +0800
commitb7e0fa06ca5454314f1341a63148001f497ff018 (patch)
tree89c955660162de96919d4bc6efa98d791c88c8de /src/lib.rs
parente954df3f896bd18494cd27d77b26bbb2005de8a7 (diff)
some new songs and small modifications
Diffstat (limited to 'src/lib.rs')
-rw-r--r--src/lib.rs13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 5fa7e79..23fffe2 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -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()