midi_file 0.1.0

For reading and writing MIDI files.
Documentation
/// `GeneralMidi` represents the standard set of instruments that are intended to be available by
/// all MIDI implementations.
#[repr(u8)]
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
#[allow(missing_docs)]
#[derive(Default)]
pub enum GeneralMidi {
    #[default]
    AcousticGrandPiano = 1,
    BrightAcousticPiano = 2,
    ElectricGrandPiano = 3,
    HonkyTonkPiano = 4,
    ElectricPiano1 = 5,
    ElectricPiano2 = 6,
    Harpsichord = 7,
    Clavi = 8,
    Celesta = 9,
    Glockenspiel = 10,
    MusicBox = 11,
    Vibraphone = 12,
    Marimba = 13,
    Xylophone = 14,
    TubularBells = 15,
    Dulcimer = 16,
    DrawbarOrgan = 17,
    PercussiveOrgan = 18,
    RockOrgan = 19,
    ChurchOrgan = 20,
    ReedOrgan = 21,
    Accordion = 22,
    Harmonica = 23,
    TangoAccordion = 24,
    AcousticGuitarNylon = 25,
    AcousticGuitarSteel = 26,
    ElectricGuitarJazz = 27,
    ElectricGuitarClean = 28,
    ElectricGuitarMuted = 29,
    OverdrivenGuitar = 30,
    DistortionGuitar = 31,
    GuitarHarmonics = 32,
    AcousticBass = 33,
    ElectricBassFinger = 34,
    ElectricBassPick = 35,
    FretlessBass = 36,
    SlapBass1 = 37,
    SlapBass2 = 38,
    SynthBass1 = 39,
    SynthBass2 = 40,
    Violin = 41,
    Viola = 42,
    Cello = 43,
    Contrabass = 44,
    TremoloStrings = 45,
    PizzicatoStrings = 46,
    OrchestralHarp = 47,
    Timpani = 48,
    StringEnsemble1 = 49,
    StringEnsemble2 = 50,
    SynthStrings1 = 51,
    SynthStrings2 = 52,
    ChoirAahs = 53,
    VoiceOohs = 54,
    SynthVoice = 55,
    OrchestraHit = 56,
    Trumpet = 57,
    Trombone = 58,
    Tuba = 59,
    MutedTrumpet = 60,
    FrenchHorn = 61,
    BrassSection = 62,
    SynthBrass1 = 63,
    SynthBrass2 = 64,
    SopranoSax = 65,
    AltoSax = 66,
    TenorSax = 67,
    BaritoneSax = 68,
    Oboe = 69,
    EnglishHorn = 70,
    Bassoon = 71,
    Clarinet = 72,
    Piccolo = 73,
    Flute = 74,
    Recorder = 75,
    PanFlute = 76,
    BlownBottle = 77,
    Shakuhachi = 78,
    Whistle = 79,
    Ocarina = 80,
    Lead1Square = 81,
    Lead2Sawtooth = 82,
    Lead3Calliope = 83,
    Lead4Chiff = 84,
    Lead5Charang = 85,
    Lead6Voice = 86,
    Lead7Fifths = 87,
    Lead8BassPlusLead = 88,
    Pad1Newage = 89,
    Pad2Warm = 90,
    Pad3Polysynth = 91,
    Pad4Choir = 92,
    Pad5Bowed = 93,
    Pad6Metallic = 94,
    Pad7Halo = 95,
    Pad8Sweep = 96,
    Fx1Rain = 97,
    Fx2Soundtrack = 98,
    Fx3Crystal = 99,
    Fx4Atmosphere = 100,
    Fx5Brightness = 101,
    Fx6Goblins = 102,
    Fx7Echoes = 103,
    Fx8SciFi = 104,
    Sitar = 105,
    Banjo = 106,
    Shamisen = 107,
    Koto = 108,
    Kalimba = 109,
    Bagpipe = 110,
    Fiddle = 111,
    Shanai = 112,
    TinkleBell = 113,
    Agogo = 114,
    SteelDrums = 115,
    Woodblock = 116,
    TaikoDrum = 117,
    MelodicTom = 118,
    SynthDrum = 119,
    ReverseCymbal = 120,
    GuitarFretNoise = 121,
    BreathNoise = 122,
    Seashore = 123,
    BirdTweet = 124,
    TelephoneRing = 125,
    Helicopter = 126,
    Applause = 127,
    Gunshot = 128,
}

impl From<u8> for GeneralMidi {
    fn from(value: u8) -> Self {
        match value {
            x if GeneralMidi::AcousticGrandPiano as u8 == x => GeneralMidi::AcousticGrandPiano,
            x if GeneralMidi::BrightAcousticPiano as u8 == x => GeneralMidi::BrightAcousticPiano,
            x if GeneralMidi::ElectricGrandPiano as u8 == x => GeneralMidi::ElectricGrandPiano,
            x if GeneralMidi::HonkyTonkPiano as u8 == x => GeneralMidi::HonkyTonkPiano,
            x if GeneralMidi::ElectricPiano1 as u8 == x => GeneralMidi::ElectricPiano1,
            x if GeneralMidi::ElectricPiano2 as u8 == x => GeneralMidi::ElectricPiano2,
            x if GeneralMidi::Harpsichord as u8 == x => GeneralMidi::Harpsichord,
            x if GeneralMidi::Clavi as u8 == x => GeneralMidi::Clavi,
            x if GeneralMidi::Celesta as u8 == x => GeneralMidi::Celesta,
            x if GeneralMidi::Glockenspiel as u8 == x => GeneralMidi::Glockenspiel,
            x if GeneralMidi::MusicBox as u8 == x => GeneralMidi::MusicBox,
            x if GeneralMidi::Vibraphone as u8 == x => GeneralMidi::Vibraphone,
            x if GeneralMidi::Marimba as u8 == x => GeneralMidi::Marimba,
            x if GeneralMidi::Xylophone as u8 == x => GeneralMidi::Xylophone,
            x if GeneralMidi::TubularBells as u8 == x => GeneralMidi::TubularBells,
            x if GeneralMidi::Dulcimer as u8 == x => GeneralMidi::Dulcimer,
            x if GeneralMidi::DrawbarOrgan as u8 == x => GeneralMidi::DrawbarOrgan,
            x if GeneralMidi::PercussiveOrgan as u8 == x => GeneralMidi::PercussiveOrgan,
            x if GeneralMidi::RockOrgan as u8 == x => GeneralMidi::RockOrgan,
            x if GeneralMidi::ChurchOrgan as u8 == x => GeneralMidi::ChurchOrgan,
            x if GeneralMidi::ReedOrgan as u8 == x => GeneralMidi::ReedOrgan,
            x if GeneralMidi::Accordion as u8 == x => GeneralMidi::Accordion,
            x if GeneralMidi::Harmonica as u8 == x => GeneralMidi::Harmonica,
            x if GeneralMidi::TangoAccordion as u8 == x => GeneralMidi::TangoAccordion,
            x if GeneralMidi::AcousticGuitarNylon as u8 == x => GeneralMidi::AcousticGuitarNylon,
            x if GeneralMidi::AcousticGuitarSteel as u8 == x => GeneralMidi::AcousticGuitarSteel,
            x if GeneralMidi::ElectricGuitarJazz as u8 == x => GeneralMidi::ElectricGuitarJazz,
            x if GeneralMidi::ElectricGuitarClean as u8 == x => GeneralMidi::ElectricGuitarClean,
            x if GeneralMidi::ElectricGuitarMuted as u8 == x => GeneralMidi::ElectricGuitarMuted,
            x if GeneralMidi::OverdrivenGuitar as u8 == x => GeneralMidi::OverdrivenGuitar,
            x if GeneralMidi::DistortionGuitar as u8 == x => GeneralMidi::DistortionGuitar,
            x if GeneralMidi::GuitarHarmonics as u8 == x => GeneralMidi::GuitarHarmonics,
            x if GeneralMidi::AcousticBass as u8 == x => GeneralMidi::AcousticBass,
            x if GeneralMidi::ElectricBassFinger as u8 == x => GeneralMidi::ElectricBassFinger,
            x if GeneralMidi::ElectricBassPick as u8 == x => GeneralMidi::ElectricBassPick,
            x if GeneralMidi::FretlessBass as u8 == x => GeneralMidi::FretlessBass,
            x if GeneralMidi::SlapBass1 as u8 == x => GeneralMidi::SlapBass1,
            x if GeneralMidi::SlapBass2 as u8 == x => GeneralMidi::SlapBass2,
            x if GeneralMidi::SynthBass1 as u8 == x => GeneralMidi::SynthBass1,
            x if GeneralMidi::SynthBass2 as u8 == x => GeneralMidi::SynthBass2,
            x if GeneralMidi::Violin as u8 == x => GeneralMidi::Violin,
            x if GeneralMidi::Viola as u8 == x => GeneralMidi::Viola,
            x if GeneralMidi::Cello as u8 == x => GeneralMidi::Cello,
            x if GeneralMidi::Contrabass as u8 == x => GeneralMidi::Contrabass,
            x if GeneralMidi::TremoloStrings as u8 == x => GeneralMidi::TremoloStrings,
            x if GeneralMidi::PizzicatoStrings as u8 == x => GeneralMidi::PizzicatoStrings,
            x if GeneralMidi::OrchestralHarp as u8 == x => GeneralMidi::OrchestralHarp,
            x if GeneralMidi::Timpani as u8 == x => GeneralMidi::Timpani,
            x if GeneralMidi::StringEnsemble1 as u8 == x => GeneralMidi::StringEnsemble1,
            x if GeneralMidi::StringEnsemble2 as u8 == x => GeneralMidi::StringEnsemble2,
            x if GeneralMidi::SynthStrings1 as u8 == x => GeneralMidi::SynthStrings1,
            x if GeneralMidi::SynthStrings2 as u8 == x => GeneralMidi::SynthStrings2,
            x if GeneralMidi::ChoirAahs as u8 == x => GeneralMidi::ChoirAahs,
            x if GeneralMidi::VoiceOohs as u8 == x => GeneralMidi::VoiceOohs,
            x if GeneralMidi::SynthVoice as u8 == x => GeneralMidi::SynthVoice,
            x if GeneralMidi::OrchestraHit as u8 == x => GeneralMidi::OrchestraHit,
            x if GeneralMidi::Trumpet as u8 == x => GeneralMidi::Trumpet,
            x if GeneralMidi::Trombone as u8 == x => GeneralMidi::Trombone,
            x if GeneralMidi::Tuba as u8 == x => GeneralMidi::Tuba,
            x if GeneralMidi::MutedTrumpet as u8 == x => GeneralMidi::MutedTrumpet,
            x if GeneralMidi::FrenchHorn as u8 == x => GeneralMidi::FrenchHorn,
            x if GeneralMidi::BrassSection as u8 == x => GeneralMidi::BrassSection,
            x if GeneralMidi::SynthBrass1 as u8 == x => GeneralMidi::SynthBrass1,
            x if GeneralMidi::SynthBrass2 as u8 == x => GeneralMidi::SynthBrass2,
            x if GeneralMidi::SopranoSax as u8 == x => GeneralMidi::SopranoSax,
            x if GeneralMidi::AltoSax as u8 == x => GeneralMidi::AltoSax,
            x if GeneralMidi::TenorSax as u8 == x => GeneralMidi::TenorSax,
            x if GeneralMidi::BaritoneSax as u8 == x => GeneralMidi::BaritoneSax,
            x if GeneralMidi::Oboe as u8 == x => GeneralMidi::Oboe,
            x if GeneralMidi::EnglishHorn as u8 == x => GeneralMidi::EnglishHorn,
            x if GeneralMidi::Bassoon as u8 == x => GeneralMidi::Bassoon,
            x if GeneralMidi::Clarinet as u8 == x => GeneralMidi::Clarinet,
            x if GeneralMidi::Piccolo as u8 == x => GeneralMidi::Piccolo,
            x if GeneralMidi::Flute as u8 == x => GeneralMidi::Flute,
            x if GeneralMidi::Recorder as u8 == x => GeneralMidi::Recorder,
            x if GeneralMidi::PanFlute as u8 == x => GeneralMidi::PanFlute,
            x if GeneralMidi::BlownBottle as u8 == x => GeneralMidi::BlownBottle,
            x if GeneralMidi::Shakuhachi as u8 == x => GeneralMidi::Shakuhachi,
            x if GeneralMidi::Whistle as u8 == x => GeneralMidi::Whistle,
            x if GeneralMidi::Ocarina as u8 == x => GeneralMidi::Ocarina,
            x if GeneralMidi::Lead1Square as u8 == x => GeneralMidi::Lead1Square,
            x if GeneralMidi::Lead2Sawtooth as u8 == x => GeneralMidi::Lead2Sawtooth,
            x if GeneralMidi::Lead3Calliope as u8 == x => GeneralMidi::Lead3Calliope,
            x if GeneralMidi::Lead4Chiff as u8 == x => GeneralMidi::Lead4Chiff,
            x if GeneralMidi::Lead5Charang as u8 == x => GeneralMidi::Lead5Charang,
            x if GeneralMidi::Lead6Voice as u8 == x => GeneralMidi::Lead6Voice,
            x if GeneralMidi::Lead7Fifths as u8 == x => GeneralMidi::Lead7Fifths,
            x if GeneralMidi::Lead8BassPlusLead as u8 == x => GeneralMidi::Lead8BassPlusLead,
            x if GeneralMidi::Pad1Newage as u8 == x => GeneralMidi::Pad1Newage,
            x if GeneralMidi::Pad2Warm as u8 == x => GeneralMidi::Pad2Warm,
            x if GeneralMidi::Pad3Polysynth as u8 == x => GeneralMidi::Pad3Polysynth,
            x if GeneralMidi::Pad4Choir as u8 == x => GeneralMidi::Pad4Choir,
            x if GeneralMidi::Pad5Bowed as u8 == x => GeneralMidi::Pad5Bowed,
            x if GeneralMidi::Pad6Metallic as u8 == x => GeneralMidi::Pad6Metallic,
            x if GeneralMidi::Pad7Halo as u8 == x => GeneralMidi::Pad7Halo,
            x if GeneralMidi::Pad8Sweep as u8 == x => GeneralMidi::Pad8Sweep,
            x if GeneralMidi::Fx1Rain as u8 == x => GeneralMidi::Fx1Rain,
            x if GeneralMidi::Fx2Soundtrack as u8 == x => GeneralMidi::Fx2Soundtrack,
            x if GeneralMidi::Fx3Crystal as u8 == x => GeneralMidi::Fx3Crystal,
            x if GeneralMidi::Fx4Atmosphere as u8 == x => GeneralMidi::Fx4Atmosphere,
            x if GeneralMidi::Fx5Brightness as u8 == x => GeneralMidi::Fx5Brightness,
            x if GeneralMidi::Fx6Goblins as u8 == x => GeneralMidi::Fx6Goblins,
            x if GeneralMidi::Fx7Echoes as u8 == x => GeneralMidi::Fx7Echoes,
            x if GeneralMidi::Fx8SciFi as u8 == x => GeneralMidi::Fx8SciFi,
            x if GeneralMidi::Sitar as u8 == x => GeneralMidi::Sitar,
            x if GeneralMidi::Banjo as u8 == x => GeneralMidi::Banjo,
            x if GeneralMidi::Shamisen as u8 == x => GeneralMidi::Shamisen,
            x if GeneralMidi::Koto as u8 == x => GeneralMidi::Koto,
            x if GeneralMidi::Kalimba as u8 == x => GeneralMidi::Kalimba,
            x if GeneralMidi::Bagpipe as u8 == x => GeneralMidi::Bagpipe,
            x if GeneralMidi::Fiddle as u8 == x => GeneralMidi::Fiddle,
            x if GeneralMidi::Shanai as u8 == x => GeneralMidi::Shanai,
            x if GeneralMidi::TinkleBell as u8 == x => GeneralMidi::TinkleBell,
            x if GeneralMidi::Agogo as u8 == x => GeneralMidi::Agogo,
            x if GeneralMidi::SteelDrums as u8 == x => GeneralMidi::SteelDrums,
            x if GeneralMidi::Woodblock as u8 == x => GeneralMidi::Woodblock,
            x if GeneralMidi::TaikoDrum as u8 == x => GeneralMidi::TaikoDrum,
            x if GeneralMidi::MelodicTom as u8 == x => GeneralMidi::MelodicTom,
            x if GeneralMidi::SynthDrum as u8 == x => GeneralMidi::SynthDrum,
            x if GeneralMidi::ReverseCymbal as u8 == x => GeneralMidi::ReverseCymbal,
            x if GeneralMidi::GuitarFretNoise as u8 == x => GeneralMidi::GuitarFretNoise,
            x if GeneralMidi::BreathNoise as u8 == x => GeneralMidi::BreathNoise,
            x if GeneralMidi::Seashore as u8 == x => GeneralMidi::Seashore,
            x if GeneralMidi::BirdTweet as u8 == x => GeneralMidi::BirdTweet,
            x if GeneralMidi::TelephoneRing as u8 == x => GeneralMidi::TelephoneRing,
            x if GeneralMidi::Helicopter as u8 == x => GeneralMidi::Helicopter,
            x if GeneralMidi::Applause as u8 == x => GeneralMidi::Applause,
            x if GeneralMidi::Gunshot as u8 == x => GeneralMidi::Gunshot,
            _ => GeneralMidi::default(),
        }
    }
}

impl From<GeneralMidi> for u8 {
    fn from(gm: GeneralMidi) -> Self {
        gm as u8
    }
}