claw-daw — offline, terminal-first MIDI DAW
Extracto
Deterministic, agent-friendly MIDI DAW. Headless scripts + diffable JSON. Export WAV/MP3/MIDI.
Resumen
Resumen Principal
claw-daw se presenta como una innovadora Estación de Trabajo de Audio Digital (DAW) terminal-first diseñada explícitamente para la automatización y la generación musical reproducible. Su propuesta de valor central radica en permitir la creación de ritmos y composiciones de manera determinista y amigable con Git, integrándose perfectamente
Contenido
Offline • deterministic • agent-friendly
Make beats from the terminal—then diff, validate, and rerun them.
claw-daw is a terminal-first MIDI DAW designed for automation. Drive it with a TUI or headless scripts, export audio + MIDI + JSON, and keep everything Git-friendly.
Headless scripts
Agent-first workflow
Diffable JSON
Drum Kits + 808 presets
Genre Packs (style presets)
Novelty control
Acceptance tests
Transforms + bar:beat time
No cloud. No accounts. Just fluidsynth, ffmpeg, and a SoundFont.
What you get (agent-friendly artifacts)
out/*.json (project) · out/*.mid (MIDI) · out/*.mp3/.wav (audio)
Easy to archive, diff, review, and re-render in CI.
from-scratch — script, validate, export
# install (Linux)
$ curl -fsSL https://www.clawdaw.com/install.sh -o /tmp/clawdaw-install.sh
$ bash /tmp/clawdaw-install.sh
# sanity check
$ claw-daw doctor
# pick a SoundFont
$ claw-daw paths --soundfont
# write a new script (no template)
$ cat > tools/my_first_beat.txt << 'EOF'
new_project my_first_beat 140
add_track Drums 0
set_kit 0 tight
new_pattern 0 d1 2:0
add_note_pat 0 d1 36 0:0 0:0:120 110
add_note_pat 0 d1 38 0:2 0:0:120 108
place_pattern 0 d1 0:0 8
export_project out/my_first_beat.json
export_midi out/my_first_beat.mid
export_mp3 out/my_first_beat.mp3 preset=clean
EOF
# validate + render
$ claw-daw --headless --soundfont /usr/share/sounds/sf2/default-GM.sf2 --script tools/my_first_beat.txt
Built for agent pipelines
If you’re wiring music generation into an agent workflow, claw-daw is optimized for:
Deterministic reruns
Same script + same seed + same version + same SoundFont → same outputs.
Reviewable changes
Projects are JSON so agents (and humans) can diff/PR changes.
Higher-level edits
Humanize/groove + transforms (transpose/shift/stretch/velocity) reduce “rewrite 200 lines” scripts.
Safety rails
Validate/lint/diff/analyze tooling to prevent broken renders in automation.
Open source, automation-friendly
claw-daw is intentionally lightweight and predictable.
Suggested CI flow
claw-daw doctor
claw-daw validate_project out/project.json
claw-daw diff_projects out/prev.json out/project.json
claw-daw --headless --soundfont <SF2> --script tools/run.txt
Tip: pin the version + SoundFont path for truly repeatable renders.
Deterministic by design
Same script + same seed → same beat. Great for iteration, A/B tests, and agent pipelines.
reproducible exports
One-shot building blocks
Use Drum Kits + 808 presets as first-class choices in scripts. Keep “sound” separate from “notes” so revisions are cheap.
set_kit / set_808 / set_glide
Genre Packs + novelty control
Offline prompt→script scaffolding with style presets (genre defaults) and similarity scoring so iterative attempts don’t collapse into duplicates.
prompt --max-similarity
Run your first headless render
Copy/paste these commands to generate a minimal project and export audio + MIDI + JSON.
claw-daw doctor
SF2=$(claw-daw paths --soundfont | head -n 1)
mkdir -p tools out
cat > tools/first_render.txt << 'EOF'
new_project first_render 140
set_swing 14
add_track Drums 0
set_kit 0 tight
new_pattern 0 d1 2:0
add_note_pat 0 d1 36 0:0 0:0:120 112
add_note_pat 0 d1 38 0:2 0:0:120 108
place_pattern 0 d1 0:0 8
export_project out/first_render.json
export_midi out/first_render.mid
export_mp3 out/first_render.mp3 preset=clean
EOF
claw-daw --headless --soundfont "$SF2" --script tools/first_render.txt
Outputs: out/first_render.json · out/first_render.mid · out/first_render.mp3
Determinism scope (important)
Reproducibility depends on pinning your inputs.
Deterministic when the script/seed, claw-daw version, SoundFont, and render settings are the same.
May differ across versions/SoundFonts/OS audio tooling.
If you care about perfect reproducibility, record the chosen SoundFont path and claw-daw version in your run logs.
Best practice: prompting a song
The fastest way to get a good result is to prompt like a producer brief: references + constraints + arrangement + palette + deliverables.
Copy/paste prompt template
Make a 2:45 instrumental with a late-night, introspective vibe
(think Drake “Views” era, but original—no melodies from the reference).
BPM: 74. Key: A minor-ish (dark/ambiguous). Time sig: 4/4.
Sections (bars):
- Intro: 8 bars (pad + soft keys only, lots of space)
- Hook: 8 bars (add drums + 808/sub + simple top motif)
- Verse: 16 bars (strip the top motif, keep drums sparse)
- Final hook/outro: 8 bars (bring motif back, then fade)
Sound palette: drums sampler + 808/sub + warm pad + EP/keys + light bell/pluck.
Drums: snare on 3, hats quiet, occasional ghost snare, simple kick pattern.
Mix targets: mono low end, gentle reverb, smooth highs.
Deliverables:
- tools/views_style_v1.txt
- out/views_style_v1.mp3 (preset=clean)
- plus project JSON + MIDI
Turn a prompt into a script (offline):
# Best results: prompt an agent, then let the agent use claw-daw like a DAW.
# (Optional helper for scaffolding)
# Styles act like "genre packs": hiphop | lofi | house | techno | ambient
claw-daw prompt --out views_style_v1 --prompt-file prompt.txt --iters 3 --max-similarity 0.92
FAQ (the stuff that usually breaks)
What’s a SoundFont?
It’s a .sf2 file that turns MIDI notes into actual instrument audio.
claw-daw uses it via fluidsynth.
Why do I get “command not found” after install?
The install uses a user-level bin directory. Restart your terminal, or add
$HOME/.local/bin (Linux) / $HOME/bin (some mac installs) to your PATH.
On Windows, run pipx ensurepath then restart PowerShell.
Is this a full DAW?
No—intentionally. It’s built for fast, reproducible sketches and automation.
How do I sanity-check my setup?
Run claw-daw doctor to verify fluidsynth, ffmpeg, and a SoundFont.
Get started
You’ll need fluidsynth, ffmpeg, and a SoundFont (.sf2).
The installers below try to set this up for you.
Quick checklist
1) claw-daw doctor passes
2) You can see a SoundFont: claw-daw paths --soundfont
3) If CLI not found, fix PATH (see below) and restart terminal
curl -fsSL https://www.clawdaw.com/install.sh -o /tmp/clawdaw-install.sh && bash /tmp/clawdaw-install.sh
Best on Debian/Ubuntu • attempts common distros • installs fluidsynth, ffmpeg, a GM SoundFont (if missing), and claw-daw.
curl -fsSL https://www.clawdaw.com/install_mac.sh -o /tmp/clawdaw-install.sh && bash /tmp/clawdaw-install.sh
Requires Homebrew • installs fluidsynth, ffmpeg, a GM SoundFont (if missing), and claw-daw.
iwr https://www.clawdaw.com/install_win.ps1 -UseBasicParsing -OutFile $env:TEMP\clawdaw-install.ps1; & $env:TEMP\clawdaw-install.ps1
PowerShell • installs fluidsynth, ffmpeg, a GM SoundFont (if missing), and claw-daw.
Run in Administrator PowerShell to install system deps (Chocolatey).
sudo apt-get update
sudo apt-get install -y fluidsynth ffmpeg fluid-soundfont-gm pipx
pipx install claw-daw
Use this if you prefer explicit package installs.
After install
claw-daw --version
claw-daw doctor
If claw-daw is not found, restart your terminal.
Still not found? Try:
export PATH="$HOME/.local/bin:$PATH" (Linux)
or export PATH="$HOME/bin:$PATH" (some mac installs).
Windows: run pipx ensurepath then restart PowerShell.
Linux/mac: you can also run pipx ensurepath and restart your terminal.
Update
Rerun the installer (safe) or use:
pipx reinstall claw-daw
Prefer automation? Run headless scripts and export to out/.
What to expect (v1)
claw-daw is intentionally focused.
Great for: quick ideas, deterministic renders, agent automation, Git-friendly iteration.
Not trying to be: a full replacement for Ableton/FL Studio.
For realism: use a higher-quality SoundFont and tune your render preset.
Docs
If you want deeper details (commands, scripting reference, agent workflows):