audio-stems
Skill1 starsChanged 4 months agoMITView on GitHub
Generate and place a video/animation's audio as SEPARATE stems — voiceover, background music, and a time-synced sound-effects track — and optionally a ducked master mix. Use when adding music and SFX to an animation or explainer, when iterating on audio WITHOUT re-rendering the video, when you need whooshes/clicks/typing/risers placed on exact timeline moments, or when the user wants the music/SFX/VO delivered as separate files. Generates music + SFX via ElevenLabs and mixes with sidechain ducking. Triggers: "add music and sound effects", "give me the stems separately", "place a whoosh on each transition", "typing/generating sounds", "background music track", "ducked mix so the voice leads", "SFX synced to the animation".
In this repository16 other files it gives its agents.
- aesthetic-presetsSkill
- backgrounds-gradientsSkill
- element-motionSkill
- explainer-videoSkill
- glass-cardsSkill
- kinetic-typographySkill
- mark-driven-groundSkill
- motion-graphicsSkill
- product-motionSkill
- scene-transitionsSkill
- smooth-renderSkill
- text-motionSkill
- travelling-markSkill
- ui-data-motionSkill
- vo-syncSkill
- walkthrough-filmSkill
The file
We split this skill into the rules it gives an agent
3 rules. About 0 are common, 1 is distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 24
Write an events file { "total": <sec>, "events": [ {"t":12.34,"clip":"whoosh","gain":0.6}, … ] } (one silent base + each clip delayed to …
- Distinctive: line 33
Keep per-interaction SFX quiet (gains ~0.3–0.5).
- Very specific: line 34
Don't put events in the 0→first-motion intro.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Audio Stems
Produce a piece's audio as independent stems — voiceover.mp3, music.mp3, sfx.mp3 — placed on a known timeline, plus an optional ducked master.mp3. Delivering stems separately lets you (or the user) iterate on audio without touching the rendered video, and drop tracks onto any editor.
Generate (ElevenLabs — scripts/elevenlabs.py)
- Music bed:
python3 scripts/elevenlabs.py music "upbeat but understated corporate tech, instrumental, ~120 BPM" music.mp3 --ms 150000(caps ~150s; for longer,acrossfade-loop). Keep it understated so VO leads. - SFX palette:
python3 scripts/elevenlabs.py sfx "soft cinematic whoosh" sfx_clips/whoosh.mp3 --seconds 0.9— build a small palette (e.g.whoosh/swish,pop,type,generate,shimmer,ding,logo,crack). Min duration 0.5s. Always check level (ffmpeg -af volumedetect); regenerate ifmax < -30 dB(ElevenLabs occasionally returns near-silent clips). - Voiceover: see the
vo-syncskill (elevenlabs.py ttswith word timestamps).
Place SFX on the timeline (scripts/build_sfx.py)
Write an events file { "total": <sec>, "events": [ {"t":12.34,"clip":"whoosh","gain":0.6}, … ] } (one silent base + each clip delayed to its time), then:
python3 scripts/build_sfx.py sfx_events.json sfx_clips sfx.mp3Place events at known choreography moments — derive them from a scene model or from vo-sync's timing.json (t = scene.start + cue.at) so a sound lands exactly on the spoken word / the card raise. Same tool builds the VO track if you put per-scene clips in a folder named by id.
Tasteful placement (learned defaults)
- One transition sound (swish/whoosh) per push/scene-change; a softer/low one is less fatiguing than a bright hissy whoosh — offer a few options and let the user pick.
- pop on each card raise; type while text types, generate during a "processing/generating" beat; shimmer on a decrypt/sparkle; ding on success; logo sting on intro/outro; crack synced to a fracture.
- Keep per-interaction SFX quiet (gains ~0.3–0.5); the SFX track should be mostly silence.
- Don't put events in the 0→first-motion intro; verify every
t ≤ total.
Mix (optional master — scripts/mix.sh)
./scripts/mix.sh music.mp3 voiceover.mp3 sfx.mp3 master.mp3Side-chains the music under the voiceover (ducks when the voice is present), sums VO + SFX, and limits. Pad/trim every stem to the exact timeline length first (afade/apad). Target mean ≈ −20 dB, peak < −1 dB.
Deliver
Hand over the stems separately by default (voiceover.mp3, music.mp3, sfx.mp3) — only mux into the video when the user confirms. To mux onto a silent render: ffmpeg -i video.mp4 -i master.mp3 -c:v copy -c:a aac -b:a 192k -shortest out.mp4.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

