Skip to main content

Songbird

Songbird is a collaborative DAW (Digital Audio Workstation) for electronic music production. It combines a Rust audio engine with a React-based UI, git-based collaboration, an LLM copilot, vibe-codable MIDI-editors/plugins/interfaces, and generative audio via Lyria/Magenta models. screenshot

DAW Features

  • Arrangement View — Timeline with track lanes, section markers, scroll/zoom, and click-to-seek. Sections are defined in .bird files and rendered as colored regions.
  • Piano Roll — Full MIDI editor with note draw/move/resize/delete, velocity lane, grid snapping, and round-trip serialization back to .bird format.
  • Mixer — Per-track channel strips with volume faders, pan knobs, mute/solo, 4 send controls, and plugin slot management (instrument, FX, channel strip). Optimistic real-time sync for collaborative mixing.
  • Audio Metering — Real-time level meters, 16-band spectrum analyzer, stereo width, phase correlation, and balance — all at 60Hz with GPU-composited rendering.
  • VST3/AU Plugin Hosting — Load any VST3 or Audio Unit plugin. Plugin editor windows, parameter scanning, and macro mapping for programmatic control. Plus 28+ premium-quality stock plugins (4OSC, Bass303, DrumMachine, STKSynth, Sampler, ChannelStrip, Reverb, Delay, Chorus, Flanger, Phaser, Compressor, Limiter, NoiseGate, Distortion, Bitcrusher, Tremolo, AutoPan, TapeDelay, Wavetable, Mixer, ScriptFX, and more).
  • Songbird Modular — End-to-end node-graph DSP editor — patch oscillators, filters, envelopes, and FX visually; the result compiles to the same DSP graph the regular plugins use.
  • Sheet Music & Guitar Tabs — Export and view sheet music and guitar tablature rendered from .bird notation. Supports standard notation, chord diagrams, and tab fingerings.
  • MIDI Recording — Record from hardware MIDI controllers with grid quantization. Recorded MIDI is serialized back to .bird notation.
  • Audio Recording — Record audio input to tracks with beat-aligned quantization.
  • Easy Stem Export — Fast workflow to render individual stems (per-track WAV), master bounce (stereo WAV), and sheet music. Options to auto-name files with bpm/key for reuse.
  • AI Copilot — Gemini-powered assistant with specialized agents (composer, mix engineer, sound designer, audio creator) that can create tracks, write patterns, set plugin parameters, adjust the mix, and generate audio via Lyria — all through chat or function calls. Supports inline AI generation via Option+click-drag on any track.
  • Inline AI Generation — Option+click-drag on the arrangement timeline to generate audio (Lyria) or MIDI directly at any position. Visual drag-to-select region with real-time generation feedback.
  • Vibe-Codable MIDI Editors — Build your own MIDI editor alongside the built-in piano roll. The copilot generates a React view on top of .bird notation and the clip IPC — step sequencer, isomorphic keyboard, probability matrix, whatever fits your workflow — reading and writing the same notes as the stock editors.
  • Vibe-Codable Plugins — Build your own plugins with FAUST for DSP and a React-based UI.
  • Full Vibes Mode — Vibe-code the rest of the interface. Songbird exposes transport, tracks, clips, mixer, plugins, and .bird notation as a stable command surface, and the copilot generates React views on top of it — wired to the same IPC the built-in UI uses. The engine and commands stay fixed; only the interface is user-rewritable.
  • Groove System — Per-step timing and velocity offsets defined in .bird files. Apply swing, humanization, and rhythmic feel to any pattern without altering the underlying notes.
  • Git-Based Undo/Redo — Every change is committed to an in-process git repo (libgit2). Full history panel with human-readable commit messages.
  • Git-Based Collaboration — Projects include .bird files, state files, and samples — all tracked in git (with LFS for audio). Multiple people can work on the same project concurrently — branch, merge, and resolve conflicts like code, not like bouncing stems over email. Figma-style multiplayer cursors show collaborator positions in real time.
  • .bird Notation — A text-based music format (“Markdown for music”) that defines tracks, instruments, patterns, notes, chords, swing, groove, and automation in a human-readable syntax. Supports multi-line automation curves for detailed parameter control.

Architecture

┌─────────────────────────────────────────────────────────────┐
│  React UI (Tauri WebView / web / headless)                  │
│  Vite + React 19 + Tailwind v4 + Zustand                    │
│  ├─ ArrangementView  — timeline, track lanes, playhead      │
│  ├─ MidiEditor       — piano roll, velocity editing         │
│  ├─ MixerPanel       — faders, meters, plugin slots         │
│  ├─ ModularPanel     — node-graph DSP editor (TSL/WebGPU)   │
│  ├─ SheetMusicView   — notation & guitar tab rendering      │
│  ├─ ChatPanel        — AI copilot (Gemini function calling) │
│  ├─ CollabCursors    — Figma-style multiplayer cursors      │
│  └─ SettingsPanel    — audio device, MIDI, theme config     │
└─────────────────┬───────────────────────────────────────────┘
                  │ React ↔ Rust via sync engine
                  │ (Tauri IPC / WebSocket / in-process WASM)
┌─────────────────▼───────────────────────────────────────────┐
│  Rust Backend (rust/crates/ — 34-crate workspace)            │
│  ├─ songbird-engine   — audio graph, transport, scheduling  │
│  ├─ songbird-modular  — node-graph DSP runtime              │
│  ├─ songbird-plugins  — 28+ stock DSP plugins (synths, FX)  │
│  ├─ songbird-clips    — .bird parser, serializer            │
│  ├─ songbird-state    — sync engine, undo/redo, collab      │
│  ├─ songbird-sync     — dispatch + per-channel commands     │
│  ├─ songbird-export   — offline render, stem export         │
│  ├─ songbird-record   — audio/MIDI recording                │
│  ├─ songbird-host-ffi — VST3/AU plugin hosting via FFI      │
│  ├─ songbird-analytics— dispatch-layer analytics + Sentry   │
│  ├─ songbird-agent    — LLM copilot (Anthropic/Gemini)      │
│  ├─ songbird-app      — Tauri v2 desktop shell              │
│  ├─ songbird-cli      — CLI for batch render & validation   │
│  ├─ songbird-headless — WebSocket server for headless mode  │
│  ├─ songbird-wasm     — Web/WASM build                      │
│  └─ songbird-mcp      — MCP server bridge (UDS → dispatch)  │
└─────────────────────────────────────────────────────────────┘

Key Concepts

  • .bird files — A text-based music notation format. Defines tracks, instruments, patterns, notes, groove, and arrangement. Supports multi-line automation curves and per-step groove offsets. See bird notation.
  • Sync engine — Central state router: React (Zustand) ↔ Rust (songbird_sync::dispatch) ↔ Git (libgit2). 20 channel domains (mixer, clip, transport, ml, plugin, project, recording, engine, collab, export, settings, meters, notifications, separator, slicer, debug, fragments, visual, modular, protocols) with guards, echo suppression, and per-channel persistence strategy. See sync engine.
  • Single dispatch path — Every UI ↔ backend call goes through one Tauri command (native_invoke) routed by songbird_sync::dispatch. Headless mode uses the same dispatch over a WebSocket transport; WASM uses an in-process transport. sendRT() provides a real-time bypass path for slider drags.
  • Real-time audio — Lock-free, zero-allocation audio callback. Pre-allocated AudioBuffer and ScratchPool, SpscRingBuffer for UI communication, rayon-parallel graph processing with topological sort.
  • Macro mapping — Semantic parameter names (brightness, drive, comp_thresh) map to actual plugin parameters, enabling both .bird automation and AI copilot control.
  • Collaboration — Built-in tunnel support for zero-config remote collaboration. Figma-style cursors, optimistic mixer sync, and structured merge for .bird and state files. See server/.

Project Structure

songbird/
├── rust/             — Rust backend (Cargo workspace, 34 crates)
├── react_ui/         — React frontend (Vite + TypeScript)
├── server/           — Collaboration WebSocket server + Gitea infra
├── mobile/           — Mobile (iOS / Android) shell
├── libraries/        — Vendored / submoduled dependencies
├── docs/             — Architecture docs (Mintlify)
├── utils/            — Build scripts and shell utilities
├── scenarios/        — JSON scenarios that drive the app into a starting state
├── handoffs/         — In-flight design / migration notes
├── eval/             — LLM evaluation framework for AI copilot
├── files/            — Sample .bird projects, MIDI files, plugin configs
└── install.md        — LLM-executable setup instructions
Each subdirectory contains a README.md with architecture details, design principles, and extension guidelines.

Getting Started

See install.md for full setup instructions (works with LLM coding agents out of the box).

# Install submodules
./utils/workflow/submodules

# Build for local testing
./utils/build-rs

# Convert rust state types to typescript
./utils/sync-types

# Run all validation — Rust tests + clippy, TypeScript, ESLint, Vitest
./utils/validate