aetherdsp-nodes 0.2.2

Built-in DSP nodes for AetherDSP — oscillator, filters, reverb, LFO, granular, Karplus-Strong, compressor, waveshaper, chorus
Documentation

aether-nodes

crates.io docs.rs License: MIT

Built-in DSP nodes for the AetherDSP engine.

Nodes

Node Description
OscillatorNode BLEP anti-aliased sawtooth/square/triangle/sine, tuning table support
StateVariableFilter LP/HP/BP/Notch simultaneously (Cytomic SVF)
MoogLadder Huovilainen model, self-oscillation, audio-rate modulation
FormantFilter Vowel shaping A/E/I/O/U morph — essential for wind instruments
AdsrEnvelope Sample-accurate ADSR with gate
Lfo 5 waveforms: sine, triangle, square, S&H, random-smooth
Reverb Freeverb (8 comb + 4 allpass filters)
DelayLine Feedback delay with tempo sync
KarplusStrong Physically accurate plucked string synthesis
Granular Grain size, density, pitch scatter, position — world music textures
Compressor RMS-based dynamic range compression with soft-knee curve
Waveshaper 5 distortion modes: tanh, hard-clip, fold-back, bit-crush, tube saturation
Chorus BBD-style modulated delay for thickening and stereo widening
GainNode Smoothed gain/volume control
MixerNode N-input summing mixer with per-channel gain · SIMD FMA-optimized
ScopeNode Oscilloscope — writes to a shared ring buffer for UI
RecordNode Captures audio to a WAV file via hound

Usage

use aether_nodes::oscillator::OscillatorNode;
use aether_nodes::filter::FilterNode;
use aether_nodes::compressor::CompressorNode;
use aether_nodes::chorus::ChorusNode;
use aether_core::node::DspNode;

let osc = OscillatorNode::default();    // 440 Hz sine
let filt = FilterNode::default();       // LP @ 1 kHz
let comp = CompressorNode::default();   // -12 dB threshold, 4:1 ratio
let chorus = ChorusNode::default();     // 0.5 Hz rate, 7 ms depth

All nodes implement aether_core::node::DspNode and are safe to use in the RT thread — no allocation, no locks, no I/O.

RT Safety

Every node in this crate follows the AetherDSP real-time rules:

  • No heap allocation during process()
  • No mutex or lock usage
  • No I/O or system calls
  • Bounded execution time per block

License

MIT — see LICENSE