Struct oddio::Reinhard

source ·
pub struct Reinhard<T>(/* private fields */);
Expand description

Smoothly maps a signal of any range into (-1, 1)

For each input sample x, outputs x / (1 + |x|).

When many signals are combined with a Mixer or Spatial, or when spatial signals are very near by, audio can get arbitrarily loud. Because surprisingly loud audio can be disruptive and even damaging, it can be useful to limit the output range, but simple clamping introduces audible artifacts.

See also Tanh, which distorts quiet sounds less, and loud sounds more.

Implementations§

source§

impl<T> Reinhard<T>

source

pub fn new(signal: T) -> Self

Apply the Reinhard operator to signal

Trait Implementations§

source§

impl<T> Seek for Reinhard<T>
where T: Signal + Seek, T::Frame: Frame,

source§

fn seek(&mut self, seconds: f32)

Shift the starting point of the next sample call by seconds
source§

impl<T: Signal> Signal for Reinhard<T>
where T::Frame: Frame,

§

type Frame = <T as Signal>::Frame

Type of frames yielded by sample, e.g. [Sample; 2] for stereo
source§

fn sample(&mut self, interval: f32, out: &mut [T::Frame])

Sample frames separated by interval seconds each
source§

fn is_finished(&self) -> bool

Whether future calls to sample with a nonnegative interval will only produce zeroes Read more

Auto Trait Implementations§

§

impl<T> RefUnwindSafe for Reinhard<T>
where T: RefUnwindSafe,

§

impl<T> Send for Reinhard<T>
where T: Send,

§

impl<T> Sync for Reinhard<T>
where T: Sync,

§

impl<T> Unpin for Reinhard<T>
where T: Unpin,

§

impl<T> UnwindSafe for Reinhard<T>
where T: UnwindSafe,

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<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<T, U> TryFrom<U> for T
where U: Into<T>,

§

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

§

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.