[29863] | 1 |
|
---|
| 2 | var GM_info =
|
---|
| 3 |
|
---|
| 4 | [ { "val": 0, "name": "Acoustic Grand Piano", "group": "Piano"}
|
---|
| 5 | , { "val": 1, "name": "Bright Acoustic Piano", "group": "Piano"}
|
---|
| 6 | , { "val": 2, "name": "Electric Grand Piano", "group": "Piano"}
|
---|
| 7 | , { "val": 3, "name": "Honky-tonk Piano", "group": "Piano"}
|
---|
| 8 | , { "val": 4, "name": "Electric Piano 1", "group": "Piano"}
|
---|
| 9 | , { "val": 5, "name": "Electric Piano 2", "group": "Piano"}
|
---|
| 10 | , { "val": 6, "name": "Harpsichord", "group": "Piano"}
|
---|
| 11 | , { "val": 7, "name": "Clavinet", "group": "Piano"}
|
---|
| 12 |
|
---|
| 13 | , { "val": 8, "name": "Celesta", "group": "Chromatic Percussion"}
|
---|
| 14 | , { "val": 9, "name": "Glockenspiel", "group": "Chromatic Percussion"}
|
---|
| 15 | , { "val": 10, "name": "Music Box", "group": "Chromatic Percussion"}
|
---|
| 16 | , { "val": 11, "name": "Vibraphone", "group": "Chromatic Percussion"}
|
---|
| 17 | , { "val": 12, "name": "Marimba", "group": "Chromatic Percussion"}
|
---|
| 18 | , { "val": 13, "name": "Xylophone", "group": "Chromatic Percussion"}
|
---|
| 19 | , { "val": 14, "name": "Tubular Bells", "group": "Chromatic Percussion"}
|
---|
| 20 | , { "val": 15, "name": "Dulcimer", "group": "Chromatic Percussion"}
|
---|
| 21 |
|
---|
| 22 | , { "val": 16, "name": "Drawbar Organ", "group": "Organ"}
|
---|
| 23 | , { "val": 17, "name": "Percussive Organ", "group": "Organ"}
|
---|
| 24 | , { "val": 18, "name": "Rock Organ", "group": "Organ"}
|
---|
| 25 | , { "val": 19, "name": "Church Organ", "group": "Organ"}
|
---|
| 26 | , { "val": 20, "name": "Reed Organ", "group": "Organ"}
|
---|
| 27 | , { "val": 21, "name": "Accordion", "group": "Organ"}
|
---|
| 28 | , { "val": 22, "name": "Harmonica", "group": "Organ"}
|
---|
| 29 | , { "val": 23, "name": "Tango Accordion", "group": "Organ"}
|
---|
| 30 |
|
---|
| 31 | , { "val": 24, "name": "Acoustic Guitar (nylon)", "group": "Guitar"}
|
---|
| 32 | , { "val": 25, "name": "Acoustic Guitar (steel)", "group": "Guitar"}
|
---|
| 33 | , { "val": 26, "name": "Electric Guitar (jazz)", "group": "Guitar"}
|
---|
| 34 | , { "val": 27, "name": "Electric Guitar (clean)", "group": "Guitar"}
|
---|
| 35 | , { "val": 28, "name": "Electric Guitar (muted)", "group": "Guitar"}
|
---|
| 36 | , { "val": 29, "name": "Overdriven Guitar", "group": "Guitar"}
|
---|
| 37 | , { "val": 30, "name": "Distortion Guitar", "group": "Guitar"}
|
---|
| 38 | , { "val": 31, "name": "Guitar Harmonics", "group": "Guitar"}
|
---|
| 39 |
|
---|
| 40 | , { "val": 32, "name": "Acoustic Bass", "group": "Bass"}
|
---|
| 41 | , { "val": 33, "name": "Electric Bass (finger)", "group": "Bass"}
|
---|
| 42 | , { "val": 34, "name": "Electric Bass (pick)", "group": "Bass"}
|
---|
| 43 | , { "val": 35, "name": "Fretless Bass", "group": "Bass"}
|
---|
| 44 | , { "val": 36, "name": "Slap Bass 1", "group": "Bass"}
|
---|
| 45 | , { "val": 37, "name": "Slap Bass 2", "group": "Bass"}
|
---|
| 46 | , { "val": 38, "name": "Synth Bass 1", "group": "Bass"}
|
---|
| 47 | , { "val": 39, "name": "Synth Bass 2", "group": "Bass"}
|
---|
| 48 |
|
---|
| 49 | , { "val": 40, "name": "Violin", "group": "Strings"}
|
---|
| 50 | , { "val": 41, "name": "Viola", "group": "Strings"}
|
---|
| 51 | , { "val": 42, "name": "Cello", "group": "Strings"}
|
---|
| 52 | , { "val": 43, "name": "Contrabass", "group": "Strings"}
|
---|
| 53 | , { "val": 44, "name": "Tremolo Strings", "group": "Strings"}
|
---|
| 54 | , { "val": 45, "name": "Pizzicato Strings", "group": "Strings"}
|
---|
| 55 | , { "val": 46, "name": "Orchestral Harp", "group": "Strings"}
|
---|
| 56 | , { "val": 47, "name": "Timpani", "group": "Strings"}
|
---|
| 57 |
|
---|
| 58 | , { "val": 48, "name": "String Ensemble 1", "group": "Ensemble"}
|
---|
| 59 | , { "val": 49, "name": "String Ensemble 2", "group": "Ensemble"}
|
---|
| 60 | , { "val": 50, "name": "Synth Strings 1", "group": "Ensemble"}
|
---|
| 61 | , { "val": 51, "name": "Synth Strings 2", "group": "Ensemble"}
|
---|
| 62 | , { "val": 52, "name": "Choir Aahs", "group": "Ensemble"}
|
---|
| 63 | , { "val": 53, "name": "Voice Oohs", "group": "Ensemble"}
|
---|
| 64 | , { "val": 54, "name": "Synth Choir", "group": "Ensemble"}
|
---|
| 65 | , { "val": 55, "name": "Orchestra Hit", "group": "Ensemble"}
|
---|
| 66 |
|
---|
| 67 | , { "val": 56, "name": "Trumpet", "group": "Brass"}
|
---|
| 68 | , { "val": 57, "name": "Trombone", "group": "Brass"}
|
---|
| 69 | , { "val": 58, "name": "Tuba", "group": "Brass"}
|
---|
| 70 | , { "val": 59, "name": "Muted Trumpet", "group": "Brass"}
|
---|
| 71 | , { "val": 60, "name": "French Horn", "group": "Brass"}
|
---|
| 72 | , { "val": 61, "name": "Brass Section", "group": "Brass"}
|
---|
| 73 | , { "val": 62, "name": "Synth Brass 1", "group": "Brass"}
|
---|
| 74 | , { "val": 63, "name": "Synth Brass 2", "group": "Brass"}
|
---|
| 75 |
|
---|
| 76 | , { "val": 64, "name": "Soprano Sax", "group": "Reed"}
|
---|
| 77 | , { "val": 65, "name": "Alto Sax", "group": "Reed"}
|
---|
| 78 | , { "val": 66, "name": "Tenor Sax", "group": "Reed"}
|
---|
| 79 | , { "val": 67, "name": "Baritone Sax", "group": "Reed"}
|
---|
| 80 | , { "val": 68, "name": "Oboe", "group": "Reed"}
|
---|
| 81 | , { "val": 69, "name": "English Horn", "group": "Reed"}
|
---|
| 82 | , { "val": 70, "name": "Bassoon", "group": "Reed"}
|
---|
| 83 | , { "val": 71, "name": "Clarinet", "group": "Reed"}
|
---|
| 84 |
|
---|
| 85 | , { "val": 72, "name": "Piccolo", "group": "Pipe"}
|
---|
| 86 | , { "val": 73, "name": "Flute", "group": "Pipe"}
|
---|
| 87 | , { "val": 74, "name": "Recorder", "group": "Pipe"}
|
---|
| 88 | , { "val": 75, "name": "Pan Flute", "group": "Pipe"}
|
---|
| 89 | , { "val": 76, "name": "Blown bottle", "group": "Pipe"}
|
---|
| 90 | , { "val": 77, "name": "Shakuhachi", "group": "Pipe"}
|
---|
| 91 | , { "val": 78, "name": "Whistle", "group": "Pipe"}
|
---|
| 92 | , { "val": 79, "name": "Ocarina", "group": "Pipe"}
|
---|
| 93 |
|
---|
| 94 | , { "val": 80, "name": "Lead 1 (square)", "group": "Synth Lead"}
|
---|
| 95 | , { "val": 81, "name": "Lead 2 (sawtooth)", "group": "Synth Lead"}
|
---|
| 96 | , { "val": 82, "name": "Lead 3 (calliope)", "group": "Synth Lead"}
|
---|
| 97 | , { "val": 83, "name": "Lead 4 (chiff)", "group": "Synth Lead"}
|
---|
| 98 | , { "val": 84, "name": "Lead 5 (charang)", "group": "Synth Lead"}
|
---|
| 99 | , { "val": 85, "name": "Lead 6 (voice)", "group": "Synth Lead"}
|
---|
| 100 | , { "val": 86, "name": "Lead 7 (fifths)", "group": "Synth Lead"}
|
---|
| 101 | , { "val": 87, "name": "Lead 8 (bass + lead)", "group": "Synth Lead"}
|
---|
| 102 |
|
---|
| 103 | , { "val": 88, "name": "Pad 1 (new age)", "group": "Synth Pad"}
|
---|
| 104 | , { "val": 89, "name": "Pad 2 (warm)", "group": "Synth Pad"}
|
---|
| 105 | , { "val": 90, "name": "Pad 3 (polysynth)", "group": "Synth Pad"}
|
---|
| 106 | , { "val": 91, "name": "Pad 4 (choir)", "group": "Synth Pad"}
|
---|
| 107 | , { "val": 92, "name": "Pad 5 (bowed)", "group": "Synth Pad"}
|
---|
| 108 | , { "val": 93, "name": "Pad 6 (metallic)", "group": "Synth Pad"}
|
---|
| 109 | , { "val": 94, "name": "Pad 7 (halo)", "group": "Synth Pad"}
|
---|
| 110 | , { "val": 95, "name": "Pad 8 (sweep)", "group": "Synth Pad"}
|
---|
| 111 |
|
---|
| 112 | , { "val": 96, "name": "FX 1 (rain)", "group": "Synth Effects"}
|
---|
| 113 | , { "val": 97, "name": "FX 2 (soundtrack)", "group": "Synth Effects"}
|
---|
| 114 | , { "val": 98, "name": "FX 3 (crystal)", "group": "Synth Effects"}
|
---|
| 115 | , { "val": 99, "name": "FX 4 (atmosphere)", "group": "Synth Effects"}
|
---|
| 116 | , { "val": 100, "name": "FX 5 (brightness)", "group": "Synth Effects"}
|
---|
| 117 | , { "val": 101, "name": "FX 6 (goblins)", "group": "Synth Effects"}
|
---|
| 118 | , { "val": 102, "name": "FX 7 (echoes)", "group": "Synth Effects"}
|
---|
| 119 | , { "val": 103, "name": "FX 8 (sci-fi)", "group": "Synth Effects"}
|
---|
| 120 |
|
---|
| 121 | , { "val": 104, "name": "Sitar", "group": "Ethnic"}
|
---|
| 122 | , { "val": 105, "name": "Banjo", "group": "Ethnic"}
|
---|
| 123 | , { "val": 106, "name": "Shamisen", "group": "Ethnic"}
|
---|
| 124 | , { "val": 107, "name": "Koto", "group": "Ethnic"}
|
---|
| 125 | , { "val": 108, "name": "Kalimba", "group": "Ethnic"}
|
---|
| 126 | , { "val": 109, "name": "Bagpipe", "group": "Ethnic"}
|
---|
| 127 | , { "val": 110, "name": "Fiddle", "group": "Ethnic"}
|
---|
| 128 | , { "val": 111, "name": "Shanai", "group": "Ethnic"}
|
---|
| 129 |
|
---|
| 130 | , { "val": 112, "name": "Tinkle Bell", "group": "Percussive"}
|
---|
| 131 | , { "val": 113, "name": "Agogo", "group": "Percussive"}
|
---|
| 132 | , { "val": 114, "name": "Steel Drums", "group": "Percussive"}
|
---|
| 133 | , { "val": 115, "name": "Woodblock", "group": "Percussive"}
|
---|
| 134 | , { "val": 116, "name": "Taiko Drum", "group": "Percussive"}
|
---|
| 135 | , { "val": 117, "name": "Melodic Tom", "group": "Percussive"}
|
---|
| 136 | , { "val": 118, "name": "Synth Drum", "group": "Percussive"}
|
---|
| 137 | , { "val": 119, "name": "Reverse Cymbal", "group": "Percussive"}
|
---|
| 138 |
|
---|
| 139 | , { "val": 120, "name": "Guitar Fret Noise", "group": "Sound effects"}
|
---|
| 140 | , { "val": 121, "name": "Breath Noise", "group": "Sound effects"}
|
---|
| 141 | , { "val": 122, "name": "Seashore", "group": "Sound effects"}
|
---|
| 142 | , { "val": 123, "name": "Bird Tweet", "group": "Sound effects"}
|
---|
| 143 | , { "val": 124, "name": "Telephone Ring", "group": "Sound effects"}
|
---|
| 144 | , { "val": 125, "name": "Helicopter", "group": "Sound effects"}
|
---|
| 145 | , { "val": 126, "name": "Applause", "group": "Sound effects"}
|
---|
| 146 | , { "val": 127, "name": "Gunshot", "group": "Sound effects"}
|
---|
| 147 | ];
|
---|
| 148 |
|
---|
| 149 | var GM_instrument_to_num_map = null;
|
---|
| 150 | var GM_num_to_instrument_array = null;
|
---|
| 151 |
|
---|
| 152 | //var instrument_name = "lead 1 (square)";
|
---|
[29877] | 153 | //var instrument_name = "lead 2 (sawtooth)";
|
---|
| 154 | //var instrument_name = "acoustic grand piano";
|
---|
| 155 | //var instrument_name = "distortion guitar";
|
---|
| 156 | var instrument_name = "overdriven guitar";
|
---|
[29863] | 157 |
|
---|
| 158 | window.onload = function () {
|
---|
| 159 |
|
---|
| 160 | MIDI.loadPlugin({
|
---|
| 161 | //soundfontUrl: "./soundfont/",
|
---|
| 162 | //soundfontUrl: "./FluidR3_GM/",
|
---|
| 163 | soundfontUrl: gs.variables.httpCollection + "/soundfont-fluidr3-gm/",
|
---|
| 164 |
|
---|
| 165 | //instrument: "acoustic_grand_piano",
|
---|
| 166 | //instrument: "lead_1_square",
|
---|
| 167 | instrument: instrument_name.replace(/ /g,"_").replace(/[()]/g,""),
|
---|
| 168 | //instrument: "acoustic_bass",
|
---|
| 169 | //instrument: "voice_oohs",
|
---|
| 170 | //instrument: "flute",
|
---|
| 171 | //instruments: ["acoustic_grand_piano", "church_organ", "acoustic_guitar_nylon", "distortion_guitar"],
|
---|
| 172 |
|
---|
| 173 | onprogress: function(state, progress) {
|
---|
| 174 | //console.log(state, progress);
|
---|
| 175 | },
|
---|
| 176 |
|
---|
| 177 | onsuccess: function () {
|
---|
| 178 |
|
---|
| 179 | GM_instrument_to_num_map = {};
|
---|
| 180 | GM_num_to_instrument_array = [];
|
---|
| 181 |
|
---|
| 182 | for (var i = 0; i < GM_info.length; i++) {
|
---|
| 183 | var gm_rec = GM_info[i];
|
---|
| 184 | var instrument = gm_rec.name.toLowerCase(); // .replace(/ /g,"_");
|
---|
| 185 | var number = gm_rec.val;
|
---|
| 186 |
|
---|
| 187 | GM_instrument_to_num_map[instrument] = number;
|
---|
| 188 | GM_num_to_instrument_array[number] = instrument;
|
---|
| 189 | }
|
---|
| 190 |
|
---|
| 191 | var channel = 0; // MIDI allows for 16 channels, 0-15
|
---|
| 192 | // the xylophone is represented as instrument 13 in General MIDI.
|
---|
| 193 | var instrument_num = GM_instrument_to_num_map[instrument_name];
|
---|
| 194 | console.log("*** instrument name: " + instrument_name + ", instrument num = " + instrument_num);
|
---|
| 195 |
|
---|
| 196 | // middle C (C4) according to General MIDI
|
---|
| 197 | var note = 60;
|
---|
| 198 | var velocity = 127; // how hard the note hits, from 0-127
|
---|
| 199 | var delay = 1.5; // how long to hold the note, in seconds
|
---|
| 200 |
|
---|
| 201 | // play the note
|
---|
| 202 | MIDI.programChange(0, instrument_num); // Load xylophone into Channel 0
|
---|
| 203 | //MIDI.noteOn(0, note, velocity) // Play middle C on Channel 0
|
---|
| 204 | //MIDI.noteOff(0, note, delay) // Release the middle C after 0.5 seconds
|
---|
| 205 | }
|
---|
| 206 |
|
---|
| 207 | });
|
---|
| 208 | };
|
---|
| 209 |
|
---|
| 210 | function changeGMInstrument(instrument_num)
|
---|
| 211 | {
|
---|
| 212 | // map instrument name to number ??
|
---|
| 213 |
|
---|
| 214 | MIDI.programChange(0, instrument_num);
|
---|
| 215 | }
|
---|