use crate::Frequency;
#[derive(Clone, Copy, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
pub struct Scale<T = f32> {
pub root: Frequency<T>,
}
#[cfg(test)]
mod tests {
use super::Scale;
use crate::freq::Frequency;
const A4: Frequency<f64> = Frequency(440.0);
const C4: Frequency<f64> = Frequency(261.6255653005986);
#[test]
fn test_freq_converter() {
let n: isize = -9; let scale = Scale::from_freq(A4);
assert! { (scale.get_freq_of_class(n) - C4).abs() < 1e-5 }
assert_eq! { scale.classify(C4), Some(n) }
}
}