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 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(&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(
    &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(&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 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(&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(&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(&self, value: f64)

Trait Implementations§

source§

impl AudioNode for AudioBufferSourceNode

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
source§

impl AudioScheduledSourceNode for AudioBufferSourceNode

source§

fn start(&self)

Play immediately Read more
source§

fn start_at(&self, when: f64)

Schedule playback start at given timestamp Read more
source§

fn stop(&self)

Stop immediately Read more
source§

fn stop_at(&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

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>,