pub struct VolumeProcessor { /* private fields */ }Expand description
Volume processor with exponential smoothing to prevent zipper noise.
Uses ~5ms smoothing time constant to ensure click-free volume transitions. Previous implementation directly multiplied buffer by target volume, causing audible clicks/zips on rapid volume changes.
Implementations§
Source§impl VolumeProcessor
impl VolumeProcessor
pub fn new(params: Arc<AtomicVolumeParams>) -> Self
Trait Implementations§
Source§impl AudioProcessor for VolumeProcessor
impl AudioProcessor for VolumeProcessor
Source§fn process(&mut self, buffer: &mut [f64], channels: usize) -> ProcessResult
fn process(&mut self, buffer: &mut [f64], channels: usize) -> ProcessResult
Process audio samples in-place Read more
Source§fn is_enabled(&self) -> bool
fn is_enabled(&self) -> bool
Check if processor is enabled
Source§fn set_enabled(&mut self, _enabled: bool)
fn set_enabled(&mut self, _enabled: bool)
Enable or disable the processor
Source§fn set_sample_rate(&mut self, sample_rate: f64)
fn set_sample_rate(&mut self, sample_rate: f64)
Update sample rate and recalculate internal coefficients if needed. Read more
Auto Trait Implementations§
impl Freeze for VolumeProcessor
impl RefUnwindSafe for VolumeProcessor
impl Send for VolumeProcessor
impl Sync for VolumeProcessor
impl Unpin for VolumeProcessor
impl UnsafeUnpin for VolumeProcessor
impl UnwindSafe for VolumeProcessor
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
impl<S, T> Duplex<S> for Twhere
T: FromSample<S> + ToSample<S>,
Source§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more