OscillatorState

Trait OscillatorState 

Source
pub trait OscillatorState<F>:
    Sized
    + From<Self::Waveform>
    + From<Direct<Self::Waveform>>
    + From<Self::WithoutDTC>
    + From<Self::WithoutWavetable>
where F: Float + FloatConst,
{ type Waveform: Waveform<F>; type WithDTC: OscillatorState<F, Waveform = Self::Waveform, WithDTC = Self::WithDTC> + From<Self> + From<Self::WithoutDTC> + From<DirectDTC<F, Self::Waveform>>; type WithoutDTC: OscillatorState<F, Waveform = Self::Waveform, WithoutDTC = Self::WithoutDTC>; type WithWavetable<const N: usize>: OscillatorState<F, Waveform = Self::Waveform, WithWavetable<N> = Self::WithWavetable<N>> + From<Self::WithoutWavetable> + From<Wave<F, Self::Waveform, N>>; type WithoutWavetable: OscillatorState<F, Waveform = Self::Waveform, WithoutWavetable = Self::WithoutWavetable>; type WithWaveform<W>: OscillatorState<F, Waveform = W, WithWaveform<W> = Self::WithWaveform<W>> where W: Waveform<F>; // Required methods fn next(&mut self, theta: F, omega: F, rate: F) -> F; fn waveform(&self) -> &Self::Waveform; fn waveform_mut(&mut self) -> &mut Self::Waveform; fn with_dtc(self, duty_cycle: F) -> Self::WithDTC; fn without_dtc(self) -> Self::WithoutDTC; fn with_wavetable<const N: usize>(self) -> Self::WithWavetable<N>; fn without_wavetable(self) -> Self::WithoutWavetable; fn map_waveform<W>( self, waveform: impl FnOnce(Self::Waveform) -> W, ) -> Self::WithWaveform<W> where W: Waveform<F>; // Provided methods fn delete_cache(&mut self) { ... } fn duty_cycle(&self) -> F { ... } fn wavetable(&self) -> Option<WavetableView<'_, F>> { ... } fn with_waveform<W>(self, waveform: W) -> Self::WithWaveform<W> where W: Waveform<F> { ... } }

Required Associated Types§

Source

type Waveform: Waveform<F>

Source

type WithDTC: OscillatorState<F, Waveform = Self::Waveform, WithDTC = Self::WithDTC> + From<Self> + From<Self::WithoutDTC> + From<DirectDTC<F, Self::Waveform>>

Source

type WithoutDTC: OscillatorState<F, Waveform = Self::Waveform, WithoutDTC = Self::WithoutDTC>

Source

type WithWavetable<const N: usize>: OscillatorState<F, Waveform = Self::Waveform, WithWavetable<N> = Self::WithWavetable<N>> + From<Self::WithoutWavetable> + From<Wave<F, Self::Waveform, N>>

Source

type WithoutWavetable: OscillatorState<F, Waveform = Self::Waveform, WithoutWavetable = Self::WithoutWavetable>

Source

type WithWaveform<W>: OscillatorState<F, Waveform = W, WithWaveform<W> = Self::WithWaveform<W>> where W: Waveform<F>

Required Methods§

Source

fn next(&mut self, theta: F, omega: F, rate: F) -> F

Source

fn waveform(&self) -> &Self::Waveform

Source

fn waveform_mut(&mut self) -> &mut Self::Waveform

Source

fn with_dtc(self, duty_cycle: F) -> Self::WithDTC

Source

fn without_dtc(self) -> Self::WithoutDTC

Source

fn with_wavetable<const N: usize>(self) -> Self::WithWavetable<N>

Source

fn without_wavetable(self) -> Self::WithoutWavetable

Source

fn map_waveform<W>( self, waveform: impl FnOnce(Self::Waveform) -> W, ) -> Self::WithWaveform<W>
where W: Waveform<F>,

Provided Methods§

Source

fn delete_cache(&mut self)

Source

fn duty_cycle(&self) -> F

Source

fn wavetable(&self) -> Option<WavetableView<'_, F>>

Source

fn with_waveform<W>(self, waveform: W) -> Self::WithWaveform<W>
where W: Waveform<F>,

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.

Implementors§

Source§

impl<F, W> OscillatorState<F> for Direct<W>
where F: Float + FloatConst, W: Waveform<F>,

Source§

impl<F, W> OscillatorState<F> for DirectDTC<F, W>
where F: Float + FloatConst, W: Waveform<F>,

Source§

impl<F, W, const N: usize> OscillatorState<F> for Wave<F, W, N>
where F: Float + FloatConst, W: Waveform<F>,

Source§

type Waveform = W

Source§

type WithDTC = WaveDTC<F, W, N>

Source§

type WithoutDTC = Wave<F, W, N>

Source§

type WithoutWavetable = Direct<W>

Source§

type WithWavetable<const NN: usize> = Wave<F, W, NN>

Source§

type WithWaveform<WW> = Wave<F, WW, N> where WW: Waveform<F>

Source§

impl<F, W, const N: usize> OscillatorState<F> for WaveDTC<F, W, N>
where F: Float + FloatConst, W: Waveform<F>,

Source§

type Waveform = W

Source§

type WithDTC = WaveDTC<F, W, N>

Source§

type WithoutDTC = Wave<F, W, N>

Source§

type WithWavetable<const NN: usize> = WaveDTC<F, W, NN>

Source§

type WithoutWavetable = DirectDTC<F, W>

Source§

type WithWaveform<WW> = WaveDTC<F, WW, N> where WW: Waveform<F>