Communitygithub.com

z1fex/12-sound-design-and-mix

Design the sound of a 3D Cartoon Animation film - an original music bed, a quiet foley sound on every visible action, accents on story beats, measured levels against the voice, stop-downs before the biggest hits - with the engine's 24 synthesised effects, and master it to -14 LUFS. Use after the picture is locked.

What is 12-sound-design-and-mix?

12-sound-design-and-mix is a Claude Code agent skill that design the sound of a 3D Cartoon Animation film - an original music bed, a quiet foley sound on every visible action, accents on story beats, measured levels against the voice, stop-downs before the biggest hits - with the engine's 24 synthesised effects, and master it to -14 LUFS. Use after the picture is locked.

Works with~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/z1fex/3D-Cartoon-Style-Animation-Claude-Skill/tree/HEAD/skills/12-sound-design-and-mix

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

12 · Sound design and mix

Owner's direction (round 1): "slight sound effects when there is an action, everything." Effects design follows earshot's documented motion-design practice (github.com/Leonxlnx/earshot, MIT; docs/motion-sfx-techniques.md, docs/SFX.md); our code in recipe/tools/sound.py is our own and uses no samples.

The layers

LayerLevelNotes
Voice−16 LUFS (speech reference ≈ −19 dBFS, 400 ms RMS)fills 93–98% of the runtime
Music bed18 LU under the voice, no duckingoriginal, in C major (C–Am–F–G, 100 BPM): marimba, plucked bass, pad, kick, shaker. Drops to the pad alone for the re-hook (musicDrop: [start, end])
Foley~15 dB under the voice (ticks ~21, birds ~22)a sound on every visible action
Accents~9 dB under the voicestory beats only, at most ~20 a minute, with a 7 dB music dip in the 0.35 s before the biggest (stop: true)
Master−14 LUFS integrated, true peak −1.5 dBTPtwo-pass linear loudnorm

The effects (24, in sound.py)

TypeTierUse onDesign
whoosh (long: true for big moves)foleyentering a new place, big camera movespink noise through three moving bands (1 : 1.6 : 2.5) following the speed; pan sweep; peak lands on the cue
swishfoleyan arm, a book, a gesture, a throwthin bright flick, 0.2 s
popfoleythe title appearing, a face swap on an object, small arrivalstonal blip sweeping up into the key, tick, daughter ring
tickfoleyevery step of a countertiny bright knock with a varied ping (round robin)
tapfoleysmall objects landing, counters settlinga damped wood block
flipfoleycalendar pagespaper swish and settle
slapfoleya notice or paper slapped onbroadband smack and flutter
creak (dur)foleydoors and hingesstick-slip pulses through wood resonances
clickfoleyswitches, signs turning onpress and latch 35 ms apart
lightfoleya sign lightingsoft hum and a small chime in key
chirpfoleyoutdoor life (sparingly)two small bird whistles
rattlefoleyleaves, shiversfiltered noise bursts at a wobble rate
slidefoleya scoot or sideways slipa soft squeak gliding
stretch (dur)foleyrubber, a string tightening, a surface bendinga rising rough creak
whir (dur)foleya tape running out, a mechanism turningratchet clicks over flutter
chalk (dur)foleywriting, striking out on a boarda scratchy band chopped by the stroke
roll (dur)foleysomething rollinglow rumble at the roll rate plus surface ticks
thunkaccenta soft object landing (the apple on grass)a dull falling body plus a low-passed transient
thudaccenta heavy settlesub 90 → 42 Hz with body and transient
slamaccentdoors shuttingwood body, crack, latch and a stone-arch room tail
snipaccentcuttingtwo blade clicks and a metallic shing
boingaccentsprings, trampolinesa wobbling falling tone
twangaccenta taut string pluckedharmonic partials with a pitch wobble
dingaccenta number landing, a payoffa C6 bell with inharmonic partials

To add an effect: write fx_<name>(rng, …) returning a mono or stereo array at unit peak (layers that peak together, banded so they don't fight, a moving filter on anything that moves, tonal parts in C major, no leading silence, a short fade at the end), add it to FX, REL and either ACCENT or the foley set, and to SUSTAINED if it takes dur.

Cues (in film.mjs)

{ t: W(17) - LEAD, type: 'slam', gain: 1, stop: true }            // an accent with a music dip before it
{ t: W(53) - 0.05, type: 'whir', gain: 0.8, dur: 1.4 }              // a sustained foley sound
...changes(a, b, value, 0.06).map(t => ({ t, type: 'tick', gain: 0.7 }))   // a tick on every counter change
  • t is when the sound's attack lands (whooshes: when their peak lands); the mixer leads it by 10 ms, never later than the picture.
  • gain adjusts within the type's level (0.5 ≈ −6 dB). Each cue gets ±1.2 dB of random variation and its own noise seed, so repeats never sound identical.
  • Write cues shot by shot from the storyboard's sound column. Every visible action gets one; every accent sits on a story beat.

Levels are measured, not guessed

sound.py levels the voice to −16 LUFS, measures the speech reference (the median 400 ms RMS while speaking), and sets every effect so its loudest 400 ms sits at REL[type] dB from that reference. On round 1 v3 this gave accents a median of −9 dB and foley −15 dB against the voice. Check any mix with: python -I recipe/tools/sfx-levels.py <outDir> <outDir>/cue-sheet.txt

Outputs

stem-voice.wav, stem-music.wav, stem-sfx.wav, mix.wav (mastered), cue-sheet.txt (every placed effect with its tier and level), and the final MP4 (H.264 copied from the silent render, AAC 192 kb/s).

Licensing

Everything here is synthesised. If the owner supplies a music track, they must hold its licence; set it as the bed at −34 LUFS with no ducking, and keep the effects.

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

Related Skills