Browse Source

fix(Playback): Respect instrument-sound value in MusicXML, fixing wrong playback instrument for some samples (#111)

https://github.com/opensheetmusicdisplay/osmd-extended/issues/111
based on a patch by fablau, with some refactoring.
new field SubInstrument.instrumentSound
sschmidTU 1 year ago
parent
commit
38f6fb00cd

+ 620 - 0
src/MusicalScore/InstrumentNames.ts

@@ -0,0 +1,620 @@
+import {MidiInstrument} from "./VoiceData/Instructions/ClefInstruction";
+
+/** Collections of instrument names, mapped to MidiInstruments. */
+export class InstrumentNames {
+    public static MidiInstrument: { [key: string]: MidiInstrument } = {
+        "alt": MidiInstrument.Synth_Voice,
+        "alto": MidiInstrument.Synth_Voice,
+        "banjo": MidiInstrument.Banjo,
+        "bariton": MidiInstrument.Synth_Voice,
+        "baritone": MidiInstrument.Synth_Voice,
+        "bass": MidiInstrument.Synth_Voice,
+        "blockfloete": MidiInstrument.Recorder,
+        "brass": MidiInstrument.Trombone,
+        "bratsche": MidiInstrument.Viola,
+        "cello": MidiInstrument.Cello,
+        "clarinet": MidiInstrument.Clarinet,
+        "contrabass": MidiInstrument.Contrabass,
+        "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,
+        "sopran": MidiInstrument.Synth_Voice,
+        "steeldrum": MidiInstrument.Steel_Drums,
+        "streicher": MidiInstrument.String_Ensemble_1,
+        "strings": MidiInstrument.String_Ensemble_1,
+        "tenor": MidiInstrument.Synth_Voice,
+        "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
+    };
+
+    /** 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
+
+    };
+}

+ 11 - 4
src/MusicalScore/ScoreIO/MusicSheetReader.ts

@@ -775,10 +775,17 @@ export class MusicSheetReader /*implements IMusicSheetReader*/ {
                                 const subInstrument: SubInstrument = new SubInstrument(instrument);
                                 subInstrument.idString = partElement.firstAttribute.value;
                                 instrument.SubInstruments.push(subInstrument);
-                                const subElement: IXmlElement = partElement.element("instrument-name");
-                                if (subElement) {
-                                    subInstrument.name = subElement.value;
-                                    subInstrument.setMidiInstrument(subElement.value);
+
+                                const nameElement: IXmlElement = partElement.element("instrument-name");
+                                if (nameElement) {
+                                    subInstrument.name = nameElement.value;
+                                    subInstrument.setMidiInstrument(nameElement.value);
+                                }
+                                // if instrument-sound is given, it should take priority for the midi instrument / playback
+                                const soundElement: IXmlElement = partElement.element("instrument-sound");
+                                if (soundElement) {
+                                    subInstrument.instrumentSound = soundElement.value;
+                                    subInstrument.setMidiInstrumentSound(soundElement.value);
                                 }
                             } else if (partElement.name === "midi-instrument") {
                                 let subInstrument: SubInstrument = instrument.getSubInstrument(partElement.firstAttribute.value);

+ 11 - 60
src/MusicalScore/SubInstrument.ts

@@ -1,4 +1,5 @@
 import {Instrument} from "./Instrument";
+import {InstrumentNames} from "./InstrumentNames";
 import {MidiInstrument} from "./VoiceData/Instructions/ClefInstruction";
 import log from "loglevel";
 
@@ -8,71 +9,17 @@ export class SubInstrument {
         this.parentInstrument = parentInstrument;
         this.fixedKey = -1;
         this.name = this.parseMidiInstrument(this.parentInstrument.Name);
-        this.midiInstrumentID = SubInstrument.midiInstrument[this.name];
+        this.midiInstrumentID = InstrumentNames.MidiInstrument[this.name];
         this.volume = 1.0;
     }
 
-    private static midiInstrument: { [key: string]: MidiInstrument } = {
-        "alt": MidiInstrument.Synth_Voice,
-        "alto": MidiInstrument.Synth_Voice,
-        "banjo": MidiInstrument.Banjo,
-        "bariton": MidiInstrument.Synth_Voice,
-        "baritone": MidiInstrument.Synth_Voice,
-        "bass": MidiInstrument.Synth_Voice,
-        "blockfloete": MidiInstrument.Recorder,
-        "brass": MidiInstrument.Trombone,
-        "bratsche": MidiInstrument.Viola,
-        "cello": MidiInstrument.Cello,
-        "clarinet": MidiInstrument.Clarinet,
-        "contrabass": MidiInstrument.Contrabass,
-        "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,
-        "sopran": MidiInstrument.Synth_Voice,
-        "steeldrum": MidiInstrument.Steel_Drums,
-        "streicher": MidiInstrument.String_Ensemble_1,
-        "strings": MidiInstrument.String_Ensemble_1,
-        "tenor": MidiInstrument.Synth_Voice,
-        "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
-    };
-
     public idString: string;
     public midiInstrumentID: MidiInstrument;
     public volume: number;
     public pan: number;
     public fixedKey: number;
     public name: string;
+    public instrumentSound: string;
 
     private parentInstrument: Instrument;
 
@@ -86,8 +33,13 @@ export class SubInstrument {
           || instrument === MidiInstrument.Electric_Piano_1
           || instrument === MidiInstrument.Electric_Piano_2);
     }
+
+    public setMidiInstrumentSound(instrumentType: string): void {
+        this.midiInstrumentID = InstrumentNames.MidiInstrumentSounds[instrumentType];
+    }
+
     public setMidiInstrument(instrumentType: string): void {
-        this.midiInstrumentID = SubInstrument.midiInstrument[this.parseMidiInstrument(instrumentType)];
+        this.midiInstrumentID = InstrumentNames.MidiInstrument[this.parseMidiInstrument(instrumentType)];
     }
 
     private parseMidiInstrument(instrumentType: string): string {
@@ -96,7 +48,7 @@ export class SubInstrument {
             // find the best match for the given instrumentType:
             if (instrumentType) {
                 const tmpName: string = instrumentType.toLowerCase().trim();
-                for (const key in SubInstrument.midiInstrument) {
+                for (const key in InstrumentNames.MidiInstrument) {
                     if (tmpName.indexOf(key) !== -1) {
                         return key;
                     }
@@ -105,7 +57,7 @@ export class SubInstrument {
             // if the instrumentType didn't work, use the name:
             if (this.parentInstrument.Name) {
                 const tmpName: string = this.parentInstrument.Name.toLowerCase().trim();
-                for (const key in SubInstrument.midiInstrument) {
+                for (const key in InstrumentNames.MidiInstrument) {
                     if (tmpName.indexOf(key) !== -1) {
                         return key;
                     }
@@ -116,5 +68,4 @@ export class SubInstrument {
         }
         return "unnamed";
     }
-
 }