Trait Sample
pub trait Sample: Sample {
// Required methods
fn lerp(first: Self, second: Self, numerator: u32, denominator: u32) -> Self;
fn amplify(self, value: f32) -> Self;
fn to_f32(self) -> f32 ⓘ;
fn saturating_add(self, other: Self) -> Self;
fn zero_value() -> Self;
}
Available on crate feature
dep_rodio
only.Expand description
Represents a value of a single sample.
This trait is implemented by default on three types: i16
, u16
and f32
.
- For
i16
, silence corresponds to the value0
. The minimum and maximum amplitudes are represented byi16::min_value()
andi16::max_value()
respectively. - For
u16
, silence corresponds to the valueu16::max_value() / 2
. The minimum and maximum amplitudes are represented by0
andu16::max_value()
respectively. - For
f32
, silence corresponds to the value0.0
. The minimum and maximum amplitudes are represented by-1.0
and1.0
respectively.
You can implement this trait on your own type as well if you wish so.
Required Methods§
fn lerp(first: Self, second: Self, numerator: u32, denominator: u32) -> Self
fn lerp(first: Self, second: Self, numerator: u32, denominator: u32) -> Self
Linear interpolation between two samples.
The result should be equal to
first * numerator / denominator + second * (1 - numerator / denominator)
.
fn saturating_add(self, other: Self) -> Self
fn saturating_add(self, other: Self) -> Self
Calls saturating_add
on the sample.
fn zero_value() -> Self
fn zero_value() -> Self
Returns the value corresponding to the absence of sound.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.