var context = new webkitAudioContext();
var node = context.createJavaScriptNode(1024, 1, 1);
var p = 0;
node.onaudioprocess = function (e) {
var l = e.outputBuffer.getChannelData(0);
var r = e.outputBuffer.getChannelData(1);
for (var i = 0; i < l.length; i++) {
l[i] = r[i] = (f(p++ * scale) & 0xff) * 512 / 65535 - 1;
}
};
var f;
var scale;
function play() {
f = eval("(function (t) {return " + document.getElementById('f').value + "})");
scale = document.getElementById('scale').value;
node.connect(context.destination);
}
function pause() {
node.disconnect();
}
<body>
<p><input type="text" id="f" value="((t*(t>>9)&46&t>>8))^(t&t>>13|t>>6)" style="font-size: 2em; width: 600px; font-family: monospace;"></p>
<input type="range" id="scale" min=".1" max="10" step="0.01" value="0.1" onchange="play();">
<p><button onclick="play()">Play</button>
<button onclick="pause()">Pause</button></p>
<script>if (!window.webkitAudioContext) { document.write("<p>Your browser doesn't support the Web Audio API.</p>"); }</script>