Trait rodio::Sample[][src]

pub trait Sample: CpalSample {
    fn lerp(first: Self, second: Self, numerator: u32, denominator: u32) -> Self;
fn amplify(self, value: f32) -> Self;
fn saturating_add(self, other: Self) -> Self;
fn zero_value() -> Self; }
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 value 0. The minimum and maximum amplitudes are represented by i16::min_value() and i16::max_value() respectively.
  • For u16, silence corresponds to the value u16::max_value() / 2. The minimum and maximum amplitudes are represented by 0 and u16::max_value() respectively.
  • For f32, silence corresponds to the value 0.0. The minimum and maximum amplitudes are represented by -1.0 and 1.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[src]

Linear interpolation between two samples.

The result should be equal to first * numerator / denominator + second * (1 - numerator / denominator).

fn amplify(self, value: f32) -> Self[src]

Multiplies the value of this sample by the given amount.

fn saturating_add(self, other: Self) -> Self[src]

Calls saturating_add on the sample.

fn zero_value() -> Self[src]

Returns the value corresponding to the absence of sound.

Implementations on Foreign Types

impl Sample for u16[src]

fn lerp(first: u16, second: u16, numerator: u32, denominator: u32) -> u16[src]

fn amplify(self, value: f32) -> u16[src]

fn saturating_add(self, other: u16) -> u16[src]

fn zero_value() -> u16[src]

impl Sample for i16[src]

fn lerp(first: i16, second: i16, numerator: u32, denominator: u32) -> i16[src]

fn amplify(self, value: f32) -> i16[src]

fn saturating_add(self, other: i16) -> i16[src]

fn zero_value() -> i16[src]

impl Sample for f32[src]

fn lerp(first: f32, second: f32, numerator: u32, denominator: u32) -> f32[src]

fn amplify(self, value: f32) -> f32[src]

fn saturating_add(self, other: f32) -> f32[src]

fn zero_value() -> f32[src]

Implementors