You can place the analyzer between the generator and its output:
var size = 2048;
var analyser = audioCtx.createAnalyser();
var data = new Float32Array(size);
analyser.fftSize = size;
theOscillator.connect(analyser);
analyser.connect(theOutput);
var silenceChecker = setInterval(function() {
analyser.getFloatTimeDomainData(data);
for (var i = 0; i < size; ++i) {
if (data[i] !== 0) return;
}
clearInterval(silenceChecker);
theOscillator.stop();
theOscillator.disconnect();
analyser.disconnect();
}, Math.floor(size / audioCtx.sampleRate * 1000));
, , , , , . , , .