Struct web_audio_api::node::WaveShaperNode
source · pub struct WaveShaperNode { /* private fields */ }
Expand description
WaveShaperNode
allows to apply non-linear distortion effect on a audio
signal. Arbitrary non-linear shaping curves may be specified.
- MDN documentation: https://developer.mozilla.org/en-US/docs/Web/API/WaveShaperNode
- specification: https://webaudio.github.io/web-audio-api/#WaveShaperNode
- see also:
BaseAudioContext::create_wave_shaper
Usage
use std::fs::File;
use web_audio_api::context::{BaseAudioContext, AudioContext};
use web_audio_api::node::{AudioNode, AudioScheduledSourceNode};
let context = AudioContext::default();
let file = File::open("sample.wav").unwrap();
let buffer = context.decode_audio_data_sync(file).unwrap();
let curve = make_distortion_curve(2048);
let drive = 4.;
let post_gain = context.create_gain();
post_gain.connect(&context.destination());
post_gain.gain().set_value(1. / drive);
let shaper = context.create_wave_shaper();
shaper.connect(&post_gain);
shaper.set_curve(curve);
let pre_gain = context.create_gain();
pre_gain.connect(&shaper);
pre_gain.gain().set_value(drive);
let src = context.create_buffer_source();
src.connect(&pre_gain);
src.set_buffer(buffer);
src.start();
Example
cargo run --release --example waveshaper
Implementations§
source§impl WaveShaperNode
impl WaveShaperNode
sourcepub fn new<C: BaseAudioContext>(context: &C, options: WaveShaperOptions) -> Self
pub fn new<C: BaseAudioContext>(context: &C, options: WaveShaperOptions) -> Self
returns a WaveShaperNode
instance
Arguments
context
- audio context in which the audio node will live.options
- waveshaper options
sourcepub fn oversample(&self) -> OverSampleType
pub fn oversample(&self) -> OverSampleType
Returns the oversample
faactor of this node
sourcepub fn set_oversample(&self, oversample: OverSampleType)
pub fn set_oversample(&self, oversample: OverSampleType)
Trait Implementations§
source§impl AudioNode for WaveShaperNode
impl AudioNode for WaveShaperNode
fn registration(&self) -> &AudioContextRegistration
fn channel_config(&self) -> &ChannelConfig
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 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_at<'a>(
&self,
dest: &'a dyn AudioNode,
output: usize,
input: usize
) -> &'a dyn AudioNode
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
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)
fn disconnect(&self)
Disconnects all outgoing connections from the AudioNode.
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 set_channel_count_mode(&self, v: ChannelCountMode)
fn set_channel_count_mode(&self, v: ChannelCountMode)
Update the
channel_count_mode
attributesource§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_channel_count(&self, v: usize)
fn set_channel_count(&self, v: usize)
Update the
channel_count
attribute