Trait Frame

Source
pub trait Frame:
    Copy
    + Clone
    + PartialEq {
    type Sample: Sample;
    type NumChannels: NumChannels;
    type Channels: Iterator<Item = Self::Sample>;
    type Signed: Frame<Sample = <Self::Sample as Sample>::Signed, NumChannels = Self::NumChannels>;
    type Float: Frame<Sample = <Self::Sample as Sample>::Float, NumChannels = Self::NumChannels>;

Show 15 methods // Required methods fn equilibrium() -> Self; fn from_fn<F>(from: F) -> Self where F: FnMut(usize) -> Self::Sample; fn from_samples<I>(samples: &mut I) -> Option<Self> where I: Iterator<Item = Self::Sample>; fn n_channels() -> usize; fn channels(self) -> Self::Channels; fn channel(&self, idx: usize) -> Option<&Self::Sample>; unsafe fn channel_unchecked(&self, idx: usize) -> &Self::Sample; fn map<F, M>(self, map: M) -> F where F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample) -> F::Sample; fn zip_map<O, F, M>(self, other: O, zip_map: M) -> F where O: Frame<NumChannels = Self::NumChannels>, F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample, O::Sample) -> F::Sample; fn to_signed_frame(self) -> Self::Signed; fn to_float_frame(self) -> Self::Float; // Provided methods fn offset_amp(self, offset: <Self::Sample as Sample>::Signed) -> Self { ... } fn scale_amp(self, amp: <Self::Sample as Sample>::Float) -> Self { ... } fn add_amp<F>(self, other: F) -> Self where F: Frame<Sample = <Self::Sample as Sample>::Signed, NumChannels = Self::NumChannels> { ... } fn mul_amp<F>(self, other: F) -> Self where F: Frame<Sample = <Self::Sample as Sample>::Float, NumChannels = Self::NumChannels> { ... }
}
Expand description

Represents one sample from each channel at a single discrete instance in time within a PCM signal.

We provide implementations for Frame for all fixed-size arrays up to a length of 32 elements.

Required Associated Types§

Source

type Sample: Sample

The type of PCM sample stored at each channel within the frame.

Source

type NumChannels: NumChannels

A typified version of a number of channels in the Frame, used for safely mapping frames of the same length to other Frames, perhaps with a different Sample associated type.

Source

type Channels: Iterator<Item = Self::Sample>

An iterator yielding the sample in each channel, starting from left (channel 0) and ending at the right (channel NumChannels-1).

Source

type Signed: Frame<Sample = <Self::Sample as Sample>::Signed, NumChannels = Self::NumChannels>

A frame type with equilavent number of channels using the associated Sample::Signed format.

Source

type Float: Frame<Sample = <Self::Sample as Sample>::Float, NumChannels = Self::NumChannels>

A frame type with equilavent number of channels using the associated Sample::Float format.

Required Methods§

Source

fn equilibrium() -> Self

The equilibrium value for the wave that this Sample type represents. This is normally the value that is equal distance from both the min and max ranges of the sample.

NOTE: This will likely be changed to an “associated const” if the feature lands.

§Examples
extern crate sample;

use sample::Frame;
use sample::frame::{Mono, Stereo};

fn main() {
    assert_eq!(Mono::<f32>::equilibrium(), [0.0]);
    assert_eq!(Stereo::<f32>::equilibrium(), [0.0, 0.0]);
    assert_eq!(<[f32; 3]>::equilibrium(), [0.0, 0.0, 0.0]);
    assert_eq!(<[u8; 2]>::equilibrium(), [128u8, 128]);
}
Source

fn from_fn<F>(from: F) -> Self
where F: FnMut(usize) -> Self::Sample,

Create a new Frame where the Sample for each channel is produced by the given function.

The given function should map each channel index to its respective sample.

Source

fn from_samples<I>(samples: &mut I) -> Option<Self>
where I: Iterator<Item = Self::Sample>,

Create a new Frame from a borrowed Iterator yielding samples for each channel.

Returns None if the given Iterator does not yield enough Samples.

This is necessary for the signal::FromSamples Iterator, that converts some Iterator yielding Samples to an Iterator yielding Frames.

Source

fn n_channels() -> usize

The total number of channels (and in turn samples) stored within the frame.

Source

fn channels(self) -> Self::Channels

Converts the frame into an iterator yielding the sample for each channel in the frame.

Source

fn channel(&self, idx: usize) -> Option<&Self::Sample>

Yields a reference to the Sample of the channel at the given index if there is one.

Source

unsafe fn channel_unchecked(&self, idx: usize) -> &Self::Sample

Returns a pointer to the sample of the channel at the given index, without doing bounds checking.

Note: This is primarily a necessity for efficient Frame::map and Frame::zip_map methods, as for those methods we can guarantee lengths of different Frames to be the same at compile-time.

Source

fn map<F, M>(self, map: M) -> F
where F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample) -> F::Sample,

Applies the given function to each sample in the Frame in channel order and returns the result as a new Frame.

§Example
extern crate sample;

use sample::{Frame, Sample};

fn main() {
    let foo = [0i16, 0];
    let bar: [u8; 2] = foo.map(Sample::to_sample);
    assert_eq!(bar, [128u8, 128]);
}
Source

fn zip_map<O, F, M>(self, other: O, zip_map: M) -> F
where O: Frame<NumChannels = Self::NumChannels>, F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample, O::Sample) -> F::Sample,

Calls the given function with the pair of elements at every index and returns the resulting Frame.

On a Vec this would be akin to .into_iter().zip(other).map(|(a, b)| ...).collect(), though much quicker and tailored to fixed-size arrays of samples.

Source

fn to_signed_frame(self) -> Self::Signed

Converts the frame type to the equivalent signal in its associated Floating point format.

§Example
extern crate sample;

use sample::Frame;

fn main() {
    let foo = [128u8; 2];
    let signed = foo.to_signed_frame();
    assert_eq!(signed, [0i8; 2]);
}
Source

fn to_float_frame(self) -> Self::Float

Converts the frame type to the equivalent signal in its associated Signed format.

§Example
extern crate sample;

use sample::Frame;

fn main() {
    let foo = [128u8; 2];
    let float = foo.to_float_frame();
    assert_eq!(float, [0.0; 2]);
}

Provided Methods§

Source

fn offset_amp(self, offset: <Self::Sample as Sample>::Signed) -> Self

Offsets the amplitude of every channel in the frame by the given offset and yields the resulting frame.

§Example
extern crate sample;

use sample::Frame;

fn main() {
    assert_eq!([0.25, -0.5].offset_amp(0.5), [0.75, 0.0]);
    assert_eq!([0.5, -0.25].offset_amp(-0.25), [0.25, -0.5]);
    assert_eq!([128u8, 192].offset_amp(-64), [64, 128]);
}
Source

fn scale_amp(self, amp: <Self::Sample as Sample>::Float) -> Self

Multiplies each Sample in the Frame by the given amplitude and returns the resulting Frame.

  • A > 1.0 amplifies the sample.
  • A < 1.0 attenuates the sample.
  • A == 1.0 yields the same sample.
  • A == 0.0 yields the Sample::equilibrium.
§Example
extern crate sample;

use sample::Frame;

fn main() {
    assert_eq!([0.1, 0.2, -0.1, -0.2].scale_amp(2.0), [0.2, 0.4, -0.2, -0.4]);
}
Source

fn add_amp<F>(self, other: F) -> Self
where F: Frame<Sample = <Self::Sample as Sample>::Signed, NumChannels = Self::NumChannels>,

Sums each channel in other with each channel in self and returns the resulting Frame.

§Example
extern crate sample;

use sample::Frame;

fn main() {
    let foo = [0.25, 0.5].add_amp([-0.75, 0.25]);
    assert_eq!(foo, [-0.5, 0.75]);
}
Source

fn mul_amp<F>(self, other: F) -> Self
where F: Frame<Sample = <Self::Sample as Sample>::Float, NumChannels = Self::NumChannels>,

Multiplies other with self and returns the resulting Frame.

§Example
extern crate sample;

use sample::Frame;

fn main() {
    let foo = [0.25, 0.4].mul_amp([0.2, 0.5]);
    assert_eq!(foo, [0.05, 0.2]);

    let bar = [192u8, 64].mul_amp([0.0, -2.0]);
    assert_eq!(bar, [128, 0]);
}

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.

Implementations on Foreign Types§

Source§

impl<S> Frame for [S; 1]
where S: Sample,

Source§

type Sample = S

Source§

type NumChannels = N1

Source§

type Channels = Channels<[S; 1]>

Source§

type Float = [<S as Sample>::Float; 1]

Source§

type Signed = [<S as Sample>::Signed; 1]

Source§

fn equilibrium() -> Self

Source§

fn n_channels() -> usize

Source§

fn channels(self) -> Self::Channels

Source§

fn channel(&self, idx: usize) -> Option<&Self::Sample>

Source§

fn from_fn<F>(from: F) -> Self
where F: FnMut(usize) -> S,

Source§

fn from_samples<I>(samples: &mut I) -> Option<Self>
where I: Iterator<Item = Self::Sample>,

Source§

unsafe fn channel_unchecked(&self, idx: usize) -> &Self::Sample

Source§

fn to_signed_frame(self) -> Self::Signed

Source§

fn to_float_frame(self) -> Self::Float

Source§

fn map<F, M>(self, map: M) -> F
where F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample) -> F::Sample,

Source§

fn zip_map<O, F, M>(self, other: O, zip_map: M) -> F
where O: Frame<NumChannels = Self::NumChannels>, F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample, O::Sample) -> F::Sample,

Source§

fn scale_amp(self, amp: S::Float) -> Self

Source§

fn add_amp<F>(self, other: F) -> Self
where F: Frame<Sample = S::Signed, NumChannels = N1>,

Source§

impl<S> Frame for [S; 2]
where S: Sample,

Source§

type Sample = S

Source§

type NumChannels = N2

Source§

type Channels = Channels<[S; 2]>

Source§

type Float = [<S as Sample>::Float; 2]

Source§

type Signed = [<S as Sample>::Signed; 2]

Source§

fn equilibrium() -> Self

Source§

fn n_channels() -> usize

Source§

fn channels(self) -> Self::Channels

Source§

fn channel(&self, idx: usize) -> Option<&Self::Sample>

Source§

fn from_fn<F>(from: F) -> Self
where F: FnMut(usize) -> S,

Source§

fn from_samples<I>(samples: &mut I) -> Option<Self>
where I: Iterator<Item = Self::Sample>,

Source§

unsafe fn channel_unchecked(&self, idx: usize) -> &Self::Sample

Source§

fn to_signed_frame(self) -> Self::Signed

Source§

fn to_float_frame(self) -> Self::Float

Source§

fn map<F, M>(self, map: M) -> F
where F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample) -> F::Sample,

Source§

fn zip_map<O, F, M>(self, other: O, zip_map: M) -> F
where O: Frame<NumChannels = Self::NumChannels>, F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample, O::Sample) -> F::Sample,

Source§

fn scale_amp(self, amp: S::Float) -> Self

Source§

fn add_amp<F>(self, other: F) -> Self
where F: Frame<Sample = S::Signed, NumChannels = N2>,

Source§

impl<S> Frame for [S; 3]
where S: Sample,

Source§

type Sample = S

Source§

type NumChannels = N3

Source§

type Channels = Channels<[S; 3]>

Source§

type Float = [<S as Sample>::Float; 3]

Source§

type Signed = [<S as Sample>::Signed; 3]

Source§

fn equilibrium() -> Self

Source§

fn n_channels() -> usize

Source§

fn channels(self) -> Self::Channels

Source§

fn channel(&self, idx: usize) -> Option<&Self::Sample>

Source§

fn from_fn<F>(from: F) -> Self
where F: FnMut(usize) -> S,

Source§

fn from_samples<I>(samples: &mut I) -> Option<Self>
where I: Iterator<Item = Self::Sample>,

Source§

unsafe fn channel_unchecked(&self, idx: usize) -> &Self::Sample

Source§

fn to_signed_frame(self) -> Self::Signed

Source§

fn to_float_frame(self) -> Self::Float

Source§

fn map<F, M>(self, map: M) -> F
where F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample) -> F::Sample,

Source§

fn zip_map<O, F, M>(self, other: O, zip_map: M) -> F
where O: Frame<NumChannels = Self::NumChannels>, F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample, O::Sample) -> F::Sample,

Source§

fn scale_amp(self, amp: S::Float) -> Self

Source§

fn add_amp<F>(self, other: F) -> Self
where F: Frame<Sample = S::Signed, NumChannels = N3>,

Source§

impl<S> Frame for [S; 4]
where S: Sample,

Source§

type Sample = S

Source§

type NumChannels = N4

Source§

type Channels = Channels<[S; 4]>

Source§

type Float = [<S as Sample>::Float; 4]

Source§

type Signed = [<S as Sample>::Signed; 4]

Source§

fn equilibrium() -> Self

Source§

fn n_channels() -> usize

Source§

fn channels(self) -> Self::Channels

Source§

fn channel(&self, idx: usize) -> Option<&Self::Sample>

Source§

fn from_fn<F>(from: F) -> Self
where F: FnMut(usize) -> S,

Source§

fn from_samples<I>(samples: &mut I) -> Option<Self>
where I: Iterator<Item = Self::Sample>,

Source§

unsafe fn channel_unchecked(&self, idx: usize) -> &Self::Sample

Source§

fn to_signed_frame(self) -> Self::Signed

Source§

fn to_float_frame(self) -> Self::Float

Source§

fn map<F, M>(self, map: M) -> F
where F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample) -> F::Sample,

Source§

fn zip_map<O, F, M>(self, other: O, zip_map: M) -> F
where O: Frame<NumChannels = Self::NumChannels>, F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample, O::Sample) -> F::Sample,

Source§

fn scale_amp(self, amp: S::Float) -> Self

Source§

fn add_amp<F>(self, other: F) -> Self
where F: Frame<Sample = S::Signed, NumChannels = N4>,

Source§

impl<S> Frame for [S; 5]
where S: Sample,

Source§

type Sample = S

Source§

type NumChannels = N5

Source§

type Channels = Channels<[S; 5]>

Source§

type Float = [<S as Sample>::Float; 5]

Source§

type Signed = [<S as Sample>::Signed; 5]

Source§

fn equilibrium() -> Self

Source§

fn n_channels() -> usize

Source§

fn channels(self) -> Self::Channels

Source§

fn channel(&self, idx: usize) -> Option<&Self::Sample>

Source§

fn from_fn<F>(from: F) -> Self
where F: FnMut(usize) -> S,

Source§

fn from_samples<I>(samples: &mut I) -> Option<Self>
where I: Iterator<Item = Self::Sample>,

Source§

unsafe fn channel_unchecked(&self, idx: usize) -> &Self::Sample

Source§

fn to_signed_frame(self) -> Self::Signed

Source§

fn to_float_frame(self) -> Self::Float

Source§

fn map<F, M>(self, map: M) -> F
where F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample) -> F::Sample,

Source§

fn zip_map<O, F, M>(self, other: O, zip_map: M) -> F
where O: Frame<NumChannels = Self::NumChannels>, F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample, O::Sample) -> F::Sample,

Source§

fn scale_amp(self, amp: S::Float) -> Self

Source§

fn add_amp<F>(self, other: F) -> Self
where F: Frame<Sample = S::Signed, NumChannels = N5>,

Source§

impl<S> Frame for [S; 6]
where S: Sample,

Source§

type Sample = S

Source§

type NumChannels = N6

Source§

type Channels = Channels<[S; 6]>

Source§

type Float = [<S as Sample>::Float; 6]

Source§

type Signed = [<S as Sample>::Signed; 6]

Source§

fn equilibrium() -> Self

Source§

fn n_channels() -> usize

Source§

fn channels(self) -> Self::Channels

Source§

fn channel(&self, idx: usize) -> Option<&Self::Sample>

Source§

fn from_fn<F>(from: F) -> Self
where F: FnMut(usize) -> S,

Source§

fn from_samples<I>(samples: &mut I) -> Option<Self>
where I: Iterator<Item = Self::Sample>,

Source§

unsafe fn channel_unchecked(&self, idx: usize) -> &Self::Sample

Source§

fn to_signed_frame(self) -> Self::Signed

Source§

fn to_float_frame(self) -> Self::Float

Source§

fn map<F, M>(self, map: M) -> F
where F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample) -> F::Sample,

Source§

fn zip_map<O, F, M>(self, other: O, zip_map: M) -> F
where O: Frame<NumChannels = Self::NumChannels>, F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample, O::Sample) -> F::Sample,

Source§

fn scale_amp(self, amp: S::Float) -> Self

Source§

fn add_amp<F>(self, other: F) -> Self
where F: Frame<Sample = S::Signed, NumChannels = N6>,

Source§

impl<S> Frame for [S; 7]
where S: Sample,

Source§

type Sample = S

Source§

type NumChannels = N7

Source§

type Channels = Channels<[S; 7]>

Source§

type Float = [<S as Sample>::Float; 7]

Source§

type Signed = [<S as Sample>::Signed; 7]

Source§

fn equilibrium() -> Self

Source§

fn n_channels() -> usize

Source§

fn channels(self) -> Self::Channels

Source§

fn channel(&self, idx: usize) -> Option<&Self::Sample>

Source§

fn from_fn<F>(from: F) -> Self
where F: FnMut(usize) -> S,

Source§

fn from_samples<I>(samples: &mut I) -> Option<Self>
where I: Iterator<Item = Self::Sample>,

Source§

unsafe fn channel_unchecked(&self, idx: usize) -> &Self::Sample

Source§

fn to_signed_frame(self) -> Self::Signed

Source§

fn to_float_frame(self) -> Self::Float

Source§

fn map<F, M>(self, map: M) -> F
where F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample) -> F::Sample,

Source§

fn zip_map<O, F, M>(self, other: O, zip_map: M) -> F
where O: Frame<NumChannels = Self::NumChannels>, F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample, O::Sample) -> F::Sample,

Source§

fn scale_amp(self, amp: S::Float) -> Self

Source§

fn add_amp<F>(self, other: F) -> Self
where F: Frame<Sample = S::Signed, NumChannels = N7>,

Source§

impl<S> Frame for [S; 8]
where S: Sample,

Source§

type Sample = S

Source§

type NumChannels = N8

Source§

type Channels = Channels<[S; 8]>

Source§

type Float = [<S as Sample>::Float; 8]

Source§

type Signed = [<S as Sample>::Signed; 8]

Source§

fn equilibrium() -> Self

Source§

fn n_channels() -> usize

Source§

fn channels(self) -> Self::Channels

Source§

fn channel(&self, idx: usize) -> Option<&Self::Sample>

Source§

fn from_fn<F>(from: F) -> Self
where F: FnMut(usize) -> S,

Source§

fn from_samples<I>(samples: &mut I) -> Option<Self>
where I: Iterator<Item = Self::Sample>,

Source§

unsafe fn channel_unchecked(&self, idx: usize) -> &Self::Sample

Source§

fn to_signed_frame(self) -> Self::Signed

Source§

fn to_float_frame(self) -> Self::Float

Source§

fn map<F, M>(self, map: M) -> F
where F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample) -> F::Sample,

Source§

fn zip_map<O, F, M>(self, other: O, zip_map: M) -> F
where O: Frame<NumChannels = Self::NumChannels>, F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample, O::Sample) -> F::Sample,

Source§

fn scale_amp(self, amp: S::Float) -> Self

Source§

fn add_amp<F>(self, other: F) -> Self
where F: Frame<Sample = S::Signed, NumChannels = N8>,

Source§

impl<S> Frame for [S; 9]
where S: Sample,

Source§

type Sample = S

Source§

type NumChannels = N9

Source§

type Channels = Channels<[S; 9]>

Source§

type Float = [<S as Sample>::Float; 9]

Source§

type Signed = [<S as Sample>::Signed; 9]

Source§

fn equilibrium() -> Self

Source§

fn n_channels() -> usize

Source§

fn channels(self) -> Self::Channels

Source§

fn channel(&self, idx: usize) -> Option<&Self::Sample>

Source§

fn from_fn<F>(from: F) -> Self
where F: FnMut(usize) -> S,

Source§

fn from_samples<I>(samples: &mut I) -> Option<Self>
where I: Iterator<Item = Self::Sample>,

Source§

unsafe fn channel_unchecked(&self, idx: usize) -> &Self::Sample

Source§

fn to_signed_frame(self) -> Self::Signed

Source§

fn to_float_frame(self) -> Self::Float

Source§

fn map<F, M>(self, map: M) -> F
where F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample) -> F::Sample,

Source§

fn zip_map<O, F, M>(self, other: O, zip_map: M) -> F
where O: Frame<NumChannels = Self::NumChannels>, F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample, O::Sample) -> F::Sample,

Source§

fn scale_amp(self, amp: S::Float) -> Self

Source§

fn add_amp<F>(self, other: F) -> Self
where F: Frame<Sample = S::Signed, NumChannels = N9>,

Source§

impl<S> Frame for [S; 10]
where S: Sample,

Source§

type Sample = S

Source§

type NumChannels = N10

Source§

type Channels = Channels<[S; 10]>

Source§

type Float = [<S as Sample>::Float; 10]

Source§

type Signed = [<S as Sample>::Signed; 10]

Source§

fn equilibrium() -> Self

Source§

fn n_channels() -> usize

Source§

fn channels(self) -> Self::Channels

Source§

fn channel(&self, idx: usize) -> Option<&Self::Sample>

Source§

fn from_fn<F>(from: F) -> Self
where F: FnMut(usize) -> S,

Source§

fn from_samples<I>(samples: &mut I) -> Option<Self>
where I: Iterator<Item = Self::Sample>,

Source§

unsafe fn channel_unchecked(&self, idx: usize) -> &Self::Sample

Source§

fn to_signed_frame(self) -> Self::Signed

Source§

fn to_float_frame(self) -> Self::Float

Source§

fn map<F, M>(self, map: M) -> F
where F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample) -> F::Sample,

Source§

fn zip_map<O, F, M>(self, other: O, zip_map: M) -> F
where O: Frame<NumChannels = Self::NumChannels>, F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample, O::Sample) -> F::Sample,

Source§

fn scale_amp(self, amp: S::Float) -> Self

Source§

fn add_amp<F>(self, other: F) -> Self
where F: Frame<Sample = S::Signed, NumChannels = N10>,

Source§

impl<S> Frame for [S; 11]
where S: Sample,

Source§

type Sample = S

Source§

type NumChannels = N11

Source§

type Channels = Channels<[S; 11]>

Source§

type Float = [<S as Sample>::Float; 11]

Source§

type Signed = [<S as Sample>::Signed; 11]

Source§

fn equilibrium() -> Self

Source§

fn n_channels() -> usize

Source§

fn channels(self) -> Self::Channels

Source§

fn channel(&self, idx: usize) -> Option<&Self::Sample>

Source§

fn from_fn<F>(from: F) -> Self
where F: FnMut(usize) -> S,

Source§

fn from_samples<I>(samples: &mut I) -> Option<Self>
where I: Iterator<Item = Self::Sample>,

Source§

unsafe fn channel_unchecked(&self, idx: usize) -> &Self::Sample

Source§

fn to_signed_frame(self) -> Self::Signed

Source§

fn to_float_frame(self) -> Self::Float

Source§

fn map<F, M>(self, map: M) -> F
where F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample) -> F::Sample,

Source§

fn zip_map<O, F, M>(self, other: O, zip_map: M) -> F
where O: Frame<NumChannels = Self::NumChannels>, F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample, O::Sample) -> F::Sample,

Source§

fn scale_amp(self, amp: S::Float) -> Self

Source§

fn add_amp<F>(self, other: F) -> Self
where F: Frame<Sample = S::Signed, NumChannels = N11>,

Source§

impl<S> Frame for [S; 12]
where S: Sample,

Source§

type Sample = S

Source§

type NumChannels = N12

Source§

type Channels = Channels<[S; 12]>

Source§

type Float = [<S as Sample>::Float; 12]

Source§

type Signed = [<S as Sample>::Signed; 12]

Source§

fn equilibrium() -> Self

Source§

fn n_channels() -> usize

Source§

fn channels(self) -> Self::Channels

Source§

fn channel(&self, idx: usize) -> Option<&Self::Sample>

Source§

fn from_fn<F>(from: F) -> Self
where F: FnMut(usize) -> S,

Source§

fn from_samples<I>(samples: &mut I) -> Option<Self>
where I: Iterator<Item = Self::Sample>,

Source§

unsafe fn channel_unchecked(&self, idx: usize) -> &Self::Sample

Source§

fn to_signed_frame(self) -> Self::Signed

Source§

fn to_float_frame(self) -> Self::Float

Source§

fn map<F, M>(self, map: M) -> F
where F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample) -> F::Sample,

Source§

fn zip_map<O, F, M>(self, other: O, zip_map: M) -> F
where O: Frame<NumChannels = Self::NumChannels>, F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample, O::Sample) -> F::Sample,

Source§

fn scale_amp(self, amp: S::Float) -> Self

Source§

fn add_amp<F>(self, other: F) -> Self
where F: Frame<Sample = S::Signed, NumChannels = N12>,

Source§

impl<S> Frame for [S; 13]
where S: Sample,

Source§

type Sample = S

Source§

type NumChannels = N13

Source§

type Channels = Channels<[S; 13]>

Source§

type Float = [<S as Sample>::Float; 13]

Source§

type Signed = [<S as Sample>::Signed; 13]

Source§

fn equilibrium() -> Self

Source§

fn n_channels() -> usize

Source§

fn channels(self) -> Self::Channels

Source§

fn channel(&self, idx: usize) -> Option<&Self::Sample>

Source§

fn from_fn<F>(from: F) -> Self
where F: FnMut(usize) -> S,

Source§

fn from_samples<I>(samples: &mut I) -> Option<Self>
where I: Iterator<Item = Self::Sample>,

Source§

unsafe fn channel_unchecked(&self, idx: usize) -> &Self::Sample

Source§

fn to_signed_frame(self) -> Self::Signed

Source§

fn to_float_frame(self) -> Self::Float

Source§

fn map<F, M>(self, map: M) -> F
where F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample) -> F::Sample,

Source§

fn zip_map<O, F, M>(self, other: O, zip_map: M) -> F
where O: Frame<NumChannels = Self::NumChannels>, F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample, O::Sample) -> F::Sample,

Source§

fn scale_amp(self, amp: S::Float) -> Self

Source§

fn add_amp<F>(self, other: F) -> Self
where F: Frame<Sample = S::Signed, NumChannels = N13>,

Source§

impl<S> Frame for [S; 14]
where S: Sample,

Source§

type Sample = S

Source§

type NumChannels = N14

Source§

type Channels = Channels<[S; 14]>

Source§

type Float = [<S as Sample>::Float; 14]

Source§

type Signed = [<S as Sample>::Signed; 14]

Source§

fn equilibrium() -> Self

Source§

fn n_channels() -> usize

Source§

fn channels(self) -> Self::Channels

Source§

fn channel(&self, idx: usize) -> Option<&Self::Sample>

Source§

fn from_fn<F>(from: F) -> Self
where F: FnMut(usize) -> S,

Source§

fn from_samples<I>(samples: &mut I) -> Option<Self>
where I: Iterator<Item = Self::Sample>,

Source§

unsafe fn channel_unchecked(&self, idx: usize) -> &Self::Sample

Source§

fn to_signed_frame(self) -> Self::Signed

Source§

fn to_float_frame(self) -> Self::Float

Source§

fn map<F, M>(self, map: M) -> F
where F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample) -> F::Sample,

Source§

fn zip_map<O, F, M>(self, other: O, zip_map: M) -> F
where O: Frame<NumChannels = Self::NumChannels>, F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample, O::Sample) -> F::Sample,

Source§

fn scale_amp(self, amp: S::Float) -> Self

Source§

fn add_amp<F>(self, other: F) -> Self
where F: Frame<Sample = S::Signed, NumChannels = N14>,

Source§

impl<S> Frame for [S; 15]
where S: Sample,

Source§

type Sample = S

Source§

type NumChannels = N15

Source§

type Channels = Channels<[S; 15]>

Source§

type Float = [<S as Sample>::Float; 15]

Source§

type Signed = [<S as Sample>::Signed; 15]

Source§

fn equilibrium() -> Self

Source§

fn n_channels() -> usize

Source§

fn channels(self) -> Self::Channels

Source§

fn channel(&self, idx: usize) -> Option<&Self::Sample>

Source§

fn from_fn<F>(from: F) -> Self
where F: FnMut(usize) -> S,

Source§

fn from_samples<I>(samples: &mut I) -> Option<Self>
where I: Iterator<Item = Self::Sample>,

Source§

unsafe fn channel_unchecked(&self, idx: usize) -> &Self::Sample

Source§

fn to_signed_frame(self) -> Self::Signed

Source§

fn to_float_frame(self) -> Self::Float

Source§

fn map<F, M>(self, map: M) -> F
where F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample) -> F::Sample,

Source§

fn zip_map<O, F, M>(self, other: O, zip_map: M) -> F
where O: Frame<NumChannels = Self::NumChannels>, F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample, O::Sample) -> F::Sample,

Source§

fn scale_amp(self, amp: S::Float) -> Self

Source§

fn add_amp<F>(self, other: F) -> Self
where F: Frame<Sample = S::Signed, NumChannels = N15>,

Source§

impl<S> Frame for [S; 16]
where S: Sample,

Source§

type Sample = S

Source§

type NumChannels = N16

Source§

type Channels = Channels<[S; 16]>

Source§

type Float = [<S as Sample>::Float; 16]

Source§

type Signed = [<S as Sample>::Signed; 16]

Source§

fn equilibrium() -> Self

Source§

fn n_channels() -> usize

Source§

fn channels(self) -> Self::Channels

Source§

fn channel(&self, idx: usize) -> Option<&Self::Sample>

Source§

fn from_fn<F>(from: F) -> Self
where F: FnMut(usize) -> S,

Source§

fn from_samples<I>(samples: &mut I) -> Option<Self>
where I: Iterator<Item = Self::Sample>,

Source§

unsafe fn channel_unchecked(&self, idx: usize) -> &Self::Sample

Source§

fn to_signed_frame(self) -> Self::Signed

Source§

fn to_float_frame(self) -> Self::Float

Source§

fn map<F, M>(self, map: M) -> F
where F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample) -> F::Sample,

Source§

fn zip_map<O, F, M>(self, other: O, zip_map: M) -> F
where O: Frame<NumChannels = Self::NumChannels>, F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample, O::Sample) -> F::Sample,

Source§

fn scale_amp(self, amp: S::Float) -> Self

Source§

fn add_amp<F>(self, other: F) -> Self
where F: Frame<Sample = S::Signed, NumChannels = N16>,

Source§

impl<S> Frame for [S; 17]
where S: Sample,

Source§

type Sample = S

Source§

type NumChannels = N17

Source§

type Channels = Channels<[S; 17]>

Source§

type Float = [<S as Sample>::Float; 17]

Source§

type Signed = [<S as Sample>::Signed; 17]

Source§

fn equilibrium() -> Self

Source§

fn n_channels() -> usize

Source§

fn channels(self) -> Self::Channels

Source§

fn channel(&self, idx: usize) -> Option<&Self::Sample>

Source§

fn from_fn<F>(from: F) -> Self
where F: FnMut(usize) -> S,

Source§

fn from_samples<I>(samples: &mut I) -> Option<Self>
where I: Iterator<Item = Self::Sample>,

Source§

unsafe fn channel_unchecked(&self, idx: usize) -> &Self::Sample

Source§

fn to_signed_frame(self) -> Self::Signed

Source§

fn to_float_frame(self) -> Self::Float

Source§

fn map<F, M>(self, map: M) -> F
where F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample) -> F::Sample,

Source§

fn zip_map<O, F, M>(self, other: O, zip_map: M) -> F
where O: Frame<NumChannels = Self::NumChannels>, F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample, O::Sample) -> F::Sample,

Source§

fn scale_amp(self, amp: S::Float) -> Self

Source§

fn add_amp<F>(self, other: F) -> Self
where F: Frame<Sample = S::Signed, NumChannels = N17>,

Source§

impl<S> Frame for [S; 18]
where S: Sample,

Source§

type Sample = S

Source§

type NumChannels = N18

Source§

type Channels = Channels<[S; 18]>

Source§

type Float = [<S as Sample>::Float; 18]

Source§

type Signed = [<S as Sample>::Signed; 18]

Source§

fn equilibrium() -> Self

Source§

fn n_channels() -> usize

Source§

fn channels(self) -> Self::Channels

Source§

fn channel(&self, idx: usize) -> Option<&Self::Sample>

Source§

fn from_fn<F>(from: F) -> Self
where F: FnMut(usize) -> S,

Source§

fn from_samples<I>(samples: &mut I) -> Option<Self>
where I: Iterator<Item = Self::Sample>,

Source§

unsafe fn channel_unchecked(&self, idx: usize) -> &Self::Sample

Source§

fn to_signed_frame(self) -> Self::Signed

Source§

fn to_float_frame(self) -> Self::Float

Source§

fn map<F, M>(self, map: M) -> F
where F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample) -> F::Sample,

Source§

fn zip_map<O, F, M>(self, other: O, zip_map: M) -> F
where O: Frame<NumChannels = Self::NumChannels>, F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample, O::Sample) -> F::Sample,

Source§

fn scale_amp(self, amp: S::Float) -> Self

Source§

fn add_amp<F>(self, other: F) -> Self
where F: Frame<Sample = S::Signed, NumChannels = N18>,

Source§

impl<S> Frame for [S; 19]
where S: Sample,

Source§

type Sample = S

Source§

type NumChannels = N19

Source§

type Channels = Channels<[S; 19]>

Source§

type Float = [<S as Sample>::Float; 19]

Source§

type Signed = [<S as Sample>::Signed; 19]

Source§

fn equilibrium() -> Self

Source§

fn n_channels() -> usize

Source§

fn channels(self) -> Self::Channels

Source§

fn channel(&self, idx: usize) -> Option<&Self::Sample>

Source§

fn from_fn<F>(from: F) -> Self
where F: FnMut(usize) -> S,

Source§

fn from_samples<I>(samples: &mut I) -> Option<Self>
where I: Iterator<Item = Self::Sample>,

Source§

unsafe fn channel_unchecked(&self, idx: usize) -> &Self::Sample

Source§

fn to_signed_frame(self) -> Self::Signed

Source§

fn to_float_frame(self) -> Self::Float

Source§

fn map<F, M>(self, map: M) -> F
where F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample) -> F::Sample,

Source§

fn zip_map<O, F, M>(self, other: O, zip_map: M) -> F
where O: Frame<NumChannels = Self::NumChannels>, F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample, O::Sample) -> F::Sample,

Source§

fn scale_amp(self, amp: S::Float) -> Self

Source§

fn add_amp<F>(self, other: F) -> Self
where F: Frame<Sample = S::Signed, NumChannels = N19>,

Source§

impl<S> Frame for [S; 20]
where S: Sample,

Source§

type Sample = S

Source§

type NumChannels = N20

Source§

type Channels = Channels<[S; 20]>

Source§

type Float = [<S as Sample>::Float; 20]

Source§

type Signed = [<S as Sample>::Signed; 20]

Source§

fn equilibrium() -> Self

Source§

fn n_channels() -> usize

Source§

fn channels(self) -> Self::Channels

Source§

fn channel(&self, idx: usize) -> Option<&Self::Sample>

Source§

fn from_fn<F>(from: F) -> Self
where F: FnMut(usize) -> S,

Source§

fn from_samples<I>(samples: &mut I) -> Option<Self>
where I: Iterator<Item = Self::Sample>,

Source§

unsafe fn channel_unchecked(&self, idx: usize) -> &Self::Sample

Source§

fn to_signed_frame(self) -> Self::Signed

Source§

fn to_float_frame(self) -> Self::Float

Source§

fn map<F, M>(self, map: M) -> F
where F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample) -> F::Sample,

Source§

fn zip_map<O, F, M>(self, other: O, zip_map: M) -> F
where O: Frame<NumChannels = Self::NumChannels>, F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample, O::Sample) -> F::Sample,

Source§

fn scale_amp(self, amp: S::Float) -> Self

Source§

fn add_amp<F>(self, other: F) -> Self
where F: Frame<Sample = S::Signed, NumChannels = N20>,

Source§

impl<S> Frame for [S; 21]
where S: Sample,

Source§

type Sample = S

Source§

type NumChannels = N21

Source§

type Channels = Channels<[S; 21]>

Source§

type Float = [<S as Sample>::Float; 21]

Source§

type Signed = [<S as Sample>::Signed; 21]

Source§

fn equilibrium() -> Self

Source§

fn n_channels() -> usize

Source§

fn channels(self) -> Self::Channels

Source§

fn channel(&self, idx: usize) -> Option<&Self::Sample>

Source§

fn from_fn<F>(from: F) -> Self
where F: FnMut(usize) -> S,

Source§

fn from_samples<I>(samples: &mut I) -> Option<Self>
where I: Iterator<Item = Self::Sample>,

Source§

unsafe fn channel_unchecked(&self, idx: usize) -> &Self::Sample

Source§

fn to_signed_frame(self) -> Self::Signed

Source§

fn to_float_frame(self) -> Self::Float

Source§

fn map<F, M>(self, map: M) -> F
where F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample) -> F::Sample,

Source§

fn zip_map<O, F, M>(self, other: O, zip_map: M) -> F
where O: Frame<NumChannels = Self::NumChannels>, F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample, O::Sample) -> F::Sample,

Source§

fn scale_amp(self, amp: S::Float) -> Self

Source§

fn add_amp<F>(self, other: F) -> Self
where F: Frame<Sample = S::Signed, NumChannels = N21>,

Source§

impl<S> Frame for [S; 22]
where S: Sample,

Source§

type Sample = S

Source§

type NumChannels = N22

Source§

type Channels = Channels<[S; 22]>

Source§

type Float = [<S as Sample>::Float; 22]

Source§

type Signed = [<S as Sample>::Signed; 22]

Source§

fn equilibrium() -> Self

Source§

fn n_channels() -> usize

Source§

fn channels(self) -> Self::Channels

Source§

fn channel(&self, idx: usize) -> Option<&Self::Sample>

Source§

fn from_fn<F>(from: F) -> Self
where F: FnMut(usize) -> S,

Source§

fn from_samples<I>(samples: &mut I) -> Option<Self>
where I: Iterator<Item = Self::Sample>,

Source§

unsafe fn channel_unchecked(&self, idx: usize) -> &Self::Sample

Source§

fn to_signed_frame(self) -> Self::Signed

Source§

fn to_float_frame(self) -> Self::Float

Source§

fn map<F, M>(self, map: M) -> F
where F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample) -> F::Sample,

Source§

fn zip_map<O, F, M>(self, other: O, zip_map: M) -> F
where O: Frame<NumChannels = Self::NumChannels>, F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample, O::Sample) -> F::Sample,

Source§

fn scale_amp(self, amp: S::Float) -> Self

Source§

fn add_amp<F>(self, other: F) -> Self
where F: Frame<Sample = S::Signed, NumChannels = N22>,

Source§

impl<S> Frame for [S; 23]
where S: Sample,

Source§

type Sample = S

Source§

type NumChannels = N23

Source§

type Channels = Channels<[S; 23]>

Source§

type Float = [<S as Sample>::Float; 23]

Source§

type Signed = [<S as Sample>::Signed; 23]

Source§

fn equilibrium() -> Self

Source§

fn n_channels() -> usize

Source§

fn channels(self) -> Self::Channels

Source§

fn channel(&self, idx: usize) -> Option<&Self::Sample>

Source§

fn from_fn<F>(from: F) -> Self
where F: FnMut(usize) -> S,

Source§

fn from_samples<I>(samples: &mut I) -> Option<Self>
where I: Iterator<Item = Self::Sample>,

Source§

unsafe fn channel_unchecked(&self, idx: usize) -> &Self::Sample

Source§

fn to_signed_frame(self) -> Self::Signed

Source§

fn to_float_frame(self) -> Self::Float

Source§

fn map<F, M>(self, map: M) -> F
where F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample) -> F::Sample,

Source§

fn zip_map<O, F, M>(self, other: O, zip_map: M) -> F
where O: Frame<NumChannels = Self::NumChannels>, F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample, O::Sample) -> F::Sample,

Source§

fn scale_amp(self, amp: S::Float) -> Self

Source§

fn add_amp<F>(self, other: F) -> Self
where F: Frame<Sample = S::Signed, NumChannels = N23>,

Source§

impl<S> Frame for [S; 24]
where S: Sample,

Source§

type Sample = S

Source§

type NumChannels = N24

Source§

type Channels = Channels<[S; 24]>

Source§

type Float = [<S as Sample>::Float; 24]

Source§

type Signed = [<S as Sample>::Signed; 24]

Source§

fn equilibrium() -> Self

Source§

fn n_channels() -> usize

Source§

fn channels(self) -> Self::Channels

Source§

fn channel(&self, idx: usize) -> Option<&Self::Sample>

Source§

fn from_fn<F>(from: F) -> Self
where F: FnMut(usize) -> S,

Source§

fn from_samples<I>(samples: &mut I) -> Option<Self>
where I: Iterator<Item = Self::Sample>,

Source§

unsafe fn channel_unchecked(&self, idx: usize) -> &Self::Sample

Source§

fn to_signed_frame(self) -> Self::Signed

Source§

fn to_float_frame(self) -> Self::Float

Source§

fn map<F, M>(self, map: M) -> F
where F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample) -> F::Sample,

Source§

fn zip_map<O, F, M>(self, other: O, zip_map: M) -> F
where O: Frame<NumChannels = Self::NumChannels>, F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample, O::Sample) -> F::Sample,

Source§

fn scale_amp(self, amp: S::Float) -> Self

Source§

fn add_amp<F>(self, other: F) -> Self
where F: Frame<Sample = S::Signed, NumChannels = N24>,

Source§

impl<S> Frame for [S; 25]
where S: Sample,

Source§

type Sample = S

Source§

type NumChannels = N25

Source§

type Channels = Channels<[S; 25]>

Source§

type Float = [<S as Sample>::Float; 25]

Source§

type Signed = [<S as Sample>::Signed; 25]

Source§

fn equilibrium() -> Self

Source§

fn n_channels() -> usize

Source§

fn channels(self) -> Self::Channels

Source§

fn channel(&self, idx: usize) -> Option<&Self::Sample>

Source§

fn from_fn<F>(from: F) -> Self
where F: FnMut(usize) -> S,

Source§

fn from_samples<I>(samples: &mut I) -> Option<Self>
where I: Iterator<Item = Self::Sample>,

Source§

unsafe fn channel_unchecked(&self, idx: usize) -> &Self::Sample

Source§

fn to_signed_frame(self) -> Self::Signed

Source§

fn to_float_frame(self) -> Self::Float

Source§

fn map<F, M>(self, map: M) -> F
where F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample) -> F::Sample,

Source§

fn zip_map<O, F, M>(self, other: O, zip_map: M) -> F
where O: Frame<NumChannels = Self::NumChannels>, F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample, O::Sample) -> F::Sample,

Source§

fn scale_amp(self, amp: S::Float) -> Self

Source§

fn add_amp<F>(self, other: F) -> Self
where F: Frame<Sample = S::Signed, NumChannels = N25>,

Source§

impl<S> Frame for [S; 26]
where S: Sample,

Source§

type Sample = S

Source§

type NumChannels = N26

Source§

type Channels = Channels<[S; 26]>

Source§

type Float = [<S as Sample>::Float; 26]

Source§

type Signed = [<S as Sample>::Signed; 26]

Source§

fn equilibrium() -> Self

Source§

fn n_channels() -> usize

Source§

fn channels(self) -> Self::Channels

Source§

fn channel(&self, idx: usize) -> Option<&Self::Sample>

Source§

fn from_fn<F>(from: F) -> Self
where F: FnMut(usize) -> S,

Source§

fn from_samples<I>(samples: &mut I) -> Option<Self>
where I: Iterator<Item = Self::Sample>,

Source§

unsafe fn channel_unchecked(&self, idx: usize) -> &Self::Sample

Source§

fn to_signed_frame(self) -> Self::Signed

Source§

fn to_float_frame(self) -> Self::Float

Source§

fn map<F, M>(self, map: M) -> F
where F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample) -> F::Sample,

Source§

fn zip_map<O, F, M>(self, other: O, zip_map: M) -> F
where O: Frame<NumChannels = Self::NumChannels>, F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample, O::Sample) -> F::Sample,

Source§

fn scale_amp(self, amp: S::Float) -> Self

Source§

fn add_amp<F>(self, other: F) -> Self
where F: Frame<Sample = S::Signed, NumChannels = N26>,

Source§

impl<S> Frame for [S; 27]
where S: Sample,

Source§

type Sample = S

Source§

type NumChannels = N27

Source§

type Channels = Channels<[S; 27]>

Source§

type Float = [<S as Sample>::Float; 27]

Source§

type Signed = [<S as Sample>::Signed; 27]

Source§

fn equilibrium() -> Self

Source§

fn n_channels() -> usize

Source§

fn channels(self) -> Self::Channels

Source§

fn channel(&self, idx: usize) -> Option<&Self::Sample>

Source§

fn from_fn<F>(from: F) -> Self
where F: FnMut(usize) -> S,

Source§

fn from_samples<I>(samples: &mut I) -> Option<Self>
where I: Iterator<Item = Self::Sample>,

Source§

unsafe fn channel_unchecked(&self, idx: usize) -> &Self::Sample

Source§

fn to_signed_frame(self) -> Self::Signed

Source§

fn to_float_frame(self) -> Self::Float

Source§

fn map<F, M>(self, map: M) -> F
where F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample) -> F::Sample,

Source§

fn zip_map<O, F, M>(self, other: O, zip_map: M) -> F
where O: Frame<NumChannels = Self::NumChannels>, F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample, O::Sample) -> F::Sample,

Source§

fn scale_amp(self, amp: S::Float) -> Self

Source§

fn add_amp<F>(self, other: F) -> Self
where F: Frame<Sample = S::Signed, NumChannels = N27>,

Source§

impl<S> Frame for [S; 28]
where S: Sample,

Source§

type Sample = S

Source§

type NumChannels = N28

Source§

type Channels = Channels<[S; 28]>

Source§

type Float = [<S as Sample>::Float; 28]

Source§

type Signed = [<S as Sample>::Signed; 28]

Source§

fn equilibrium() -> Self

Source§

fn n_channels() -> usize

Source§

fn channels(self) -> Self::Channels

Source§

fn channel(&self, idx: usize) -> Option<&Self::Sample>

Source§

fn from_fn<F>(from: F) -> Self
where F: FnMut(usize) -> S,

Source§

fn from_samples<I>(samples: &mut I) -> Option<Self>
where I: Iterator<Item = Self::Sample>,

Source§

unsafe fn channel_unchecked(&self, idx: usize) -> &Self::Sample

Source§

fn to_signed_frame(self) -> Self::Signed

Source§

fn to_float_frame(self) -> Self::Float

Source§

fn map<F, M>(self, map: M) -> F
where F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample) -> F::Sample,

Source§

fn zip_map<O, F, M>(self, other: O, zip_map: M) -> F
where O: Frame<NumChannels = Self::NumChannels>, F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample, O::Sample) -> F::Sample,

Source§

fn scale_amp(self, amp: S::Float) -> Self

Source§

fn add_amp<F>(self, other: F) -> Self
where F: Frame<Sample = S::Signed, NumChannels = N28>,

Source§

impl<S> Frame for [S; 29]
where S: Sample,

Source§

type Sample = S

Source§

type NumChannels = N29

Source§

type Channels = Channels<[S; 29]>

Source§

type Float = [<S as Sample>::Float; 29]

Source§

type Signed = [<S as Sample>::Signed; 29]

Source§

fn equilibrium() -> Self

Source§

fn n_channels() -> usize

Source§

fn channels(self) -> Self::Channels

Source§

fn channel(&self, idx: usize) -> Option<&Self::Sample>

Source§

fn from_fn<F>(from: F) -> Self
where F: FnMut(usize) -> S,

Source§

fn from_samples<I>(samples: &mut I) -> Option<Self>
where I: Iterator<Item = Self::Sample>,

Source§

unsafe fn channel_unchecked(&self, idx: usize) -> &Self::Sample

Source§

fn to_signed_frame(self) -> Self::Signed

Source§

fn to_float_frame(self) -> Self::Float

Source§

fn map<F, M>(self, map: M) -> F
where F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample) -> F::Sample,

Source§

fn zip_map<O, F, M>(self, other: O, zip_map: M) -> F
where O: Frame<NumChannels = Self::NumChannels>, F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample, O::Sample) -> F::Sample,

Source§

fn scale_amp(self, amp: S::Float) -> Self

Source§

fn add_amp<F>(self, other: F) -> Self
where F: Frame<Sample = S::Signed, NumChannels = N29>,

Source§

impl<S> Frame for [S; 30]
where S: Sample,

Source§

type Sample = S

Source§

type NumChannels = N30

Source§

type Channels = Channels<[S; 30]>

Source§

type Float = [<S as Sample>::Float; 30]

Source§

type Signed = [<S as Sample>::Signed; 30]

Source§

fn equilibrium() -> Self

Source§

fn n_channels() -> usize

Source§

fn channels(self) -> Self::Channels

Source§

fn channel(&self, idx: usize) -> Option<&Self::Sample>

Source§

fn from_fn<F>(from: F) -> Self
where F: FnMut(usize) -> S,

Source§

fn from_samples<I>(samples: &mut I) -> Option<Self>
where I: Iterator<Item = Self::Sample>,

Source§

unsafe fn channel_unchecked(&self, idx: usize) -> &Self::Sample

Source§

fn to_signed_frame(self) -> Self::Signed

Source§

fn to_float_frame(self) -> Self::Float

Source§

fn map<F, M>(self, map: M) -> F
where F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample) -> F::Sample,

Source§

fn zip_map<O, F, M>(self, other: O, zip_map: M) -> F
where O: Frame<NumChannels = Self::NumChannels>, F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample, O::Sample) -> F::Sample,

Source§

fn scale_amp(self, amp: S::Float) -> Self

Source§

fn add_amp<F>(self, other: F) -> Self
where F: Frame<Sample = S::Signed, NumChannels = N30>,

Source§

impl<S> Frame for [S; 31]
where S: Sample,

Source§

type Sample = S

Source§

type NumChannels = N31

Source§

type Channels = Channels<[S; 31]>

Source§

type Float = [<S as Sample>::Float; 31]

Source§

type Signed = [<S as Sample>::Signed; 31]

Source§

fn equilibrium() -> Self

Source§

fn n_channels() -> usize

Source§

fn channels(self) -> Self::Channels

Source§

fn channel(&self, idx: usize) -> Option<&Self::Sample>

Source§

fn from_fn<F>(from: F) -> Self
where F: FnMut(usize) -> S,

Source§

fn from_samples<I>(samples: &mut I) -> Option<Self>
where I: Iterator<Item = Self::Sample>,

Source§

unsafe fn channel_unchecked(&self, idx: usize) -> &Self::Sample

Source§

fn to_signed_frame(self) -> Self::Signed

Source§

fn to_float_frame(self) -> Self::Float

Source§

fn map<F, M>(self, map: M) -> F
where F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample) -> F::Sample,

Source§

fn zip_map<O, F, M>(self, other: O, zip_map: M) -> F
where O: Frame<NumChannels = Self::NumChannels>, F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample, O::Sample) -> F::Sample,

Source§

fn scale_amp(self, amp: S::Float) -> Self

Source§

fn add_amp<F>(self, other: F) -> Self
where F: Frame<Sample = S::Signed, NumChannels = N31>,

Source§

impl<S> Frame for [S; 32]
where S: Sample,

Source§

type Sample = S

Source§

type NumChannels = N32

Source§

type Channels = Channels<[S; 32]>

Source§

type Float = [<S as Sample>::Float; 32]

Source§

type Signed = [<S as Sample>::Signed; 32]

Source§

fn equilibrium() -> Self

Source§

fn n_channels() -> usize

Source§

fn channels(self) -> Self::Channels

Source§

fn channel(&self, idx: usize) -> Option<&Self::Sample>

Source§

fn from_fn<F>(from: F) -> Self
where F: FnMut(usize) -> S,

Source§

fn from_samples<I>(samples: &mut I) -> Option<Self>
where I: Iterator<Item = Self::Sample>,

Source§

unsafe fn channel_unchecked(&self, idx: usize) -> &Self::Sample

Source§

fn to_signed_frame(self) -> Self::Signed

Source§

fn to_float_frame(self) -> Self::Float

Source§

fn map<F, M>(self, map: M) -> F
where F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample) -> F::Sample,

Source§

fn zip_map<O, F, M>(self, other: O, zip_map: M) -> F
where O: Frame<NumChannels = Self::NumChannels>, F: Frame<NumChannels = Self::NumChannels>, M: FnMut(Self::Sample, O::Sample) -> F::Sample,

Source§

fn scale_amp(self, amp: S::Float) -> Self

Source§

fn add_amp<F>(self, other: F) -> Self
where F: Frame<Sample = S::Signed, NumChannels = N32>,

Implementors§