123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- import {Instrument} from "./Instrument";
- import {MidiInstrument} from "./VoiceData/Instructions/ClefInstruction";
- export class SubInstrument {
- constructor(parentInstrument: Instrument) {
- this.parentInstrument = parentInstrument;
- this.fixedKey = -1;
- this.name = this.parseMidiInstrument(this.parentInstrument.Name);
- this.midiInstrumentID = SubInstrument.midiInstrument[this.name];
- this.volume = 1.0;
- }
- private static midiInstrument: { [key: string]: MidiInstrument; } = {
- "cello": MidiInstrument.Cello,
- "violon-c": MidiInstrument.Cello,
- "contrabass": MidiInstrument.Contrabass,
- "kontrabass": MidiInstrument.Contrabass,
- "clarinet": MidiInstrument.Clarinet,
- "klarinette": MidiInstrument.Clarinet,
- "flute": MidiInstrument.Flute,
- "flöte": MidiInstrument.Flute,
- "frenchhorn": MidiInstrument.French_Horn,
- "guitar": MidiInstrument.Acoustic_Guitar_nylon,
- "gitarre": MidiInstrument.Acoustic_Guitar_nylon,
- "harp": MidiInstrument.Orchestral_Harp,
- "harfe": MidiInstrument.Orchestral_Harp,
- "oboe": MidiInstrument.Oboe,
- "organ": MidiInstrument.Church_Organ,
- "orgue": MidiInstrument.Church_Organ,
- "orgel": MidiInstrument.Church_Organ,
- "piano": MidiInstrument.Acoustic_Grand_Piano,
- "klavier": MidiInstrument.Acoustic_Grand_Piano,
- "piccolo": MidiInstrument.Piccolo,
- "strings": MidiInstrument.String_Ensemble_1,
- "streicher": MidiInstrument.String_Ensemble_1,
- "steeldrum": MidiInstrument.Steel_Drums,
- "trombone": MidiInstrument.Trombone,
- "posaune": MidiInstrument.Trombone,
- "brass": MidiInstrument.Trombone,
- "trumpet": MidiInstrument.Trumpet,
- "trompete": MidiInstrument.Trumpet,
- "tpt": MidiInstrument.Trumpet,
- "tuba": MidiInstrument.Tuba,
- "sax": MidiInstrument.Tenor_Sax,
- "viola": MidiInstrument.Viola,
- "bratsche": MidiInstrument.Viola,
- "violin": MidiInstrument.Violin,
- "violon.": MidiInstrument.Violin,
- "woodblock": MidiInstrument.Woodblock,
- "alt": MidiInstrument.Synth_Voice,
- "alto": MidiInstrument.Synth_Voice,
- "tenor": MidiInstrument.Synth_Voice,
- "bariton": MidiInstrument.Synth_Voice,
- "baritone": MidiInstrument.Synth_Voice,
- "bass": MidiInstrument.Synth_Voice,
- "sopran": MidiInstrument.Synth_Voice,
- "voice": MidiInstrument.Synth_Voice,
- "recorder": MidiInstrument.Recorder,
- "blockflöte": MidiInstrument.Recorder,
- "banjo": MidiInstrument.Banjo,
- "drums": MidiInstrument.Percussion,
- "percussion": MidiInstrument.Percussion,
- "schlagzeug": MidiInstrument.Percussion,
- "schlagwerk": MidiInstrument.Percussion,
- "unnamed": MidiInstrument.Acoustic_Grand_Piano,
- };
- public idString: string;
- public midiInstrumentID: MidiInstrument;
- public volume: number;
- public pan: number;
- public fixedKey: number;
- public name: string;
- private parentInstrument: Instrument;
- public get ParentInstrument(): Instrument {
- return this.parentInstrument;
- }
- public static isPianoInstrument(instrument: MidiInstrument): boolean {
- return (instrument === MidiInstrument.Acoustic_Grand_Piano
- || instrument === MidiInstrument.Bright_Acoustic_Piano
- || instrument === MidiInstrument.Electric_Grand_Piano
- || instrument === MidiInstrument.Electric_Piano_1
- || instrument === MidiInstrument.Electric_Piano_2);
- }
- public setMidiInstrument(instrumentType: string): void {
- this.midiInstrumentID = SubInstrument.midiInstrument[this.parseMidiInstrument(instrumentType)];
- }
- private parseMidiInstrument(instrumentType: string): string {
- // FIXME: test this function
- try {
- if (instrumentType) {
- let tmpName: string = instrumentType.toLowerCase().trim();
- for (let key in SubInstrument.midiInstrument) {
- if (tmpName.indexOf(key) !== -1) {
- return key;
- }
- }
- }
- if (this.parentInstrument.Name) {
- let tmpName: string = this.parentInstrument.Name.toLowerCase().trim();
- for (let key in SubInstrument.midiInstrument) {
- if (tmpName.indexOf(key) !== -1) {
- return key;
- }
- }
- }
- } catch (e) {
- console.log("Error parsing MIDI Instrument. Default to Grand Piano."); // FIXME
- }
- return "unnamed";
- }
- }
|