ScriptProcessorNode: audioprocess event

Deprecated

Avoid using this feature in new projects. This feature may be a candidate for removal from web standards or browsers.

The audioprocess event of the ScriptProcessorNode interface is fired when an input buffer of a script processor is ready to be processed.

Note: This feature was replaced by AudioWorklets and the AudioWorkletNode interface.

This event is not cancelable and does not bubble.

Syntax

Use the event name in addEventListener():

js
addEventListener("audioprocess", (event) => { })

Alternatively, assign to the event handler property of the interface:

js
onaudioprocess = (event) => { }

Event type

An AudioProcessingEvent. Inherits from Event.

Event AudioProcessingEvent

Examples

js
scriptNode.addEventListener("audioprocess", (audioProcessingEvent) => {
  // The input buffer is a song we loaded earlier
  const inputBuffer = audioProcessingEvent.inputBuffer;

  // The output buffer contains the samples that will be modified and played
  const outputBuffer = audioProcessingEvent.outputBuffer;

  // Loop through the output channels (in this case there is only one)
  for (let channel = 0; channel < outputBuffer.numberOfChannels; channel++) {
    const inputData = inputBuffer.getChannelData(channel);
    const outputData = outputBuffer.getChannelData(channel);

    // Loop through the 4096 samples
    for (let sample = 0; sample < inputBuffer.length; sample++) {
      // make output equal to the same as the input
      outputData[sample] = inputData[sample];

      // add noise to each output sample
      outputData[sample] += (Math.random() * 2 - 1) * 0.2;
    }
  }
});

You could also set up the event handler using the onaudioprocess property (but note that this replaces other event listeners added using onaudioprocess, if any):

js
scriptNode.onaudioprocess = (audioProcessingEvent) => {
  // …
};

Specifications

Specification
Web Audio API
# eventdef-scriptprocessornode-audioprocess

Browser compatibility

See also