Install
$ agentstack add skill-korben00-ableton-producer-skills-ableton-describe-to-midi ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ● Network access Used
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ● Environment & secrets Used
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Ableton Describe To MIDI
Translate a natural-language brief ("a melancholic 8-bar piano motif in D dorian, sparse, building") into MIDI written into the Live Set. This is the "language → music in your project" magic. Two delivery modes: (A) Claude composes the notes and writes them via the runner; (B) the extension calls an LLM at runtime from Node (it has network access) and writes the returned notes.
When to use
Triggers: "turn this into MIDI", "generate a [mood/genre] [part] in [key]", "make music like…". For a known song's melody use ableton-genre-cover; for a melody over given chords use ableton-topline.
Process
- Use
ableton-live-runnerfor build/run/kill + scaffold. - Parse the brief into musical parameters — key/scale, tempo, length (bars), part(s)
(chords/bass/melody/drums), density, register, mood. Ask 1–2 questions only if a critical parameter is missing (key or length).
- Set the project context —
song.tempo, and optionallysong.rootNote/scale so the Set stays
coherent and Ableton's scale-aware tools agree.
- Compose — for each requested part, reuse the relevant skill's logic (chords →
ableton-reharmonize voicings, melody → ableton-topline principles, bass → ableton-bassline, drums → ableton-drum-groove). Stay in scale; anchor chord tones on strong beats; phrase with rests.
- Write tracks with
makeTrack(sensible instrument per part + light FX) and report what was
generated (key, bars, parts).
Mode B — generate at runtime via an LLM (optional, advanced)
Because the extension is a full Node process it has network access, so compose() can call an LLM API and parse structured notes. Caveats: verify fetch exists in Live's bundled Node (the runtime Node version is not guaranteed — polyfill or use node-fetch if it is undefined); load the API key from environment.storageDirectory, not process.env; and pin the model in one constant so it is easy to update. Force JSON output and validate before writing.
const MODEL = "claude-opus-4-8"; // update as models change
async function llmNotes(apiKey, brief, bars) { // apiKey read from environment.storageDirectory
const res = await fetch("https://api.anthropic.com/v1/messages", {
method: "POST",
headers: { "x-api-key": apiKey, "anthropic-version": "2023-06-01", "content-type": "application/json" },
body: JSON.stringify({
model: MODEL, max_tokens: 2000,
messages: [{ role: "user", content:
`Return ONLY JSON: {"notes":[{"pitch":0-127,"startTime":beats,"duration":beats,"velocity":1-127}]}.
${bars} bars, 4/4. Brief: ${brief}` }],
}),
});
const txt = (await res.json()).content[0].text;
return JSON.parse(txt.slice(txt.indexOf("{"), txt.lastIndexOf("}") + 1)).notes;
}
// then: clip.notes = validate(await llmNotes(apiKey, brief, bars));
Validation (always, especially Mode B)
Clamp pitch 0–127, velocity 1–127, startTime ≥ 0, duration > 0; drop out-of-scale notes if a scale was requested; cap total to the clip length. Never write unvalidated model output.
Limits
- Mode B needs an API key and network; interactively-authenticated services may be unavailable in
headless runs — prefer Mode A (Claude composes) for reliability.
- No automation/real-time — generates notes, not performance moves.
See ableton-topline, ableton-reharmonize, ableton-bassline, ableton-drum-groove.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: Korben00
- Source: Korben00/ableton-producer-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.