songbird-headless
Headless WebSocket server — runs the Songbird audio engine as a pure backend service without a GUI. Serves the same protocol as the Tauri app, so the React UI (or any WebSocket client) can connect and control playback, mixing, and rendering remotely.Architecture
Protocol
Text frames
JSON messages mirroring the Tauri IPC protocol:Binary frames
Tag-based, little-endian encoding:| Tag | Name | Content |
|---|---|---|
0x01 | RT frame | Meters, transport position, spectrum data (~30fps broadcast) |
0x02 | Audio clip peaks | Waveform peak data for display |
0x03 | Bird mutation result | Result of a .bird file edit |
Modules
| File | Purpose |
|---|---|
main.rs | Server entry point, WebSocket listener, shared ServerState |
command_handler.rs | Processes text-frame commands (transport, tracks, plugins, etc.) |
rt_frame.rs | Binary RT frame encoding and ~30fps broadcast to all clients |
audio_engine.rs | cpal audio I/O, ring buffers for engine communication, meter polling |
recording.rs | Audio recording — mic input → WAV file with live peak monitoring |
ffi_bridge.rs | Stub for C++ plugin hosting (VST3/AU via JUCE FFI — not yet implemented) |
link.rs | Stub for Ableton Link integration (BPM sync, peer detection) |
Dependencies
- Internal:
songbird-engine,songbird-plugins,songbird-state,songbird-export - Async:
tokio(runtime),tokio-tungstenite(WebSocket),futures-util - Serialization:
serde,serde_json
Usage
Status
Production-ready for basic WebSocket DAW control (transport, mixing, rendering). Plugin hosting (ffi_bridge.rs) and Ableton Link (link.rs) are infrastructure
stubs — not yet functional.