Skip to main content
Version: Next

AnalyserNode

The AnalyserNode interface represents a node providing two core functionalities: extracting time-domain data and frequency-domain data from audio signals. It is an AudioNode that passes the audio data unchanged from input to output, but allows to take passed data and process it.

Time domain vs Frequency domain

time-domain-vs-frequency-domain

A time-domain graph illustrates how a signal evolves over time, displaying changes in amplitude or intensity as time progresses. In contrast, a frequency-domain graph reveals how the signal's energy or power is distributed across different frequency bands, highlighting the presence and strength of various frequency components over a specified range.

Constructor

constructor(context: BaseAudioContext, options?: AnalyserOptions)

AnalyserOptions

Inherits all properties from AudioNodeOptions.

ParameterTypeDefaultDescription
fftSize
Optional
number2048Initial value for fftSize.
minDecibels
Optional
number-100.0Initial value for minDecibels.
maxDecibels
Optional
number-30.0Initial value for maxDecibels.
smoothingTimeConstant
Optional
number0.8Initial value for smoothingTimeConstant.

You can also create an AnalyserNode via the BaseAudioContext.createAnalyser() factory method, which uses default values.

Properties

Inherits all properties from AudioNode.

AudioNodeproperties
NameTypeDescription
fftSizenumberInteger value representing the size of Fast Fourier Transform used to determine frequency domain. In general it is the size of time-domain data that is returned.
minDecibelsnumberFloat value representing the minimum value for the range of results from getByteFrequencyData().
maxDecibelsnumberFloat value representing the maximum value for the range of results from getByteFrequencyData().
smoothingTimeConstantnumberFloat value representing the averaging constant with the last analysis frame. In general the higher value the smoother is the transition between values over time.
frequencyBinCount
Read only
numberInteger value representing the amount of the data obtained in frequency domain, half of the fftSize property.

Methods

Inherits all methods from AudioNode.

AudioNodemethods

getFloatFrequencyData

Copies the current frequency data into the given array. Each value in the array represents the decibel value for a specific frequency.

ParameterTypeDescription
arrayFloat32ArrayThe array to which the frequency data will be copied.

Returns undefined.

getByteFrequencyData

Copies the current frequency data into the given array. Each value in the array is within the range 0 to 255.

ParameterTypeDescription
arrayUint8ArrayThe array to which the frequency data will be copied.

Returns undefined.

getFloatTimeDomainData

Copies the current time-domain data into the given array. Each value in the array is the magnitude of the signal at a particular time.

ParameterTypeDescription
arrayFloat32ArrayThe array to which the time-domain data will be copied.

Returns undefined.

getByteTimeDomainData

Copies the current time-domain data into the given array. Each value in the array is within the range 0 to 255, where value of 127 indicates silence.

ParameterTypeDescription
arrayUint8ArrayThe array to which the time-domain data will be copied.

Returns undefined.

Remarks

fftSize

  • Must be a power of 2 between 32 and 32768.
  • Throws IndexSizeError if the provided value is not a power of 2, or is outside the allowed range.

minDecibels

  • 0.0 dB (decibel) is the loudest possible sound, -10.0 dB is a 10th of that.
  • When getting data from getByteFrequencyData(), any frequency with amplitude lower than minDecibels will be returned as 0.
  • Throws IndexSizeError if the provided value is greater than or equal to maxDecibels.

maxDecibels

  • 0.0 dB (decibel) is the loudest possible sound, -10.0 dB is a 10th of that.
  • When getting data from getByteFrequencyData(), any frequency with amplitude higher than maxDecibels will be returned as 255.
  • Throws IndexSizeError if the provided value is less than or equal to minDecibels.

smoothingTimeConstant

  • Nominal range is 0.0 - 1.0.
  • 0.0 means no averaging, 1.0 means "overlap the previous and current buffer quite a lot while computing the value".
  • Throws IndexSizeError if the provided value is outside the allowed range.