|
|
#pragma once |
|
|
|
|
|
#include <string> |
|
|
#include <map> |
|
|
#include <vector> |
|
|
#include "../../common/data_structures/track_type.h" |
|
|
|
|
|
|
|
|
namespace enums { |
|
|
|
|
|
std::map<midi::GM_TYPE,std::vector<int>> GM_MOD = { |
|
|
{midi::GM_TYPE::any,{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127}}, |
|
|
{midi::GM_TYPE::piano,{0,1,2,3,4,5,6,7}}, |
|
|
{midi::GM_TYPE::chromatic_perc,{9,10,11,12,13,14,15}}, |
|
|
{midi::GM_TYPE::organ,{16,17,18,19,20,21,22,23}}, |
|
|
{midi::GM_TYPE::guitar,{24,25,26,27,28,29,30,31}}, |
|
|
{midi::GM_TYPE::bass,{32,33,34,35,36,37,38,39}}, |
|
|
{midi::GM_TYPE::strings,{40,41,42,43,44,45,46,47}}, |
|
|
{midi::GM_TYPE::ensemble,{48,49,50,51,52,53,54,55}}, |
|
|
{midi::GM_TYPE::brass,{56,57,58,59,60,61,62,63}}, |
|
|
{midi::GM_TYPE::reed,{64,65,66,67,68,69,70,71}}, |
|
|
{midi::GM_TYPE::pipe,{72,73,74,75,76,77,78,79}}, |
|
|
{midi::GM_TYPE::synth_lead,{80,81,82,83,84,85,86,87}}, |
|
|
{midi::GM_TYPE::synth_pad,{88,89,90,91,92,93,94,95}}, |
|
|
{midi::GM_TYPE::synth_effects,{96,97,98,99,100,101,102,103}}, |
|
|
{midi::GM_TYPE::ethnic,{104,105,106,107,108,109,110,111}}, |
|
|
{midi::GM_TYPE::percussive,{112,113,114,115,116,117,118,119}}, |
|
|
{midi::GM_TYPE::sound_fx,{120,121,122,123,124,125,126,127}}, |
|
|
{midi::GM_TYPE::no_drums,{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127}}, |
|
|
{midi::GM_TYPE::drums,{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127}}, |
|
|
{midi::GM_TYPE::acoustic_grand_piano,{0}}, |
|
|
{midi::GM_TYPE::bright_acoustic_piano,{1}}, |
|
|
{midi::GM_TYPE::electric_grand_piano,{2}}, |
|
|
{midi::GM_TYPE::honky_tonk_piano,{3}}, |
|
|
{midi::GM_TYPE::electric_piano_1,{4}}, |
|
|
{midi::GM_TYPE::electric_piano_2,{5}}, |
|
|
{midi::GM_TYPE::harpsichord,{6}}, |
|
|
{midi::GM_TYPE::clavi,{7}}, |
|
|
{midi::GM_TYPE::celesta,{8}}, |
|
|
{midi::GM_TYPE::glockenspiel,{9}}, |
|
|
{midi::GM_TYPE::music_box,{10}}, |
|
|
{midi::GM_TYPE::vibraphone,{11}}, |
|
|
{midi::GM_TYPE::marimba,{12}}, |
|
|
{midi::GM_TYPE::xylophone,{13}}, |
|
|
{midi::GM_TYPE::tubular_bells,{14}}, |
|
|
{midi::GM_TYPE::dulcimer,{15}}, |
|
|
{midi::GM_TYPE::drawbar_organ,{16}}, |
|
|
{midi::GM_TYPE::percussive_organ,{17}}, |
|
|
{midi::GM_TYPE::rock_organ,{18}}, |
|
|
{midi::GM_TYPE::church_organ,{19}}, |
|
|
{midi::GM_TYPE::reed_organ,{20}}, |
|
|
{midi::GM_TYPE::accordion,{21}}, |
|
|
{midi::GM_TYPE::harmonica,{22}}, |
|
|
{midi::GM_TYPE::tango_accordion,{23}}, |
|
|
{midi::GM_TYPE::acoustic_guitar_nylon,{24}}, |
|
|
{midi::GM_TYPE::acoustic_guitar_steel,{25}}, |
|
|
{midi::GM_TYPE::electric_guitar_jazz,{26}}, |
|
|
{midi::GM_TYPE::electric_guitar_clean,{27}}, |
|
|
{midi::GM_TYPE::electric_guitar_muted,{28}}, |
|
|
{midi::GM_TYPE::overdriven_guitar,{29}}, |
|
|
{midi::GM_TYPE::distortion_guitar,{30}}, |
|
|
{midi::GM_TYPE::guitar_harmonics,{31}}, |
|
|
{midi::GM_TYPE::acoustic_bass,{32}}, |
|
|
{midi::GM_TYPE::electric_bass_finger,{33}}, |
|
|
{midi::GM_TYPE::electric_bass_pick,{34}}, |
|
|
{midi::GM_TYPE::fretless_bass,{35}}, |
|
|
{midi::GM_TYPE::slap_bass_1,{36}}, |
|
|
{midi::GM_TYPE::slap_bass_2,{37}}, |
|
|
{midi::GM_TYPE::synth_bass_1,{38}}, |
|
|
{midi::GM_TYPE::synth_bass_2,{39}}, |
|
|
{midi::GM_TYPE::violin,{40}}, |
|
|
{midi::GM_TYPE::viola,{41}}, |
|
|
{midi::GM_TYPE::cello,{42}}, |
|
|
{midi::GM_TYPE::contrabass,{43}}, |
|
|
{midi::GM_TYPE::tremolo_strings,{44}}, |
|
|
{midi::GM_TYPE::pizzicato_strings,{45}}, |
|
|
{midi::GM_TYPE::orchestral_harp,{46}}, |
|
|
{midi::GM_TYPE::timpani,{47}}, |
|
|
{midi::GM_TYPE::string_ensemble_1,{48}}, |
|
|
{midi::GM_TYPE::string_ensemble_2,{49}}, |
|
|
{midi::GM_TYPE::synth_strings_1,{50}}, |
|
|
{midi::GM_TYPE::synth_strings_2,{51}}, |
|
|
{midi::GM_TYPE::choir_aahs,{52}}, |
|
|
{midi::GM_TYPE::voice_oohs,{53}}, |
|
|
{midi::GM_TYPE::synth_voice,{54}}, |
|
|
{midi::GM_TYPE::orchestra_hit,{55}}, |
|
|
{midi::GM_TYPE::trumpet,{56}}, |
|
|
{midi::GM_TYPE::trombone,{57}}, |
|
|
{midi::GM_TYPE::tuba,{58}}, |
|
|
{midi::GM_TYPE::muted_trumpet,{59}}, |
|
|
{midi::GM_TYPE::french_horn,{60}}, |
|
|
{midi::GM_TYPE::brass_section,{61}}, |
|
|
{midi::GM_TYPE::synth_brass_1,{62}}, |
|
|
{midi::GM_TYPE::synth_brass_2,{63}}, |
|
|
{midi::GM_TYPE::soprano_sax,{64}}, |
|
|
{midi::GM_TYPE::alto_sax,{65}}, |
|
|
{midi::GM_TYPE::tenor_sax,{66}}, |
|
|
{midi::GM_TYPE::baritone_sax,{67}}, |
|
|
{midi::GM_TYPE::oboe,{68}}, |
|
|
{midi::GM_TYPE::english_horn,{69}}, |
|
|
{midi::GM_TYPE::bassoon,{70}}, |
|
|
{midi::GM_TYPE::clarinet,{71}}, |
|
|
{midi::GM_TYPE::piccolo,{72}}, |
|
|
{midi::GM_TYPE::flute,{73}}, |
|
|
{midi::GM_TYPE::recorder,{74}}, |
|
|
{midi::GM_TYPE::pan_flute,{75}}, |
|
|
{midi::GM_TYPE::blown_bottle,{76}}, |
|
|
{midi::GM_TYPE::shakuhachi,{77}}, |
|
|
{midi::GM_TYPE::whistle,{78}}, |
|
|
{midi::GM_TYPE::ocarina,{79}}, |
|
|
{midi::GM_TYPE::lead_1_square,{80}}, |
|
|
{midi::GM_TYPE::lead_2_sawtooth,{81}}, |
|
|
{midi::GM_TYPE::lead_3_calliope,{82}}, |
|
|
{midi::GM_TYPE::lead_4_chiff,{83}}, |
|
|
{midi::GM_TYPE::lead_5_charang,{84}}, |
|
|
{midi::GM_TYPE::lead_6_voice,{85}}, |
|
|
{midi::GM_TYPE::lead_7_fifths,{86}}, |
|
|
{midi::GM_TYPE::lead_8_bass__lead,{87}}, |
|
|
{midi::GM_TYPE::pad_1_new_age,{88}}, |
|
|
{midi::GM_TYPE::pad_2_warm,{89}}, |
|
|
{midi::GM_TYPE::pad_3_polysynth,{90}}, |
|
|
{midi::GM_TYPE::pad_4_choir,{91}}, |
|
|
{midi::GM_TYPE::pad_5_bowed,{92}}, |
|
|
{midi::GM_TYPE::pad_6_metallic,{93}}, |
|
|
{midi::GM_TYPE::pad_7_halo,{94}}, |
|
|
{midi::GM_TYPE::pad_8_sweep,{95}}, |
|
|
{midi::GM_TYPE::fx_1_rain,{96}}, |
|
|
{midi::GM_TYPE::fx_2_soundtrack,{97}}, |
|
|
{midi::GM_TYPE::fx_3_crystal,{98}}, |
|
|
{midi::GM_TYPE::fx_4_atmosphere,{99}}, |
|
|
{midi::GM_TYPE::fx_5_brightness,{100}}, |
|
|
{midi::GM_TYPE::fx_6_goblins,{101}}, |
|
|
{midi::GM_TYPE::fx_7_echoes,{102}}, |
|
|
{midi::GM_TYPE::fx_8_sci_fi,{103}}, |
|
|
{midi::GM_TYPE::sitar,{104}}, |
|
|
{midi::GM_TYPE::banjo,{105}}, |
|
|
{midi::GM_TYPE::shamisen,{106}}, |
|
|
{midi::GM_TYPE::koto,{107}}, |
|
|
{midi::GM_TYPE::kalimba,{108}}, |
|
|
{midi::GM_TYPE::bag_pipe,{109}}, |
|
|
{midi::GM_TYPE::fiddle,{110}}, |
|
|
{midi::GM_TYPE::shanai,{111}}, |
|
|
{midi::GM_TYPE::tinkle_bell,{112}}, |
|
|
{midi::GM_TYPE::agogo,{113}}, |
|
|
{midi::GM_TYPE::steel_drums,{114}}, |
|
|
{midi::GM_TYPE::woodblock,{115}}, |
|
|
{midi::GM_TYPE::taiko_drum,{116}}, |
|
|
{midi::GM_TYPE::melodic_tom,{117}}, |
|
|
{midi::GM_TYPE::synth_drum,{118}}, |
|
|
{midi::GM_TYPE::reverse_cymbal,{119}}, |
|
|
{midi::GM_TYPE::guitar_fret_noise,{120}}, |
|
|
{midi::GM_TYPE::breath_noise,{121}}, |
|
|
{midi::GM_TYPE::seashore,{122}}, |
|
|
{midi::GM_TYPE::bird_tweet,{123}}, |
|
|
{midi::GM_TYPE::telephone_ring,{124}}, |
|
|
{midi::GM_TYPE::helicopter,{125}}, |
|
|
{midi::GM_TYPE::applause,{126}}, |
|
|
{midi::GM_TYPE::gunshot,{127}}, |
|
|
{midi::GM_TYPE::drum_0,{0}}, |
|
|
{midi::GM_TYPE::drum_1,{1}}, |
|
|
{midi::GM_TYPE::drum_2,{2}}, |
|
|
{midi::GM_TYPE::drum_3,{3}}, |
|
|
{midi::GM_TYPE::drum_4,{4}}, |
|
|
{midi::GM_TYPE::drum_5,{5}}, |
|
|
{midi::GM_TYPE::drum_6,{6}}, |
|
|
{midi::GM_TYPE::drum_7,{7}}, |
|
|
{midi::GM_TYPE::drum_8,{8}}, |
|
|
{midi::GM_TYPE::drum_9,{9}}, |
|
|
{midi::GM_TYPE::drum_10,{10}}, |
|
|
{midi::GM_TYPE::drum_11,{11}}, |
|
|
{midi::GM_TYPE::drum_12,{12}}, |
|
|
{midi::GM_TYPE::drum_13,{13}}, |
|
|
{midi::GM_TYPE::drum_14,{14}}, |
|
|
{midi::GM_TYPE::drum_15,{15}}, |
|
|
{midi::GM_TYPE::drum_16,{16}}, |
|
|
{midi::GM_TYPE::drum_17,{17}}, |
|
|
{midi::GM_TYPE::drum_18,{18}}, |
|
|
{midi::GM_TYPE::drum_19,{19}}, |
|
|
{midi::GM_TYPE::drum_20,{20}}, |
|
|
{midi::GM_TYPE::drum_21,{21}}, |
|
|
{midi::GM_TYPE::drum_22,{22}}, |
|
|
{midi::GM_TYPE::drum_23,{23}}, |
|
|
{midi::GM_TYPE::drum_24,{24}}, |
|
|
{midi::GM_TYPE::drum_25,{25}}, |
|
|
{midi::GM_TYPE::drum_26,{26}}, |
|
|
{midi::GM_TYPE::drum_27,{27}}, |
|
|
{midi::GM_TYPE::drum_28,{28}}, |
|
|
{midi::GM_TYPE::drum_29,{29}}, |
|
|
{midi::GM_TYPE::drum_30,{30}}, |
|
|
{midi::GM_TYPE::drum_31,{31}}, |
|
|
{midi::GM_TYPE::drum_32,{32}}, |
|
|
{midi::GM_TYPE::drum_33,{33}}, |
|
|
{midi::GM_TYPE::drum_34,{34}}, |
|
|
{midi::GM_TYPE::drum_35,{35}}, |
|
|
{midi::GM_TYPE::drum_36,{36}}, |
|
|
{midi::GM_TYPE::drum_37,{37}}, |
|
|
{midi::GM_TYPE::drum_38,{38}}, |
|
|
{midi::GM_TYPE::drum_39,{39}}, |
|
|
{midi::GM_TYPE::drum_40,{40}}, |
|
|
{midi::GM_TYPE::drum_41,{41}}, |
|
|
{midi::GM_TYPE::drum_42,{42}}, |
|
|
{midi::GM_TYPE::drum_43,{43}}, |
|
|
{midi::GM_TYPE::drum_44,{44}}, |
|
|
{midi::GM_TYPE::drum_45,{45}}, |
|
|
{midi::GM_TYPE::drum_46,{46}}, |
|
|
{midi::GM_TYPE::drum_47,{47}}, |
|
|
{midi::GM_TYPE::drum_48,{48}}, |
|
|
{midi::GM_TYPE::drum_49,{49}}, |
|
|
{midi::GM_TYPE::drum_50,{50}}, |
|
|
{midi::GM_TYPE::drum_51,{51}}, |
|
|
{midi::GM_TYPE::drum_52,{52}}, |
|
|
{midi::GM_TYPE::drum_53,{53}}, |
|
|
{midi::GM_TYPE::drum_54,{54}}, |
|
|
{midi::GM_TYPE::drum_55,{55}}, |
|
|
{midi::GM_TYPE::drum_56,{56}}, |
|
|
{midi::GM_TYPE::drum_57,{57}}, |
|
|
{midi::GM_TYPE::drum_58,{58}}, |
|
|
{midi::GM_TYPE::drum_59,{59}}, |
|
|
{midi::GM_TYPE::drum_60,{60}}, |
|
|
{midi::GM_TYPE::drum_61,{61}}, |
|
|
{midi::GM_TYPE::drum_62,{62}}, |
|
|
{midi::GM_TYPE::drum_63,{63}}, |
|
|
{midi::GM_TYPE::drum_64,{64}}, |
|
|
{midi::GM_TYPE::drum_65,{65}}, |
|
|
{midi::GM_TYPE::drum_66,{66}}, |
|
|
{midi::GM_TYPE::drum_67,{67}}, |
|
|
{midi::GM_TYPE::drum_68,{68}}, |
|
|
{midi::GM_TYPE::drum_69,{69}}, |
|
|
{midi::GM_TYPE::drum_70,{70}}, |
|
|
{midi::GM_TYPE::drum_71,{71}}, |
|
|
{midi::GM_TYPE::drum_72,{72}}, |
|
|
{midi::GM_TYPE::drum_73,{73}}, |
|
|
{midi::GM_TYPE::drum_74,{74}}, |
|
|
{midi::GM_TYPE::drum_75,{75}}, |
|
|
{midi::GM_TYPE::drum_76,{76}}, |
|
|
{midi::GM_TYPE::drum_77,{77}}, |
|
|
{midi::GM_TYPE::drum_78,{78}}, |
|
|
{midi::GM_TYPE::drum_79,{79}}, |
|
|
{midi::GM_TYPE::drum_80,{80}}, |
|
|
{midi::GM_TYPE::drum_81,{81}}, |
|
|
{midi::GM_TYPE::drum_82,{82}}, |
|
|
{midi::GM_TYPE::drum_83,{83}}, |
|
|
{midi::GM_TYPE::drum_84,{84}}, |
|
|
{midi::GM_TYPE::drum_85,{85}}, |
|
|
{midi::GM_TYPE::drum_86,{86}}, |
|
|
{midi::GM_TYPE::drum_87,{87}}, |
|
|
{midi::GM_TYPE::drum_88,{88}}, |
|
|
{midi::GM_TYPE::drum_89,{89}}, |
|
|
{midi::GM_TYPE::drum_90,{90}}, |
|
|
{midi::GM_TYPE::drum_91,{91}}, |
|
|
{midi::GM_TYPE::drum_92,{92}}, |
|
|
{midi::GM_TYPE::drum_93,{93}}, |
|
|
{midi::GM_TYPE::drum_94,{94}}, |
|
|
{midi::GM_TYPE::drum_95,{95}}, |
|
|
{midi::GM_TYPE::drum_96,{96}}, |
|
|
{midi::GM_TYPE::drum_97,{97}}, |
|
|
{midi::GM_TYPE::drum_98,{98}}, |
|
|
{midi::GM_TYPE::drum_99,{99}}, |
|
|
{midi::GM_TYPE::drum_100,{100}}, |
|
|
{midi::GM_TYPE::drum_101,{101}}, |
|
|
{midi::GM_TYPE::drum_102,{102}}, |
|
|
{midi::GM_TYPE::drum_103,{103}}, |
|
|
{midi::GM_TYPE::drum_104,{104}}, |
|
|
{midi::GM_TYPE::drum_105,{105}}, |
|
|
{midi::GM_TYPE::drum_106,{106}}, |
|
|
{midi::GM_TYPE::drum_107,{107}}, |
|
|
{midi::GM_TYPE::drum_108,{108}}, |
|
|
{midi::GM_TYPE::drum_109,{109}}, |
|
|
{midi::GM_TYPE::drum_110,{110}}, |
|
|
{midi::GM_TYPE::drum_111,{111}}, |
|
|
{midi::GM_TYPE::drum_112,{112}}, |
|
|
{midi::GM_TYPE::drum_113,{113}}, |
|
|
{midi::GM_TYPE::drum_114,{114}}, |
|
|
{midi::GM_TYPE::drum_115,{115}}, |
|
|
{midi::GM_TYPE::drum_116,{116}}, |
|
|
{midi::GM_TYPE::drum_117,{117}}, |
|
|
{midi::GM_TYPE::drum_118,{118}}, |
|
|
{midi::GM_TYPE::drum_119,{119}}, |
|
|
{midi::GM_TYPE::drum_120,{120}}, |
|
|
{midi::GM_TYPE::drum_121,{121}}, |
|
|
{midi::GM_TYPE::drum_122,{122}}, |
|
|
{midi::GM_TYPE::drum_123,{123}}, |
|
|
{midi::GM_TYPE::drum_124,{124}}, |
|
|
{midi::GM_TYPE::drum_125,{125}}, |
|
|
{midi::GM_TYPE::drum_126,{126}}, |
|
|
{midi::GM_TYPE::drum_127,{127}}, |
|
|
}; |
|
|
|
|
|
std::map<int,midi::GM_TYPE> GM_REV = { |
|
|
{0,midi::GM_TYPE::acoustic_grand_piano}, |
|
|
{1,midi::GM_TYPE::bright_acoustic_piano}, |
|
|
{2,midi::GM_TYPE::electric_grand_piano}, |
|
|
{3,midi::GM_TYPE::honky_tonk_piano}, |
|
|
{4,midi::GM_TYPE::electric_piano_1}, |
|
|
{5,midi::GM_TYPE::electric_piano_2}, |
|
|
{6,midi::GM_TYPE::harpsichord}, |
|
|
{7,midi::GM_TYPE::clavi}, |
|
|
{8,midi::GM_TYPE::celesta}, |
|
|
{9,midi::GM_TYPE::glockenspiel}, |
|
|
{10,midi::GM_TYPE::music_box}, |
|
|
{11,midi::GM_TYPE::vibraphone}, |
|
|
{12,midi::GM_TYPE::marimba}, |
|
|
{13,midi::GM_TYPE::xylophone}, |
|
|
{14,midi::GM_TYPE::tubular_bells}, |
|
|
{15,midi::GM_TYPE::dulcimer}, |
|
|
{16,midi::GM_TYPE::drawbar_organ}, |
|
|
{17,midi::GM_TYPE::percussive_organ}, |
|
|
{18,midi::GM_TYPE::rock_organ}, |
|
|
{19,midi::GM_TYPE::church_organ}, |
|
|
{20,midi::GM_TYPE::reed_organ}, |
|
|
{21,midi::GM_TYPE::accordion}, |
|
|
{22,midi::GM_TYPE::harmonica}, |
|
|
{23,midi::GM_TYPE::tango_accordion}, |
|
|
{24,midi::GM_TYPE::acoustic_guitar_nylon}, |
|
|
{25,midi::GM_TYPE::acoustic_guitar_steel}, |
|
|
{26,midi::GM_TYPE::electric_guitar_jazz}, |
|
|
{27,midi::GM_TYPE::electric_guitar_clean}, |
|
|
{28,midi::GM_TYPE::electric_guitar_muted}, |
|
|
{29,midi::GM_TYPE::overdriven_guitar}, |
|
|
{30,midi::GM_TYPE::distortion_guitar}, |
|
|
{31,midi::GM_TYPE::guitar_harmonics}, |
|
|
{32,midi::GM_TYPE::acoustic_bass}, |
|
|
{33,midi::GM_TYPE::electric_bass_finger}, |
|
|
{34,midi::GM_TYPE::electric_bass_pick}, |
|
|
{35,midi::GM_TYPE::fretless_bass}, |
|
|
{36,midi::GM_TYPE::slap_bass_1}, |
|
|
{37,midi::GM_TYPE::slap_bass_2}, |
|
|
{38,midi::GM_TYPE::synth_bass_1}, |
|
|
{39,midi::GM_TYPE::synth_bass_2}, |
|
|
{40,midi::GM_TYPE::violin}, |
|
|
{41,midi::GM_TYPE::viola}, |
|
|
{42,midi::GM_TYPE::cello}, |
|
|
{43,midi::GM_TYPE::contrabass}, |
|
|
{44,midi::GM_TYPE::tremolo_strings}, |
|
|
{45,midi::GM_TYPE::pizzicato_strings}, |
|
|
{46,midi::GM_TYPE::orchestral_harp}, |
|
|
{47,midi::GM_TYPE::timpani}, |
|
|
{48,midi::GM_TYPE::string_ensemble_1}, |
|
|
{49,midi::GM_TYPE::string_ensemble_2}, |
|
|
{50,midi::GM_TYPE::synth_strings_1}, |
|
|
{51,midi::GM_TYPE::synth_strings_2}, |
|
|
{52,midi::GM_TYPE::choir_aahs}, |
|
|
{53,midi::GM_TYPE::voice_oohs}, |
|
|
{54,midi::GM_TYPE::synth_voice}, |
|
|
{55,midi::GM_TYPE::orchestra_hit}, |
|
|
{56,midi::GM_TYPE::trumpet}, |
|
|
{57,midi::GM_TYPE::trombone}, |
|
|
{58,midi::GM_TYPE::tuba}, |
|
|
{59,midi::GM_TYPE::muted_trumpet}, |
|
|
{60,midi::GM_TYPE::french_horn}, |
|
|
{61,midi::GM_TYPE::brass_section}, |
|
|
{62,midi::GM_TYPE::synth_brass_1}, |
|
|
{63,midi::GM_TYPE::synth_brass_2}, |
|
|
{64,midi::GM_TYPE::soprano_sax}, |
|
|
{65,midi::GM_TYPE::alto_sax}, |
|
|
{66,midi::GM_TYPE::tenor_sax}, |
|
|
{67,midi::GM_TYPE::baritone_sax}, |
|
|
{68,midi::GM_TYPE::oboe}, |
|
|
{69,midi::GM_TYPE::english_horn}, |
|
|
{70,midi::GM_TYPE::bassoon}, |
|
|
{71,midi::GM_TYPE::clarinet}, |
|
|
{72,midi::GM_TYPE::piccolo}, |
|
|
{73,midi::GM_TYPE::flute}, |
|
|
{74,midi::GM_TYPE::recorder}, |
|
|
{75,midi::GM_TYPE::pan_flute}, |
|
|
{76,midi::GM_TYPE::blown_bottle}, |
|
|
{77,midi::GM_TYPE::shakuhachi}, |
|
|
{78,midi::GM_TYPE::whistle}, |
|
|
{79,midi::GM_TYPE::ocarina}, |
|
|
{80,midi::GM_TYPE::lead_1_square}, |
|
|
{81,midi::GM_TYPE::lead_2_sawtooth}, |
|
|
{82,midi::GM_TYPE::lead_3_calliope}, |
|
|
{83,midi::GM_TYPE::lead_4_chiff}, |
|
|
{84,midi::GM_TYPE::lead_5_charang}, |
|
|
{85,midi::GM_TYPE::lead_6_voice}, |
|
|
{86,midi::GM_TYPE::lead_7_fifths}, |
|
|
{87,midi::GM_TYPE::lead_8_bass__lead}, |
|
|
{88,midi::GM_TYPE::pad_1_new_age}, |
|
|
{89,midi::GM_TYPE::pad_2_warm}, |
|
|
{90,midi::GM_TYPE::pad_3_polysynth}, |
|
|
{91,midi::GM_TYPE::pad_4_choir}, |
|
|
{92,midi::GM_TYPE::pad_5_bowed}, |
|
|
{93,midi::GM_TYPE::pad_6_metallic}, |
|
|
{94,midi::GM_TYPE::pad_7_halo}, |
|
|
{95,midi::GM_TYPE::pad_8_sweep}, |
|
|
{96,midi::GM_TYPE::fx_1_rain}, |
|
|
{97,midi::GM_TYPE::fx_2_soundtrack}, |
|
|
{98,midi::GM_TYPE::fx_3_crystal}, |
|
|
{99,midi::GM_TYPE::fx_4_atmosphere}, |
|
|
{100,midi::GM_TYPE::fx_5_brightness}, |
|
|
{101,midi::GM_TYPE::fx_6_goblins}, |
|
|
{102,midi::GM_TYPE::fx_7_echoes}, |
|
|
{103,midi::GM_TYPE::fx_8_sci_fi}, |
|
|
{104,midi::GM_TYPE::sitar}, |
|
|
{105,midi::GM_TYPE::banjo}, |
|
|
{106,midi::GM_TYPE::shamisen}, |
|
|
{107,midi::GM_TYPE::koto}, |
|
|
{108,midi::GM_TYPE::kalimba}, |
|
|
{109,midi::GM_TYPE::bag_pipe}, |
|
|
{110,midi::GM_TYPE::fiddle}, |
|
|
{111,midi::GM_TYPE::shanai}, |
|
|
{112,midi::GM_TYPE::tinkle_bell}, |
|
|
{113,midi::GM_TYPE::agogo}, |
|
|
{114,midi::GM_TYPE::steel_drums}, |
|
|
{115,midi::GM_TYPE::woodblock}, |
|
|
{116,midi::GM_TYPE::taiko_drum}, |
|
|
{117,midi::GM_TYPE::melodic_tom}, |
|
|
{118,midi::GM_TYPE::synth_drum}, |
|
|
{119,midi::GM_TYPE::reverse_cymbal}, |
|
|
{120,midi::GM_TYPE::guitar_fret_noise}, |
|
|
{121,midi::GM_TYPE::breath_noise}, |
|
|
{122,midi::GM_TYPE::seashore}, |
|
|
{123,midi::GM_TYPE::bird_tweet}, |
|
|
{124,midi::GM_TYPE::telephone_ring}, |
|
|
{125,midi::GM_TYPE::helicopter}, |
|
|
{126,midi::GM_TYPE::applause}, |
|
|
{127,midi::GM_TYPE::gunshot}, |
|
|
{128,midi::GM_TYPE::drum_0}, |
|
|
{129,midi::GM_TYPE::drum_1}, |
|
|
{130,midi::GM_TYPE::drum_2}, |
|
|
{131,midi::GM_TYPE::drum_3}, |
|
|
{132,midi::GM_TYPE::drum_4}, |
|
|
{133,midi::GM_TYPE::drum_5}, |
|
|
{134,midi::GM_TYPE::drum_6}, |
|
|
{135,midi::GM_TYPE::drum_7}, |
|
|
{136,midi::GM_TYPE::drum_8}, |
|
|
{137,midi::GM_TYPE::drum_9}, |
|
|
{138,midi::GM_TYPE::drum_10}, |
|
|
{139,midi::GM_TYPE::drum_11}, |
|
|
{140,midi::GM_TYPE::drum_12}, |
|
|
{141,midi::GM_TYPE::drum_13}, |
|
|
{142,midi::GM_TYPE::drum_14}, |
|
|
{143,midi::GM_TYPE::drum_15}, |
|
|
{144,midi::GM_TYPE::drum_16}, |
|
|
{145,midi::GM_TYPE::drum_17}, |
|
|
{146,midi::GM_TYPE::drum_18}, |
|
|
{147,midi::GM_TYPE::drum_19}, |
|
|
{148,midi::GM_TYPE::drum_20}, |
|
|
{149,midi::GM_TYPE::drum_21}, |
|
|
{150,midi::GM_TYPE::drum_22}, |
|
|
{151,midi::GM_TYPE::drum_23}, |
|
|
{152,midi::GM_TYPE::drum_24}, |
|
|
{153,midi::GM_TYPE::drum_25}, |
|
|
{154,midi::GM_TYPE::drum_26}, |
|
|
{155,midi::GM_TYPE::drum_27}, |
|
|
{156,midi::GM_TYPE::drum_28}, |
|
|
{157,midi::GM_TYPE::drum_29}, |
|
|
{158,midi::GM_TYPE::drum_30}, |
|
|
{159,midi::GM_TYPE::drum_31}, |
|
|
{160,midi::GM_TYPE::drum_32}, |
|
|
{161,midi::GM_TYPE::drum_33}, |
|
|
{162,midi::GM_TYPE::drum_34}, |
|
|
{163,midi::GM_TYPE::drum_35}, |
|
|
{164,midi::GM_TYPE::drum_36}, |
|
|
{165,midi::GM_TYPE::drum_37}, |
|
|
{166,midi::GM_TYPE::drum_38}, |
|
|
{167,midi::GM_TYPE::drum_39}, |
|
|
{168,midi::GM_TYPE::drum_40}, |
|
|
{169,midi::GM_TYPE::drum_41}, |
|
|
{170,midi::GM_TYPE::drum_42}, |
|
|
{171,midi::GM_TYPE::drum_43}, |
|
|
{172,midi::GM_TYPE::drum_44}, |
|
|
{173,midi::GM_TYPE::drum_45}, |
|
|
{174,midi::GM_TYPE::drum_46}, |
|
|
{175,midi::GM_TYPE::drum_47}, |
|
|
{176,midi::GM_TYPE::drum_48}, |
|
|
{177,midi::GM_TYPE::drum_49}, |
|
|
{178,midi::GM_TYPE::drum_50}, |
|
|
{179,midi::GM_TYPE::drum_51}, |
|
|
{180,midi::GM_TYPE::drum_52}, |
|
|
{181,midi::GM_TYPE::drum_53}, |
|
|
{182,midi::GM_TYPE::drum_54}, |
|
|
{183,midi::GM_TYPE::drum_55}, |
|
|
{184,midi::GM_TYPE::drum_56}, |
|
|
{185,midi::GM_TYPE::drum_57}, |
|
|
{186,midi::GM_TYPE::drum_58}, |
|
|
{187,midi::GM_TYPE::drum_59}, |
|
|
{188,midi::GM_TYPE::drum_60}, |
|
|
{189,midi::GM_TYPE::drum_61}, |
|
|
{190,midi::GM_TYPE::drum_62}, |
|
|
{191,midi::GM_TYPE::drum_63}, |
|
|
{192,midi::GM_TYPE::drum_64}, |
|
|
{193,midi::GM_TYPE::drum_65}, |
|
|
{194,midi::GM_TYPE::drum_66}, |
|
|
{195,midi::GM_TYPE::drum_67}, |
|
|
{196,midi::GM_TYPE::drum_68}, |
|
|
{197,midi::GM_TYPE::drum_69}, |
|
|
{198,midi::GM_TYPE::drum_70}, |
|
|
{199,midi::GM_TYPE::drum_71}, |
|
|
{200,midi::GM_TYPE::drum_72}, |
|
|
{201,midi::GM_TYPE::drum_73}, |
|
|
{202,midi::GM_TYPE::drum_74}, |
|
|
{203,midi::GM_TYPE::drum_75}, |
|
|
{204,midi::GM_TYPE::drum_76}, |
|
|
{205,midi::GM_TYPE::drum_77}, |
|
|
{206,midi::GM_TYPE::drum_78}, |
|
|
{207,midi::GM_TYPE::drum_79}, |
|
|
{208,midi::GM_TYPE::drum_80}, |
|
|
{209,midi::GM_TYPE::drum_81}, |
|
|
{210,midi::GM_TYPE::drum_82}, |
|
|
{211,midi::GM_TYPE::drum_83}, |
|
|
{212,midi::GM_TYPE::drum_84}, |
|
|
{213,midi::GM_TYPE::drum_85}, |
|
|
{214,midi::GM_TYPE::drum_86}, |
|
|
{215,midi::GM_TYPE::drum_87}, |
|
|
{216,midi::GM_TYPE::drum_88}, |
|
|
{217,midi::GM_TYPE::drum_89}, |
|
|
{218,midi::GM_TYPE::drum_90}, |
|
|
{219,midi::GM_TYPE::drum_91}, |
|
|
{220,midi::GM_TYPE::drum_92}, |
|
|
{221,midi::GM_TYPE::drum_93}, |
|
|
{222,midi::GM_TYPE::drum_94}, |
|
|
{223,midi::GM_TYPE::drum_95}, |
|
|
{224,midi::GM_TYPE::drum_96}, |
|
|
{225,midi::GM_TYPE::drum_97}, |
|
|
{226,midi::GM_TYPE::drum_98}, |
|
|
{227,midi::GM_TYPE::drum_99}, |
|
|
{228,midi::GM_TYPE::drum_100}, |
|
|
{229,midi::GM_TYPE::drum_101}, |
|
|
{230,midi::GM_TYPE::drum_102}, |
|
|
{231,midi::GM_TYPE::drum_103}, |
|
|
{232,midi::GM_TYPE::drum_104}, |
|
|
{233,midi::GM_TYPE::drum_105}, |
|
|
{234,midi::GM_TYPE::drum_106}, |
|
|
{235,midi::GM_TYPE::drum_107}, |
|
|
{236,midi::GM_TYPE::drum_108}, |
|
|
{237,midi::GM_TYPE::drum_109}, |
|
|
{238,midi::GM_TYPE::drum_110}, |
|
|
{239,midi::GM_TYPE::drum_111}, |
|
|
{240,midi::GM_TYPE::drum_112}, |
|
|
{241,midi::GM_TYPE::drum_113}, |
|
|
{242,midi::GM_TYPE::drum_114}, |
|
|
{243,midi::GM_TYPE::drum_115}, |
|
|
{244,midi::GM_TYPE::drum_116}, |
|
|
{245,midi::GM_TYPE::drum_117}, |
|
|
{246,midi::GM_TYPE::drum_118}, |
|
|
{247,midi::GM_TYPE::drum_119}, |
|
|
{248,midi::GM_TYPE::drum_120}, |
|
|
{249,midi::GM_TYPE::drum_121}, |
|
|
{250,midi::GM_TYPE::drum_122}, |
|
|
{251,midi::GM_TYPE::drum_123}, |
|
|
{252,midi::GM_TYPE::drum_124}, |
|
|
{253,midi::GM_TYPE::drum_125}, |
|
|
{254,midi::GM_TYPE::drum_126}, |
|
|
{255,midi::GM_TYPE::drum_127}, |
|
|
}; |
|
|
|
|
|
std::map<midi::GM_TYPE,midi::GM_CATEGORY> gm_inst_to_category = { |
|
|
{midi::GM_TYPE::acoustic_grand_piano, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::bright_acoustic_piano, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::electric_grand_piano, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::honky_tonk_piano, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::electric_piano_1, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::electric_piano_2, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::harpsichord, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::clavi, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::celesta, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::glockenspiel, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::music_box, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::vibraphone, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::marimba, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::xylophone, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::tubular_bells, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::dulcimer, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::drawbar_organ, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::percussive_organ, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::rock_organ, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::church_organ, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::reed_organ, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::accordion, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::harmonica, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::tango_accordion, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::acoustic_guitar_nylon, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::acoustic_guitar_steel, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::electric_guitar_jazz, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::electric_guitar_clean, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::electric_guitar_muted, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::overdriven_guitar, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::distortion_guitar, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::guitar_harmonics, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::acoustic_bass, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::electric_bass_finger, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::electric_bass_pick, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::fretless_bass, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::slap_bass_1, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::slap_bass_2, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::synth_bass_1, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::synth_bass_2, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::violin, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::viola, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::cello, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::contrabass, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::tremolo_strings, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::pizzicato_strings, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::orchestral_harp, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::timpani, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::string_ensemble_1, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::string_ensemble_2, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::synth_strings_1, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::synth_strings_2, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::choir_aahs, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::voice_oohs, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::synth_voice, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::orchestra_hit, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::trumpet, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::trombone, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::tuba, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::muted_trumpet, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::french_horn, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::brass_section, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::synth_brass_1, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::synth_brass_2, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::soprano_sax, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::alto_sax, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::tenor_sax, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::baritone_sax, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::oboe, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::english_horn, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::bassoon, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::clarinet, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::piccolo, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::flute, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::recorder, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::pan_flute, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::blown_bottle, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::shakuhachi, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::whistle, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::ocarina, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::lead_1_square, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::lead_2_sawtooth, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::lead_3_calliope, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::lead_4_chiff, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::lead_5_charang, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::lead_6_voice, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::lead_7_fifths, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::lead_8_bass__lead, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::pad_1_new_age, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::pad_2_warm, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::pad_3_polysynth, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::pad_4_choir, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::pad_5_bowed, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::pad_6_metallic, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::pad_7_halo, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::pad_8_sweep, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::fx_1_rain, midi::GM_CATEGORY_SOUND_FX}, |
|
|
{midi::GM_TYPE::fx_2_soundtrack, midi::GM_CATEGORY_SOUND_FX}, |
|
|
{midi::GM_TYPE::fx_3_crystal, midi::GM_CATEGORY_SOUND_FX}, |
|
|
{midi::GM_TYPE::fx_4_atmosphere, midi::GM_CATEGORY_SOUND_FX}, |
|
|
{midi::GM_TYPE::fx_5_brightness, midi::GM_CATEGORY_SOUND_FX}, |
|
|
{midi::GM_TYPE::fx_6_goblins, midi::GM_CATEGORY_SOUND_FX}, |
|
|
{midi::GM_TYPE::fx_7_echoes, midi::GM_CATEGORY_SOUND_FX}, |
|
|
{midi::GM_TYPE::fx_8_sci_fi, midi::GM_CATEGORY_SOUND_FX}, |
|
|
{midi::GM_TYPE::sitar, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::banjo, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::shamisen, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::koto, midi::GM_CATEGORY_POLY}, |
|
|
{midi::GM_TYPE::kalimba, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::bag_pipe, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::fiddle, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::shanai, midi::GM_CATEGORY_MONO}, |
|
|
{midi::GM_TYPE::tinkle_bell, midi::GM_CATEGORY_PERC}, |
|
|
{midi::GM_TYPE::agogo, midi::GM_CATEGORY_PERC}, |
|
|
{midi::GM_TYPE::steel_drums, midi::GM_CATEGORY_PERC}, |
|
|
{midi::GM_TYPE::woodblock, midi::GM_CATEGORY_PERC}, |
|
|
{midi::GM_TYPE::taiko_drum, midi::GM_CATEGORY_PERC}, |
|
|
{midi::GM_TYPE::melodic_tom, midi::GM_CATEGORY_PERC}, |
|
|
{midi::GM_TYPE::synth_drum, midi::GM_CATEGORY_PERC}, |
|
|
{midi::GM_TYPE::reverse_cymbal, midi::GM_CATEGORY_PERC}, |
|
|
{midi::GM_TYPE::guitar_fret_noise, midi::GM_CATEGORY_SOUND_FX}, |
|
|
{midi::GM_TYPE::breath_noise, midi::GM_CATEGORY_SOUND_FX}, |
|
|
{midi::GM_TYPE::seashore, midi::GM_CATEGORY_SOUND_FX}, |
|
|
{midi::GM_TYPE::bird_tweet, midi::GM_CATEGORY_SOUND_FX}, |
|
|
{midi::GM_TYPE::telephone_ring, midi::GM_CATEGORY_SOUND_FX}, |
|
|
{midi::GM_TYPE::helicopter, midi::GM_CATEGORY_SOUND_FX}, |
|
|
{midi::GM_TYPE::applause, midi::GM_CATEGORY_SOUND_FX}, |
|
|
{midi::GM_TYPE::gunshot, midi::GM_CATEGORY_SOUND_FX} |
|
|
}; |
|
|
|
|
|
std::vector<std::string> get_instruments_by_category(std::string category) { |
|
|
std::vector<std::string> result; |
|
|
const google::protobuf::EnumDescriptor *descriptor = midi::GM_TYPE_descriptor(); |
|
|
const google::protobuf::EnumDescriptor *category_descriptor = midi::GM_CATEGORY_descriptor(); |
|
|
auto value = category_descriptor->FindValueByName(category); |
|
|
if (value == NULL) { |
|
|
return result; |
|
|
} |
|
|
for (auto kv : gm_inst_to_category) { |
|
|
if (kv.second == value->number()) { |
|
|
result.push_back( descriptor->FindValueByNumber(kv.first)->name() ); |
|
|
} |
|
|
} |
|
|
return result; |
|
|
} |
|
|
|
|
|
std::pair<int,std::string> get_instrument_and_track_type_from_gm_inst(std::string gm_inst) { |
|
|
const google::protobuf::EnumDescriptor *descriptor = midi::GM_TYPE_descriptor(); |
|
|
auto value = descriptor->FindValueByName(gm_inst); |
|
|
if (value == NULL) { |
|
|
throw std::runtime_error("Invalid GM instrument name"); |
|
|
} |
|
|
int instrument_number = GM_MOD[static_cast<midi::GM_TYPE>(value->number())][0]; |
|
|
return std::make_pair(instrument_number, instrument_number < 128 ? "STANDARD_TRACK" : "STANDARD_DRUM_TRACK"); |
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|