Math Music

HTML

<p id="progress">-1</p>
<button id="playBtn">Play</button>
<button id="pauseBtn">Pause</button>

JavaScript

// Based on http://wonderfl.net/c/pP26

window.AudioContext = window.webkitAudioContext;

var context   = new AudioContext();
var node      = context.createJavaScriptNode(4096, 1, 1);
var p         = -1;

// Audio callback event to fill buffer
node.onaudioprocess = function (e) {
    var data = e.outputBuffer.getChannelData(0);
    var t, tt, val;
    for (var i = 0; i < data.length; i++, p++) {
      t = p * 8 / 22;
      tt = t * ((t >> 12 | t >> 8) & 63 & t >> 4);
      //tt = (t * (t >> 8 * (t >> 15 | t >> 8) & (20 | (t >> 19) * 5 >> t | t >> 3)));
      //tt = ((-t & 4095) * (255 & t * (t & t >> 13)) >> 13) + (127 & t * (234 & t >> 8 & t >> 3) >> ( 3 & t >> 14));
      data[i] = (tt & 0xFF) / 0xFF;
    }
    progress.textContent = p;
};

function play() {
    node.connect(context.destination);
}

function pause() {
    node.disconnect();
}

var playBtn = document.getElementById('playBtn');
var pauseBtn = document.getElementById('pauseBtn');
var progress = document.getElementById('progress');

playBtn.onclick = play;
pauseBtn.onclick = pause;