Monitor Audio Levels

JavaScript

var context = new AudioContext(),
    osc = context.createOscillator(),
    volume = context.createGain(),
    monitor = context.createScriptProcessor();

var processData = function (data) {
    var channelData = data.inputBuffer.getChannelData(0),
        channelSize = channelData.length;
    
    for (var i = 0; i < channelSize; i++) {
        if (Math.abs(channelData[i]) > 1) {
            console.log('clipping');
        }
    };
};

osc.connect(volume);
volume.connect(monitor);
monitor.connect(context.destination);

osc.start(0);
monitor.onaudioprocess = processData;