Struct AudioBufferSourceNode

Source
pub struct AudioBufferSourceNode { /* private fields */ }
Expand description

AudioBufferSourceNode represents an audio source that consists of an in-memory audio source (i.e. an audio file completely loaded in memory), stored in an AudioBuffer.

§Usage

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

// create an `AudioContext`
let context = AudioContext::default();
// load and decode a soundfile
let file = File::open("samples/sample.wav").unwrap();
let audio_buffer = context.decode_audio_data_sync(file).unwrap();
// play the sound file
let mut src = context.create_buffer_source();
src.set_buffer(audio_buffer);
src.connect(&context.destination());
src.start();

§Examples

  • cargo run --release --example trigger_soundfile
  • cargo run --release --example granular

Implementations§

Source§

impl AudioBufferSourceNode

Source

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

Create a new AudioBufferSourceNode instance

Source

pub fn start_at_with_offset(&mut self, start: f64, offset: f64)

Start the playback at the given time and with a given offset

§Panics

Panics if the source was already started

Source

pub fn start_at_with_offset_and_duration( &mut self, start: f64, offset: f64, duration: f64, )

Start the playback at the given time, with a given offset, for a given duration

§Panics

Panics if the source was already started

Source

pub fn buffer(&self) -> Option<&AudioBuffer>

Current buffer value (nullable)

Source

pub fn set_buffer(&mut self, audio_buffer: AudioBuffer)

Provide an AudioBuffer as the source of data to be played bask

§Panics

Panics if a buffer has already been given to the source (though new or through set_buffer)

Source

pub fn playback_rate(&self) -> &AudioParam

K-rate AudioParam that defines the speed at which the AudioBuffer will be played, e.g.:

  • 0.5 will play the file at half speed
  • -1 will play the file in reverse

Note that playback rate will also alter the pitch of the AudioBuffer

Source

pub fn position(&self) -> f64

Current playhead position in seconds within the AudioBuffer.

This value is updated at the end of each render quantum.

Unofficial v2 API extension, not part of the spec yet. See also: https://github.com/WebAudio/web-audio-api/issues/2397#issuecomment-709478405

Source

pub fn detune(&self) -> &AudioParam

K-rate AudioParam that defines a pitch transposition of the file, expressed in cents

see https://en.wikipedia.org/wiki/Cent_(music)

Source

pub fn loop_(&self) -> bool

Defines if the playback the AudioBuffer should be looped

Source

pub fn set_loop(&mut self, value: bool)

Source

pub fn loop_start(&self) -> f64

Defines the loop start point, in the time reference of the AudioBuffer

Source

pub fn set_loop_start(&mut self, value: f64)

Source

pub fn loop_end(&self) -> f64

Defines the loop end point, in the time reference of the AudioBuffer

Source

pub fn set_loop_end(&mut self, value: f64)

Trait Implementations§

Source§

impl AudioNode for AudioBufferSourceNode

Source§

fn registration(&self) -> &AudioContextRegistration

Handle of the associated BaseAudioContext. Read more
Source§

fn channel_config(&self) -> &ChannelConfig

Config for up/down-mixing of input channels for this node. Read more
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_from_output_to_input<'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(&self)

Disconnects all outgoing connections from the AudioNode.
Source§

fn disconnect_dest(&self, dest: &dyn AudioNode)

Disconnects all outputs of the AudioNode that go to a specific destination AudioNode. Read more
Source§

fn disconnect_output(&self, output: usize)

Disconnects all outgoing connections at the given output port from the AudioNode. Read more
Source§

fn disconnect_dest_from_output(&self, dest: &dyn AudioNode, output: usize)

Disconnects a specific output of the AudioNode to a specific destination AudioNode Read more
Source§

fn disconnect_dest_from_output_to_input( &self, dest: &dyn AudioNode, output: usize, input: usize, )

Disconnects a specific output of the AudioNode to a specific input of some destination AudioNode Read more
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
Source§

fn set_onprocessorerror( &self, callback: Box<dyn FnOnce(ErrorEvent) + Send + 'static>, )

Register callback to run when an unhandled exception occurs in the audio processor. Read more
Source§

fn clear_onprocessorerror(&self)

Unset the callback to run when an unhandled exception occurs in the audio processor.
Source§

impl AudioScheduledSourceNode for AudioBufferSourceNode

Source§

fn start(&mut self)

Play immediately Read more
Source§

fn start_at(&mut self, when: f64)

Schedule playback start at given timestamp Read more
Source§

fn stop(&mut self)

Stop immediately Read more
Source§

fn stop_at(&mut self, when: f64)

Schedule playback stop at given timestamp Read more
Source§

fn set_onended<F: FnOnce(Event) + Send + 'static>(&self, callback: F)

Register callback to run when the source node has stopped playing Read more
Source§

fn clear_onended(&self)

Unset the callback to run when the source node has stopped playing
Source§

impl Debug for AudioBufferSourceNode

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

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

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

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 T
where U: From<T>,

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.

Source§

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

Source§

fn into_sample(self) -> T

Source§

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

Source§

fn to_sample_(self) -> U

Source§

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

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

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

Performs the conversion.
Source§

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

Source§

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

The type returned in the event of a conversion error.
Source§

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

Performs the conversion.
Source§

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