JSFiddle - React, Tailwind, and code Playground
by sebpiq
JavaScript
window.AudioContext = window.AudioContext || window.webkitAudioContext
var context = new AudioContext()
, bufferSource = context.createBufferSource()
, muteGain = context.createGain()
, samplesPerBlock = 16384
, scriptProcessor = context.createScriptProcessor(samplesPerBlock, 1, 1)
, buffer = context.createBuffer(1, context.sampleRate * 2, context.sampleRate)
, pulseTime = 1.5
scriptProcessor.onaudioprocess = function(event) {
var array = event.inputBuffer.getChannelData(0)
for (var i = 0; i < event.inputBuffer.length; i++) {
if (array[i] == 1) {
document.body.innerHTML = 'running at sample rate ' + context.sampleRate.toFixed(2)
+ '<br/> pulse sample received at currentTime ' + (event.playbackTime * context.sampleRate)
+ '<br/> pulse sample received at playbackTime ' + (context.currentTime * context.sampleRate)
+ '<br/> while scheduled at ' + (pulseTime * context.sampleRate)
}
}
}
buffer.getChannelData(0)[0] = 1 // The buffer contains a pulse at time = 0
bufferSource.buffer = buffer
muteGain.gain.value = 0
bufferSource.connect(scriptProcessor)
scriptProcessor.connect(muteGain)
bufferSource.connect(muteGain)
muteGain.connect(context.destination)
bufferSource.start(pulseTime)