Skip to content

Latest commit

 

History

History
131 lines (88 loc) · 5.85 KB

File metadata and controls

131 lines (88 loc) · 5.85 KB
sidebar_position 1

import AudioNodePropsTable from "@site/src/components/AudioNodePropsTable" import { Optional, ReadOnly } from '@site/src/components/Badges';

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

Parameter Type Default
fftSize number 2048 Number representing size of fast fourier transform
minDecibels number -100 Initial minimum power in dB for FFT analysis
maxDecibels number -30 Initial maximum power in dB for FFT analysis
smoothingTimeConstant number 0.8 Initial smoothing constant for the FFT analysis

Or by using BaseAudioContext factory method: BaseAudioContext.createAnalyser() that creates node with default values.

Properties

It inherits all properties from AudioNode.

Name Type Description
fftSize number Integer value representing size of Fast Fourier Transform used to determine frequency domain. In general it is size of returning time-domain data.
minDecibels number Float value representing the minimum value for the range of results from getByteFrequencyData().
maxDecibels number Float value representing the maximum value for the range of results from getByteFrequencyData().
smoothingTimeConstant number Float value representing averaging constant with the last analysis frame. In general the higher value the smoother is the transition between values over time.
window WindowType Enumerated value that specifies the type of window function applied when extracting frequency data.
frequencyBinCount number Integer value representing amount of the data obtained in frequency domain, half of the fftSize property.

:::caution

On Web, the value of window is permanently 'blackman', and it cannot be set like on the Android or iOS.

:::

Methods

It inherits all methods from AudioNode.

getFloatFrequencyData

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

Parameter Type Description
array Float32Array The array to which frequency data will be copied.

Returns undefined.

getByteFrequencyData

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

Parameter Type Description
array Uint8Array The array to which frequency data will be copied.

Returns undefined.

getFloatTimeDomainData

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

Parameter Type Description
array Float32Array The array to which time-domain data will be copied.

Returns undefined.

getByteTimeDomainData

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

Parameter Type Description
array Uint8Array The array to which time-domain data will be copied.

Returns undefined.

Remarks

fftSize

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

minDecibels

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

maxDecibels

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

smoothingTimeConstant

  • Nominal range is 0 to 1.
  • 0 means no averaging, 1 means "overlap the previous and current buffer quite a lot while computing the value".
  • Throws IndexSizeError if set value is outside the allowed range.

window

  • Default value is 'blackman'