Skip to content

Commit a23ca34

Browse files
docs: refine music-to-video planning catalogs
1 parent 5d1bff5 commit a23ca34

17 files changed

Lines changed: 94 additions & 153 deletions

File tree

skills/music-to-video/references/motion-primitive-catalog.md

Lines changed: 55 additions & 75 deletions
Large diffs are not rendered by default.

skills/music-to-video/references/template-catalog.md

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,10 @@ template realizes **one group** of a frame (a frame may stack several groups; th
66
unifies them).
77

88
**How to pick.** For each group, read its frame's `pacing` + `mood` + the one-line music
9-
situation from the skeleton, then scan **Reach for it when** below and take the closest fit.
10-
If nothing fits, **free-compose** from [`motion-primitive-catalog.md`](motion-primitive-catalog.md)
11-
— that is a first-class choice, not a failure.
9+
situation from the skeleton, then scan **Reach for it when** + **Best span** below and take the
10+
closest fit. If nothing fits, **free-compose** from
11+
[`motion-primitive-catalog.md`](motion-primitive-catalog.md) — that is a first-class choice, not a
12+
failure.
1213

1314
**Brand comes from `frame.md`, not the template.** Templates ship their own demo palette
1415
(`theme` / `palette` / color params). Fill those params from the project's `frame.md` (the
@@ -22,58 +23,84 @@ reads those at build time; you only name the values.
2223
Pacing tag: every template below is **beat_cut** except `held-message-living-field`
2324
(**phrase_flow**). Never put a beat_cut template on a phrase_flow frame.
2425

26+
## Group duration discipline
27+
28+
Template choice is per **group**, not per frame. A frame longer than a template's **Best span**
29+
should usually split into multiple groups at real audiomap anchors (`SURGE`, `DROP`, roll edge,
30+
hard_stop, phrase edge) instead of stretching one template across the whole frame.
31+
32+
- **Best span** below is the active treatment span: the part where the template's system is doing
33+
meaningful motion. A short readable hold at the end is fine; a long empty tail means pick another
34+
group.
35+
- **Frames over ~6s** usually need 2+ groups. Beat-cut exceptions are rich programs with real
36+
sub-phases (`poster-tile-mosaic`, sometimes `card-flyby`); phrase-flow exceptions use
37+
`held-message-living-field`.
38+
- **Roll templates are one-roll tools.** If a frame has two rolls or a drop between rolls, split it
39+
into two groups.
40+
- Do not extend by slowing every tween. Preserve the template's motion feel, then fill extra time
41+
with a hold / palette change / new group.
42+
2543
---
2644

2745
### card-flyby
2846

2947
- **What** — a depth column of cards rolls forward through perspective; each landing beat tumbles the next card into the front slot with a solid colored wipe, the old front falls toward camera, dwells shrink card-to-card so the deck accelerates into a held final card.
3048
- **Reach for it when** — a stream of discrete onsets that **accelerate** (gaps shrinking / a build into a downbeat) and you want to flash a **sequence of items** — titles, projects, posters, tiles — one per hit, climaxing on a held card.
49+
- **Best span****4-6.5s** for 4-7 landings plus a short final hold; split at the next downbeat if it wants to run **>7s**.
3150
- **Params**`theme`, `bgColor`, `cards`, `landings`, `yaw`
3251

3352
### held-message-living-field · phrase_flow
3453

3554
- **What** — a readable mark (logo / word / title) held dead still over a soft, color-shifting blurred field; only the field breathes.
3655
- **Reach for it when** — a **calm / sparse** stretch with an onset desert — energy present but few or no onsets (a held pad or riser); you have one word or mark to hold and let breathe.
56+
- **Best span****6-16s**; this is the long-group exception. Under 4s feels underdeveloped; over ~20s needs a state change or another group.
3757
- **Params**`markText`, `titleText`, `tagText`, `palette`, `flowSpeed`, `duration`
3858

3959
### held-text-strobe-burst
4060

4161
- **What** — a dead-still word whose letters flip through texture-filled frames (texture-clipped fill + per-frame tint + bg color) every ~3 frames, in short bursts pinned to a roll.
4262
- **Reach for it when** — a **dense, hard-hitting roll / fill** and a single word you want to strobe through textures for a few bars. (Ships texture-mask PNGs under `assets/`.)
63+
- **Best span****1.2-3.5s**; strobe fatigue starts fast, so cap at ~4s and cut to a cleaner system.
4364
- **Params**`markText`, `fontStyle`, `markScale`, `idleColor`, `idleInk`, `frames`, `strobePlan`, `decor`, `duration`
4465

4566
### intro-kinetic-cascade
4667

4768
- **What** — a line laid out as a sequence of big editorial **phrases** (each a stacked poster with one enlarged hero word), revealed word-by-word on its anchors, hard cut between phrases, climaxing on a phrase that slides in with a swappable ringing **icon** (bell / cursor / sparkle / emoji / SVG).
4869
- **Reach for it when** — an **intro / opening statement**: a short line to land word-by-word as big type, climaxing on one keyword + an icon. Medium-or-more energy, steady grid.
70+
- **Best span****3.5-7s** for 2-4 phrase beats; if the statement needs more time, make the next clause a new group.
4971
- **Params**`theme`, `icon`, `phrases`, `climax`
5072

5173
### logo-split-lockup-pulse
5274

5375
- **What** — a two-part mark joined at center splits left↔right to open a gap, grows a center word-lockup one word per onset (key word lands on the downbeat surge), snap-closes on a hit, then pulses with the beat.
5476
- **Reach for it when** — a short **logo / brand sting** (not a typed sentence): fast dense onsets + a sustained roll bed to pulse on, with a left/right bracketing mark.
77+
- **Best span****2-4s**; at **>4.5s** it reads like a sting stretched too long. Follow with a separate held-lockup / next idea group.
5578
- **Params**`bgColor`, `markColor`, `textColor`, `leftMark`, `rightMark`, `word1`, `word2`, `word3`, `word4`
5679

5780
### poster-tile-mosaic
5881

5982
- **What** — a packed **mosaic** of different-sized colored tiles that tessellate to fill the frame (no overlap), driven by interchangeable beat-synced operations: staggered enter/exit, locked global recolor, snake-fill + overlay.
6083
- **Reach for it when** — many discrete, individually-placeable onsets (a hit for every tile move) with distinct sub-phases you want articulated differently (accumulate → recolor-on-roll → fill-then-drop). A dense section best held as **one** rich tile program rather than split.
84+
- **Best span****4-7s**, up to **8s** only when the program has clear sub-phases. If the music changes regime, split even if the tile system could continue.
6185
- **Params**`bgColor`, `tiles`, `bands`, `gap`, `showText`, `labels`, `program`
6286

6387
### roll-flipbook-word-cycle
6488

6589
- **What** — a hi-hat roll drives a centred word that flips every 16th-note through a word list; optionally the flicker resolves and locks into a final phrase.
6690
- **Reach for it when** — a **fast sustained-fill roll** (hundreds of hits/min, ~16th-note) with no single readable message — fill the roll with a rapidly-cycling word flipbook.
91+
- **Best span****1.2-3.8s**, one roll into one resolve. Two rolls, or a drop between rolls, means two groups.
6792
- **Params**`bgColor`, `textColor`, `accentColor`, `flipWords`, `resolveText`, `periodChar`
6893

6994
### split-anchor-word-slot
7095

7196
- **What** — a held left anchor column of fixed-word rows beside a torn-paper word-slot box on the right, driven by beat-synced operators: anchor lock-in, slot word-group cycle (in/out + per-line color), full-scene background flip, per-beat jitter, box-zoom exit wipe. Row count + number of flips are data.
7297
- **Reach for it when** — a short section with a **held idea** (a brand / name to anchor on the left) **and** a stream of onsets popping separate words on the right, plus a dense run to ride a shake on and a strong downbeat to wipe out into.
98+
- **Best span****3-6s**; above ~6.5s the fixed anchor goes stale unless the right slot enters a new group/program.
7399
- **Params**`bgColor`, `anchors`, `theme`, `showText`, `program`
74100

75101
### typewriter-phrase-keyword-shuffle
76102

77103
- **What** — words type in one-per-onset to spell a phrase, then one keyword cycles typefaces on the beat while everything else holds dead still.
78104
- **Reach for it when** — a steady grid with a **continuous onset stream** (no desert): a phrase to type out, then a keyword to shuffle. The inverse of `held-message-living-field` (which wants an onset desert).
105+
- **Best span****2.5-5s**; if the phrase cannot type and shuffle inside ~5s, reduce words or split the sentence across groups.
79106
- **Params**`bgColor`, `textColor`, `accentColor`, `lead1`, `lead2`, `lead3`, `keyword`, `periodChar`

skills/music-to-video/references/templates/card-flyby/assets/gsap.min.js

Lines changed: 0 additions & 11 deletions
This file was deleted.

skills/music-to-video/references/templates/card-flyby/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<meta charset="UTF-8" />
1414
<meta name="viewport" content="width=1920, height=1080" />
1515
<title>Card Flyby · accelerating 3D deck cascade — reference impl</title>
16-
<script src="./assets/gsap.min.js"></script>
16+
<script src="../../motion-primitives/assets/gsap.min.js"></script>
1717
<style>
1818
*,
1919
*::before,

skills/music-to-video/references/templates/held-message-living-field/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
rel="stylesheet"
2323
/>
2424
<script src="https://cdn.jsdelivr.net/npm/three@0.147.0/build/three.min.js"></script>
25-
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
25+
<script src="../../motion-primitives/assets/gsap.min.js"></script>
2626
<style>
2727
*,
2828
*::before,

skills/music-to-video/references/templates/held-text-strobe-burst/assets/gsap.min.js

Lines changed: 0 additions & 11 deletions
This file was deleted.

skills/music-to-video/references/templates/held-text-strobe-burst/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
<meta charset="utf-8" />
1717
<meta name="viewport" content="width=1920, height=1080" />
1818
<title>Held Text / Strobe Burst (Texture Flip) — Template</title>
19-
<script src="assets/gsap.min.js"></script>
19+
<script src="../../motion-primitives/assets/gsap.min.js"></script>
2020
<style>
2121
*,
2222
*::before,

skills/music-to-video/references/templates/intro-kinetic-cascade/assets/gsap.min.js

Lines changed: 0 additions & 11 deletions
This file was deleted.

skills/music-to-video/references/templates/intro-kinetic-cascade/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
<meta charset="UTF-8" />
1313
<meta name="viewport" content="width=1920, height=1080" />
1414
<title>Intro Kinetic Cascade · beat-synced kinetic typography — reference impl</title>
15-
<script src="./assets/gsap.min.js"></script>
15+
<script src="../../motion-primitives/assets/gsap.min.js"></script>
1616
<style>
1717
*,
1818
*::before,

skills/music-to-video/references/templates/logo-split-lockup-pulse/assets/gsap.min.js

Lines changed: 0 additions & 11 deletions
This file was deleted.

0 commit comments

Comments
 (0)