resonant-stream
Streaming DSP pipeline with pull-based processing and in-place chunks.
Part of the resonant workspace.
Features
Chunk— owned buffer of interleavedf32samples with sample rate and channel metadataDspNodetrait — implementprocessandresetto create custom processorsPipelinebuilder — chain nodes sequentially with optional format validation- Built-in nodes — gain, biquad filter, FFT, downmix, decimation, and tap (observation)
Quick start
use ;
use ;
use butterworth_lowpass;
use Biquad;
// Build a 3-node pipeline: downmix -> lowpass -> gain
let coeffs = butterworth_lowpass.unwrap;
let mut pipeline = builder
.sample_rate
.channels
.node
.node
.node
.build;
let chunk = new;
let output = pipeline.process.unwrap;
Built-in nodes
| Node | Description |
|---|---|
GainNode |
Linear amplitude scaling (adjustable at runtime) |
FilterNode |
Biquad IIR filter (lowpass, highpass, bandpass, etc.) |
TapNode |
Side-channel observation via callback |
FftNode |
Forward FFT — outputs magnitude or power spectrum |
MixNode |
Multi-channel to mono downmix |
ResampleNode |
Integer decimation with anti-alias filtering |
Custom nodes
Implement DspNode to create your own:
use ;
License
MIT OR Apache-2.0