chordcalc 0.1.0

Chord related utilities
Documentation
#[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()
    }
}