Skip to main content

songbird-plugins

16 stock DSP plugins — Rust ports of the C++ originals. Every plugin implements the Plugin trait for a uniform interface across effects and instruments.

Plugin Inventory

Effects (10)

Instruments (6)

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_case strings (e.g., "delay_time_l", "filter_cutoff")
  • Parameter values are normalized f64 with min/max/default metadata in PluginParam
  • State serialization uses serde_json internally (JSON bytes via save_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

Factory tests verify:
  1. All 16 plugins can be created from their type name
  2. Unknown type names return None
  3. State round-trip: create → modify param → save → create fresh → load → params match