DAEMONV12GIVE AGENTSINSTRUMENTS.
A headless music production engine built for agents.
Public beta · v0.6
01What it is
Coding agents have code tools.They should have instruments too.
DaemonV12 is a headless composition and rendering engine exposed through MCP. Agents author structured music projects, arrange instruments and samples, apply production processing, render stems and analyze the result, without opening a DAW.
- Not a generator
- There is no model inside. The agent writes every note as data; DaemonV12 plays it exactly where it was written.
- Deterministic
- Same project, same tool versions, same bytes. Every render records input, asset, tool and output SHA-256 hashes.
- Safe tool surface
- Edits are validated, revision-checked transactions inside one workspace. Agents can’t run commands or choose output paths.
Capabilities
- 9MCP toolsstdio server: create, patch, validate, render, analyze
- 128GM voicesGeneral MIDI through FluidSynth and a SoundFont
- 2Original sound packsgenerated in the repo, CC0-1.0
- STEMSWAV / MP3 / MIDIsample-aligned per-track stems
- GAIN/PANAutomationin musical or wall-clock time
- FXProcessingHPF · LPF · delay · compressor · reverb · saturation · VO ducking
- EXACTTimelinesoutput lengths in bars, musical time or seconds
- SHA-256Deterministic rendersa provenance manifest for every render
- 0.25–4×Sample performanceper-note rate · glides · source offsets
02Built by using it
Not designedin isolation.
Each release came out of a real piece of music that needed it.
Shoot the MoonFilm score
A 24-bar cinematic score composed by an agent through the MCP tools against a locked picture timeline: a sync map from the opening drone to the final chord, with one measured revision after a written critique.
- 57.600 s exact delivery
- 100 BPM · 24 bars
- 14 tracks / stems
- Orbital Foundry + 4 GM voices
- −16.95 LUFS
Read the report (opens in a new tab)Project JSON (opens in a new tab)
25 locked sync points across the reel Shoot the MoonAdaptive game audio
Built for a layered soundtrack where gameplay state decides what plays: every layer shares tempo, meter and an exact bar boundary, so the game can bring layers in and out without drift. The game does the switching; DaemonV12 renders layers that line up to the sample.
- 4 bars @ 100 BPM = 423,360 frames
- tails cut at the boundary
- aligned stems
Timeline contract (opens in a new tab)Loop project (opens in a new tab)
Layers locked to one boundary GLASS//FIREElectronic showcase
A 24-second electronic piece composed by an agent through DaemonV12 using the GLASSHOUSE sound pack, then synchronized to motion graphics from the real stems and onsets. Authored, edited, validated, rendered and analyzed solely through MCP.
- 24.000 s · 160 BPM · C# minor
- all 10 GLASSHOUSE sounds
- 15 stems
- Remotion · 60 fps
Project JSON (opens in a new tab)Motion system (opens in a new tab)
HOOK · IGNITION · DROP 1 · FAKEOUT · DROP 2 · PAYOFF
03V0.6 · Sample performance
One sample.Performed.
Sampler and drum-kit notes can play faster or slower, glide between speeds and start from inside the WAV. One source becomes pitched chops, risers, dives and tape stops, with no pre-rendered derived assets.
playbackRatePer-note rate, 0.25–4×. Two octaves either way.glideLinear rate moves from the onset: bends, spin-ups, dives, tape stops.offsetSecondsStart reading inside the source, to the nearest frame.
Rate changes pitch and length together, like tape or a turntable. It is not time-stretching.
examples/ghost-shift.json.hookoctave uprisers · tape stopbass dives- 14 playback rates
- 21 source offsets
- 3 upward · 6 downward glides
- 1 source WAV
Bit-exact on every platform. Each performed trigger records its rate, glide, offset and voice length in the render manifest. Still nine MCP tools. Projects without the new fields render byte-identical audio to 0.5.0. Try it: npm run demo:ghost-shift.
Sample performance contract (opens in a new tab)GHOST//SHIFT project (opens in a new tab)
04Sound packs
Original sounds,made for agents to read.
Generated in the repository and dedicated to the public domain, each with a machine-readable catalog of roles, tuning and suggested use. The outlines below are drawn from the actual WAVs.
Orbital Foundry
Industrial · mechanical · cinematic
Twelve sounds, from sub pulse, mechanical kick and metallic strike to low boom, cinematic impact, tension riser, dark drone and alarm energy.
Browse the pack (opens in a new tab)- Mechanical kick
- Cinematic impact
- Tension riser
- Dark drone
GLASSHOUSE
Glass · synthetic voice · low end · percussion
One glass identity and one vocal identity: glass hit, reverse, crush and prism impact; ghost vox and vox chip; a phase-locked punch/sub pair; clap and hat.
Browse the pack (opens in a new tab)- Glass hit
- Glass reverse
- Ghost vox
- Prism impact
05How it works
How it works
Connect
Register the stdio server with one workspace root.
instruments_listdrumkits_listCompose
Create a project; add tracks, patterns and clips in validated, revision-checked batches.
project_createproject_patchproject_readProcess
Gain, pan and automation; filters, delay, compression, reverb, saturation, ducking.
project_patchproject_validateRender
WAV, MP3, MIDI, aligned stems and a provenance manifest. Offline, no audio device.
renderAnalyze
Peak, RMS, integrated LUFS, loudness range, true peak, clipping. Hashes on request.
analyzerender_info
9 MCP tools · stdio · one operator, one workspace
daemonv12_project_createdaemonv12_project_readdaemonv12_project_validatedaemonv12_project_patchdaemonv12_instruments_listdaemonv12_drumkits_listdaemonv12_renderdaemonv12_analyzedaemonv12_render_info
06One prompt
An agent example
Create a 16-bar industrial cue at 100 BPM using Orbital Foundry. Render WAV, MP3 and stems, then analyze it.
01 Project
{ "title": "Foundry Cue", "bpm": 100, "bars": 16, "key": "D minor", "tracks": [{ "id": "rhythm", "instrument": { "type": "drumkit", "kit": "assets/orbital-foundry/kit.json" } }, { "id": "drone", "instrument": { "type": "sampler", "sample": "assets/orbital-foundry/10-dark-drone.wav" } }, …] }02 Render
- .daemonv12-renders/render-…/
- foundry-cue.wav
- foundry-cue.mp3
- foundry-cue.mid
- foundry-cue.render.json
- foundry-cue.stems/
Paths come back to the agent; audio bytes never go through MCP.
03 Stems
- rhythm.wav
- drone.wav
- riser.wav
- impact.wav
Sample-aligned with the master. Then: duration, integrated LUFS and true peak.
From the README: a scripted run of the six tool calls behind a prompt like this produced a 38.4-second cue with WAV, MP3, four stems and analysis in 12 seconds. The JSON is an excerpt; the lanes show real Orbital Foundry outlines.
07Try it
Clone it.Hand it to your agent.
Public beta · v0.6. Runs from a GitHub clone today; it is not published to npm yet. Needs Node 22.18 or newer.
- Sample and drum-kit projects need only Node.
- General MIDI voices need FluidSynth and a GM SoundFont.
- MP3, effects and analysis need FFmpeg.
- Codex CLI and other MCP clients: MCP client guide (opens in a new tab).
git clone https://github.com/mataindustries/daemonv12.git
cd daemonv12
npm ci
npm run demo:share # renders the best demo your machine supports
node bin/daemonv12.js init ~/daemonv12-music
claude mcp add --transport stdio daemonv12 -- \
"$(command -v node)" "$PWD/bin/daemonv12-mcp.js" \
--root ~/daemonv12-music08Support DaemonV12
Fund the next instrument.
DaemonV12 is being built independently. If the project is useful to you, you can help fund new instruments, sound packs and agent workflows.
Support developmentOpening soon09Request a sound pack
Need a sound DaemonV12 doesn’t have?
Game, film, product, weird machine, brand identity: send the target sound and constraints. Strong ideas may become custom or public DaemonV12 packs. Scope first; pricing follows once it’s understood.
Request a packRequests open soon