JSFiddle - React, Tailwind, and code Playground

by octatone

JavaScript

var audioContext = new webkitAudioContext();

var bufferSize = 2 * audioContext.sampleRate,
    noiseBuffer = audioContext.createBuffer(1, bufferSize, audioContext.sampleRate),
    output = noiseBuffer.getChannelData(0);
for (var i = 0; i < bufferSize; i++) {
    output[i] = Math.random() * 2 - 1;
}

// Create the filter
var filter = audioContext.createBiquadFilter();
// Create and specify parameters for the low-pass filter.
filter.type = 0; // Low-pass filter. See BiquadFilterNode docs
filter.frequency.value = 1000; // Set cutoff to 440 HZ

filter.connect(audioContext.destination);

function bang () {

    var whiteNoise = audioContext.createBufferSource();
    whiteNoise.connect(filter);
    whiteNoise.buffer = noiseBuffer;
    whiteNoise.loop = true;
    whiteNoise.start(0);

    setTimeout(function () { whiteNoise.stop(0);}, 40);
}

bang();

setInterval(bang, 100);