songbird-orchestrator
Shared engine orchestration. WiresEngineController, StateStore,
PluginRegistry, and session building into a single EngineBackend
implementation used by both the Tauri desktop app (songbird-app)
and the headless WebSocket server (songbird-headless).
Before this crate, songbird-headless depended on songbird-app to
reuse session build, device management, plugin swap, master-capture,
and plugin-editor-hosting code. That dependency is gone — both binaries
now depend on songbird-orchestrator instead, and the engine lifecycle
has a single canonical owner.
What lives here
RingBufferEngine— theEngineBackendimplementation. Owns the engine controller, audio output, read pool, state store, transport, MIDI device manager, audio config, plugin registry, cached audio clips, and therebuilding/restartingguards. Handles session builds, device open/close, plugin chain swaps, MIDI scheduler updates, and master-bus capture.TerminalProvider— trait for desktop-only terminal sessions (the headless server passesNone).MasterCaptureState— global master-bus audio capture buffer used by the AI copilot to send audio context to Gemini.plugins/— plugin-editor lifecycle (plugin_editors.rs) and native editor windows (editor_windows.rs). Previously macOS-gated insidesongbird-app; now cross-platform and shared.
Swap modes
Graph swaps are preferred on the hot path — they skip transport and
scheduler re-init, and they don’t interrupt playback.
Dependencies
songbird-engine— audio graph, transport, scheduler, ring buffersongbird-state/songbird-sync— project state + dispatch bridgesongbird-plugin-registry— unified plugin registrysongbird-host-ffi— VST3/AU hosting (feature-gated:juce,vst3)songbird-plugins— stock DSP pluginssongbird-session— session-build primitives