dasp_frame

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

    const EQUILIBRIUM: Self;
    const CHANNELS: usize;
Show 13 methods // Required methods 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 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.

Implementations are provided for:

  • All fixed-size arrays up to a length of 32 elements.
  • All primitive types that implement Sample. These implementations assume CHANNELS = 1.

Required Associated Constants§

Source

const 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.

§Examples
use dasp_frame::{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

const CHANNELS: usize

The total number of channels within the frame.

§Examples
use dasp_frame::{Frame, Mono, Stereo};

fn main() {
    assert_eq!(Mono::<f32>::CHANNELS, 1);
    assert_eq!(Stereo::<f32>::CHANNELS, 2);
    assert_eq!(<[f32; 3]>::CHANNELS, 3);
    assert_eq!(<[u8; 2]>::CHANNELS, 2);
}

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 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 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
use dasp_frame::Frame;
use dasp_sample::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
use dasp_frame::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
use dasp_frame::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
use dasp_frame::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
use dasp_frame::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
use dasp_frame::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
use dasp_frame::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, -1.0]);
    assert_eq!(bar, [128, 192]);
}

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 Frame for f32

Source§

const EQUILIBRIUM: Self = 0f32

Source§

const CHANNELS: usize = 1usize

Source§

type Sample = f32

Source§

type NumChannels = N1

Source§

type Channels = Channels<f32>

Source§

type Float = <f32 as Sample>::Float

Source§

type Signed = <f32 as Sample>::Signed

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) -> Self::Sample,

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: <f32 as Sample>::Float) -> Self

Source§

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

Source§

impl Frame for f64

Source§

const EQUILIBRIUM: Self = 0f64

Source§

const CHANNELS: usize = 1usize

Source§

type Sample = f64

Source§

type NumChannels = N1

Source§

type Channels = Channels<f64>

Source§

type Float = <f64 as Sample>::Float

Source§

type Signed = <f64 as Sample>::Signed

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) -> Self::Sample,

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: <f64 as Sample>::Float) -> Self

Source§

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

Source§

impl Frame for i8

Source§

const EQUILIBRIUM: Self = 0i8

Source§

const CHANNELS: usize = 1usize

Source§

type Sample = i8

Source§

type NumChannels = N1

Source§

type Channels = Channels<i8>

Source§

type Float = <i8 as Sample>::Float

Source§

type Signed = <i8 as Sample>::Signed

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) -> Self::Sample,

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: <i8 as Sample>::Float) -> Self

Source§

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

Source§

impl Frame for i16

Source§

const EQUILIBRIUM: Self = 0i16

Source§

const CHANNELS: usize = 1usize

Source§

type Sample = i16

Source§

type NumChannels = N1

Source§

type Channels = Channels<i16>

Source§

type Float = <i16 as Sample>::Float

Source§

type Signed = <i16 as Sample>::Signed

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) -> Self::Sample,

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: <i16 as Sample>::Float) -> Self

Source§

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

Source§

impl Frame for i32

Source§

const EQUILIBRIUM: Self = 0i32

Source§

const CHANNELS: usize = 1usize

Source§

type Sample = i32

Source§

type NumChannels = N1

Source§

type Channels = Channels<i32>

Source§

type Float = <i32 as Sample>::Float

Source§

type Signed = <i32 as Sample>::Signed

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) -> Self::Sample,

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: <i32 as Sample>::Float) -> Self

Source§

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

Source§

impl Frame for i64

Source§

const EQUILIBRIUM: Self = 0i64

Source§

const CHANNELS: usize = 1usize

Source§

type Sample = i64

Source§

type NumChannels = N1

Source§

type Channels = Channels<i64>

Source§

type Float = <i64 as Sample>::Float

Source§

type Signed = <i64 as Sample>::Signed

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) -> Self::Sample,

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: <i64 as Sample>::Float) -> Self

Source§

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

Source§

impl Frame for u8

Source§

const EQUILIBRIUM: Self = 128u8

Source§

const CHANNELS: usize = 1usize

Source§

type Sample = u8

Source§

type NumChannels = N1

Source§

type Channels = Channels<u8>

Source§

type Float = <u8 as Sample>::Float

Source§

type Signed = <u8 as Sample>::Signed

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) -> Self::Sample,

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: <u8 as Sample>::Float) -> Self

Source§

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

Source§

impl Frame for u16

Source§

const EQUILIBRIUM: Self = 32_768u16

Source§

const CHANNELS: usize = 1usize

Source§

type Sample = u16

Source§

type NumChannels = N1

Source§

type Channels = Channels<u16>

Source§

type Float = <u16 as Sample>::Float

Source§

type Signed = <u16 as Sample>::Signed

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) -> Self::Sample,

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: <u16 as Sample>::Float) -> Self

Source§

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

Source§

impl Frame for u32

Source§

const EQUILIBRIUM: Self = 2_147_483_648u32

Source§

const CHANNELS: usize = 1usize

Source§

type Sample = u32

Source§

type NumChannels = N1

Source§

type Channels = Channels<u32>

Source§

type Float = <u32 as Sample>::Float

Source§

type Signed = <u32 as Sample>::Signed

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) -> Self::Sample,

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: <u32 as Sample>::Float) -> Self

Source§

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

Source§

impl Frame for u64

Source§

const EQUILIBRIUM: Self = 9_223_372_036_854_775_808u64

Source§

const CHANNELS: usize = 1usize

Source§

type Sample = u64

Source§

type NumChannels = N1

Source§

type Channels = Channels<u64>

Source§

type Float = <u64 as Sample>::Float

Source§

type Signed = <u64 as Sample>::Signed

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) -> Self::Sample,

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: <u64 as Sample>::Float) -> Self

Source§

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

Source§

impl Frame for I24

Source§

const EQUILIBRIUM: Self = <dasp_sample::types::I24 as Sample>::EQUILIBRIUM

Source§

const CHANNELS: usize = 1usize

Source§

type Sample = I24

Source§

type NumChannels = N1

Source§

type Channels = Channels<I24>

Source§

type Float = <I24 as Sample>::Float

Source§

type Signed = <I24 as Sample>::Signed

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) -> Self::Sample,

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: <I24 as Sample>::Float) -> Self

Source§

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

Source§

impl Frame for I48

Source§

const EQUILIBRIUM: Self = <dasp_sample::types::I48 as Sample>::EQUILIBRIUM

Source§

const CHANNELS: usize = 1usize

Source§

type Sample = I48

Source§

type NumChannels = N1

Source§

type Channels = Channels<I48>

Source§

type Float = <I48 as Sample>::Float

Source§

type Signed = <I48 as Sample>::Signed

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) -> Self::Sample,

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: <I48 as Sample>::Float) -> Self

Source§

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

Source§

impl Frame for U24

Source§

const EQUILIBRIUM: Self = <dasp_sample::types::U24 as Sample>::EQUILIBRIUM

Source§

const CHANNELS: usize = 1usize

Source§

type Sample = U24

Source§

type NumChannels = N1

Source§

type Channels = Channels<U24>

Source§

type Float = <U24 as Sample>::Float

Source§

type Signed = <U24 as Sample>::Signed

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) -> Self::Sample,

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: <U24 as Sample>::Float) -> Self

Source§

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

Source§

impl Frame for U48

Source§

const EQUILIBRIUM: Self = <dasp_sample::types::U48 as Sample>::EQUILIBRIUM

Source§

const CHANNELS: usize = 1usize

Source§

type Sample = U48

Source§

type NumChannels = N1

Source§

type Channels = Channels<U48>

Source§

type Float = <U48 as Sample>::Float

Source§

type Signed = <U48 as Sample>::Signed

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) -> Self::Sample,

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: <U48 as Sample>::Float) -> Self

Source§

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

Source§

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

Source§

const EQUILIBRIUM: Self

Source§

const CHANNELS: usize = 1usize

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

const EQUILIBRIUM: Self

Source§

const CHANNELS: usize = 2usize

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

const EQUILIBRIUM: Self

Source§

const CHANNELS: usize = 3usize

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

const EQUILIBRIUM: Self

Source§

const CHANNELS: usize = 4usize

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

const EQUILIBRIUM: Self

Source§

const CHANNELS: usize = 5usize

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

const EQUILIBRIUM: Self

Source§

const CHANNELS: usize = 6usize

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

const EQUILIBRIUM: Self

Source§

const CHANNELS: usize = 7usize

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

const EQUILIBRIUM: Self

Source§

const CHANNELS: usize = 8usize

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

const EQUILIBRIUM: Self

Source§

const CHANNELS: usize = 9usize

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

const EQUILIBRIUM: Self

Source§

const CHANNELS: usize = 10usize

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

const EQUILIBRIUM: Self

Source§

const CHANNELS: usize = 11usize

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

const EQUILIBRIUM: Self

Source§

const CHANNELS: usize = 12usize

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

const EQUILIBRIUM: Self

Source§

const CHANNELS: usize = 13usize

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

const EQUILIBRIUM: Self

Source§

const CHANNELS: usize = 14usize

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

const EQUILIBRIUM: Self

Source§

const CHANNELS: usize = 15usize

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

const EQUILIBRIUM: Self

Source§

const CHANNELS: usize = 16usize

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

const EQUILIBRIUM: Self

Source§

const CHANNELS: usize = 17usize

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

const EQUILIBRIUM: Self

Source§

const CHANNELS: usize = 18usize

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

const EQUILIBRIUM: Self

Source§

const CHANNELS: usize = 19usize

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

const EQUILIBRIUM: Self

Source§

const CHANNELS: usize = 20usize

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

const EQUILIBRIUM: Self

Source§

const CHANNELS: usize = 21usize

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

const EQUILIBRIUM: Self

Source§

const CHANNELS: usize = 22usize

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

const EQUILIBRIUM: Self

Source§

const CHANNELS: usize = 23usize

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

const EQUILIBRIUM: Self

Source§

const CHANNELS: usize = 24usize

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

const EQUILIBRIUM: Self

Source§

const CHANNELS: usize = 25usize

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

const EQUILIBRIUM: Self

Source§

const CHANNELS: usize = 26usize

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

const EQUILIBRIUM: Self

Source§

const CHANNELS: usize = 27usize

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

const EQUILIBRIUM: Self

Source§

const CHANNELS: usize = 28usize

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

const EQUILIBRIUM: Self

Source§

const CHANNELS: usize = 29usize

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

const EQUILIBRIUM: Self

Source§

const CHANNELS: usize = 30usize

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

const EQUILIBRIUM: Self

Source§

const CHANNELS: usize = 31usize

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

const EQUILIBRIUM: Self

Source§

const CHANNELS: usize = 32usize

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