songbird-modular
Songbird Modular runtime — two stock plugins (instrument + fx) that each wrap aDspGraph of atoms, molecules, and live-compiled DSL nodes. The
plugin’s audio I/O bridges to source / sink io nodes inside the
graph; users wire any combination of NodeDescriptor-registered nodes
between them.
What it owns
- The
SongbirdModularplugin struct (implementssongbird-plugins::Plugin). - The
source/sinkioDspNodeimpls that connect plugin I/O to graph ports. - The MIDI router that delivers
MidiEvents to the graph’snote_in/trigger_inports (instrument variant only). - The audio-thread-safe topology swap (SPSC ring) for hot graph mutation.
- The template loader/saver that round-trips a graph through
~/.songbird/modules/<name>.json.
Public API
songbird_dsp::node_registry,
songbird_types::ModularTemplate) rather than reaching into this crate.
How it fits
songbird-plugins depends on this crate and registers the two stock
plugin variants (songbirdModularInstrument, songbirdModularFx) in
its create_plugin() factory. Everything else flows through that
registration.
This crate depends on:
songbird-dsp— theDspGraphruntime + node registrysongbird-types— the cross-crate template schema typessongbird-plugins— thePlugintrait +AudioBuffer+MidiEvent
Tests
cargo test -p songbird-modular
See also: handoffs/future/2026-05-12-songbird-modular.md (the plan
this crate implements).