songbird-plugins
16 stock DSP plugins — Rust ports of the C++ originals. Every plugin implements thePlugin trait for a uniform interface across effects and instruments.
Plugin Inventory
Effects (10)
| Plugin | Type Name | Description | Key Parameters |
|---|---|---|---|
| ChannelStrip | songbirdStrip | 9-stage channel strip (HPF → gate → EQ → transient shaper → compressor → saturation → stereo width → depth → limiter) | 28 params: gain, pan, HPF freq, gate threshold, 3-band EQ, comp ratio/threshold/attack/release, saturation drive, stereo width, depth amount, limiter ceiling |
| Reverb | songbirdReverb | Freeverb algorithm with pre-delay | room_size, damping, wet, dry, width, predelay |
| Delay | songbirdDelay | Stereo delay with ping-pong mode | delay_time_l, delay_time_r, feedback, wet, dry, ping_pong, sync |
| Chorus | songbirdChorus | Stereo chorus with LFO modulation | rate, depth, mix, voices, spread |
| Phaser | songbirdPhaser | Multi-stage allpass phaser | rate, depth, feedback, stages, mix |
| Flanger | songbirdFlanger | Flanging via short modulated delay | rate, depth, feedback, mix |
| Compressor | songbirdCompressor | Dynamic range compressor | threshold, ratio, attack, release, knee, makeup_gain |
| Distortion | songbirdDistortion | Multi-mode distortion (soft clip, hard clip, fuzz, bitcrush) | drive, mode, tone, mix |
| Doubler | songbirdDoubler | Stereo doubling via micro-delays + detuning | delay, detune, width, mix |
| ScriptFX | songbirdScriptFX | User-scriptable DSP (JavaScript/Faust/WASM) | script_source, custom params |
Instruments (6)
| Plugin | Type Name | Description | Key Parameters |
|---|---|---|---|
| Synth4Osc | songbird4OSC | 4-oscillator subtractive synth | 4x (waveform, level, detune, octave), filter (cutoff, resonance, type), ADSR (amp + filter), LFO |
| SynthStk | songbirdSTK | Synthesis toolkit (6 STK algorithms: BlitSaw, BlitSquare, SineWave, Noise, BiQuad, ADSR) | algorithm, cutoff, resonance, adsr |
| Synth303 | songbird303 | Acid bass synth (diode ladder filter) | cutoff, resonance, env_mod, decay, accent, waveform |
| Sampler | songbirdSampler | Multi-sample playback with velocity layers | root_note, sample_start, sample_end, loop_start, loop_end, adsr |
| DrumMachine | songbirdDrumMachine | 16-pad drum machine with per-pad controls | 16x (sample, volume, pan, pitch, decay) |
| Metronome | songbirdMetronome | Click track generator (accent on beat 1) | volume, accent_volume, frequency, accent_frequency |
Plugin Trait
All plugins implement this interface:Plugin Factory
MidiEvent
AudioBuffer
Thin wrapper over raw float pointers. Supports up to 8 channels with zero heap allocation:Conventions
- Parameter names are
snake_casestrings (e.g.,"delay_time_l","filter_cutoff") - Parameter values are normalized
f64withmin/max/defaultmetadata inPluginParam - State serialization uses
serde_jsoninternally (JSON bytes viasave_state()/load_state()) - DSP is deterministic — same input + same state = same output, enabling golden-output regression tests
- All plugins are
Send— safe to move between threads for parallel graph processing
Testing
- All 16 plugins can be created from their type name
- Unknown type names return
None - State round-trip: create → modify param → save → create fresh → load → params match