Skip to main content

songbird-cli

Command-line tool for rendering, inspecting, and validating Bird files without the Tauri app.

Commands

CommandPurpose
renderRender a Bird file to WAV audio (offline, faster than real-time)
infoShow project metadata (BPM, time sig, tracks, clips, returns, sends)
validateParse, populate, and load a Bird file — reports errors at each stage
helpShow usage
versionPrint version

Usage

# Render a bird file to WAV (default: 44100 Hz, 32-bit float, stereo)
songbird render song.bird -o song.wav

# Render with custom settings
songbird render song.bird -o hq.wav -r 96000 -b 24 --normalize

# Render with tail time for reverb/delay decay
songbird render song.bird -o song.wav --tail 3.0

# Render with silence trimming
songbird render song.bird -o song.wav --trim-silence

# Show project info
songbird info song.bird

# Validate a bird file (parse + populate + engine load)
songbird validate song.bird

# Pipe from stdin
cat song.bird | songbird render - -o out.wav

Render Options

FlagDefaultDescription
-o, --output(required)Output WAV file path
-r, --sample-rate44100Sample rate in Hz
-b, --bit-depth32Bit depth: 16, 24, or 32
-s, --block-size1024Processing block size
-t, --tail2.0Tail time in seconds for reverb/delay decay
--normalizeoffNormalize output to target dBFS
--normalize-target-1.0Normalization target in dBFS
--trim-silenceoffTrim leading/trailing silence
--silence-threshold0.001Silence threshold (linear amplitude)
-q, --quietoffSuppress progress output

Pipeline

The CLI uses the same pipeline as the Tauri app:
Bird source text
  → songbird_clips::bird_parser::parse_bird()     — tokenize + AST
  → songbird_clips::bird_populator::populate()     — resolve tracks, clips, routing
  → songbird_engine::project_loader::load_from_bird() — build AudioGraph + EngineSession
  → songbird_export::bird_render::render_bird_to_wav() — offline render to WAV

Dependencies

  • songbird-engine — AudioGraph, Transport, project loader
  • songbird-clips — Bird parser, populator
  • songbird-export — Offline WAV rendering

Tests

cargo test -p songbird-cli
30 tests covering argument parsing, rendering with various options (96kHz, 16-bit, normalization), info/validate commands, error handling (missing files, invalid args), and stdin input.