Edit in JSFiddle

var context = new webkitAudioContext();
var node = context.createJavaScriptNode(1024, 1, 2);
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&gt;&gt;9)&amp;46&amp;t&gt;&gt;8))^(t&amp;t&gt;&gt;13|t&gt;&gt;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>