Offline, deterministic, terminal-first MIDI DAW for agents
Project description
claw-daw
Offline, deterministic, terminal-first MIDI DAW.
Think “DAW for agents”: you (or an agent) write a small headless script (patterns + clips), render, listen, tweak, rerender — and keep everything diffable in Git.
- Homepage: https://www.clawdaw.com/
- Docs: https://sdiaoune.github.io/claw-daw/
- GitHub: https://github.com/sdiaoune/claw-daw
What you can do
- Headless scripting: build songs with
new_project / add_track / new_pattern / add_note_pat / place_pattern / export_* - Deterministic output: same script + same seed + same version + same SoundFont → same render
- Exports:
WAV / MP3 / M4A / MIDI+ projectJSON - Agent ergonomics:
- bar:beat timecodes (
2:0,1:3:120) - note expressions (
chance,accent,mute,glide_ticks) - select/apply edits (
select_notes,apply_selected) - validate/diff/analyze helpers
- bar:beat timecodes (
- Sampler (offline): built-in
drums+808- Drum Kits v1 (role-based):
list_drum_kits,set_drum_kit <track> <kit>, andadd_note_pat ... <pitch|role> ... - 808 presets:
set_808 <track> <preset>+set_glidefor portamento
- Drum Kits v1 (role-based):
- Genre Packs v1 (from-scratch, deterministic):
claw-daw pack <trap|house|boom_bap> ... - Stylepacks v1 (scored iteration + reports):
claw-daw stylepack <trap_2020s|boom_bap|house> ... - Prompt → script helper (offline): style-aware scaffolding with novelty control (
--max-similarity)- Supported styles:
hiphop | lofi | house | techno | ambient | trap | boom_bap
- Supported styles:
- MIDI out: play to hardware/virtual MIDI ports (
claw-daw play)
Install
Linux (recommended)
curl -fsSL https://sdiaoune.github.io/claw-daw/install.sh | bash
macOS
curl -fsSL https://sdiaoune.github.io/claw-daw/install_mac.sh | bash
Windows (PowerShell)
iwr https://sdiaoune.github.io/claw-daw/install_win.ps1 -useb | iex
Run in Administrator PowerShell to install system deps (Chocolatey).
Manual (Ubuntu):
sudo apt-get update
sudo apt-get install -y fluidsynth ffmpeg fluid-soundfont-gm pipx
pipx install claw-daw
Quickstart
1) Health check + SoundFont
claw-daw doctor
claw-daw paths --soundfont
2) Render a headless script (recommended workflow)
claw-daw --headless \
--soundfont /usr/share/sounds/sf2/default-GM.sf2 \
--script tools/my_song.txt
3) Prompt → script helper (optional)
This is a scaffolding tool. Best results come from iterating like a producer.
SF2=$(claw-daw paths --soundfont | head -n 1)
claw-daw --soundfont "$SF2" prompt \
--out my_prompt_song \
--prompt "modern trap, 140bpm, E minor, spacey" \
--iters 8 --max-similarity 0.85 \
--render --preview-bars 8
# outputs:
# tools/my_prompt_song.txt
# out/my_prompt_song.preview.mp3
# out/my_prompt_song.mp3
# out/my_prompt_song.mid
# out/my_prompt_song.json
Minimal script example (from scratch)
new_project minimal_demo 140
set_swing 16
add_track Drums 0
set_drum_kit 0 trap_hard
add_track 808 0
set_808 1 dist
set_glide 1 0:0:90
new_pattern 0 d1 2:0
add_note_pat 0 d1 kick 0:0 0:0:180 112
add_note_pat 0 d1 snare 0:2 0:0:180 108
place_pattern 0 d1 0:0 16
# (optional) a single bar bass pickup
new_pattern 1 b1 1:0
add_note_pat 1 b1 33 0:2 0:1:0 112
place_pattern 1 b1 0:0 16
save_project out/minimal_demo.json
export_midi out/minimal_demo.mid
export_mp3 out/minimal_demo.mp3 preset=clean
MIDI out (hardware / virtual ports)
claw-daw midi-ports
claw-daw play out/minimal_demo.json --midi-out "YOUR PORT NAME"
Docs
docs/USER_GUIDE.mddocs/AGENT_COOKBOOK.mddocs/AGENT_PLAYBOOK.mddocs/ARCH_STYLEPACK_PIPELINE.md(prompt → BeatSpec → compile → render → score → iterate)
Notes / guarantees
- 100% offline core (no network APIs).
- Reproducibility depends on pinning: claw-daw version + SoundFont + seed/script.
- Project format is JSON (current schema v7; migrations included).
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file claw_daw-0.2.0.tar.gz.
File metadata
- Download URL: claw_daw-0.2.0.tar.gz
- Upload date:
- Size: 77.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5de8d928ddeb243b1665cbfdbb473520687587693b1c11e839f598e27c447d41
|
|
| MD5 |
96d55b41103b29c49409741b1f0bdffc
|
|
| BLAKE2b-256 |
535cb33d14bbd7f81a1b109ed9336e592391b92e4f25efb02252c5713bf3ddc4
|
Provenance
The following attestation bundles were made for claw_daw-0.2.0.tar.gz:
Publisher:
publish.yml on sdiaoune/claw-daw
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
claw_daw-0.2.0.tar.gz -
Subject digest:
5de8d928ddeb243b1665cbfdbb473520687587693b1c11e839f598e27c447d41 - Sigstore transparency entry: 908877192
- Sigstore integration time:
-
Permalink:
sdiaoune/claw-daw@0c0473c996091af42f7f1acd4f9a54e2d866cb76 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/sdiaoune
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@0c0473c996091af42f7f1acd4f9a54e2d866cb76 -
Trigger Event:
push
-
Statement type:
File details
Details for the file claw_daw-0.2.0-py3-none-any.whl.
File metadata
- Download URL: claw_daw-0.2.0-py3-none-any.whl
- Upload date:
- Size: 104.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ef77d8cbad0c0a6f49163dd503783f97044a5503cb81a6e39f5dfe55c52616d8
|
|
| MD5 |
cfc2b2b869260cd5a612b8771640c3e8
|
|
| BLAKE2b-256 |
0a5ad13430bac36a8e718ec2e4228ca527d519b4093115d8942853e863ec116e
|
Provenance
The following attestation bundles were made for claw_daw-0.2.0-py3-none-any.whl:
Publisher:
publish.yml on sdiaoune/claw-daw
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
claw_daw-0.2.0-py3-none-any.whl -
Subject digest:
ef77d8cbad0c0a6f49163dd503783f97044a5503cb81a6e39f5dfe55c52616d8 - Sigstore transparency entry: 908877194
- Sigstore integration time:
-
Permalink:
sdiaoune/claw-daw@0c0473c996091af42f7f1acd4f9a54e2d866cb76 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/sdiaoune
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@0c0473c996091af42f7f1acd4f9a54e2d866cb76 -
Trigger Event:
push
-
Statement type: