Struct sample::signal::Buffered
[−]
[src]
pub struct Buffered<S, D> { /* fields omitted */ }
Buffers the signal using the given ring buffer.
When next
is called, Buffered
will first check if the ring buffer is empty. If so, it will
completely fill the ring buffer with signal
before yielding the next frame.
If next
is called and the ring buffer still contains un-yielded values, the next frame will
be popped from the front of the ring buffer and immediately returned.
Methods
impl<S, D> Buffered<S, D> where
S: Signal,
D: Slice<Element = S::Frame> + SliceMut,
[src]
S: Signal,
D: Slice<Element = S::Frame> + SliceMut,
fn next_frames(&mut self) -> BufferedFrames<D>
[src]
Produces an iterator yielding the next batch of buffered frames.
The returned iterator returns None
once the inner ring buffer becomes exhausted.
If the inner ring buffer is empty when this method is called, the ring buffer will first be
filled using Buffered
's inner signal
before BufferedFrames
is returned.
extern crate sample; use sample::signal::{self, Signal}; use sample::ring_buffer; fn main() { let frames = [[0.1], [0.2], [0.3], [0.4]]; let signal = signal::from_iter(frames.iter().cloned()); let ring_buffer = ring_buffer::Bounded::<[[f32; 1]; 2]>::array(); let mut buffered_signal = signal.buffered(ring_buffer); assert_eq!(buffered_signal.next_frames().collect::<Vec<_>>(), vec![[0.1], [0.2]]); assert_eq!(buffered_signal.next_frames().collect::<Vec<_>>(), vec![[0.3], [0.4]]); assert_eq!(buffered_signal.next_frames().collect::<Vec<_>>(), vec![[0.0], [0.0]]); }
fn into_parts(self) -> (S, Bounded<D>)
[src]
Consumes the Buffered
signal and returns its inner signal S
and bounded ring buffer.
Trait Implementations
impl<S: Clone, D: Clone> Clone for Buffered<S, D>
[src]
fn clone(&self) -> Buffered<S, D>
[src]
Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)
1.0.0[src]
Performs copy-assignment from source
. Read more
impl<S, D> Signal for Buffered<S, D> where
S: Signal,
D: Slice<Element = S::Frame> + SliceMut,
[src]
S: Signal,
D: Slice<Element = S::Frame> + SliceMut,
type Frame = S::Frame
The Frame
type returned by the Signal
.
fn next(&mut self) -> Self::Frame
[src]
Yield the next Frame
in the Signal
. Read more
fn is_exhausted(&self) -> bool
[src]
Whether or not the signal is exhausted of meaningful frames. Read more
fn map<M, F>(self, map: M) -> Map<Self, M, F> where
Self: Sized,
M: FnMut(Self::Frame) -> F,
F: Frame,
[src]
Self: Sized,
M: FnMut(Self::Frame) -> F,
F: Frame,
A signal that maps one set of frames to another. Read more
fn zip_map<O, M, F>(self, other: O, map: M) -> ZipMap<Self, O, M, F> where
Self: Sized,
M: FnMut(Self::Frame, O::Frame) -> F,
O: Signal,
F: Frame,
[src]
Self: Sized,
M: FnMut(Self::Frame, O::Frame) -> F,
O: Signal,
F: Frame,
A signal that maps one set of frames to another. Read more
fn add_amp<S>(self, other: S) -> AddAmp<Self, S> where
Self: Sized,
S: Signal,
S::Frame: Frame<Sample = <<Self::Frame as Frame>::Sample as Sample>::Signed, NumChannels = <Self::Frame as Frame>::NumChannels>,
[src]
Self: Sized,
S: Signal,
S::Frame: Frame<Sample = <<Self::Frame as Frame>::Sample as Sample>::Signed, NumChannels = <Self::Frame as Frame>::NumChannels>,
Provides an iterator that yields the sum of the frames yielded by both other
and self
in lock-step. Read more
fn mul_amp<S>(self, other: S) -> MulAmp<Self, S> where
Self: Sized,
S: Signal,
S::Frame: Frame<Sample = <<Self::Frame as Frame>::Sample as Sample>::Float, NumChannels = <Self::Frame as Frame>::NumChannels>,
[src]
Self: Sized,
S: Signal,
S::Frame: Frame<Sample = <<Self::Frame as Frame>::Sample as Sample>::Float, NumChannels = <Self::Frame as Frame>::NumChannels>,
Provides an iterator that yields the product of the frames yielded by both other
and self
in lock-step. Read more
fn offset_amp(
self,
offset: <<Self::Frame as Frame>::Sample as Sample>::Signed
) -> OffsetAmp<Self> where
Self: Sized,
[src]
self,
offset: <<Self::Frame as Frame>::Sample as Sample>::Signed
) -> OffsetAmp<Self> where
Self: Sized,
Provides an iterator that offsets the amplitude of every channel in each frame of the signal by some sample value and yields the resulting frames. Read more
fn scale_amp(
self,
amp: <<Self::Frame as Frame>::Sample as Sample>::Float
) -> ScaleAmp<Self> where
Self: Sized,
[src]
self,
amp: <<Self::Frame as Frame>::Sample as Sample>::Float
) -> ScaleAmp<Self> where
Self: Sized,
Produces an Iterator
that scales the amplitude of the sample of each channel in every Frame
yielded by self
by the given amplitude. Read more
fn offset_amp_per_channel<F>(self, amp_frame: F) -> OffsetAmpPerChannel<Self, F> where
Self: Sized,
F: Frame<Sample = <<Self::Frame as Frame>::Sample as Sample>::Signed, NumChannels = <Self::Frame as Frame>::NumChannels>,
[src]
Self: Sized,
F: Frame<Sample = <<Self::Frame as Frame>::Sample as Sample>::Signed, NumChannels = <Self::Frame as Frame>::NumChannels>,
Produces a new Signal
that offsets the amplitude of every Frame
in self
by the respective amplitudes in each channel of the given amp_frame
. Read more
fn scale_amp_per_channel<F>(self, amp_frame: F) -> ScaleAmpPerChannel<Self, F> where
Self: Sized,
F: Frame<Sample = <<Self::Frame as Frame>::Sample as Sample>::Float, NumChannels = <Self::Frame as Frame>::NumChannels>,
[src]
Self: Sized,
F: Frame<Sample = <<Self::Frame as Frame>::Sample as Sample>::Float, NumChannels = <Self::Frame as Frame>::NumChannels>,
Produces a new Signal
that scales the amplitude of every Frame
in self
by the respective amplitudes in each channel of the given amp_frame
. Read more
fn mul_hz<M, I>(self, interpolator: I, mul_per_frame: M) -> MulHz<Self, M, I> where
Self: Sized,
M: Signal<Frame = [f64; 1]>,
I: Interpolator,
[src]
Self: Sized,
M: Signal<Frame = [f64; 1]>,
I: Interpolator,
Multiplies the rate at which frames of self
are yielded by the given signal
. Read more
fn from_hz_to_hz<I>(
self,
interpolator: I,
source_hz: f64,
target_hz: f64
) -> Converter<Self, I> where
Self: Sized,
I: Interpolator,
[src]
self,
interpolator: I,
source_hz: f64,
target_hz: f64
) -> Converter<Self, I> where
Self: Sized,
I: Interpolator,
Converts the rate at which frames of the Signal
are yielded using interpolation. Read more
fn scale_hz<I>(self, interpolator: I, multi: f64) -> Converter<Self, I> where
Self: Sized,
I: Interpolator,
[src]
Self: Sized,
I: Interpolator,
Multiplies the rate at which frames of the Signal
are yielded by the given value. Read more
fn delay(self, n_frames: usize) -> Delay<Self> where
Self: Sized,
[src]
Self: Sized,
Delays the Signal
by the given number of frames. Read more
fn into_interleaved_samples(self) -> IntoInterleavedSamples<Self> where
Self: Sized,
[src]
Self: Sized,
Converts a Signal
into a type that yields the interleaved Sample
s. Read more
fn clip_amp(
self,
thresh: <<Self::Frame as Frame>::Sample as Sample>::Signed
) -> ClipAmp<Self> where
Self: Sized,
[src]
self,
thresh: <<Self::Frame as Frame>::Sample as Sample>::Signed
) -> ClipAmp<Self> where
Self: Sized,
Clips the amplitude of each channel in each Frame
yielded by self
to the given threshold amplitude. Read more
fn inspect<F>(self, inspect: F) -> Inspect<Self, F> where
Self: Sized,
F: FnMut(&Self::Frame),
[src]
Self: Sized,
F: FnMut(&Self::Frame),
Create a new Signal
that calls the enclosing function on each iteration. Read more
fn fork<S>(self, ring_buffer: Bounded<S>) -> Fork<Self, S> where
Self: Sized,
S: SliceMut<Element = Self::Frame>,
[src]
Self: Sized,
S: SliceMut<Element = Self::Frame>,
Forks Self
into two signals that produce the same frames. Read more
fn bus(self) -> Bus<Self> where
Self: Sized,
[src]
Self: Sized,
Moves the Signal
into a Bus
from which its output may be divided into multiple other Signal
s in the form of Output
s. Read more
fn take(self, n: usize) -> Take<Self> where
Self: Sized,
[src]
Self: Sized,
Converts the Signal
into an Iterator
that will yield the given number for Frame
s before returning None
. Read more
fn until_exhausted(self) -> UntilExhausted<Self> where
Self: Sized,
[src]
Self: Sized,
Converts the Signal
into an Iterator
yielding frames until the signal.is_exhausted()
returns true
. Read more
fn buffered<S>(self, ring_buffer: Bounded<S>) -> Buffered<Self, S> where
Self: Sized,
S: Slice<Element = Self::Frame> + SliceMut,
[src]
Self: Sized,
S: Slice<Element = Self::Frame> + SliceMut,
Buffers the signal using the given ring buffer. Read more
fn rms<S>(self, ring_buffer: Fixed<S>) -> Rms<Self, S> where
Self: Sized,
S: Slice<Element = <Self::Frame as Frame>::Float> + SliceMut,
[src]
Self: Sized,
S: Slice<Element = <Self::Frame as Frame>::Float> + SliceMut,
An adaptor that yields the RMS of the signal. Read more
fn detect_envelope<D>(
self,
detector: Detector<Self::Frame, D>
) -> DetectEnvelope<Self, D> where
Self: Sized,
D: Detect<Self::Frame>,
[src]
self,
detector: Detector<Self::Frame, D>
) -> DetectEnvelope<Self, D> where
Self: Sized,
D: Detect<Self::Frame>,
An adaptor that detects and yields the envelope of the signal. Read more
fn by_ref(&mut self) -> &mut Self where
Self: Sized,
[src]
Self: Sized,
Borrows a Signal rather than consuming it. Read more