source: main/trunk/model-sites-dev/respooled/collect/popup-video-respooled/js/respool-midi.js@ 29863

Last change on this file since 29863 was 29863, checked in by davidb, 9 years ago

First cut at respooled site/collection

File size: 9.9 KB
Line 
1
2var 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
149var GM_instrument_to_num_map = null;
150var GM_num_to_instrument_array = null;
151
152//var instrument_name = "lead 1 (square)";
153var instrument_name = "lead 2 (sawtooth)";
154
155window.onload = function () {
156
157 MIDI.loadPlugin({
158 //soundfontUrl: "./soundfont/",
159 //soundfontUrl: "./FluidR3_GM/",
160 soundfontUrl: gs.variables.httpCollection + "/soundfont-fluidr3-gm/",
161
162 //instrument: "acoustic_grand_piano",
163 //instrument: "lead_1_square",
164 instrument: instrument_name.replace(/ /g,"_").replace(/[()]/g,""),
165 //instrument: "acoustic_bass",
166 //instrument: "voice_oohs",
167 //instrument: "flute",
168 //instruments: ["acoustic_grand_piano", "church_organ", "acoustic_guitar_nylon", "distortion_guitar"],
169
170 onprogress: function(state, progress) {
171 //console.log(state, progress);
172 },
173
174 onsuccess: function () {
175
176 GM_instrument_to_num_map = {};
177 GM_num_to_instrument_array = [];
178
179 for (var i = 0; i < GM_info.length; i++) {
180 var gm_rec = GM_info[i];
181 var instrument = gm_rec.name.toLowerCase(); // .replace(/ /g,"_");
182 var number = gm_rec.val;
183
184 GM_instrument_to_num_map[instrument] = number;
185 GM_num_to_instrument_array[number] = instrument;
186 }
187
188 var channel = 0; // MIDI allows for 16 channels, 0-15
189 // the xylophone is represented as instrument 13 in General MIDI.
190 var instrument_num = GM_instrument_to_num_map[instrument_name];
191 console.log("*** instrument name: " + instrument_name + ", instrument num = " + instrument_num);
192
193 // middle C (C4) according to General MIDI
194 var note = 60;
195 var velocity = 127; // how hard the note hits, from 0-127
196 var delay = 1.5; // how long to hold the note, in seconds
197
198 // play the note
199 MIDI.programChange(0, instrument_num); // Load xylophone into Channel 0
200 //MIDI.noteOn(0, note, velocity) // Play middle C on Channel 0
201 //MIDI.noteOff(0, note, delay) // Release the middle C after 0.5 seconds
202 }
203
204 });
205};
206
207function changeGMInstrument(instrument_num)
208{
209 // map instrument name to number ??
210
211 MIDI.programChange(0, instrument_num);
212}
Note: See TracBrowser for help on using the repository browser.