compoze
Version:
music writer
1 lines • 21.7 kB
JavaScript
if(MIDI===void 0)var MIDI={};if(function(){"use strict";var e={},n=0,t=function(t){n++;var r=new Audio,o=t.split(";")[0];r.id="audio",r.setAttribute("preload","auto"),r.setAttribute("audiobuffer",!0),r.addEventListener("error",function(){e[o]=!1,n--},!1),r.addEventListener("canplaythrough",function(){e[o]=!0,n--},!1),r.src="data:"+t,document.body.appendChild(r)};MIDI.audioDetect=function(r){if("undefined"==typeof Audio)return r({});var o=new Audio;if(o.canPlayType===void 0)return r(e);var a=o.canPlayType('audio/ogg; codecs="vorbis"');a="probably"===a||"maybe"===a;var i=o.canPlayType("audio/mpeg");if(i="probably"===i||"maybe"===i,!a&&!i)return r(e),void 0;a&&t("audio/ogg;base64,T2dnUwACAAAAAAAAAADqnjMlAAAAAOyyzPIBHgF2b3JiaXMAAAAAAUAfAABAHwAAQB8AAEAfAACZAU9nZ1MAAAAAAAAAAAAA6p4zJQEAAAANJGeqCj3//////////5ADdm9yYmlzLQAAAFhpcGguT3JnIGxpYlZvcmJpcyBJIDIwMTAxMTAxIChTY2hhdWZlbnVnZ2V0KQAAAAABBXZvcmJpcw9CQ1YBAAABAAxSFCElGVNKYwiVUlIpBR1jUFtHHWPUOUYhZBBTiEkZpXtPKpVYSsgRUlgpRR1TTFNJlVKWKUUdYxRTSCFT1jFloXMUS4ZJCSVsTa50FkvomWOWMUYdY85aSp1j1jFFHWNSUkmhcxg6ZiVkFDpGxehifDA6laJCKL7H3lLpLYWKW4q91xpT6y2EGEtpwQhhc+211dxKasUYY4wxxsXiUyiC0JBVAAABAABABAFCQ1YBAAoAAMJQDEVRgNCQVQBABgCAABRFcRTHcRxHkiTLAkJDVgEAQAAAAgAAKI7hKJIjSZJkWZZlWZameZaouaov+64u667t6roOhIasBACAAAAYRqF1TCqDEEPKQ4QUY9AzoxBDDEzGHGNONKQMMogzxZAyiFssLqgQBKEhKwKAKAAAwBjEGGIMOeekZFIi55iUTkoDnaPUUcoolRRLjBmlEluJMYLOUeooZZRCjKXFjFKJscRUAABAgAMAQICFUGjIigAgCgCAMAYphZRCjCnmFHOIMeUcgwwxxiBkzinoGJNOSuWck85JiRhjzjEHlXNOSuekctBJyaQTAAAQ4AAAEGAhFBqyIgCIEwAwSJKmWZomipamiaJniqrqiaKqWp5nmp5pqqpnmqpqqqrrmqrqypbnmaZnmqrqmaaqiqbquqaquq6nqrZsuqoum65q267s+rZru77uqapsm6or66bqyrrqyrbuurbtS56nqqKquq5nqq6ruq5uq65r25pqyq6purJtuq4tu7Js664s67pmqq5suqotm64s667s2rYqy7ovuq5uq7Ks+6os+75s67ru2rrwi65r66os674qy74x27bwy7ouHJMnqqqnqq7rmarrqq5r26rr2rqmmq5suq4tm6or26os67Yry7aumaosm64r26bryrIqy77vyrJui67r66Ys67oqy8Lu6roxzLat+6Lr6roqy7qvyrKuu7ru+7JuC7umqrpuyrKvm7Ks+7auC8us27oxuq7vq7It/KosC7+u+8Iy6z5jdF1fV21ZGFbZ9n3d95Vj1nVhWW1b+V1bZ7y+bgy7bvzKrQvLstq2scy6rSyvrxvDLux8W/iVmqratum6um7Ksq/Lui60dd1XRtf1fdW2fV+VZd+3hV9pG8OwjK6r+6os68Jry8ov67qw7MIvLKttK7+r68ow27qw3L6wLL/uC8uq277v6rrStXVluX2fsSu38QsAABhwAAAIMKEMFBqyIgCIEwBAEHIOKQahYgpCCKGkEEIqFWNSMuakZM5JKaWUFEpJrWJMSuaclMwxKaGUlkopqYRSWiqlxBRKaS2l1mJKqcVQSmulpNZKSa2llGJMrcUYMSYlc05K5pyUklJrJZXWMucoZQ5K6iCklEoqraTUYuacpA46Kx2E1EoqMZWUYgupxFZKaq2kFGMrMdXUWo4hpRhLSrGVlFptMdXWWqs1YkxK5pyUzDkqJaXWSiqtZc5J6iC01DkoqaTUYiopxco5SR2ElDLIqJSUWiupxBJSia20FGMpqcXUYq4pxRZDSS2WlFosqcTWYoy1tVRTJ6XFklKMJZUYW6y5ttZqDKXEVkqLsaSUW2sx1xZjjqGkFksrsZWUWmy15dhayzW1VGNKrdYWY40x5ZRrrT2n1mJNMdXaWqy51ZZbzLXnTkprpZQWS0oxttZijTHmHEppraQUWykpxtZara3FXEMpsZXSWiypxNhirLXFVmNqrcYWW62ltVprrb3GVlsurdXcYqw9tZRrrLXmWFNtBQAADDgAAASYUAYKDVkJAEQBAADGMMYYhEYpx5yT0ijlnHNSKucghJBS5hyEEFLKnINQSkuZcxBKSSmUklJqrYVSUmqttQIAAAocAAACbNCUWByg0JCVAEAqAIDBcTRNFFXVdX1fsSxRVFXXlW3jVyxNFFVVdm1b+DVRVFXXtW3bFn5NFFVVdmXZtoWiqrqybduybgvDqKqua9uybeuorqvbuq3bui9UXVmWbVu3dR3XtnXd9nVd+Bmzbeu2buu+8CMMR9/4IeTj+3RCCAAAT3AAACqwYXWEk6KxwEJDVgIAGQAAgDFKGYUYM0gxphhjTDHGmAAAgAEHAIAAE8pAoSErAoAoAADAOeecc84555xzzjnnnHPOOeecc44xxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY0wAwE6EA8BOhIVQaMhKACAcAABACCEpKaWUUkoRU85BSSmllFKqFIOMSkoppZRSpBR1lFJKKaWUIqWgpJJSSimllElJKaWUUkoppYw6SimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaVUSimllFJKKaWUUkoppRQAYPLgAACVYOMMK0lnhaPBhYasBAByAwAAhRiDEEJpraRUUkolVc5BKCWUlEpKKZWUUqqYgxBKKqmlklJKKbXSQSihlFBKKSWUUkooJYQQSgmhlFRCK6mEUkoHoYQSQimhhFRKKSWUzkEoIYUOQkmllNRCSB10VFIpIZVSSiklpZQ6CKGUklJLLZVSWkqpdBJSKamV1FJqqbWSUgmhpFZKSSWl0lpJJbUSSkklpZRSSymFVFJJJYSSUioltZZaSqm11lJIqZWUUkqppdRSSiWlkEpKqZSSUmollZRSaiGVlEpJKaTUSimlpFRCSamlUlpKLbWUSkmptFRSSaWUlEpJKaVSSksppRJKSqmllFpJKYWSUkoplZJSSyW1VEoKJaWUUkmptJRSSymVklIBAEAHDgAAAUZUWoidZlx5BI4oZJiAAgAAQABAgAkgMEBQMApBgDACAQAAAADAAAAfAABHARAR0ZzBAUKCwgJDg8MDAAAAAAAAAAAAAACAT2dnUwAEAAAAAAAAAADqnjMlAgAAADzQPmcBAQA="),i&&t("audio/mpeg;base64,/+MYxAAAAANIAUAAAASEEB/jwOFM/0MM/90b/+RhST//w4NFwOjf///PZu////9lns5GFDv//l9GlUIEEIAAAgIg8Ir/JGq3/+MYxDsLIj5QMYcoAP0dv9HIjUcH//yYSg+CIbkGP//8w0bLVjUP///3Z0x5QCAv/yLjwtGKTEFNRTMuOTeqqqqqqqqqqqqq/+MYxEkNmdJkUYc4AKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq");var u=(new Date).getTime(),s=window.setInterval(function(){var t=(new Date).getTime(),o=t-u>5e3;(!n||o)&&(window.clearInterval(s),r(e))},1)}}(),MIDI===void 0)var MIDI={};if(MIDI.Soundfont===void 0&&(MIDI.Soundfont={}),function(){"use strict";var e=!1;MIDI.loadPlugin=function(r){"function"==typeof r&&(r={callback:r});var o=r.instruments||r.instrument||"acoustic_grand_piano";"object"!=typeof o&&(o=[o]);for(var a=0;o.length>a;a++){var i=o[a];"number"==typeof i&&(o[a]=MIDI.GeneralMIDI.byId[i])}MIDI.soundfontUrl=r.soundfontUrl||MIDI.soundfontUrl||"./soundfont/",MIDI.audioDetect(function(a){var i="";if(i=t[r.api]?r.api:t[window.location.hash.substr(1)]?window.location.hash.substr(1):e&&navigator.requestMIDIAccess?"webmidi":window.webkitAudioContext||window.AudioContext?"webaudio":window.Audio?"audiotag":"flash",n[i]){if(r.targetFormat)var u=r.targetFormat;else var u=a["audio/ogg"]?"ogg":"mp3";MIDI.lang=i,MIDI.supports=a,n[i](u,o,r)}})};var n={};n.webmidi=function(e,n,t){MIDI.loader&&MIDI.loader.message("Web MIDI API..."),MIDI.WebMIDI.connect(t)},n.flash=function(e,n,t){MIDI.loader&&MIDI.loader.message("Flash API..."),DOMLoader.script.add({src:t.soundManagerUrl||"./inc/SoundManager2/script/soundmanager2.js",verify:"SoundManager",callback:function(){MIDI.Flash.connect(n,t)}})},n.audiotag=function(e,n,t){MIDI.loader&&MIDI.loader.message("HTML5 Audio API...");var i=a({items:n,getNext:function(n){DOMLoader.sendRequest({url:MIDI.soundfontUrl+n+"-"+e+".js",onprogress:o,onload:function(e){r(e.responseText),MIDI.loader&&MIDI.loader.update(null,"Downloading",100),i.getNext()}})},onComplete:function(){MIDI.AudioTag.connect(t)}})},n.webaudio=function(e,n,t){MIDI.loader&&MIDI.loader.message("Web Audio API...");var i=a({items:n,getNext:function(n){DOMLoader.sendRequest({url:MIDI.soundfontUrl+n+"-"+e+".js",onprogress:o,onload:function(e){r(e.responseText),MIDI.loader&&MIDI.loader.update(null,"Downloading...",100),i.getNext()}})},onComplete:function(){MIDI.WebAudio.connect(t)}})};var t={webmidi:!0,webaudio:!0,audiotag:!0,flash:!0},r=function(e){var n=document.createElement("script");n.language="javascript",n.type="text/javascript",n.text=e,document.body.appendChild(n)},o=function(e){this.totalSize||(this.totalSize=this.getResponseHeader("Content-Length-Raw")?parseInt(this.getResponseHeader("Content-Length-Raw")):e.total);var n=this.totalSize?Math.round(100*(e.loaded/this.totalSize)):"";MIDI.loader&&MIDI.loader.update(null,"Downloading...",n)},a=function(e){var n={};n.queue=[];for(var t in e.items)e.items.hasOwnProperty(t)&&n.queue.push(e.items[t]);return n.getNext=function(){return n.queue.length?(e.getNext(n.queue.shift()),void 0):e.onComplete()},setTimeout(n.getNext,1),n}}(),MIDI===void 0)var MIDI={};if(function(){"use strict";var e=function(e){MIDI.api=e.api,MIDI.setVolume=e.setVolume,MIDI.programChange=e.programChange,MIDI.noteOn=e.noteOn,MIDI.noteOff=e.noteOff,MIDI.chordOn=e.chordOn,MIDI.chordOff=e.chordOff,MIDI.stopAllNotes=e.stopAllNotes,MIDI.getInput=e.getInput,MIDI.getOutputs=e.getOutputs};(function(){var n=null,t=null,r=MIDI.WebMIDI={api:"webmidi"};r.setVolume=function(e,n){t.send([176+e,7,n])},r.programChange=function(e,n){t.send([192+e,n])},r.noteOn=function(e,n,r,o){t.send([144+e,n,r],1e3*o)},r.noteOff=function(e,n,r){t.send([128+e,n,0],1e3*r)},r.chordOn=function(e,n,r,o){for(var a=0;n.length>a;a++){var i=n[a];t.send([144+e,i,r],1e3*o)}},r.chordOff=function(e,n,r){for(var o=0;n.length>o;o++){var a=n[o];t.send([128+e,a,0],1e3*r)}},r.stopAllNotes=function(){for(var e=0;16>e;e++)t.send([176+e,123,0])},r.getInput=function(){return n.getInputs()},r.getOutputs=function(){return n.getOutputs()},r.connect=function(o){e(r),navigator.requestMIDIAccess().then(function(e){n=e,t=n.outputs()[0],o.callback&&o.callback()},function(){o.api=window.AudioContext||window.webkitAudioContext?"webaudio":window.Audio?"audiotag":"flash",MIDI.loadPlugin(o)})}})(),(window.AudioContext||window.webkitAudioContext)&&function(){var n,t=window.AudioContext||window.webkitAudioContext,r=MIDI.WebAudio={api:"webaudio"},o={},a=127,i={},u=function(e,t,r,o,a){var u=MIDI.GeneralMIDI.byName[e],s=u.number,c=t[r];if(!MIDI.Soundfont[e][c])return a(e);var l=MIDI.Soundfont[e][c].split(",")[1],d=Base64Binary.decodeArrayBuffer(l);n.decodeAudioData(d,function(n){for(var l=c;3>l.length;)l+=" ";if(MIDI.loader!==void 0&&MIDI.loader.update(null,u.instrument+"<br>Processing: "+(100*(r/87)>>0)+"%<br>"+l),n.id=c,o[r]=n,o.length===t.length){for(;o.length;)if(n=o.pop()){var d=MIDI.keyToNote[n.id];i[s+""+d]=n}a(e)}})};r.setVolume=function(e,n){a=n},r.programChange=function(e,n){MIDI.channels[e].instrument=n},r.noteOn=function(e,t,r,u){if(MIDI.channels[e]){var s=MIDI.channels[e].instrument;if(i[s+""+t]){n.currentTime>u&&(u+=n.currentTime);var c=n.createBufferSource();o[e+""+t]=c,c.buffer=i[s+""+t],c.connect(n.destination),c.gainNode=n.createGain?n.createGain():n.createGainNode();var l=2*r/127*(a/127)-1;return c.gainNode.connect(n.destination),c.gainNode.gain.value=Math.max(-1,l),c.connect(c.gainNode),c.noteOn?c.noteOn(u||0):c.start(u||0),c}}},r.noteOff=function(e,t,r){r=r||0,n.currentTime>r&&(r+=n.currentTime);var a=o[e+""+t];if(a){if(a.gainNode){var i=a.gainNode.gain;i.linearRampToValueAtTime(i.value,r),i.linearRampToValueAtTime(-1,r+.2)}a.noteOff?a.noteOff(r+.3):a.stop(r+.3),delete o[e+""+t]}},r.chordOn=function(e,n,t,o){for(var a,i={},u=0,s=n.length;s>u;u++)i[a=n[u]]=r.noteOn(e,a,t,o);return i},r.chordOff=function(e,n,t){for(var o,a={},i=0,u=n.length;u>i;i++)a[o=n[i]]=r.noteOff(e,o,t);return a},r.stopAllNotes=function(){for(var e in o){var t=0;n.currentTime>t&&(t+=n.currentTime),o[e].gain.linearRampToValueAtTime(1,t),o[e].gain.linearRampToValueAtTime(0,t+.2),o[e].noteOff(t+.3),delete o[e]}},r.connect=function(o){e(r),MIDI.Player.ctx=n=new t;var a=[],i=MIDI.keyToNote;for(var s in i)a.push(s);var c=[],l={},d=function(e){delete l[e];for(var n in l)break;n||o.callback()};for(var A in MIDI.Soundfont){l[A]=!0;for(var I=0;a.length>I;I++)u(A,a,I,c,d)}}}(),window.Audio&&function(){for(var n=MIDI.AudioTag={api:"audiotag"},t={},r=127,o=-1,a=[],i=[],u={},s=0;12>s;s++)a[s]=new Audio;var c=function(e,n){if(MIDI.channels[e]){var t=MIDI.channels[e].instrument,s=MIDI.GeneralMIDI.byId[t].id,n=u[n];if(n){var c=s+""+n.id,l=(o+1)%a.length,d=a[l];i[l]=c,d.src=MIDI.Soundfont[s][n.id],d.volume=r/127,d.play(),o=l}}},l=function(e,n){if(MIDI.channels[e]){var t=MIDI.channels[e].instrument,r=MIDI.GeneralMIDI.byId[t].id,n=u[n];if(n)for(var s=r+""+n.id,c=0;a.length>c;c++){var l=(c+o+1)%a.length,d=i[l];if(d&&d==s)return a[l].pause(),i[l]=null,void 0}}};n.programChange=function(e,n){MIDI.channels[e].instrument=n},n.setVolume=function(e,n){r=n},n.noteOn=function(e,n,r,o){var a=t[n];if(u[a])return o?window.setTimeout(function(){c(e,a)},1e3*o):(c(e,a),void 0)},n.noteOff=function(e,n,r){var o=t[n];if(u[o])return r?setTimeout(function(){l(e,o)},1e3*r):(l(e,o),void 0)},n.chordOn=function(e,n,r,o){for(var a=0;n.length>a;a++){var i=n[a],s=t[i];if(u[s]){if(o)return window.setTimeout(function(){c(e,s)},1e3*o);c(e,s)}}},n.chordOff=function(e,n,r){for(var o=0;n.length>o;o++){var a=n[o],i=t[a];if(u[i]){if(r)return window.setTimeout(function(){l(e,i)},1e3*r);l(e,i)}}},n.stopAllNotes=function(){for(var e=0,n=a.length;n>e;e++)a[e].pause()},n.connect=function(r){for(var o in MIDI.keyToNote)t[MIDI.keyToNote[o]]=o,u[o]={id:o};e(n),r.callback&&r.callback()}}(),function(){var n=MIDI.Flash={api:"flash"},t={},r={};n.programChange=function(e,n){MIDI.channels[e].instrument=n},n.setVolume=function(){},n.noteOn=function(e,n,o,a){if(MIDI.channels[e]){var i=MIDI.channels[e].instrument,u=MIDI.GeneralMIDI.byId[i].number;if(n=u+""+t[n],r[n])return a?window.setTimeout(function(){r[n].play({volume:2*o})},1e3*a):(r[n].play({volume:2*o}),void 0)}},n.noteOff=function(){},n.chordOn=function(e,n,o){if(MIDI.channels[e]){var a=MIDI.channels[e].instrument,i=MIDI.GeneralMIDI.byId[a].number;for(var u in n){var s=n[u],c=i+""+t[s];r[c]&&r[c].play({volume:2*o})}}},n.chordOff=function(){},n.stopAllNotes=function(){},n.connect=function(o,a){soundManager.flashVersion=9,soundManager.useHTML5Audio=!0,soundManager.url=a.soundManagerSwfUrl||"../inc/SoundManager2/swf/",soundManager.useHighPerformance=!0,soundManager.wmode="transparent",soundManager.flashPollingInterval=1,soundManager.debugMode=!1,soundManager.onload=function(){for(var i=function(e,n,t){var o=MIDI.GeneralMIDI.byName[e],a=o.number;r[a+""+n]=soundManager.createSound({id:n,url:MIDI.soundfontUrl+e+"-mp3/"+n+".mp3",multiShot:!0,autoLoad:!0,onload:t})},u=[],s=88,c=o.length*s,l=0;o.length>l;l++)for(var d=o[l],A=function(){u.push(this.sID),void 0!==MIDI.loader&&MIDI.loader.update(null,"Processing: "+this.sID)},I=0;s>I;I++){var f=t[I+21];i(d,f,A)}e(n);var p=window.setInterval(function(){c>u.length||(window.clearInterval(p),a.callback&&a.callback())},25)},soundManager.onerror=function(){};for(var i in MIDI.keyToNote)t[MIDI.keyToNote[i]]=i}}(),MIDI.GeneralMIDI=function(e){var n=function(e){return e.replace(/[^a-z0-9 ]/gi,"").replace(/[ ]/g,"_").toLowerCase()},t={byName:{},byId:{},byCategory:{}};for(var r in e)for(var o=e[r],a=0,i=o.length;i>a;a++){var u=o[a];if(u){var s=parseInt(u.substr(0,u.indexOf(" ")),10);u=u.replace(s+" ",""),t.byId[--s]=t.byName[n(u)]=t.byCategory[n(r)]={id:n(u),instrument:u,number:s,category:r}}}return t}({Piano:["1 Acoustic Grand Piano","2 Bright Acoustic Piano","3 Electric Grand Piano","4 Honky-tonk Piano","5 Electric Piano 1","6 Electric Piano 2","7 Harpsichord","8 Clavinet"],"Chromatic Percussion":["9 Celesta","10 Glockenspiel","11 Music Box","12 Vibraphone","13 Marimba","14 Xylophone","15 Tubular Bells","16 Dulcimer"],Organ:["17 Drawbar Organ","18 Percussive Organ","19 Rock Organ","20 Church Organ","21 Reed Organ","22 Accordion","23 Harmonica","24 Tango Accordion"],Guitar:["25 Acoustic Guitar (nylon)","26 Acoustic Guitar (steel)","27 Electric Guitar (jazz)","28 Electric Guitar (clean)","29 Electric Guitar (muted)","30 Overdriven Guitar","31 Distortion Guitar","32 Guitar Harmonics"],Bass:["33 Acoustic Bass","34 Electric Bass (finger)","35 Electric Bass (pick)","36 Fretless Bass","37 Slap Bass 1","38 Slap Bass 2","39 Synth Bass 1","40 Synth Bass 2"],Strings:["41 Violin","42 Viola","43 Cello","44 Contrabass","45 Tremolo Strings","46 Pizzicato Strings","47 Orchestral Harp","48 Timpani"],Ensemble:["49 String Ensemble 1","50 String Ensemble 2","51 Synth Strings 1","52 Synth Strings 2","53 Choir Aahs","54 Voice Oohs","55 Synth Choir","56 Orchestra Hit"],Brass:["57 Trumpet","58 Trombone","59 Tuba","60 Muted Trumpet","61 French Horn","62 Brass Section","63 Synth Brass 1","64 Synth Brass 2"],Reed:["65 Soprano Sax","66 Alto Sax","67 Tenor Sax","68 Baritone Sax","69 Oboe","70 English Horn","71 Bassoon","72 Clarinet"],Pipe:["73 Piccolo","74 Flute","75 Recorder","76 Pan Flute","77 Blown Bottle","78 Shakuhachi","79 Whistle","80 Ocarina"],"Synth Lead":["81 Lead 1 (square)","82 Lead 2 (sawtooth)","83 Lead 3 (calliope)","84 Lead 4 (chiff)","85 Lead 5 (charang)","86 Lead 6 (voice)","87 Lead 7 (fifths)","88 Lead 8 (bass + lead)"],"Synth Pad":["89 Pad 1 (new age)","90 Pad 2 (warm)","91 Pad 3 (polysynth)","92 Pad 4 (choir)","93 Pad 5 (bowed)","94 Pad 6 (metallic)","95 Pad 7 (halo)","96 Pad 8 (sweep)"],"Synth Effects":["97 FX 1 (rain)","98 FX 2 (soundtrack)","99 FX 3 (crystal)","100 FX 4 (atmosphere)","101 FX 5 (brightness)","102 FX 6 (goblins)","103 FX 7 (echoes)","104 FX 8 (sci-fi)"],Ethnic:["105 Sitar","106 Banjo","107 Shamisen","108 Koto","109 Kalimba","110 Bagpipe","111 Fiddle","112 Shanai"],Percussive:["113 Tinkle Bell","114 Agogo","115 Steel Drums","116 Woodblock","117 Taiko Drum","118 Melodic Tom","119 Synth Drum"],"Sound effects":["120 Reverse Cymbal","121 Guitar Fret Noise","122 Breath Noise","123 Seashore","124 Bird Tweet","125 Telephone Ring","126 Helicopter","127 Applause","128 Gunshot"]}),MIDI.channels=function(){for(var e={},n=0;16>n;n++)e[n]={instrument:0,mute:!1,mono:!1,omni:!1,solo:!1};return e}(),MIDI.pianoKeyOffset=21,MIDI.keyToNote={},MIDI.noteToKey={},function(){for(var e=21,n=108,t=["C","Db","D","Eb","E","F","Gb","G","Ab","A","Bb","B"],r=e;n>=r;r++){var o=(r-12)/12>>0,a=t[r%12]+o;MIDI.keyToNote[a]=r,MIDI.noteToKey[r]=a}}()}(),MIDI===void 0)var MIDI={};if(MIDI.Player===void 0&&(MIDI.Player={}),function(){"use strict";var e=MIDI.Player;e.callback=void 0,e.currentTime=0,e.endTime=0,e.restart=0,e.playing=!1,e.timeWarp=1,e.start=e.resume=function(){-1>e.currentTime&&(e.currentTime=-1),c(e.currentTime)},e.pause=function(){var n=e.restart;l(),e.restart=n},e.stop=function(){l(),e.restart=0,e.currentTime=0},e.addListener=function(e){a=e},e.removeListener=function(){a=void 0},e.clearAnimation=function(){e.interval&&window.clearInterval(e.interval)},e.setAnimation=function(n){var t="function"==typeof n?n:n.callback,r=n.interval||30,a=0,i=0,u=0;e.clearAnimation(),e.interval=window.setInterval(function(){if(0!==e.endTime){e.playing?(a=u===e.currentTime?i-(new Date).getTime():0,a=0===e.currentTime?0:e.currentTime-a,u!==e.currentTime&&(i=(new Date).getTime(),u=e.currentTime)):a=e.currentTime;var n=e.endTime,r=a/1e3,s=r/60,c=r-60*s,l=60*s+c,d=n/1e3;-1>d-l||t({now:l,end:d,events:o})}},r)},e.loadMidiFile=function(){e.replayer=new Replayer(MidiFile(e.currentData),e.timeWarp),e.data=e.replayer.getData(),e.endTime=s()},e.loadFile=function(n,t){if(e.stop(),-1!==n.indexOf("base64,")){var r=window.atob(n.split(",")[1]);return e.currentData=r,e.loadMidiFile(),t&&t(r),void 0}var o=new XMLHttpRequest;o.open("GET",n),o.overrideMimeType("text/plain; charset=x-user-defined"),o.onreadystatechange=function(){if(4===this.readyState&&200===this.status){for(var n=this.responseText||"",r=[],o=n.length,a=String.fromCharCode,i=0;o>i;i++)r[i]=a(255&n.charCodeAt(i));var u=r.join("");e.currentData=u,e.loadMidiFile(),t&&t(u)}},o.send()};var n,t=[],r=0,o={},a=void 0,i=function(t,r,i,u,s,l){var d=window.setTimeout(function(){var u={channel:t,note:r,now:i,end:e.endTime,message:s,velocity:l};128===s?delete o[r]:o[r]=u,a&&a(u),e.currentTime=i,e.currentTime===n&&e.endTime>n&&c(n,!0)},i-u);return d},u=function(){return"WebAudioAPI"===MIDI.lang?MIDI.Player.ctx:(e.ctx||(e.ctx={currentTime:0}),e.ctx)},s=function(){for(var n=e.data,t=n.length,r=.5,o=0;t>o;o++)r+=n[o][1];return r},c=function(o,a){if(e.replayer){a||(o===void 0&&(o=e.restart),e.playing&&l(),e.playing=!0,e.data=e.replayer.getData(),e.endTime=s());var c,d=0,A=0,I=e.data,f=u(),p=I.length;n=.5,r=f.currentTime;for(var m=0;p>m&&100>A;m++)if(n+=I[m][1],o>n)d=n;else{o=n-d;var q=I[m][0].event;if("channel"===q.type){var M=q.channel;switch(q.subtype){case"noteOn":if(MIDI.channels[M].mute)break;c=q.noteNumber-(e.MIDIOffset||0),t.push({event:q,source:MIDI.noteOn(M,q.noteNumber,q.velocity,o/1e3+f.currentTime),interval:i(M,c,n,d,144,q.velocity)}),A++;break;case"noteOff":if(MIDI.channels[M].mute)break;c=q.noteNumber-(e.MIDIOffset||0),t.push({event:q,source:MIDI.noteOff(M,q.noteNumber,o/1e3+f.currentTime),interval:i(M,c,n,d,128)});break;default:}}}}},l=function(){var n=u();for(e.playing=!1,e.restart+=1e3*(n.currentTime-r);t.length;){var i=t.pop();window.clearInterval(i.interval),i.source&&("number"==typeof i.source?window.clearTimeout(i.source):i.source.disconnect(0))}for(var s in o){var i=o[s];144===o[s].message&&a&&a({channel:i.channel,note:i.note,now:i.now,end:i.end,message:128,velocity:i.velocity})}o={}}}(),DOMLoader===void 0)var DOMLoader={};if(XMLHttpRequest===void 0){var XMLHttpRequest;(function(){for(var e=[function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml3.XMLHTTP")},function(){return new ActiveXObject("Microsoft.XMLHTTP")}],n=0;e.length>n;n++){try{e[n]()}catch(t){continue}break}XMLHttpRequest=e[n]})()}if((new XMLHttpRequest).responseText===void 0){var IEBinaryToArray_ByteStr_Script="<!-- IEBinaryToArray_ByteStr -->\r\n<script type='text/vbscript'>\r\nFunction IEBinaryToArray_ByteStr(Binary)\r\n IEBinaryToArray_ByteStr = CStr(Binary)\r\nEnd Function\r\nFunction IEBinaryToArray_ByteStr_Last(Binary)\r\n Dim lastIndex\r\n lastIndex = LenB(Binary)\r\n if lastIndex mod 2 Then\r\n IEBinaryToArray_ByteStr_Last = Chr( AscB( MidB( Binary, lastIndex, 1 ) ) )\r\n Else\r\n IEBinaryToArray_ByteStr_Last = \"\"\r\n End If\r\nEnd Function\r\n</script>\r\n";document.write(IEBinaryToArray_ByteStr_Script),DOMLoader.sendRequest=function(e){function n(e){for(var n={},t=0;256>t;t++)for(var r=0;256>r;r++)n[String.fromCharCode(t+256*r)]=String.fromCharCode(t)+String.fromCharCode(r);var o=IEBinaryToArray_ByteStr(e),a=IEBinaryToArray_ByteStr_Last(e);return o.replace(/[\s\S]/g,function(e){return n[e]})+a}var t=XMLHttpRequest();return t.open("GET",e.url,!0),e.responseType&&(t.responseType=e.responseType),e.onerror&&(t.onerror=e.onerror),e.onprogress&&(t.onprogress=e.onprogress),t.onreadystatechange=function(){4===t.readyState&&(200===t.status?t.responseText=n(t.responseBody):t=!1,e.onload&&e.onload(t))},t.setRequestHeader("Accept-Charset","x-user-defined"),t.send(null),t}}else DOMLoader.sendRequest=function(e){var n=new XMLHttpRequest;return n.open(e.data?"POST":"GET",e.url,!0),n.overrideMimeType&&n.overrideMimeType("text/plain; charset=x-user-defined"),e.data&&n.setRequestHeader("Content-type","application/x-www-form-urlencoded"),e.responseType&&(n.responseType=e.responseType),e.onerror&&(n.onerror=e.onerror),e.onprogress&&(n.onprogress=e.onprogress),n.onreadystatechange=function(t){if(4===n.readyState){if(200!==n.status&&304!=n.status)return e.onerror&&e.onerror(t,!1),void 0;e.onload&&e.onload(n)}},n.send(e.data),n};