Instruction Manual Art — our demo

One example among many. Don't reuse its story, arc, shots, props or timings.

Demo: Step Ten 《第十步》 (50.6 s) · instruction-manual.mp4 · source in demo/

Two people who have never built anything assemble a crib from a flat-pack manual. Ten steps are laid out on one long sheet; the camera travels over it. Step 7 goes on upside down; they take it apart, laugh, try again. Step 9 is "wait" (nine months). Step 10 was never in the manual: the page draws it by itself, and the last yellow thing in the film is the swaddled baby in the crib. English narration (Kokoro bm_george, a calm, dry voice, as if the manual were speaking) with Chinese and English subtitles. No brand, logo or product code appears; the story, the crib and the counts are invented.

Story & structure

Logline: a manual has nine steps for building a crib; the tenth is the one it can't print.

Arc: a flat box lands and opens; its parts fly out to a counted list → the two people (she reads the manual, he points over her shoulder) → a whip past steps 2 and 3 → step 4's do/don't box (don't lift alone / lift together) → push through the ✓ cell into the big picture of step 4 → tilt down to step 5: bolts, a magnifier circle with a hand turning the key, the click → push into the magnifier, shape-matched cut to a round knob on the floor: the left end is on upside down (step 7), ✗ → three beats: take it apart, laugh, try again (✓) → step 9, wait: the finished crib in a room corner, the window light sweeping across the floor nine times, faster each time → step 10: a lone "10", then the drawing grows by itself; the swaddle fills yellow → pull back to the whole page, title and sign-off printed in the footer.

Why this subject: assembly is the native subject of 45° manual drawing (parts lists, two-person lifts, do/don't, magnifiers, click, flip arrows), and it has a hook (a flat box, two beginners), a turn (step 7 upside down: everyone has done it) and an ending carried by the style's own rule (yellow = the new part).

Native moves spent: parts explosion (step 1), line art grows (the people, step 4's big picture, step 10), do/don't box (step 4), push through a shape (the ✓ cell; the magnifier), magnifier circle (step 5), arrow-driven assembly (steps 3, 5, 6 and the flip at step 8), new part yellow (every step; the swaddle), the whole page (ending).

The assembly state table

Every picture of the crib (steps 2–10, the parts list, the final page) is drawn by crib(v, S[k]) in demo/crib.js from this table.

Parts (as on the step 1 list): end panels 2 (two posts with knobs and an arched board each), side rails 2 (top rail, bottom rail, 11 round bars), base board 1, mattress 1, bolts 8, hex key 1.

In the box (inside 120 × 70 × 31 cm, bottom to top): mattress → base board → two rails → two end panels; bolts and key in a small bag in one corner. They come out top first: end panels ×2 → bolts → key → rails ×2 → base board → mattress; each flies along its own dotted line from where it lay to its place on the list, turning upright on the way. The box is empty only after the last part leaves.

Fixed geometry: crib 124 × 66 cm, posts 88 cm; rails between the posts, bolted from outside at 26 and 79 cm; base board on the bottom rails (top at 31 cm); mattress 10 cm thick on the board.

Step Adds The crib at the end of the step Parts used
1 unbox and count — —
2 right end panel stands; a dotted footprint of the whole crib right end end panel 1
3 back rail into the right end, 2 bolts right end + back rail (L shape) rail 1, bolts 2
4 the two of them carry the front rail (do/don't) as step 3 —
5 front rail into the right end, 2 bolts, turned until it clicks U shape, open on the left rail 1, bolts 2, key
6 base board slid in from the open side, then the mattress U + board + mattress board, mattress
7 left end, 4 bolts, upside down (turned 180° about the front-back axis: arch down, knobs on the floor) four sides, left end inverted, ✗ on it end panel 1, bolts 4
8 left end lifted out, turned over, set back the finished crib, ✓ —
9 wait as step 8, in a room —
10 not in the manual as step 8 + a swaddle on the mattress —

Bolts: 2 + 2 + 4 = 8, as on the list.

Shots

One sheet, a zigzag: steps 1–4 left to right on the first row, 5–8 right to left on the second, 9–10 on the third, the footer to their right. Dotted lines join step to step. The angle never changes.

# Time Shot Camera Native move / note
1 0.0–6.4 Step 1: a flat carton lands (0.62), the lid opens (1.55); the parts fly out one by one along dotted lines (from 2.2) and settle into the counted list; "1" printed at 4.6 close on the box, pulling back as the parts spread parts explosion
2 6.4–10.0 The two people appear: she reads the open manual, he leans over her shoulder and points; a parts box "2×" with two figures pops in pan right line art grows
3 10.0–10.7 Steps 2 and 3 pass by whip pan with horizontal blur the long page
4 10.7–14.2 Step 4's do/don't box held whole for 3.5 s: ✗ one person dragging the rail, the other end on the floor; ✓ two people, one at each end locked, slight push do/don't
5 14.2–17.75 Push into the ✓ cell until it fills the frame; its small picture is step 4's big picture (the white fades to paper); the two carry the yellow front rail toward the crib in short steps; dotted line and floating arrow drawn after push through a shape arrow-driven assembly, new part yellow
6 17.75–23.2 Step 5: tilt down to the second row, "5" entering from the bottom edge; bolts fly in along dotted lines; she half-kneels outside the right end beside the bolts, turning the key, her right forearm on her front knee; he stands with feet apart, steadying the open end of the front rail; a magnifier circle opens with a hand turning the key and a rotation arrow; the click lands on the word "clicks"; the rail's yellow fades to white; then the camera pushes into the magnifier until the bolt head fills the frame tilt; push into the magnifier magnifier circle
7 23.2–28.8 The bolt head cuts to a round knob, and the pull back shows the knob on the floor: the left end is on upside down. The two stand off the crib's left front corner: he slowly sets his hands on his hips, she scratches the back of her head; the music stops 0.8 s before the red ✗ stamps on "upside" shape-matched cut + long pull back; locked ✗
8 28.8–32.5 Three beats on three words: (1) wide, "Take it apart": the wrong end, now a dotted outline, lifted out under a big arrow; (2) medium, "Laugh": he sits cross-legged, leaning forward, holding his stomach; she bends with hands on knees; three short "ha" lines; (3) close, "Try again": the yellow left end turns over along a 180° arrow and lands, blue ✓ rhythm cuts, three shot sizes flip arrow
9 32.5–37.0 Step 9: tilt to the third row: a room corner (two walls, a window, a rug) with the finished crib; parts box "9×" with a crescent moon; window light sweeps the floor nine times, faster each time; the clock (woodblock) starts half a beat early, under the end of step 8 whip + very slow push the manual's signs for time
10 37.0–44.6 Step 10: pan right to an empty cell; only "10" at first (37.85), almost silent; 38.05–40.85 the drawing grows by itself: the crib, the two of them leaning on its foot end with their backs to us, his arm across her back, hand on her near shoulder; 41.15 the last stroke fills the swaddle on the mattress yellow; hold 3.4 s with a very slow push locked, the picture growing in frame; slow push line art grows; the yellow rule pays off
11 44.6–50.6 The whole manual: a long pull back until all ten steps sit on one sheet (steps 2, 3, 6 included); every part white again, only the swaddle yellow; 46.5 the footer prints the title, 47.3 the style name and the sign-off; hold to the end big pull back, then a slight push the whole page

Transitions: reveal by pull back, pan, whip pan, tilt, push through a shape (the ✓ cell), push into a magnifier + circular match cut (bolt head → knob), three rhythm cuts on three words, a J-cut clock, a picture growing in frame, and a pull back to the whole map. No page turns, no header bars.

Voice and subtitles

Kokoro bm_george, speed 0.86 (about 2.3 words a second), ten lines in demo/vo/lines.json, each placed by demo/tools/timeline.py and checked with asr_check.py. Step 10 starts in silence; line j comes a second after the swaddle turns yellow.

Line Start English (spoken) 中文
a 0.70 It arrives flat. 送來的時候,它是扁的。
b 2.90 A box of parts, and one small key. 一箱零件,一把小扳手。
c 6.60 And two people who have never built anything. 還有兩個從沒裝過任何東西的人。
d 11.00 Step four. Never lift alone. 第 4 步:別一個人抬。
e 19.30 Step five. Turn until it clicks. 第 5 步:擰到咔噠一聲。
f 23.70 Somewhere around step seven, / everyone puts one end on upside down. 大概到第 7 步,/ 每個人都會把一頭裝反。 (two cues)
g 29.07 Take it apart. Laugh. Try again. 拆開。笑一笑。再來。
h 33.10 Step nine. Wait. 第 9 步:等。
i 38.20 Step ten was never in the manual. 第 10 步,說明書裡從來沒有。
j 42.10 You learn that one by heart. 那一步,只能用心學會。

Eleven cues, each at least 1.8 s and at least the spoken line + 0.6 s; the last leaves at 45.0 s, before the sign-off is printed. Subtitles are drawn by the page and written to instruction-manual.srt from the same table.

Score structure

F major, 92 BPM, a small ensemble (demo/mix.py).

Section Time Palette Notes
Unboxing 0–6.4 marimba eighths, cello pizzicato, glockenspiel one glockenspiel note per part landing, rising through the chord
People, step 4 6.4–17.75 the same little machine, felt piano one pizzicato per carrying step
Step 5 17.75–23.2 thinner ratchet clicks, then the click alone
Step 7 23.2–28.8 music stops dead 0.8 s before the ✗ ✗ = a low "wrong" pizzicato + piano
Step 8 28.8–32.5 pizzicato / marimba giggle / harp up + glockenspiel on the ✓ one figure per beat
Step 9 32.5–37.0 woodblock clock, one stroke a month, faster and faster starts under the end of step 8 (J-cut)
Step 10 37.0–44.6 near silence, pencil on paper hand chimes + glockenspiel as the swaddle fills, then the piano plays the unboxing figure slowly
Whole page 44.6–50.6 the strings for the first time, harp running up lands on F major as the sign-off prints; ends naturally

Foley follows the materials: carton landing, lid, wood knocks, pencil, paper sliding, bolts, ratchet, click, rubber stamp, wood turning and landing. Mix: the voice compressed, the music about 10 dB under it and cut at 300 Hz–4 kHz while it speaks; −14 LUFS, true peak ≤ −1 dB (mux.sh). All cue times come from events.json.

Palette & props

End card

Printed on the page's footer, in ink, to the right of step 10: Step Ten 第十步 (title, 46.5 s), then Instruction Manual Art 說明書插畫 and LemoLab × Claude Opus 5.5 (47.3 s), held 3.3 s during the final settle. The "LemoLab × Claude Opus 5.5" sign-off belongs to this library's demo only; a user's film carries no LemoLab credit and no copy of this card.

Build notes

demo/
  build.sh        one command: fonts (if missing) → voice (if missing) + speech check → timeline → events → picture → mix → master → readcheck → poster, style frame, model sheet
  index.html      the page: no query = the film; ?f=figs = the people's turnaround sheet (build.sh leaves it in out/modelsheet.jpg); ?f=hands = close-up hands
  film.js         render(t): the long page, camera keys, steps 1–10, footer, subtitles, motion blur; events() → window.EV; texts() → window.TEXTS
  iso.js          the 45° orthographic engine
  rig.js, poses.js   the people and their poses;  figs.js  the turnaround sheet and the close-up hands sheet (?f=hands)
  hand.js         a hand in close-up (not used in this film: its one close-up hand, in the step-5 magnifier, is drawn in film.js)
  crib.js         the one crib model and its state table S
  page.js         fonts, magnifier circle
  mix.py          score + foley + narration from events.json and timeline.json → out/mix.wav
  tools/timeline.py   narration placement, subtitle cues → timeline.json, ../instruction-manual.srt
  vo/             lines.json (Kokoro bm_george), dur.json, words.json; the clips are local
  shot.mjs        one still through the library's page opener (used for the model sheet)
  tools/fonts.sh  Noto Sans SC 500 subset to the characters on screen (Google Fonts CSS API, &text=); refetched when they change