euphony_units/pitch/mode/
chromatic.rs1use crate::pitch::interval::Interval;
4
5named_interval!(A(0, 1)); named_interval!(B(1, 6)); named_interval!(C(1, 4)); named_interval!(D(5, 12));
9named_interval!(E(7, 12));
10named_interval!(F(2, 3)); named_interval!(G(5, 6)); named_interval!(SEMITONE(1, 12));
14named_interval!(WHOLETONE(1, 6));
15
16pub trait ChromaticInterval {
17 fn sharp(self) -> Self;
18 fn flat(self) -> Self;
19}
20
21impl ChromaticInterval for Interval {
22 fn sharp(self) -> Self {
23 self + SEMITONE
24 }
25
26 fn flat(self) -> Self {
27 self - SEMITONE
28 }
29}
30
31#[test]
32fn modifier_test() {
33 assert_eq!(A.sharp(), B.flat());
34}