[][src]Crate dasp_signal

Use the Signal trait to abstract over infinite-iterator-like types that yield Frames. The Signal trait provides methods for adding, scaling, offsetting, multiplying, clipping, generating frame iterators and more.

You may also find a series of Signal source functions, including:

  • equilibrium for generating "silent" frames.
  • phase for a stepping phase, useful for oscillators.
  • sine for generating a sine waveform.
  • saw for generating a sawtooth waveform.
  • square for generating a square waveform.
  • noise for generating a noise waveform.
  • noise_simplex for generating a 1D simplex noise waveform.
  • gen for generating frames of type F from some Fn() -> F.
  • gen_mut for generating frames of type F from some FnMut() -> F.
  • from_iter for converting an iterator yielding frames to a signal.
  • from_interleaved_samples_iter for converting an iterator yielding interleaved samples to a signal.

Working with Signals allows for easy, readable creation of rich and complex DSP graphs with a simple and familiar API.

Optional Features

  • The boxed feature (or signal-boxed feature if using dasp) provides a Signal implementation for Box<dyn Signal>.
  • The bus feature (or signal-bus feature if using dasp) provides the SignalBus trait.
  • The envelope feature (or signal-envelope feature if using dasp) provides the SignalEnvelope trait.
  • The rms feature (or signal-rms feature if using dasp) provides the SignalRms trait.
  • The window feature (or signal-window feature if using dasp) provides the window module.

no_std

If working in a no_std context, you can disable the default std feature with --no-default-features.

To enable all of the above features in a no_std context, enable the all-no-std feature.

Modules

bus

An extension to the Signal trait that enables multiple signal outputs.

envelope

An extension to the Signal trait that enables envelope detection.

interpolate

The Converter type for interpolating the rate of a signal.

rms

An extension to the Signal trait that monitors the RMS of a signal.

window

Items to ease the application of windowing functions to signals.

Structs

AddAmp

An iterator that yields the sum of the frames yielded by both other and self in lock-step.

BranchRcA

One of the two Branch signals returned by Fork::by_rc.

BranchRcB

One of the two Branch signals returned by Fork::by_rc.

BranchRefA

One of the two Branch signals returned by Fork::by_ref.

BranchRefB

One of the two Branch signals returned by Fork::by_ref.

Buffered

Buffers the signal using the given ring buffer.

BufferedFrames

An iterator that pops elements from the inner bounded ring buffer and yields them.

ClipAmp

Clips samples in each frame yielded by signal to the given threshhold amplitude.

ConstHz

A constant phase step size.

Delay

Delays the signal by the given number of frames.

Equilibrium

An iterator that endlessly yields Frames of type F at equilibrium.

Fork

Represents a forked Signal that has not yet been split into its two branches.

FromInterleavedSamplesIterator

An iterator that converts an iterator of Samples to an iterator of Frames.

FromIterator

A type that wraps an Iterator and provides a Signal implementation for it.

Gen

A signal that generates frames using the given function.

GenMut

A signal that generates frames using the given function which may mutate some state.

Hz

An iterator that yields the step size for a phase.

Inspect

A signal that calls its enclosing function and returns the original value. The signal may mutate state.

IntoInterleavedSamples

Converts a Signal to a type that yields the individual interleaved samples.

IntoInterleavedSamplesIterator

Converts the IntoInterleavedSamples into an Iterator that always returns Some.

Map

A signal that maps from one signal to another

MulAmp

An iterator that yields the product of the frames yielded by both other and self in lock-step.

MulHz

Multiplies the rate at which frames of self are yielded by the given signal.

Noise

A noise signal generator.

NoiseSimplex

A 1D simplex-noise generator.

OffsetAmp

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.

OffsetAmpPerChannel

An Iterator that scales the amplitude of every Frame in self by the respective amplitudes in each channel of the given amp Frame.

Phase

An iterator that yields a phase, useful for waveforms like Sine or Saw.

Rate

The rate at which phrase a Signal is sampled.

Saw

A saw wave signal generator.

ScaleAmp

An Iterator that scales the amplitude of the sample of each channel in every Frame yielded by self by the given amplitude.

ScaleAmpPerChannel

An Iterator that scales the amplitude of every Frame in self by the respective amplitudes in each channel of the given amp Frame.

Sine

A sine wave signal generator.

Square

A square wave signal generator.

Take

An iterator that yields n number of Frames from the inner signal.

UntilExhausted

Yields frames from the signal until the signal.is_exhausted() returns true.

ZipMap

A signal that iterates two signals in parallel and combines them with a function.

Traits

Signal

Types that yield Frames of a one-or-more-channel PCM signal.

Step

Types that may be used to give a phase step size based on some hz / sample rate.

Functions

equilibrium

Provides an iterator that endlessly yields Frames of type F at equilibrium.

from_interleaved_samples_iter

Create a new Signal from the given Frame-yielding Iterator.

from_iter

Create a new Signal from the given Frame-yielding Iterator.

gen

A signal that generates frames using the given function.

gen_mut

A signal that generates frames using the given function which may mutate some state.

lift

Consumes the given Iterator, converts it to a Signal, applies the given function to the Signal and returns an Iterator that will become exhausted when the consumed Iterator does.

noise

Produces a Signal that yields random values between -1.0..1.0.

noise_simplex

Produces a 1-dimensional simplex noise Signal.

phase

Creates a Phase that continuously steps forward by the given step size yielder.

rate

Creates a frame Rate (aka sample rate) representing the rate at which a signal may be sampled.

saw

Produces a Signal that yields a saw wave oscillating at the given hz.

sine

Produces a Signal that yields a sine wave oscillating at the given hz.

square

Produces a Signal that yields a square wave oscillating at the given hz.