Launch score
Tool manual under
launch-film. Start atskills/launch-film/SKILL.md: it holds the core, the hook-plus-body template and the lessons. Where this page differs,launch-filmwins.
A launch score is not a track laid under a film. Its sections are the film's acts: the intro sits under the hook, the build under the demo, the drop on the cut and the outcome, a breakdown under the positioning line, and near silence under the logo. The music and the edit share 1 bar grid, so cuts land on downbeats.
Choose the sound of your brand
Write 1 paragraph before generating anything: genre, tempo, the 3 or 4 instruments that matter, mood in plain words. Take it from the brand, not from habit: a calm, premium product suits warm modern house or felt piano with a soft kick; a developer tool suits tight electronic with a dry kick; a consumer app can carry more colour. What worked well for a B2B launch: organic deep house around 120 BPM, a round bass, a muffled intro that opens into a clean four-on-the-floor kick on the cut. What read as template music: corporate electronic, calm solo piano, orchestral swells. Keep the key stable across the film so the sound palette (launch-sound) agrees with it.
Tools
| Source | When | Cost (2026-09) |
|---|---|---|
Scratch bed (scripts/scratch_bed.py) | First cut, timing tests, free demos. A synthesised bed on the grid with its drop where the plan says. | free |
Higgsfield Sonilo (scripts/hf_score.py) | The default real score on your own account. | about 1.9 credits per 30 s take |
ACE-Step 1.5 (scripts/ace_score.py) | Local and free, full control of bars and key; several GB of models on first run. | free, local |
| A licensed library track | When a catalog track fits the bar plan. | per licence |
- Sonilo:
python3 skills/launch-score/scripts/hf_score.py film/score/score.json film/score/sonilo --takes 3writes the act map into the prompt, generates the takes, measures tempo by onset autocorrelation (librosa's beat tempo snaps to coarse bins: a 120 BPM take can read as 117.5), stretches onto the plan's BPM when within 4 %, and searches the offset whose loudness curve best fits the acts. In 2026-09 tests Sonilo wrote at 120 BPM whatever the prompt asked; a stretch to 122 is 1.7 % and inaudible. - ACE-Step: install it anywhere and set
ACE_STEP_ROOT, then$ACE_STEP_ROOT/.venv/bin/python skills/launch-score/scripts/ace_score.py film/score/score.json film/score/ace.ACE_DRY_RUN=1prints the plan and section times without generating. If a section misfires, regenerate only that range with ACE-Step's repaint task (task_type: "repaint",repainting_start,repainting_end) rather than a new song.
Procedure
- Bar plan. From the storyboard beat sheet, map each act to bars at the film's BPM (1 bar at 120 BPM = 2.0 s). Write
film/score/score.json(format inace_score.py's header:caption,bpm,key,sectionswithtag,note,bars). Keep 2 bars of outro so the logo has a tail. - Caption. 1 paragraph: genre, the 3 or 4 instruments that matter, mood in plain words, "clean modern mix, no vocals". Put section intentions in each section's
note, not in the caption. - Generate 2 to 4 takes.
- Choose. Run
launch-review's analysis on each take (tempo, beat grid, energy per section). Prefer the take whose energy rises where the plan says and whose tempo holds within 1 BPM. The owner decides music inside full films, not as loose tracks. - Find the drop. The drop is the first clean kick after the intro: find the take's steepest loudness rise onto a downbeat (or the fall into a breakdown, for a breakdown cut) and note its time in the file. For the film template, write it into
film/film.jsonasmusic.dropwithmusic.bpm;film/audio.pyplaces the file so the drop lands on the cut whatever the hook's length, and loops bars on the grid to fill the body. - Hand on the chosen take and
score.meta.json(section times in seconds) tolaunch-motion,launch-soundandlaunch-mix.
Rules
- Instrumental only under a voice-over.
- Record the caption, seeds, model and bar plan in
score.meta.json: a score must be reproducible. - Never use a track because it exists. It must fit the bar plan or be regenerated.
- The logo lands in near silence: the last section ends into the mix's drop-out or a 2 s fade.
- A hook longer than about 4 s needs its own bed (the intro bars looped on the grid, or a matching take), or it plays in silence before the drop.