Edit in JSFiddle

var audio, source, proc, adjust = 1;

function clog(str) {
    if (window.console && console.log) console.log(str);
}

function noop(e) {
    e.stopPropagation();
    e.preventDefault();
    $('.overlay').show(500);
}

function drop(e) {
    e.stopPropagation();
    e.preventDefault();
    $('.overlay').hide(500);
    if (source != null) {
        source.stop(0);
        source.disconnect(0);
    }

    source = audio.createBufferSource();
    var reader = new FileReader();

    reader.onload = function(e) {
        if (audio.decodeAudioData) {
            audio.decodeAudioData(e.target.result, function(b) {
                source.buffer = b;
            }, function(e) {
                clog(e);
                alert('Audio not playable or not supported.');
            });
        } else {
            source.buffer = audio.createBuffer(e.target.result, false);
        }
    }

    reader.readAsArrayBuffer(e.dataTransfer.files[0]);
    source.connect(proc);
    proc.connect(audio.destination);
    source.loop = true;
    source.start ? source.start(0) : source.noteOn(0);
}

audio = new(window.AudioContext || window.webkitAudioContext)();
proc = audio.createScriptProcessor(4096);
proc.onaudioprocess = function(e) {
    // Get the audio data
    var inp0 = e.inputBuffer.getChannelData(0);
    var inp1 = e.inputBuffer.getChannelData(1);
    var out0 = e.outputBuffer.getChannelData(0);
    var out1 = e.outputBuffer.getChannelData(1);

    for (var i = 0; i < inp0.length; i++) {
        out0[i] = (inp0[i] - inp1[i]) / 2 * adjust;
        out1[i] = (inp1[i] - inp0[i]) / 2 * adjust;
    }
};

$(function() {
    $("#adjust").slider({
        min: -6,
        max: 15,
        value: 0,
        slide: function(e, ui) {
            adjust = Math.pow(10, ui.value / 20);
            $("#adjust").parent().find('span:last').text(ui.value + " dB");
        }
    });

    document.addEventListener('dragover', noop, false);
    document.addEventListener('drop', drop, false);
});