Skip to content
tejb96Public

About

AI music co-production: Claude Code as producer, the SoundCraft DAW over MCP, Surge XT and Python tools

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TakeTwo

An AI music co-production workflow. Claude Code, running interactively on a Claude subscription, is the producer agent; the artist makes the creative calls and does the listening. Everything else is free, open source and local: SoundCraft is the DAW, driven through its MCP server; Surge XT is the synth, and Surge XT Effects brings its effects in as a plugin; Python scripts in tools/ handle analysis and MIDI generation. No API keys, no paid services.

Layout

Path Contents
CLAUDE.md The producer brief every Claude Code session loads
.mcp.json Registers SoundCraft's MCP server, sandboxed (see MCP sandbox)
projects/<song>/ One folder per song: notes.md, <song>.scraft, MIDI, bounces/, vocals
projects/_template/ Starting point for a new song
references/ Reference tracks to compare against (kept out of git)
tools/ Python scripts and their uv project (pyproject.toml, uv.lock, .venv/)
mcp/ Reserved for MCP servers we build next (ACE-Step, audio analysis)

Requirements

  • Linux x86_64 (set up on Ubuntu 26.04), with ~/.local/bin on PATH
  • Claude Code, started from this folder
  • uv; Python 3.14 is pinned in tools/.python-version, and uv fetches it if the machine doesn't have it
  • SoundCraft and Surge XT, installed user-local as below
  • ffmpeg (optional, for an independent loudness cross-check)

Installed tools

Pinned versions. Everything is user-local: nothing was installed with sudo, apt or dpkg.

SoundCraft 0.7.0 (MIT or Apache-2.0)

Source https://github.com/storytold/soundcraft/releases/tag/v0.7.0
Artifact soundcraft-0.7.0-linux-x86_64.tar.gz
Checksum SHA256 8d7afbe5fe433cb338b7ccee0820285d6ce1bfc8c006d551ca8840c27a911ab2, verified against the release's SHA256SUMS.txt
Install path ~/.local/opt/soundcraft-0.7.0/ (bin/, share/)
Symlinks ~/.local/bin/soundcraft, ~/.local/bin/soundcraft-cli
Check soundcraft-cli --version prints SoundCraft CLI 0.7.0

SoundCraft releases every day or two and its MCP surface is still moving (the sandbox flags first shipped in 0.7.0), so stay on this version until an upgrade is deliberate.

Surge XT 1.3.4 (GPL-3.0)

Source https://github.com/surge-synthesizer/releases-xt/releases/tag/1.3.4
Artifact surge-xt-linux-x64-1.3.4.deb, unpacked with dpkg-deb -x rather than installed (its xclip dependency was skipped)
Checksum MD5 209543b5dc9a614b3d47c5ec1bfbc13a, verified against the release's md5sum.txt (the only checksum it publishes); SHA256 a6e55064487f624147d515b9ae5fc79a568b69746675b2083abde628ca7bb151, computed locally
Install path ~/.local/opt/surge-xt-1.3.4/ (the package's /usr tree: bin/, lib/, share/)
CLAP plugins ~/.clap/Surge XT.clap and ~/.clap/Surge XT Effects.clap (copies from the install folder); SoundCraft ids clap:org.surge-synth-team.surge-xt (instrument) and clap:org.surge-synth-team.surge-xt-fx (effect, for mix.insert)
Factory data ~/.local/share/surge-xt → ~/.local/opt/surge-xt-1.3.4/share/surge-xt (Surge looks there before /usr/share)
Standalone ~/.local/bin/surge-xt → ~/.local/opt/surge-xt-1.3.4/bin/Surge XT
User data ~/Documents/Surge XT/, created by Surge the first time it loads (user patches and settings)
Left in the install folder The Surge XT Effects standalone, surge-xt-cli, the LV2 and VST3 builds
Check soundcraft-cli run --cmd engine.clap_plugins lists Surge XT and Surge XT Effects, both 1.3.4

Python tools

uv 0.11.21, already at ~/.local/bin/uv
Python 3.14 (tools/.python-version); on this machine the venv uses /usr/bin/python3.14 (3.14.4)
venv tools/.venv/, rebuilt with uv sync --project tools
Packages locked in tools/uv.lock: librosa 1.0.0, pyloudnorm 0.2.0, pretty-midi 0.2.11.post0, music21 10.5.0, numpy 2.5.4, scipy 1.18.1, soundfile 0.14.0

How to run

cd ~/Documents/projects/TakeTwo   # always start Claude Code from the repo root
uv sync --project tools           # first time on a machine: build the Python venv
claude                            # approve the `soundcraft` MCP server when asked; /mcp shows it

Then work in Claude Code, for example "start a new song called night-drive". Every bounce reports its peak, true peak and integrated loudness; to re-measure a file yourself:

uv run --project tools tools/loudness.py projects/<song>/bounces/<file>.wav

MCP sandbox

.mcp.json runs soundcraft-cli mcp --automation-read-root . --automation-write-root ./projects. SoundCraft 0.7.0 takes exactly one read root and one write root (a repeated flag is an error), so the server can read anywhere in this repo (projects, references, tools and so on) and can write only under projects/. A path outside its root comes back as a tool error. The roots are relative to the folder Claude Code starts in: started anywhere else, a root is missing and the server refuses to start. The desktop app (soundcraft --control) has no such flags, so it is not confined.

Upgrading

SoundCraft (set V to the new version). Re-read docs/mcp.md and docs/control-protocol.md at the new tag first, since flags and commands change, then update the tables above and CLAUDE.md:

V=0.7.1
D=$(mktemp -d) && cd "$D"
gh release download "v$V" -R storytold/soundcraft -p SHA256SUMS.txt -p "soundcraft-$V-linux-x86_64.tar.gz"
grep " soundcraft-$V-linux-x86_64.tar.gz\$" SHA256SUMS.txt | sha256sum -c -
mkdir ~/.local/opt/soundcraft-$V
tar -xzf "soundcraft-$V-linux-x86_64.tar.gz" -C ~/.local/opt/soundcraft-$V --strip-components=1
ln -sfn ~/.local/opt/soundcraft-$V/bin/soundcraft ~/.local/bin/soundcraft
ln -sfn ~/.local/opt/soundcraft-$V/bin/soundcraft-cli ~/.local/bin/soundcraft-cli
soundcraft-cli --version

Surge XT: download the new .deb and md5sum.txt, verify, dpkg-deb -x it into an empty folder, copy its usr/ tree to ~/.local/opt/surge-xt-<version>/, copy lib/clap/Surge XT.clap and lib/clap/Surge XT Effects.clap over the copies in ~/.clap/, and re-point ~/.local/share/surge-xt and ~/.local/bin/surge-xt with ln -sfn. Update the table, then remove the old folder.

Removing

rm ~/.local/bin/soundcraft ~/.local/bin/soundcraft-cli
rm -r ~/.local/opt/soundcraft-0.7.0
rm ~/.local/bin/surge-xt ~/.local/share/surge-xt
rm "$HOME/.clap/Surge XT.clap" "$HOME/.clap/Surge XT Effects.clap"
rm -r ~/.local/opt/surge-xt-1.3.4
rm -r "$HOME/Documents/Surge XT"   # Surge's user data, only if nothing in it is wanted

Moving to another machine

Clone the repo, install the tools above the same way, run uv sync --project tools, and start Claude Code from the repo root. Nothing machine-specific is hard-coded: SoundCraft runs headless with no audio device, sample rate is a per-session setting, and every path is relative. Hardware settings for the GPU tools coming next (device, precision, batch size) will live in a config file, not in code.

Not in git, so back these up separately: audio of any kind (bounces, renders, vocal recordings, and the Audio Files/ folder SoundCraft writes beside a saved session), reference tracks, session Backups/, the venv, and model weights or other large binaries.

About

AI music co-production: Claude Code as producer, the SoundCraft DAW over MCP, Surge XT and Python tools

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages