import {MidiInstrument} from "./VoiceData/Instructions/ClefInstruction";

/** Collections of instrument names, mapped to MidiInstruments. */
export class InstrumentNames {
    public static MidiInstrument: { [key: string]: MidiInstrument } = {
        "banjo": MidiInstrument.Banjo,
        "blockfloete": MidiInstrument.Recorder,
        "brass": MidiInstrument.Trombone,
        "bratsche": MidiInstrument.Viola,
        "cello": MidiInstrument.Cello,
        "clarinet": MidiInstrument.Clarinet,
        "contrabass": MidiInstrument.Contrabass,
        "steel drum": MidiInstrument.Steel_Drums, // this needs to be before "drums" (and "sopran"), otherwise "steel drums" matches "drums"
        "drums": MidiInstrument.Percussion,
        "flute": MidiInstrument.Flute,
        "floete": MidiInstrument.Flute,
        "frenchhorn": MidiInstrument.French_Horn,
        "gitarre": MidiInstrument.Acoustic_Guitar_nylon,
        "guitar": MidiInstrument.Acoustic_Guitar_nylon,
        "harfe": MidiInstrument.Orchestral_Harp,
        "harp": MidiInstrument.Orchestral_Harp,
        "klarinette": MidiInstrument.Clarinet,
        "klavier": MidiInstrument.Acoustic_Grand_Piano,
        "kontrabass": MidiInstrument.Contrabass,
        "oboe": MidiInstrument.Oboe,
        "organ": MidiInstrument.Church_Organ,
        "orgel": MidiInstrument.Church_Organ,
        "orgue": MidiInstrument.Church_Organ,
        "percussion": MidiInstrument.Percussion,
        "piano": MidiInstrument.Acoustic_Grand_Piano,
        "piccolo": MidiInstrument.Piccolo,
        "posaune": MidiInstrument.Trombone,
        "recorder": MidiInstrument.Recorder,
        "sax": MidiInstrument.Tenor_Sax,
        "schlagwerk": MidiInstrument.Percussion,
        "schlagzeug": MidiInstrument.Percussion,
        "steeldrum": MidiInstrument.Steel_Drums,
        "streicher": MidiInstrument.String_Ensemble_1,
        "strings": MidiInstrument.String_Ensemble_1,
        "tpt": MidiInstrument.Trumpet,
        "trombone": MidiInstrument.Trombone,
        "trompete": MidiInstrument.Trumpet,
        "trumpet": MidiInstrument.Trumpet,
        "tuba": MidiInstrument.Tuba,
        "unnamed": MidiInstrument.Acoustic_Grand_Piano,
        "viola": MidiInstrument.Viola,
        "violin": MidiInstrument.Violin,
        "violon-c": MidiInstrument.Cello,
        "violon.": MidiInstrument.Violin,
        "voice": MidiInstrument.Synth_Voice,
        "woodblock": MidiInstrument.Woodblock,
        // the following should be matched last, so that e.g. "alto sax" doesn't get matched to "alto".
        "alt": MidiInstrument.Synth_Voice,
        "alto": MidiInstrument.Synth_Voice,
        "bariton": MidiInstrument.Synth_Voice,
        "baritone": MidiInstrument.Synth_Voice,
        "bass": MidiInstrument.Synth_Voice,
        "sopran": MidiInstrument.Synth_Voice,
        "tenor": MidiInstrument.Synth_Voice,
    };

    /** A map of MusicXML `instrument-sound` values to MidiInstrument.
     * These should take priority when the MusicXML has both instrument-name and instrument-sound.
     * Sound definitions partially from: https://www.w3.org/2021/06/musicxml40/listings/sounds.xml/
     */
    public static MidiInstrumentSounds: { [key: string]: MidiInstrument } = {
        "brass.alphorn": MidiInstrument.French_Horn,
        "brass.alto-horn": MidiInstrument.French_Horn,
        "brass.baritone-horn": MidiInstrument.French_Horn,
        "brass.bugle": MidiInstrument.Trumpet,
        "brass.bugle.alto": MidiInstrument.Trumpet,
        "brass.bugle.baritone": MidiInstrument.Trombone,
        "brass.bugle.contrabass": MidiInstrument.Trombone,
        "brass.bugle.euphonium-bugle": MidiInstrument.French_Horn,
        "brass.bugle.mellophone-bugle": MidiInstrument.French_Horn,
        "brass.bugle.soprano": MidiInstrument.Trumpet,
        "brass.cimbasso": MidiInstrument.Trombone,
        "brass.conch-shell": MidiInstrument.Flute,
        "brass.cornet": MidiInstrument.Trumpet,
        "brass.cornet.soprano": MidiInstrument.Trumpet,
        "brass.cornett": MidiInstrument.Trumpet,
        "brass.cornett.tenor": MidiInstrument.Trumpet,
        "brass.cornettino": MidiInstrument.Trumpet,
        "brass.didgeridoo": MidiInstrument.Flute,
        "brass.euphonium": MidiInstrument.French_Horn,
        "brass.fiscorn": MidiInstrument.French_Horn,
        "brass.flugelhorn": MidiInstrument.French_Horn,
        "brass.french-horn": MidiInstrument.French_Horn,
        "brass.group": MidiInstrument.Brass_Section,
        "brass.group.synth": MidiInstrument.Synth_Brass_1,
        "brass.helicon": MidiInstrument.French_Horn,
        "brass.horagai": MidiInstrument.Trumpet,
        "brass.kuhlohorn": MidiInstrument.French_Horn,
        "brass.mellophone": MidiInstrument.French_Horn,
        "brass.natural-horn": MidiInstrument.French_Horn,
        "brass.ophicleide": MidiInstrument.French_Horn,
        "brass.posthorn": MidiInstrument.French_Horn,
        "brass.saxhorn": MidiInstrument.French_Horn,
        "brass.sousaphone": MidiInstrument.Tuba,
        "brass.trombone": MidiInstrument.Trombone,
        "brass.trombone.alto": MidiInstrument.Trombone,
        "brass.trombone.bass": MidiInstrument.Trombone,
        "brass.trombone.contrabass": MidiInstrument.Trombone,
        "brass.trombone.tenor": MidiInstrument.Trombone,
        "brass.trumpet": MidiInstrument.Trumpet,
        "brass.trumpet.baroque": MidiInstrument.Trumpet,
        "brass.trumpet.bass": MidiInstrument.Trombone,
        "brass.trumpet.bflat": MidiInstrument.Trumpet,
        "brass.trumpet.c": MidiInstrument.Trumpet,
        "brass.trumpet.d": MidiInstrument.Trumpet,
        "brass.trumpet.piccolo": MidiInstrument.Trumpet,
        "brass.trumpet.pocket": MidiInstrument.Trumpet,
        "brass.trumpet.slide": MidiInstrument.Trumpet,
        "brass.trumpet.tenor": MidiInstrument.Trumpet,
        "brass.tuba": MidiInstrument.Tuba,
        "brass.tuba.bass": MidiInstrument.Tuba,
        "brass.tuba.subcontrabass": MidiInstrument.Tuba,
        "brass.vienna-horn": MidiInstrument.French_Horn,
        "brass.wagner-tuba": MidiInstrument.French_Horn,
        "drum.ashiko": MidiInstrument.Shakuhachi,
        "drum.bass-drum": MidiInstrument.Percussion,
        "drum.bongo": MidiInstrument.Percussion,
        "drum.bougarabou": MidiInstrument.Percussion,
        "drum.buffalo-drum": MidiInstrument.Percussion,
        "drum.cajon": MidiInstrument.Percussion,
        "drum.chenda": MidiInstrument.Percussion,
        "drum.chu-daiko": MidiInstrument.Percussion,
        "drum.conga": MidiInstrument.Percussion,
        "drum.cuica": MidiInstrument.Percussion,
        "drum.dabakan": MidiInstrument.Percussion,
        "drum.daff": MidiInstrument.Percussion,
        "drum.dafli": MidiInstrument.Percussion,
        "drum.daibyosi": MidiInstrument.Percussion,
        "drum.damroo": MidiInstrument.Percussion,
        "drum.darabuka": MidiInstrument.Percussion,
        "drum.def": MidiInstrument.Percussion,
        "drum.dhol": MidiInstrument.Percussion,
        "drum.dholak": MidiInstrument.Percussion,
        "drum.djembe": MidiInstrument.Percussion,
        "drum.doira": MidiInstrument.Percussion,
        "drum.dondo": MidiInstrument.Percussion,
        "drum.doun-doun-ba": MidiInstrument.Percussion,
        "drum.duff": MidiInstrument.Percussion,
        "drum.dumbek": MidiInstrument.Percussion,
        "drum.fontomfrom": MidiInstrument.Percussion,
        "drum.frame-drum": MidiInstrument.Percussion,
        "drum.frame-drum.arabian": MidiInstrument.Percussion,
        "drum.geduk": MidiInstrument.Percussion,
        "drum.ghatam": MidiInstrument.Percussion,
        "drum.gome": MidiInstrument.Percussion,
        "drum.group": MidiInstrument.Percussion,
        "drum.group.chinese": MidiInstrument.Percussion,
        "drum.group.ewe": MidiInstrument.Percussion,
        "drum.group.indian": MidiInstrument.Percussion,
        "drum.group.set": MidiInstrument.Percussion,
        "drum.hand-drum": MidiInstrument.Percussion,
        "drum.hira-daiko": MidiInstrument.Percussion,
        "drum.ibo": MidiInstrument.Percussion,
        "drum.igihumurizo": MidiInstrument.Percussion,
        "drum.inyahura": MidiInstrument.Percussion,
        "drum.ishakwe": MidiInstrument.Percussion,
        "drum.jang-gu": MidiInstrument.Percussion,
        "drum.kagan": MidiInstrument.Percussion,
        "drum.kakko": MidiInstrument.Percussion,
        "drum.kanjira": MidiInstrument.Percussion,
        "drum.kendhang": MidiInstrument.Percussion,
        "drum.kendhang.ageng": MidiInstrument.Percussion,
        "drum.kendhang.ciblon": MidiInstrument.Percussion,
        "drum.kenkeni": MidiInstrument.Percussion,
        "drum.khol": MidiInstrument.Percussion,
        "drum.kick-drum": MidiInstrument.Percussion,
        "drum.kidi": MidiInstrument.Percussion,
        "drum.ko-daiko": MidiInstrument.Percussion,
        "drum.kpanlogo": MidiInstrument.Percussion,
        "drum.kudum": MidiInstrument.Percussion,
        "drum.lambeg": MidiInstrument.Percussion,
        "drum.lion-drum": MidiInstrument.Percussion,
        "drum.log-drum": MidiInstrument.Percussion,
        "drum.log-drum.african": MidiInstrument.Percussion,
        "drum.log-drum.native": MidiInstrument.Percussion,
        "drum.log-drum.nigerian": MidiInstrument.Percussion,
        "drum.madal": MidiInstrument.Percussion,
        "drum.maddale": MidiInstrument.Percussion,
        "drum.mridangam": MidiInstrument.Percussion,
        "drum.naal": MidiInstrument.Percussion,
        "drum.nagado-daiko": MidiInstrument.Percussion,
        "drum.nagara": MidiInstrument.Percussion,
        "drum.naqara": MidiInstrument.Percussion,
        "drum.o-daiko": MidiInstrument.Percussion,
        "drum.okawa": MidiInstrument.Percussion,
        "drum.okedo-daiko": MidiInstrument.Percussion,
        "drum.pahu-hula": MidiInstrument.Percussion,
        "drum.pakhawaj": MidiInstrument.Percussion,
        "drum.pandeiro": MidiInstrument.Percussion,
        "drum.pandero": MidiInstrument.Percussion,
        "drum.powwow": MidiInstrument.Percussion,
        "drum.pueblo": MidiInstrument.Percussion,
        "drum.repinique": MidiInstrument.Percussion,
        "drum.riq": MidiInstrument.Percussion,
        "drum.rototom": MidiInstrument.Percussion,
        "drum.sabar": MidiInstrument.Percussion,
        "drum.sakara": MidiInstrument.Percussion,
        "drum.sampho": MidiInstrument.Percussion,
        "drum.sangban": MidiInstrument.Percussion,
        "drum.shime-daiko": MidiInstrument.Percussion,
        "drum.slit-drum": MidiInstrument.Percussion,
        "drum.slit-drum.krin": MidiInstrument.Percussion,
        "drum.snare-drum": MidiInstrument.Percussion,
        "drum.snare-drum.electric": MidiInstrument.Synth_Drum,
        "drum.sogo": MidiInstrument.Percussion,
        "drum.surdo": MidiInstrument.Percussion,
        "drum.tabla": MidiInstrument.Percussion,
        "drum.tabla.bayan": MidiInstrument.Percussion,
        "drum.tabla.dayan": MidiInstrument.Percussion,
        "drum.tabor": MidiInstrument.Percussion,
        "drum.taiko": MidiInstrument.Taiko_Drum,
        "drum.talking": MidiInstrument.Percussion,
        "drum.tama": MidiInstrument.Percussion,
        "drum.tamborim": MidiInstrument.Percussion,
        "drum.tamborita": MidiInstrument.Percussion,
        "drum.tambourine": MidiInstrument.Percussion,
        "drum.tamte": MidiInstrument.Percussion,
        "drum.tangku": MidiInstrument.Percussion,
        "drum.tan-tan": MidiInstrument.Percussion,
        "drum.taphon": MidiInstrument.Percussion,
        "drum.tar": MidiInstrument.Percussion,
        "drum.tasha": MidiInstrument.Percussion,
        "drum.tenor-drum": MidiInstrument.Percussion,
        "drum.teponaxtli": MidiInstrument.Percussion,
        "drum.thavil": MidiInstrument.Percussion,
        "drum.the-box": MidiInstrument.Percussion,
        "drum.timbale": MidiInstrument.Percussion,
        "drum.timpani": MidiInstrument.Timpani,
        "drum.tinaja": MidiInstrument.Percussion,
        "drum.toere": MidiInstrument.Percussion,
        "drum.tombak": MidiInstrument.Percussion,
        "drum.tom-tom": MidiInstrument.Melodic_Tom,
        "drum.tom-tom.synth": MidiInstrument.Melodic_Tom,
        "drum.tsuzumi": MidiInstrument.Percussion,
        "drum.tumbak": MidiInstrument.Percussion,
        "drum.uchiwa-daiko": MidiInstrument.Percussion,
        "drum.udaku": MidiInstrument.Percussion,
        "drum.udu": MidiInstrument.Percussion,
        "drum.zarb": MidiInstrument.Percussion,
        "effect.applause": MidiInstrument.Applause,
        "effect.gunshot": MidiInstrument.Gunshot,
        "effect.helicopter": MidiInstrument.Helicopter,
        "effect.telephone-ring": MidiInstrument.Telephone_Ring,
        "keyboard.accordion": MidiInstrument.Accordion,
        "keyboard.bandoneon": MidiInstrument.Accordion,
        "keyboard.celesta": MidiInstrument.Celesta,
        "keyboard.clavichord": MidiInstrument.Harpsichord,
        "keyboard.clavichord.synth": MidiInstrument.Harpsichord,
        "keyboard.concertina": MidiInstrument.Accordion,
        "keyboard.fortepiano": MidiInstrument.Acoustic_Grand_Piano,
        "keyboard.harmonium": MidiInstrument.Drawbar_Organ,
        "keyboard.harpsichord": MidiInstrument.Harpsichord,
        "keyboard.ondes-martenot": MidiInstrument.Pad_3_polysynth,
        "keyboard.organ": MidiInstrument.Church_Organ,
        "keyboard.organ.drawbar": MidiInstrument.Percussive_Organ,
        "keyboard.organ.percussive": MidiInstrument.Rock_Organ,
        "keyboard.organ.pipe": MidiInstrument.Church_Organ,
        "keyboard.organ.reed": MidiInstrument.Church_Organ,
        "keyboard.organ.rotary": MidiInstrument.Rock_Organ,
        "keyboard.piano": MidiInstrument.Acoustic_Grand_Piano,
        "keyboard.piano.electric": MidiInstrument.Electric_Grand_Piano,
        "keyboard.piano.grand": MidiInstrument.Acoustic_Grand_Piano,
        "keyboard.piano.honky-tonk": MidiInstrument.Honky_tonk_Piano,
        "keyboard.piano.prepared": MidiInstrument.Acoustic_Grand_Piano,
        "keyboard.piano.toy": MidiInstrument.Honky_tonk_Piano,
        "keyboard.piano.upright": MidiInstrument.Acoustic_Grand_Piano,
        "keyboard.virginal": MidiInstrument.Acoustic_Grand_Piano,
        "metal.adodo": MidiInstrument.Xylophone,
        "metal.anvil": MidiInstrument.Xylophone,
        "metal.babendil": MidiInstrument.Xylophone,
        "metal.bells.agogo": MidiInstrument.Agogo,
        "metal.bells.almglocken": MidiInstrument.Tubular_Bells,
        "metal.bells.bell-plate": MidiInstrument.Tubular_Bells,
        "metal.bells.bell-tree": MidiInstrument.Tubular_Bells,
        "metal.bells.carillon": MidiInstrument.Tubular_Bells,
        "metal.bells.chimes": MidiInstrument.Tinkle_Bell,
        "metal.bells.chimta": MidiInstrument.Tubular_Bells,
        "metal.bells.chippli": MidiInstrument.Tubular_Bells,
        "metal.bells.church": MidiInstrument.Tubular_Bells,
        "metal.bells.cowbell": MidiInstrument.Percussion,
        "metal.bells.dawuro": MidiInstrument.Percussion,
        "metal.bells.gankokwe": MidiInstrument.Percussion,
        "metal.bells.ghungroo": MidiInstrument.Percussion,
        "metal.bells.hatheli": MidiInstrument.Percussion,
        "metal.bells.jingle-bell": MidiInstrument.Percussion,
        "metal.bells.khartal": MidiInstrument.Percussion,
        "metal.bells.mark-tree": MidiInstrument.Percussion,
        "metal.bells.sistrum": MidiInstrument.Percussion,
        "metal.bells.sleigh-bells": MidiInstrument.Percussion,
        "metal.bells.temple": MidiInstrument.Percussion,
        "metal.bells.tibetan": MidiInstrument.Percussion,
        "metal.bells.tinklebell": MidiInstrument.Percussion,
        "metal.bells.trychel": MidiInstrument.Percussion,
        "metal.bells.wind-chimes": MidiInstrument.Percussion,
        "metal.bells.zills": MidiInstrument.Percussion,
        "metal.berimbau": MidiInstrument.Flute,
        "metal.brake-drums": MidiInstrument.Percussion,
        "metal.crotales": MidiInstrument.Percussion,
        "metal.cymbal.bo": MidiInstrument.Percussion,
        "metal.cymbal.ceng-ceng": MidiInstrument.Percussion,
        "metal.cymbal.chabara": MidiInstrument.Percussion,
        "metal.cymbal.chinese": MidiInstrument.Percussion,
        "metal.cymbal.ching": MidiInstrument.Percussion,
        "metal.cymbal.clash": MidiInstrument.Percussion,
        "metal.cymbal.crash": MidiInstrument.Percussion,
        "metal.cymbal.finger": MidiInstrument.Percussion,
        "metal.cymbal.hand": MidiInstrument.Percussion,
        "metal.cymbal.kesi": MidiInstrument.Percussion,
        "metal.cymbal.manjeera": MidiInstrument.Percussion,
        "metal.cymbal.reverse": MidiInstrument.Percussion,
        "metal.cymbal.ride": MidiInstrument.Percussion,
        "metal.cymbal.sizzle": MidiInstrument.Percussion,
        "metal.cymbal.splash": MidiInstrument.Percussion,
        "metal.cymbal.suspended": MidiInstrument.Percussion,
        "metal.cymbal.tebyoshi": MidiInstrument.Percussion,
        "metal.cymbal.tibetan": MidiInstrument.Percussion,
        "metal.cymbal.tingsha": MidiInstrument.Percussion,
        "metal.flexatone": MidiInstrument.Percussion,
        "metal.gong": MidiInstrument.Percussion,
        "metal.gong.ageng": MidiInstrument.Percussion,
        "metal.gong.agung": MidiInstrument.Percussion,
        "metal.gong.chanchiki": MidiInstrument.Percussion,
        "metal.gong.chinese": MidiInstrument.Percussion,
        "metal.gong.gandingan": MidiInstrument.Percussion,
        "metal.gong.kempul": MidiInstrument.Percussion,
        "metal.gong.kempyang": MidiInstrument.Percussion,
        "metal.gong.ketuk": MidiInstrument.Percussion,
        "metal.gong.kkwenggwari": MidiInstrument.Percussion,
        "metal.gong.luo": MidiInstrument.Percussion,
        "metal.gong.singing": MidiInstrument.Percussion,
        "metal.gong.thai": MidiInstrument.Percussion,
        "metal.guira": MidiInstrument.Percussion,
        "metal.hang": MidiInstrument.Percussion,
        "metal.hi-hat": MidiInstrument.Percussion,
        "metal.jaw-harp": MidiInstrument.Percussion,
        "metal.kengong": MidiInstrument.Percussion,
        "metal.murchang": MidiInstrument.Percussion,
        "metal.musical-saw": MidiInstrument.Percussion,
        "metal.singing-bowl": MidiInstrument.Percussion,
        "metal.spoons": MidiInstrument.Percussion,
        "metal.steel-drums": MidiInstrument.Percussion,
        "metal.tamtam": MidiInstrument.Percussion,
        "metal.thundersheet": MidiInstrument.Percussion,
        "metal.triangle": MidiInstrument.Percussion,
        "metal.washboard": MidiInstrument.Percussion,
        "pitched-percussion.angklung": MidiInstrument.Xylophone,
        "pitched-percussion.balafon": MidiInstrument.Xylophone,
        "pitched-percussion.bell-lyre": MidiInstrument.Xylophone,
        "pitched-percussion.bells": MidiInstrument.Tubular_Bells,
        "pitched-percussion.bianqing": MidiInstrument.Xylophone,
        "pitched-percussion.bianzhong": MidiInstrument.Xylophone,
        "pitched-percussion.bonang": MidiInstrument.Xylophone,
        "pitched-percussion.cimbalom": MidiInstrument.Xylophone,
        "pitched-percussion.crystal-glasses": MidiInstrument.Xylophone,
        "pitched-percussion.dan-tam-thap-luc": MidiInstrument.Xylophone,
        "pitched-percussion.fangxiang": MidiInstrument.Xylophone,
        "pitched-percussion.gandingan-a-kayo": MidiInstrument.Xylophone,
        "pitched-percussion.gangsa": MidiInstrument.Xylophone,
        "pitched-percussion.gender": MidiInstrument.Xylophone,
        "pitched-percussion.giying": MidiInstrument.Xylophone,
        "pitched-percussion.glass-harmonica": MidiInstrument.Xylophone,
        "pitched-percussion.glockenspiel": MidiInstrument.Glockenspiel,
        "pitched-percussion.glockenspiel.alto": MidiInstrument.Glockenspiel,
        "pitched-percussion.glockenspiel.soprano": MidiInstrument.Glockenspiel,
        "pitched-percussion.gyil": MidiInstrument.Xylophone,
        "pitched-percussion.hammer-dulcimer": MidiInstrument.Dulcimer,
        "pitched-percussion.handbells": MidiInstrument.Tubular_Bells,
        "pitched-percussion.handchimes": MidiInstrument.Tubular_Bells,
        "pitched-percussion.kalimba": MidiInstrument.Kalimba,
        "pitched-percussion.kantil": MidiInstrument.Xylophone,
        "pitched-percussion.khim": MidiInstrument.Xylophone,
        "pitched-percussion.kulintang": MidiInstrument.Xylophone,
        "pitched-percussion.kulintang-a-kayo": MidiInstrument.Xylophone,
        "pitched-percussion.kulintang-a-tiniok": MidiInstrument.Xylophone,
        "pitched-percussion.likembe": MidiInstrument.Xylophone,
        "pitched-percussion.luntang": MidiInstrument.Xylophone,
        "pitched-percussion.marimba": MidiInstrument.Marimba,
        "pitched-percussion.marimba.bass": MidiInstrument.Marimba,
        "pitched-percussion.mbira": MidiInstrument.Marimba,
        "pitched-percussion.mbira.array": MidiInstrument.Marimba,
        "pitched-percussion.metallophone": MidiInstrument.Xylophone,
        "pitched-percussion.metallophone.alto": MidiInstrument.Xylophone,
        "pitched-percussion.metallophone.bass": MidiInstrument.Xylophone,
        "pitched-percussion.metallophone.soprano": MidiInstrument.Xylophone,
        "pitched-percussion.music-box": MidiInstrument.Glockenspiel,
        "pitched-percussion.pelog-panerus": MidiInstrument.Xylophone,
        "pitched-percussion.pemade": MidiInstrument.Xylophone,
        "pitched-percussion.penyacah": MidiInstrument.Xylophone,
        "pitched-percussion.ranat.ek": MidiInstrument.Xylophone,
        "pitched-percussion.ranat.ek-lek": MidiInstrument.Xylophone,
        "pitched-percussion.ranat.thum": MidiInstrument.Xylophone,
        "pitched-percussion.ranat.thum-lek": MidiInstrument.Xylophone,
        "pitched-percussion.reyong": MidiInstrument.Xylophone,
        "pitched-percussion.sanza": MidiInstrument.Xylophone,
        "pitched-percussion.saron-barung": MidiInstrument.Xylophone,
        "pitched-percussion.saron-demong": MidiInstrument.Xylophone,
        "pitched-percussion.saron-panerus": MidiInstrument.Xylophone,
        "pitched-percussion.slendro-panerus": MidiInstrument.Xylophone,
        "pitched-percussion.slentem": MidiInstrument.Xylophone,
        "pitched-percussion.tsymbaly": MidiInstrument.Xylophone,
        "pitched-percussion.tubes": MidiInstrument.Tubular_Bells,
        "pitched-percussion.tubular-bells": MidiInstrument.Tubular_Bells,
        "pitched-percussion.vibraphone": MidiInstrument.Vibraphone,
        "pitched-percussion.xylophone": MidiInstrument.Xylophone,
        "pitched-percussion.xylophone.alto": MidiInstrument.Xylophone,
        "pitched-percussion.xylophone.bass": MidiInstrument.Xylophone,
        "pitched-percussion.xylophone.soprano": MidiInstrument.Xylophone,
        "pitched-percussion.xylorimba": MidiInstrument.Xylophone,
        "pitched-percussion.yangqin": MidiInstrument.Xylophone,
        "pluck.archlute": MidiInstrument.Acoustic_Guitar_nylon,
        "pluck.autoharp": MidiInstrument.Orchestral_Harp,
        "pluck.baglama": MidiInstrument.Orchestral_Harp,
        "pluck.bajo": MidiInstrument.Acoustic_Guitar_steel,
        "pluck.balalaika": MidiInstrument.Acoustic_Guitar_steel,
        "pluck.balalaika.alto": MidiInstrument.Acoustic_Guitar_steel,
        "pluck.balalaika.bass": MidiInstrument.Acoustic_Guitar_steel,
        "pluck.balalaika.contrabass": MidiInstrument.Acoustic_Guitar_steel,
        "pluck.balalaika.piccolo": MidiInstrument.Acoustic_Guitar_steel,
        "pluck.balalaika.prima": MidiInstrument.Acoustic_Guitar_steel,
        "pluck.balalaika.secunda": MidiInstrument.Acoustic_Guitar_steel,
        "pluck.bandola": MidiInstrument.Acoustic_Guitar_steel,
        "pluck.bandura": MidiInstrument.Acoustic_Guitar_steel,
        "pluck.bandurria": MidiInstrument.Acoustic_Guitar_steel,
        "pluck.banjo": MidiInstrument.Banjo,
        "pluck.banjo.tenor": MidiInstrument.Banjo,
        "pluck.banjolele": MidiInstrument.Banjo,
        "pluck.barbat": MidiInstrument.Acoustic_Guitar_steel,
        "pluck.bass": MidiInstrument.Electric_Bass_finger,
        "pluck.bass.acoustic": MidiInstrument.Acoustic_Bass,
        "pluck.bass.bolon": MidiInstrument.Electric_Bass_finger,
        "pluck.bass.electric": MidiInstrument.Electric_Bass_finger,
        "pluck.bass.fretless": MidiInstrument.Fretless_Bass,
        "pluck.bass.guitarron": MidiInstrument.Acoustic_Bass,
        "pluck.bass.synth": MidiInstrument.Synth_Bass_1,
        "pluck.bass.synth.lead": MidiInstrument.Synth_Bass_2,
        "pluck.celtic-harp": MidiInstrument.Orchestral_Harp,
        "pluck.charango": MidiInstrument.Acoustic_Guitar_nylon,
        "pluck.chitarra-battente": MidiInstrument.Acoustic_Guitar_nylon,
        "pluck.cithara": MidiInstrument.Acoustic_Guitar_nylon,
        "pluck.cittern": MidiInstrument.Acoustic_Guitar_nylon,
        "pluck.cuatro": MidiInstrument.Acoustic_Guitar_nylon,
        "pluck.dulcimer": MidiInstrument.Dulcimer,
        "pluck.dutar": MidiInstrument.Acoustic_Grand_Piano,
        "pluck.duxianqin": MidiInstrument.Dulcimer,
        "pluck.ektara": MidiInstrument.Acoustic_Guitar_nylon,
        "pluck.guitar": MidiInstrument.Acoustic_Guitar_nylon,
        "pluck.guitar.acoustic": MidiInstrument.Acoustic_Guitar_nylon,
        "pluck.guitar.electric": MidiInstrument.Electric_Guitar_clean,
        "pluck.guitar.nylon-string": MidiInstrument.Electric_Guitar_clean,
        "pluck.guitar.pedal-steel": MidiInstrument.Electric_Guitar_clean,
        "pluck.guitar.portuguese": MidiInstrument.Acoustic_Guitar_nylon,
        "pluck.guitar.requinto": MidiInstrument.Acoustic_Guitar_nylon,
        "pluck.guitar.resonator": MidiInstrument.Acoustic_Guitar_nylon,
        "pluck.guitar.steel-string": MidiInstrument.Acoustic_Guitar_steel,
        "pluck.harp": MidiInstrument.Orchestral_Harp,
        "pluck.harp-guitar": MidiInstrument.Orchestral_Harp,
        "pluck.huapanguera": MidiInstrument.Orchestral_Harp,
        "pluck.lute": MidiInstrument.Acoustic_Grand_Piano,
        "pluck.lyre": MidiInstrument.Orchestral_Harp,
        "pluck.mandobass": MidiInstrument.Acoustic_Guitar_nylon,
        "pluck.mandocello": MidiInstrument.Acoustic_Guitar_nylon,
        "pluck.mandola": MidiInstrument.Acoustic_Guitar_nylon,
        "pluck.mandolin": MidiInstrument.Acoustic_Guitar_nylon,
        "pluck.mandolin.octave": MidiInstrument.Acoustic_Guitar_nylon,
        "pluck.setar": MidiInstrument.Acoustic_Guitar_nylon,
        "pluck.shamisen": MidiInstrument.Shamisen,
        "pluck.sitar": MidiInstrument.Sitar,
        "pluck.synth": MidiInstrument.Electric_Bass_pick,
        "pluck.synth.charang": MidiInstrument.Electric_Bass_pick,
        "pluck.synth.chiff": MidiInstrument.Electric_Bass_pick,
        "pluck.synth.stick": MidiInstrument.Electric_Bass_pick,
        "pluck.tambura": MidiInstrument.Acoustic_Grand_Piano,
        "pluck.ukulele": MidiInstrument.Banjo,
        "pluck.ukulele.tenor": MidiInstrument.Banjo,
        "strings.arpeggione": MidiInstrument.Cello,
        "strings.cello": MidiInstrument.Cello,
        "strings.cello.piccolo": MidiInstrument.Cello,
        "strings.contrabass": MidiInstrument.Contrabass,
        "strings.fiddle": MidiInstrument.Fiddle,
        "strings.fiddle.hardanger": MidiInstrument.Fiddle,
        "strings.group": MidiInstrument.String_Ensemble_1,
        "strings.group.synth": MidiInstrument.Synth_Strings_1,
        "strings.octobass": MidiInstrument.Contrabass,
        "strings.tromba-marina": MidiInstrument.Contrabass,
        "strings.vielle": MidiInstrument.Violin,
        "strings.viol": MidiInstrument.Violin,
        "strings.viol.alto": MidiInstrument.Violin,
        "strings.viol.bass": MidiInstrument.Violin,
        "strings.viol.tenor": MidiInstrument.Violin,
        "strings.viol.treble": MidiInstrument.Violin,
        "strings.viol.violone": MidiInstrument.Violin,
        "strings.viola": MidiInstrument.Viola,
        "strings.viola-damore": MidiInstrument.Viola,
        "strings.violin": MidiInstrument.Violin,
        "strings.violono.piccolo": MidiInstrument.Violin,
        "strings.violotta": MidiInstrument.Viola,
        "synth.group": MidiInstrument.Pad_3_polysynth,
        "synth.group.fifths": MidiInstrument.Pad_3_polysynth,
        "synth.group.orchestra": MidiInstrument.Orchestra_Hit,
        "synth.pad": MidiInstrument.Pad_1_new_age,
        "synth.pad.bowed": MidiInstrument.Pad_1_new_age,
        "synth.pad.choir": MidiInstrument.Pad_4_choir,
        "synth.pad.halo": MidiInstrument.Acoustic_Grand_Piano,
        "synth.pad.polysynth": MidiInstrument.Pad_3_polysynth,
        "voice.alto": MidiInstrument.Voice_Oohs,
        "voice.baritone": MidiInstrument.Voice_Oohs,
        "voice.bass": MidiInstrument.Voice_Oohs,
        "voice.female": MidiInstrument.Synth_Voice,
        "voice.kazoo": MidiInstrument.Flute,
        "voice.male": MidiInstrument.Voice_Oohs,
        "voice.mezzo-soprano": MidiInstrument.Voice_Oohs,
        "voice.soprano": MidiInstrument.Voice_Oohs,
        "voice.synth": MidiInstrument.Synth_Voice,
        "voice.tenor": MidiInstrument.Voice_Oohs,
        "voice.vocals": MidiInstrument.Choir_Aahs,
        "wind.flutes.flute": MidiInstrument.Flute,
        "wind.flutes.flute.alto": MidiInstrument.Flute,
        "wind.flutes.flute.bass": MidiInstrument.Flute,
        "wind.flutes.flute.contra-alto": MidiInstrument.Flute,
        "wind.flutes.flute.contrabass": MidiInstrument.Flute,
        "wind.flutes.flute.double-contrabass": MidiInstrument.Flute,
        "wind.flutes.flute.irish": MidiInstrument.Flute,
        "wind.flutes.flute.piccolo": MidiInstrument.Piccolo,
        "wind.flutes.flute.subcontrabass": MidiInstrument.Flute,
        "wind.flutes.ocarina": MidiInstrument.Ocarina,
        "wind.flutes.panpipes": MidiInstrument.Pan_Flute,
        "wind.flutes.recorder": MidiInstrument.Acoustic_Grand_Piano,
        "wind.flutes.recorder.alto": MidiInstrument.Recorder,
        "wind.flutes.recorder.bass": MidiInstrument.Recorder,
        "wind.flutes.recorder.contrabass": MidiInstrument.Recorder,
        "wind.flutes.recorder.descant": MidiInstrument.Recorder,
        "wind.flutes.recorder.garklein": MidiInstrument.Recorder,
        "wind.flutes.recorder.great-bass": MidiInstrument.Recorder,
        "wind.flutes.recorder.sopranino": MidiInstrument.Recorder,
        "wind.flutes.recorder.soprano": MidiInstrument.Recorder,
        "wind.flutes.recorder.tenor": MidiInstrument.Recorder,
        "wind.flutes.shakuhachi": MidiInstrument.Shakuhachi,
        "wind.flutes.whistle": MidiInstrument.Whistle,
        "wind.flutes.whistle.alto": MidiInstrument.Whistle,
        "wind.flutes.whistle.low-irish": MidiInstrument.Whistle,
        "wind.flutes.whistle.shiva": MidiInstrument.Whistle,
        "wind.flutes.whistle.slide": MidiInstrument.Whistle,
        "wind.flutes.whistle.tin": MidiInstrument.Whistle,
        "wind.flutes.whistle.tin.bflat": MidiInstrument.Whistle,
        "wind.flutes.whistle.tin.c": MidiInstrument.Whistle,
        "wind.flutes.whistle.tin.d": MidiInstrument.Whistle,
        "wind.group": MidiInstrument.Flute,
        "wind.pipes.bagpipes": MidiInstrument.Bag_pipe,
        "wind.reed.basset-horn": MidiInstrument.Bassoon,
        "wind.reed.bassoon": MidiInstrument.Bassoon,
        "wind.reed.bombarde": MidiInstrument.Bassoon,
        "wind.reed.clarinet": MidiInstrument.Clarinet,
        "wind.reed.clarinet.a": MidiInstrument.Clarinet,
        "wind.reed.clarinet.alto": MidiInstrument.Clarinet,
        "wind.reed.clarinet.bass": MidiInstrument.Clarinet,
        "wind.reed.clarinet.basset": MidiInstrument.Clarinet,
        "wind.reed.clarinet.bflat": MidiInstrument.Clarinet,
        "wind.reed.clarinet.contra-alto": MidiInstrument.Clarinet,
        "wind.reed.clarinet.contrabass": MidiInstrument.Clarinet,
        "wind.reed.clarinet.d": MidiInstrument.Clarinet,
        "wind.reed.clarinet.eflat": MidiInstrument.Clarinet,
        "wind.reed.clarinet.g": MidiInstrument.Clarinet,
        "wind.reed.clarinet.piccolo": MidiInstrument.Clarinet,
        "wind.reed.clarinet.piccolo.aflat": MidiInstrument.Clarinet,
        "wind.reed.clarinette-damour": MidiInstrument.Clarinet,
        "wind.reed.contrabass": MidiInstrument.Clarinet,
        "wind.reed.contrabassoon": MidiInstrument.Clarinet,
        "wind.reed.cornamuse": MidiInstrument.Bag_pipe,
        "wind.reed.english-horn": MidiInstrument.English_Horn,
        "wind.reed.harmonica": MidiInstrument.Harmonica,
        "wind.reed.harmonica.bass": MidiInstrument.Harmonica,
        "wind.reed.oboe": MidiInstrument.Oboe,
        "wind.reed.oboe.bass": MidiInstrument.Oboe,
        "wind.reed.oboe.piccolo": MidiInstrument.Oboe,
        "wind.reed.oboe-da-caccia": MidiInstrument.Oboe,
        "wind.reed.oboe-damore": MidiInstrument.Oboe,
        "wind.reed.saxonette": MidiInstrument.Soprano_Sax,
        "wind.reed.saxophone": MidiInstrument.Alto_Sax,
        "wind.reed.saxophone.alto": MidiInstrument.Alto_Sax,
        "wind.reed.saxophone.aulochrome": MidiInstrument.Alto_Sax,
        "wind.reed.saxophone.baritone": MidiInstrument.Baritone_Sax,
        "wind.reed.saxophone.bass": MidiInstrument.Baritone_Sax,
        "wind.reed.saxophone.contrabass": MidiInstrument.Baritone_Sax,
        "wind.reed.saxophone.melody": MidiInstrument.Baritone_Sax,
        "wind.reed.saxophone.mezzo-soprano": MidiInstrument.Alto_Sax,
        "wind.reed.saxophone.sopranino": MidiInstrument.Soprano_Sax,
        "wind.reed.saxophone.sopranissimo": MidiInstrument.Soprano_Sax,
        "wind.reed.saxophone.soprano": MidiInstrument.Soprano_Sax,
        "wind.reed.saxophone.subcontrabass": MidiInstrument.Baritone_Sax,
        "wind.reed.saxophone.tenor": MidiInstrument.Tenor_Sax,
        "wood.bones": MidiInstrument.Woodblock,
        "wood.castanets": MidiInstrument.Woodblock,
        "wood.claves": MidiInstrument.Woodblock,
        "wood.drum-sticks": MidiInstrument.Woodblock,
        "wood.gourd": MidiInstrument.Woodblock,
        "wood.granite-block": MidiInstrument.Woodblock,
        "wood.guban": MidiInstrument.Woodblock,
        "wood.guiro": MidiInstrument.Woodblock,
        "wood.hyoushigi": MidiInstrument.Woodblock,
        "wood.ipu": MidiInstrument.Woodblock,
        "wood.jam-block": MidiInstrument.Woodblock,
        "wood.kaekeeke": MidiInstrument.Woodblock,
        "wood.kagul": MidiInstrument.Woodblock,
        "wood.kalaau": MidiInstrument.Woodblock,
        "wood.kashiklar": MidiInstrument.Woodblock,
        "wood.kubing": MidiInstrument.Woodblock,
        "wood.pan-clappers": MidiInstrument.Woodblock,
        "wood.sand-block": MidiInstrument.Woodblock,
        "wood.slapstick": MidiInstrument.Woodblock,
        "wood.stir-drum": MidiInstrument.Woodblock,
        "wood.temple-block": MidiInstrument.Woodblock,
        "wood.tic-toc-block": MidiInstrument.Woodblock,
        "wood.tonetang": MidiInstrument.Woodblock,
        "wood.wood-block": MidiInstrument.Woodblock
    };
}
