summaryrefslogtreecommitdiff
path: root/index.html
diff options
context:
space:
mode:
authorpepper <pepper@chimecrisis.com>2014-05-15 19:06:59 -0700
committerpepper <pepper@chimecrisis.com>2014-05-15 19:06:59 -0700
commit93e654a02cef3d5913a2088d4c397418dc0cee2f (patch)
treebfad328857e5bcc10906a594470ccc12875d936b /index.html
doing this
Diffstat (limited to 'index.html')
-rw-r--r--index.html74
1 files changed, 74 insertions, 0 deletions
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..c14deb6
--- /dev/null
+++ b/index.html
@@ -0,0 +1,74 @@
+<!DOCTYPE HTML>
+<html>
+ <head>
+ <script src="stream.js"></script>
+ <script src="midifile.js"></script>
+ <script src="replayer.js"></script>
+ <script src="synth.js"></script>
+ <script src="audio.js"></script>
+ <script>
+ function loadRemote(path, callback) {
+ var fetch = new XMLHttpRequest();
+ fetch.open('GET', path);
+ fetch.overrideMimeType("text/plain; charset=x-user-defined");
+ fetch.onreadystatechange = function() {
+ if(this.readyState == 4 && this.status == 200) {
+ /* munge response into a binary string */
+ var t = this.responseText || "" ;
+ var ff = [];
+ var mx = t.length;
+ var scc= String.fromCharCode;
+ for (var z = 0; z < mx; z++) {
+ ff[z] = scc(t.charCodeAt(z) & 255);
+ }
+ callback(ff.join(""));
+ }
+ }
+ fetch.send();
+ }
+
+ function play(file) {
+ loadRemote(file, function(data) {
+ midiFile = MidiFile(data);
+ synth = Synth(44100);
+ replayer = Replayer(midiFile, synth);
+ audio = AudioPlayer(replayer);
+ })
+ }
+
+ if(FileReader){
+ function cancelEvent(e){
+ e.stopPropagation();
+ e.preventDefault();
+ }
+ document.addEventListener('dragenter', cancelEvent, false);
+ document.addEventListener('dragover', cancelEvent, false);
+ document.addEventListener('drop', function(e){
+ cancelEvent(e);
+ for(var i=0;i<e.dataTransfer.files.length;++i){
+ var
+ file = e.dataTransfer.files[i]
+ ;
+ if(file.type != 'audio/midi'){
+ continue;
+ }
+ var
+ reader = new FileReader()
+ ;
+ reader.onload = function(e){
+ midiFile = MidiFile(e.target.result);
+ synth = Synth(44100);
+ replayer = Replayer(midiFile, synth);
+ audio = AudioPlayer(replayer);
+ };
+ reader.readAsBinaryString(file);
+ }
+ }, false);
+ }
+ </script>
+ </head>
+ <body>
+ <a href="javascript:void(play('minute_waltz.mid'))">Chopin - Waltz Op.61 (Minute Waltz)</a> |
+ <a href="javascript:void(play('rachmaninov3.mid'))">Rachmaninov - Piano Concerto No.3 (First movement)</a>
+ </body>
+</html>