Class

AudioInputProcessor

AudioInputProcessor(options)

AudioInputProcessor - Real-time audio level monitoring

This class provides audio level monitoring functionality using the Web Audio API's AnalyserNode. It can be used to create audio level visualizations (VU meters) or detect when a user is speaking.

Constructor

# new AudioInputProcessor(options)

Parameters:
Name Type Description
options Object

Configuration options

audioContext AudioContext

The Web Audio API AudioContext to use

stream MediaStream

The audio MediaStream to analyze (typically from getUserMedia)

Example
// Create an audio context and get user media
const audioContext = new AudioContext();
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });

// Create the processor
const processor = new AudioInputProcessor({ audioContext, stream });

// Poll for volume levels (e.g., for a VU meter)
setInterval(() => {
  const volume = processor.getVolume();
  updateVuMeter(volume); // 0-255 range
}, 100);

// Clean up when done
processor.dispose();

Members

AudioContext

# audioContext

The Web Audio API AudioContext

MediaStream

# stream

The audio MediaStream being analyzed

Methods

# dispose()

Disposes of the processor and releases all resources

Call this method when you're done using the processor to prevent memory leaks. This disconnects all audio nodes but does not stop the underlying MediaStream tracks (those are managed by the Client).

Example
// Clean up when leaving a room
processor.dispose();

# getAnalyser() → {AnalyserNode|null}

Gets the AnalyserNode

Useful for custom audio analysis beyond the built-in getVolume() method. You can use this to create custom visualizations or frequency analysis.

The analyser node, or null if disposed

AnalyserNode | null
Example
// Get frequency data for a spectrum analyzer
const analyser = processor.getAnalyser();
const frequencyData = new Uint8Array(analyser.frequencyBinCount);
analyser.getByteFrequencyData(frequencyData);

# getSource() → {MediaStreamAudioSourceNode|null}

Gets the MediaStreamAudioSourceNode

Useful for connecting additional audio processing nodes in a chain.

The source node, or null if disposed

MediaStreamAudioSourceNode | null

# getVolume() → {number}

Gets the current audio volume level

Returns the average frequency amplitude across all frequency bins. This value can be used for VU meters or voice activity detection.

The average volume level (0-255 range, where 0 is silence)

number
Example
// Use for a VU meter visualization
const volume = processor.getVolume();
const percentage = (volume / 255) * 100;
vuMeterElement.style.width = `${percentage}%`;