#[derive(Debug, Copy, Clone)]
pub enum Mode {
Major,
Minor,
Dominant,
HalfDiminished,
Diminished,
MinorMajor,
Augmented,
AugmentedMajor,
DiminishedMajor,
DominantFlatFive,
MajorFlatFive,
}
impl crate::Mode for Mode {
fn make_chord(&self, tonality: crate::MusicalNote) -> crate::Chord {
let base = tonality;
match self {
Mode::Major => [base, base + 4, base + 7, base + 11],
Mode::Minor => [base, base + 3, base + 7, base + 10],
Mode::Dominant => [base, base + 4, base + 7, base + 10],
Mode::HalfDiminished => [base, base + 3, base + 6, base + 10],
Mode::Diminished => [base, base + 4, base + 7, base + 11],
Mode::MinorMajor => [base, base + 3, base + 7, base + 11],
Mode::Augmented => [base, base + 4, base + 8, base + 10],
Mode::AugmentedMajor => [base, base + 4, base + 8, base + 11],
Mode::DiminishedMajor => [base, base + 3, base + 6, base + 11],
Mode::DominantFlatFive => [base, base + 4, base + 6, base + 10],
Mode::MajorFlatFive => [base, base + 4, base + 6, base + 11],
}
.into()
}
}