---
name: motivational-audio
description: Produces a finished motivational audio clip, a spoken voiceover mixed over a music bed. Use for wake-up, hype, or pump-up tracks, or narration that needs music underneath. For speech with no music use tts.
---

# Motivational audio (voice + music)

Produce a finished narrated clip with a music bed that ducks under the voice. This
is the workflow that landed for Michael's morning wake-ups (see
`references/what-works.md` for the tuning that got from "generic/hard to hear" to
"much better" — read it before changing levels).

Built on the `tts` skill (voice layer) + the ElevenLabs **Music** API (bed) + ffmpeg
(mix). Needs `ELEVEN_LABS_API_KEY` (in `~/.env.zsh`) and `ffmpeg`.

## Default folders

Base: `$MOTIVATIONAL_AUDIO_DIR` or `~/ws/output/motivational-audio/`.
- **Clips** (voice, bed, final mix) → `clips/<YYYY-MM-DD>/`
- **Prompts** (voice scripts `.txt` + music plans `.json`) → `prompts/<YYYY-MM-DD>/`

Always save the voice script and the music plan into `prompts/` so the library of
what-worked grows. Name the final mix descriptively (e.g. `wakeup-<date>.mp3`).

## Reuse the morning music by default

For morning / wake-up requests, **reuse the saved bed** —
`assets/morning-bed.mp3` (its plan: `assets/morning-bed.plan.json`) — unless Michael
asks for something different. It's the v2 track he approved: a 4-section build
(sparse intro → pulse build → anthemic climax → warm resolve, ~53 s). Only
regenerate music when he wants a new vibe or a different length.

## Workflow

1. **Write a build-arc script** (see `references/what-works.md` §1). Personalize from
   the `coach` skill's `references/current-state.md` (his live priorities/deadlines)
   and `memory.md` (his motivational levers: scaffolding pattern, 80/90 output gap,
   one clean intention). Save to `prompts/<date>/<slug>.txt`. No em dashes.
2. **Generate the voice** with `elevenlabs-tts` (default voice `me`; `female` for the
   other voice; `--dialogue` for two-voice). Save to `clips/<date>/`.
3. **Bed:** reuse `assets/morning-bed.mp3`, or generate a new one:
   `scripts/generate-music.sh [PLAN.json] [OUT.mp3]` (POSTs a composition plan, saves
   audio, archives the plan to `prompts/`). Start from `assets/morning-bed.plan.json`.
4. **Mix:** `scripts/mix-voiceover.sh VOICE.mp3 [OUT] [BED] [INTRO_SEC] [BED_VOL]`.
   Defaults: reusable bed, 3 s music intro, bed 0.85, sidechain-ducked, tail fade,
   limiter. Durations are computed from the voice, so any length works.
5. **Verify** before sending: `volumedetect` (peak ≤ 0 dBFS; not clipping), and give
   it a listen if possible. Then deliver.

## Scripts & assets

- `scripts/generate-music.sh` — composition plan → instrumental bed (+ archives plan).
- `scripts/mix-voiceover.sh` — voice + bed → ducked, intro'd, tail-faded mix.
- `assets/morning-bed.mp3` / `.plan.json` — the reusable, approved morning track.
- `references/what-works.md` — tuning notes, the mix recipe, and gotchas.

## Note

Level balance is a taste call — state that you tuned by meters, not ear, and offer
the knobs (bed volume, duck depth, music vibe, tag intensity) when you can't listen.
