pub struct ConvolverNode { /* private fields */ }
Expand description
Processing node which applies a linear convolution effect given an impulse response.
- MDN documentation: https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode
- specification: https://webaudio.github.io/web-audio-api/#ConvolverNode
- see also:
BaseAudioContext::create_convolver
The current implementation only handles mono-to-mono convolutions. The provided impulse response buffer and the input signal will be downmixed appropriately.
§Usage
use std::fs::File;
use web_audio_api::context::{AudioContext, BaseAudioContext};
use web_audio_api::node::{AudioNode, AudioScheduledSourceNode, ConvolverNode, ConvolverOptions};
let context = AudioContext::default();
let file = File::open("samples/vocals-dry.wav").unwrap();
let audio_buffer = context.decode_audio_data_sync(file).unwrap();
let impulse_file = File::open("samples/small-room-response.wav").unwrap();
let impulse_buffer = context.decode_audio_data_sync(impulse_file).unwrap();
let mut src = context.create_buffer_source();
src.set_buffer(audio_buffer);
let mut convolve = ConvolverNode::new(&context, ConvolverOptions::default());
convolve.set_buffer(impulse_buffer);
src.connect(&convolve);
convolve.connect(&context.destination());
src.start();
std::thread::sleep(std::time::Duration::from_millis(4_000));
§Examples
cargo run --release --example convolution
Implementations§
Source§impl ConvolverNode
impl ConvolverNode
Sourcepub fn new<C: BaseAudioContext>(context: &C, options: ConvolverOptions) -> Self
pub fn new<C: BaseAudioContext>(context: &C, options: ConvolverOptions) -> Self
Sourcepub fn buffer(&self) -> Option<&AudioBuffer>
pub fn buffer(&self) -> Option<&AudioBuffer>
Get the current impulse response buffer
Sourcepub fn set_buffer(&mut self, buffer: AudioBuffer)
pub fn set_buffer(&mut self, buffer: AudioBuffer)
Set or update the impulse response buffer
§Panics
Panics when the sample rate of the provided AudioBuffer differs from the audio context sample rate.
Sourcepub fn normalize(&self) -> bool
pub fn normalize(&self) -> bool
Denotes if the response buffer will be scaled with an equal-power normalization
Sourcepub fn set_normalize(&mut self, value: bool)
pub fn set_normalize(&mut self, value: bool)
Update the normalize
setting. This will only have an effect when set_buffer
is called.
Trait Implementations§
Source§impl AudioNode for ConvolverNode
impl AudioNode for ConvolverNode
Source§fn registration(&self) -> &AudioContextRegistration
fn registration(&self) -> &AudioContextRegistration
Handle of the associated
BaseAudioContext
. Read moreSource§fn channel_config(&self) -> &ChannelConfig
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
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
fn number_of_outputs(&self) -> usize
The number of outputs coming out of the AudioNode.
Source§fn set_channel_count(&self, count: usize)
fn set_channel_count(&self, count: usize)
Update the
channel_count
attributeSource§fn set_channel_count_mode(&self, mode: ChannelCountMode)
fn set_channel_count_mode(&self, mode: ChannelCountMode)
Update the
channel_count_mode
attributeSource§fn context(&self) -> &ConcreteBaseAudioContext
fn context(&self) -> &ConcreteBaseAudioContext
The
BaseAudioContext
concrete type which owns this
AudioNode.Source§fn connect<'a>(&self, dest: &'a dyn AudioNode) -> &'a dyn AudioNode
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
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)
fn disconnect(&self)
Disconnects all outgoing connections from the AudioNode.
Source§fn disconnect_dest(&self, dest: &dyn AudioNode)
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)
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)
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,
)
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
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 channel_interpretation(&self) -> ChannelInterpretation
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)
fn set_channel_interpretation(&self, v: ChannelInterpretation)
Update the
channel_interpretation
attributeSource§fn channel_count(&self) -> usize
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_onprocessorerror(
&self,
callback: Box<dyn FnOnce(ErrorEvent) + Send + 'static>,
)
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)
fn clear_onprocessorerror(&self)
Unset the callback to run when an unhandled exception occurs in the audio processor.
Auto Trait Implementations§
impl Freeze for ConvolverNode
impl RefUnwindSafe for ConvolverNode
impl Send for ConvolverNode
impl Sync for ConvolverNode
impl Unpin for ConvolverNode
impl UnwindSafe for ConvolverNode
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more