pub struct AnalyserNode { /* private fields */ }
Expand description

AnalyserNode represents a node able to provide real-time frequency and time-domain analysis information.

It is an AudioNode that passes the audio stream unchanged from the input to the output, but allows you to take the generated data, process it, and create audio visualizations..

Usage

use web_audio_api::context::{BaseAudioContext, AudioContext};
use web_audio_api::node::{AudioNode, AudioScheduledSourceNode};

let context = AudioContext::default();

let analyser = context.create_analyser();
analyser.connect(&context.destination());

let osc = context.create_oscillator();
osc.frequency().set_value(200.);
osc.connect(&analyser);
osc.start();

let mut bins = vec![0.; analyser.frequency_bin_count()];


loop {
    analyser.get_float_frequency_data(&mut bins);
    println!("{:?}", &bins[0..20]); // print 20 first bins
    std::thread::sleep(std::time::Duration::from_millis(1000));
}

Examples

  • cargo run --release --example analyser
  • cargo run --release --example mic_playback

Implementations§

source§

impl AnalyserNode

source

pub fn new<C: BaseAudioContext>(context: &C, options: AnalyserOptions) -> Self

source

pub fn fft_size(&self) -> usize

The size of the FFT used for frequency-domain analysis (in sample-frames)

Panics

This method may panic if the lock to the inner analyser is poisoned

source

pub fn set_fft_size(&self, fft_size: usize)

Set FFT size

Panics

This function panics if fft_size is not a power of two or not in the range [32, 32768]

source

pub fn smoothing_time_constant(&self) -> f64

Time averaging parameter with the last analysis frame. A value from 0 -> 1 where 0 represents no time averaging with the last analysis frame. The default value is 0.8.

Panics

This method may panic if the lock to the inner analyser is poisoned

source

pub fn set_smoothing_time_constant(&self, value: f64)

Set smoothing time constant

Panics

This function panics if the value is set to a value less than 0 or more than 1.

source

pub fn min_decibels(&self) -> f64

Minimum power value in the scaling range for the FFT analysis data for conversion to unsigned byte values. The default value is -100.

Panics

This method may panic if the lock to the inner analyser is poisoned

source

pub fn set_min_decibels(&self, value: f64)

Set min decibels

Panics

This function panics if the value is set to a value more than or equal to max decibels.

source

pub fn max_decibels(&self) -> f64

Maximum power value in the scaling range for the FFT analysis data for conversion to unsigned byte values. The default value is -30.

Panics

This method may panic if the lock to the inner analyser is poisoned

source

pub fn set_max_decibels(&self, value: f64)

Set max decibels

Panics

This function panics if the value is set to a value less than or equal to min decibels.

source

pub fn frequency_bin_count(&self) -> usize

Number of bins in the FFT results, is half the FFT size

Panics

This method may panic if the lock to the inner analyser is poisoned

source

pub fn get_float_time_domain_data(&self, buffer: &mut [f32])

Copy the current time domain data as f32 values into the provided buffer

Panics

This method may panic if the lock to the inner analyser is poisoned

source

pub fn get_byte_time_domain_data(&self, buffer: &mut [u8])

Copy the current time domain data as u8 values into the provided buffer

Panics

This method may panic if the lock to the inner analyser is poisoned

source

pub fn get_float_frequency_data(&self, buffer: &mut [f32])

Copy the current frequency data into the provided buffer

Panics

This method may panic if the lock to the inner analyser is poisoned

source

pub fn get_byte_frequency_data(&self, buffer: &mut [u8])

Copy the current frequency data scaled between min_decibels and max_decibels into the provided buffer

Panics

This method may panic if the lock to the inner analyser is poisoned

Trait Implementations§

source§

impl AudioNode for AnalyserNode

source§

fn registration(&self) -> &AudioContextRegistration

source§

fn channel_config(&self) -> &ChannelConfig

source§

fn number_of_inputs(&self) -> usize

The number of inputs feeding into the AudioNode. For source nodes, this will be 0.
source§

fn number_of_outputs(&self) -> usize

The number of outputs coming out of the AudioNode.
source§

fn context(&self) -> &ConcreteBaseAudioContext

The BaseAudioContext concrete type which owns this AudioNode.
source§

fn connect<'a>(&self, dest: &'a dyn AudioNode) -> &'a dyn AudioNode

Connect the output of this AudioNode to the input of another node. Read more
source§

fn connect_at<'a>(
    &self,
    dest: &'a dyn AudioNode,
    output: usize,
    input: usize
) -> &'a dyn AudioNode

Connect a specific output of this AudioNode to a specific input of another node. Read more
source§

fn disconnect_from<'a>(&self, dest: &'a dyn AudioNode) -> &'a dyn AudioNode

Disconnects all outputs of the AudioNode that go to a specific destination AudioNode.
source§

fn disconnect(&self)

Disconnects all outgoing connections from the AudioNode.
source§

fn channel_count_mode(&self) -> ChannelCountMode

Represents an enumerated value describing the way channels must be matched between the node’s inputs and outputs.
source§

fn set_channel_count_mode(&self, v: ChannelCountMode)

Update the channel_count_mode attribute
source§

fn channel_interpretation(&self) -> ChannelInterpretation

Represents an enumerated value describing the meaning of the channels. This interpretation will define how audio up-mixing and down-mixing will happen.
source§

fn set_channel_interpretation(&self, v: ChannelInterpretation)

Update the channel_interpretation attribute
source§

fn channel_count(&self) -> usize

Represents an integer used to determine how many channels are used when up-mixing and down-mixing connections to any inputs to the node.
source§

fn set_channel_count(&self, v: usize)

Update the channel_count attribute

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere
    T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere
    T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere
    T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<S> FromSample<S> for S

source§

fn from_sample_(s: S) -> S

source§

impl<T, U> Into<U> for Twhere
    U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<F, T> IntoSample<T> for Fwhere
    T: FromSample<F>,

§

fn into_sample(self) -> T

source§

impl<T, U> ToSample<U> for Twhere
    U: FromSample<T>,

source§

fn to_sample_(self) -> U

source§

impl<T, U> TryFrom<U> for Twhere
    U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere
    U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<S, T> Duplex<S> for Twhere
    T: FromSample<S> + ToSample<S>,