UNPKG

music21j-port

Version:

A toolkit for computer-aided musicology, Javascript version

328 lines (307 loc) 124 kB
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>midicube - Sequencing in Javascript (fork of MIDI.js)</title> <!-- midi.js css --> <link href="./css/MIDIPlayer.css" rel="stylesheet" type="text/css" /> <!-- midi.js package --> <script src="../build/midicube.js"></script> <!-- includes --> <script src="./inc/timer.js" type="text/javascript"></script> <script src="./inc/colorspace.js" type="text/javascript"></script> <script src="./inc/event.js" type="text/javascript"></script> </head> <body> <img src="./images/shiverMeTimbers.gif" alt="Shiver me timbers it's raining colors!" style="position: fixed; top: 30px; left: 1300px; z-index: 4"> <img src="./images/tuna.png" alt="[picture of a tuna in pirate costume]" onmousedown="e => e.preventDefault()" width="625" style="opacity: 0.95; position: fixed; top: 0; left: 765px; z-index: 2; padding: 10px; float: left; margin-right: 20px; "> <h1>midicube - Sequencing in Javascript (fork of MIDI.js).</h1> <div style="position: fixed; top: 0; left: 0; z-index: 4; overflow: hidden;" id="colors"></div> <div style="text-align: center; position: absolute; top: -70px; left: -40px; opacity: 0.9" id="colors2"></div> <div style="margin-bottom: 50px; border: 1px solid #000; background: rgba(255,255,255,0.5); border-radius: 11px; float: left; width: 800px; padding-bottom: 15px; position: relative; z-index: 2;"> <div class="player" style="height: 42px; box-shadow: 0 -1px #000; margin-bottom: 0; border-bottom-right-radius: 0; border-bottom-left-radius: 0;"> <div style="margin: 0 auto; width: 160px; float: right;"> <input type="image" alt="play" src="./images/play.png" align="absmiddle" value="pause" onclick="pausePlayStop()" id="pausePlayStop"> <input type="image" alt="stop" src="./images/stop.png" align="absmiddle" value="stop" onclick="pausePlayStop(true)"> <input type="image" alt="backward" src="./images/backward.png" align="absmiddle" value="stop" onclick="player.getNextSong(-1);"> <input type="image" alt="forwrad" src="./images/forward.png" align="absmiddle" value="stop" onclick="player.getNextSong(+1);"> </div> <div class="time-controls" style="float: left; margin: 0; position: relative; top: 5px;"> <span id="time1" class="time">0:00</span> <span id="capsule"> <span id="cursor"></span> </span> <span id="time2" class="time" style="text-align: left;">-0:00</span> </div> </div> <div id="title" style="background: rgba(255,255,0,0.5); position: relative;color: #000; z-index: -1;padding: 5px 11px 5px;">Loading API...</div> <h3 style="margin: 0">What&rsquo;s all this hubub?</h3> <p><b><a href="https://github.com/mscuthbert/midicube">midicube</a></b> ties together, and builds upon frameworks that bring MIDI to the browser. Combine it with <a href="https://github.com/gasman/jasmid">jasmid</a> to create a web-radio MIDI stream similar to this demo, or with <a href="https://github.com/mrdoob/three.js/">Three.js</a>, <a href="https://github.com/zz85/sparks.js/">Sparks.js</a>, or <a href="http://glslsandbox.com">GLSL</a> to create Audio/visual experiments. Piano/guitar simulations, Drum machines, MIDI recording, and all kinds of certified funkitude is within your grasps! <p><b><a href="https://github.com/mudcube/MIDI.js">MIDI.js</a></b> forms the basis for midicube -- thanks to <a href="https://galactic.ink">Galactic.ink</a> (mudcube) for making this</p> <p><a href="https://www.google.com/chrome">Google Chrome</a> is recommended for best listening experience, it&rsquo;s timing perfection! Firefox and Safari can both perform a bit more like the piano has been drinking, arrr.</p> <p>Carpe beerum, and <a href="https://github.com/mscuthbert/midicube">commandeer</a> yer own copy!</p> <p><a href="../README.md" target="_blank">Documentation</a> <h3>Basic Examples</h3> <ol> <li><a href="./Basic.html" target="_blank">Basic (play note)</a></li> <li><a href="./MIDIPlayer.html" target="_blank">MIDI Player</a></li> <li><a href="./WhitneyMusicBox.html" target="_blank">Whitney Music Box</a></li> </ol> <h3>Demos (based on MIDI.js)</h3> <ol> <li><a href="http://mudcu.be/piano/" target="_blank">Color Piano</a> by Michael Deal <a href="http://mudcu.be/">mudcube</a></li> <li><a href="http://www.rgba.org/r3d/3d-piano-player/" target="_blank">3D Piano Player w/ Three.js</a> by Borja Morales @reality3d</li> <li><a href="http://labs.uxmonk.com/simon-says/" target="_blank">Simon Says</a> by Daniel Christopher <a href="http://uxmonk.com/">uxmonk</a></li> <li><a href="http://labs.uxmonk.com/brite-lite/" target="_blank">Brite Lite</a> by Daniel Christopher <a href="http://uxmonk.com/">uxmonk</a></li> <li><a href="http://qiao.github.com/euphony/" target="_blank">Euphony 3D Piano</a> by Xueqiao Xu @qiao</li> <li><a href="http://my.vexflow.com/articles/53" target="_blank">VexFlow</a> by Mohit Muthanna @11111110b</li> <li><a href="http://spiral.qet.me/" target="_blank">Spiral Keyboard</a> by Patrick Snels</li> <li><a href="http://labs.uxmonk.com/simon-says/" target="_blank">Whitney Music Box</a> by <a href="http://www.krazydad.com/">KrazyDad</a></li> <li><a href="http://online-compute.rhcloud.com/ragamroll/" target="_blank">Ragamroll</a> by Mani Balasubramanian</li> </ol> <h3>Many thanks to the authors of these libraries!</h3> <ul> <li><a href="http://dev.w3.org/html5/spec/Overview.html">&lt;audio&gt;</a>:&nbsp;HTML5 specs</li> <li><a href="https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html">WebAudio API</a>:&nbsp;W3C proposal by Google</li> <li><a href="http://www.w3.org/TR/webmidi/">WebAudio API Shim</a></li> <li><a href="http://www.w3.org/TR/webmidi/">WebMIDI API & Shim</a></li> <li><a href="http://www.schillmania.com/projects/soundmanager2/">SoundManager2</a> by <a href="http://schillmania.com">Scott Schiller</a> (Flash fallback) </li> <li><a href="https://github.com/gasman/jasmid">jasmid</a>: MIDI file byte-code reader, and translates into a Javascript array.</li> <li><a href="http://blog.danguer.com/2011/10/24/base64-binary-decoding-in-javascript/">Base64binary.js</a>: Converts base64 soundfonts to binary for Web Audio API.</li> </ul> <h3>License</h3> <ul><li>Freely available via the MIT license.</li></ul> </div> <script type="text/javascript"> let Player = null; // Toggle between Pause and Play modes. const pausePlayStop = function(stop) { const d = document.getElementById("pausePlayStop"); if (!Player) { return; } if (stop) { Player.stop(); d.src = "./images/play.png"; } else if (Player.playing) { d.src = "./images/play.png"; Player.pause(true); } else { d.src = "./images/pause.png"; Player.resume(); } }; eventjs.add(window, "load", () => { let link = document.createElement("link"); link.href = "//fonts.googleapis.com/css?family=Oswald"; link.ref = "stylesheet"; link.type = "text/css"; document.body.appendChild(link); link = document.createElement("link"); link.href = "//fonts.googleapis.com/css?family=Andada"; link.ref = "stylesheet"; link.type = "text/css"; document.body.appendChild(link); // load up the piano keys const colors = document.getElementById("colors"); const colorElements = []; for (let n = 0; n < 88; n++) { const d = document.createElement("div"); d.innerHTML = MIDI.noteToKey[n + 21]; colorElements.push(d); colors.appendChild(d); } // const SketchTimer = new sketch.ui.Timer; MIDI.loadPlugin({ // apiPrecedence: ['webaudio', 'webmidi', 'audiotag'], soundfontUrl: "./soundfont/", onprogress: function(state, progress) { console.log(state, progress); SketchTimer.setValue(progress * 100); }, onerror: function(err) { console.warn(err); }, onsuccess: function() { // this is the language we are running in const title = document.getElementById("title"); title.innerHTML = "Sound being generated with " + MIDI.config.api + " " + JSON.stringify(MIDI.config.supports); // this sets up the MIDI.Player and gets things going... Player = new MIDI.Player(); player = Player; player.timeWarp = 1; // speed the song is played back player.loadFile(song[songid++ % song.length], () => { if (songid !== 1) { player.start() } // Autoplay generally disabled now. }, // onsuccess undefined, // onprogress err => { // onerror console.warn("An error occurred while loading..."); console.warn(err); } ); // // control the piano keys colors const colorMap = MIDI.Synesthesia.map(); player.addListener(data => { const pianoKey = data.note - 21; const d = colorElements[pianoKey]; if (d) { if (data.message === 144) { const map = colorMap[data.note - 27]; if (map) { d.style.background = map.hex; } d.style.color = "#fff"; } else { d.style.background = ""; d.style.color = ""; } } }); ColorSphereBackground(); MIDIPlayerPercentage(player); } }); }); const MIDIPlayerPercentage = player => { // update the timestamp const time1 = document.getElementById("time1"); const time2 = document.getElementById("time2"); const capsule = document.getElementById("capsule"); const timeCursor = document.getElementById("cursor"); eventjs.add(capsule, "drag", function(event, self) { eventjs.cancel(event); player.currentTime = (self.x) / 420 * player.endTime; if (player.currentTime < 0) { player.currentTime = 0; } if (player.currentTime > player.endTime) { player.currentTime = player.endTime; } if (self.state === "down") { player.pause(true); } else if (self.state === "up") { player.resume(); } }); const timeFormatting = n => { const minutes = n / 60 >> 0; let seconds = String(n - (minutes * 60) >> 0); if (seconds.length === 1) { seconds = "0" + seconds; } return minutes + ":" + seconds; }; player.getNextSong = n => { const id = Math.abs((songid += n) % song.length); player.loadFile(song[id], () => player.start()); // load MIDI }; player.setAnimation((data, element) => { const percent = data.now / data.end; const now = data.now >> 0; // where we are now const end = data.end >> 0; // end of song if (now >= end) { // go to next song const id = ++songid % song.length; player.loadFile(song[id], () => player.start()); // load MIDI } // display the information to the user timeCursor.style.width = (percent * 100) + "%"; time1.innerHTML = timeFormatting(now); time2.innerHTML = "-" + timeFormatting(end - now); }); }; const ColorSphereBackground = () => { const d = document; const canvas = document.createElement("canvas"); const ctx = canvas.getContext("2d"); canvas.style.cssText = "position: fixed; left: 0; top: 0; opacity: 1"; canvas.style.width = window.innerWidth + "px"; canvas.style.height = window.innerHeight + "px"; document.body.appendChild(canvas); eventjs.add(window, "resize", () => { canvas.style.width = window.innerWidth + "px"; canvas.style.height = window.innerHeight + "px"; ctx.drawImage(theSphere = sphere(percent), 0, 0) }); eventjs.add(d, "scroll", function(e) { const percent = 1 - document.body.scrollTop / document.body.scrollHeight; ctx.drawImage(theSphere = sphere(percent), 0, 0); SphereOnMouseMove(); }); let theSphere; let px = window.innerWidth / 2; let py = window.innerHeight / 2; const SphereOnMouseMove = event => { ctx.drawImage(theSphere, 0, 0); let coords = {x: px, y: py}; if (event) { coords = eventjs.proxy.getCoord(event); coords.x -= document.body.scrollLeft; coords.y -= document.body.scrollTop; px = coords.x; py = coords.y; } const x = (coords.x / window.innerWidth) * 255 - 127; // grab mouse pixel coords, center at midpoint const y = (coords.y / window.innerHeight) * 255 - 127; const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height); // get image data const data = imageData.data; for (let n = 0, length = data.length; n < length; n += 4) { data[n] = data[n] + x - y; // red (control left) data[n + 1] = data[n + 1] - x - y; // green (control right) data[n + 2] = data[n + 2] + y + y; // blue (control down) } ctx.putImageData(imageData, 0, 0); }; eventjs.add(d, "mousemove", SphereOnMouseMove); const sphere = top => { // create Sphere image, and apply to <canvas> const canvas1 = document.createElement("canvas"); const ctx = canvas1.getContext("2d"); const w = 75; const left = -20; top = top * -50; canvas.width = canvas1.width = w * window.innerWidth / window.innerHeight; canvas.height = canvas1.height = w; ctx.fillRect(0, 0, window.innerWidth, window.innerHeight); let n = 360; while (n--) { // go through hues const x = left + w; const y = top + w; const g = ctx.createLinearGradient(x, top, x, y); g.addColorStop(0, "#000"); g.addColorStop(.5, "hsl(" + ((n + 60) % 360) + ",100%,50%)"); g.addColorStop(1, "#FFF"); ctx.beginPath(); // draw triangle ctx.moveTo(x, top); ctx.lineTo(x, y); ctx.lineTo(x + 2, y); ctx.lineTo(x + 5, top); ctx.fillStyle = g; // apply gradient ctx.fill(); ctx.translate(x, y); // rotate + translate into position ctx.rotate((1 / 360) * Math.PI * 2); ctx.translate(-x, -y); } return canvas1; }; const percent = 1 - document.body.scrollTop / document.body.scrollHeight; ctx.drawImage(theSphere = sphere(percent), 0, 0) }; // Begin loading indication. let player; // MIDI files from Disklavier World let songid = 0; const song = [ // // Test 1 // 'data:audio/mid;base64,TVRoZAAAAAYAAQABAMBNVHJrAAAARwD/WAQEAhgIAP9RAwehIAD/AwlOZXcgVHJhY2sAwHMAkDxkMoA8MIEOkDxkMoA8MIEOkDxkMoA8MIEOkDxkgT+APDAB/y8A', // // Test 2 // 'data:audio/mid;base64,TVRoZAAAAAYAAQABAMBNVHJrAAAAVwD/WAQEAhgIAP9RAwehIAD/AwlOZXcgVHJhY2sAwAAAkDxkgRCAPDAwkDxkgRCAPDAwkDxkAJBAZACQQ2SBEIA8MACAQDAAgEMwMJA8ZIE/gDwwJv8vAA==', // // Test 3 // 'data:audio/mid;base64,TVRoZAAAAAYAAQABAMBNVHJrAAAAXwD/WAQEAhgIAP9RAwehIAD/AwlOZXcgVHJhY2sAwAAAkDxkgRCAPDAwkDxkgRCAPDAwkDxkAJBAZACQQ2QHkEhkgQmAPDAAgEAwAIBDMACASDAwkDxkgT+APDAm/y8A', // Sinding - Rustles of Spring Op-32 No-3 'data:audio/midi;base64,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', // Tchaikovsky - Arabian Dance 'data:audio/midi;base64,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