Files
splatter-tennis/tools/trailer/clips.sh
T
wuwiandClaude Opus 5.5 d388004eac Add the LIFETIME MEMBERS trailer pipeline
A vertical live-action mockumentary trailer: the dead staff of St. Mordred's
(the game's bosses) each tell a different origin story, and the film ends on
"Quiet, please." / "Play." / splat. tools/trailer/ holds the whole pipeline:
stills and takes through the OpenRouter key (gen.py, stills.sh, clips.sh),
the frame graphics in HTML/CSS (frame.html), a QA listener (qa.py), the
music sectioner (segment.py) and the edit (cut.py). Media lands in the
gitignored promo/trailer/. SCRIPT.md is the screenplay and the cut notes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 20:27:13 +02:00

39 lines
8.5 KiB
Bash

#!/bin/sh
# The takes. Each is one image-to-video call off its still; dialogue and ambience come from the model.
# usage: sh tools/trailer/clips.sh <name>... (parallel; TAKE=v2 to keep earlier takes)
cd "$(dirname "$0")/../.."
M=${MODEL:-google/veo-3.1-fast}
T=${TAKE:-v1}
D=promo/trailer/stills
END="Cinematic 35mm film look, consistent with the first frame. No music. No subtitles, no captions, no on-screen text."
c() { uv run -q --with requests --with pillow python tools/trailer/gen.py clip "$1_$T" "$M" "$2" "$D/$3.png" "$4 $END" ; }
take() {
case $1 in
gates) c gates 8 gates "Very slow, smooth dolly forward through the open iron gates into the fog. A crow shifts on the gate and one takes off, flapping away into the mist. Audio: cold wind, crows cawing, gravel underfoot; far away inside the fog, the hollow pok... pok... pok... of a tennis rally, though nobody is there." ;;
court) c court 6 court "Locked-off static shot. The sprinkler ticks and sprays its arc. The distant figure at the far baseline stays perfectly still, then very slowly turns its head toward the camera. Audio: the tick-tick-tick of the sprinkler, hissing water, otherwise silence." ;;
board) c board 6 board "Very slow push-in toward the last line of the honours board, 1911 MATCH IN PROGRESS. The lettering stays sharp, legible and unchanged. The pale man standing in the dark doorway slowly steps backwards into the darkness and disappears. Audio: a slow grandfather clock ticking, a creaking floorboard." ;;
reg) c reg 8 reg "Documentary talking-head interview, static camera on a tripod with a barely perceptible slow push-in. The zombie groundskeeper turns the single blade of grass in his fingers, then lifts his cloudy eyes just off camera toward the interviewer and says, in a slow, gravelly, deadpan old English countryside accent: \"Fertiliser. Formula Seven.\" He pauses and looks fondly back down at the blade of grass. \"Lovely green. Very... persistent.\" Audio: only his voice, the quiet room tone of a wooden shed, faint rain on the roof, one distant crow." ;;
tin) c tin 4 tin "Macro, static camera. The luminous green sludge slowly oozes out of the tin into the soil; the grass blades around it curl toward it like fingers; the dead hand's fingers twitch once. Audio: a slow wet squelch, a deep low rumble." ;;
doris) c doris 8 doris "Documentary talking-head interview, static camera on a tripod. The zombie strawberry seller smiles politely just off camera at the interviewer and says, in a warm, chirpy but slightly hollow old London accent: \"People say it was the cream.\" Short pause, the smile stays. \"It wasn't the cream.\" Her smile slowly freezes. \"The cream was just... old.\" Audio: only her voice, morning birdsong, bunting flapping softly in the wind." ;;
cream) c cream 4 cream "Static macro. The surface of the cream in the jug slowly ripples on its own, as if something beneath it took a breath. The fly takes off. Audio: the buzz of the fly, then silence." ;;
clive) c clive 8 clive "Documentary talking-head interview, static camera on a tripod. The zombie line judge, arms folded, says just off camera to the interviewer, in a pompous, nasal, utterly certain English accent: \"It's in the bye-laws. Lifetime membership.\" He leans forward slightly. \"Nobody ever defined... lifetime.\" Audio: only his voice, a ticking wall clock, quiet room tone." ;;
bylaws) c bylaws 4 bylaws "Static overhead. The dead grey fingertip slowly slides along the page underlining the words MEMBERSHIP SHALL BE FOR LIFE; the printed lettering stays sharp and unchanged. Audio: dry paper rustle, a fingernail scraping paper." ;;
ambrose) c ambrose 8 ambrose "Low-angle static shot. The ancient zombie chair umpire leans to the gooseneck microphone and speaks in a thin, ancient, precise upper-class English voice, amplified through an old public-address system with a faint echo across the empty court: \"Nineteen-eleven. Fifth set. No tie-break.\" A long pause, he does not blink. \"We are still waiting for a result.\" Audio: only his amplified voice and its echo, fog-muffled silence, one distant crow." ;;
archive) c archive 6 archive "Flickering hand-cranked 1911 film footage at a jerky 16 frames per second, black and white, scratches, dust and gate weave. The two gaunt gentlemen trade one slow, exhausted rally; one of them sways as if falling asleep standing. The spectators in deckchairs do not move. Audio: only the rattle of an old film projector." ;;
stare_reg) c stare_reg 4 reg "Static camera. The zombie groundskeeper slowly lifts his head and stares directly into the camera lens, unblinking, silent, completely still. Audio: room tone, rain on the roof, nothing else." ;;
stare_doris) c stare_doris 4 doris "Static camera. The zombie strawberry seller turns her head to look straight into the camera lens and says sweetly, in her old London accent: \"They never stay long.\" Then she keeps smiling. Audio: only her voice and soft wind." ;;
stare_clive) c stare_clive 4 clive "Static camera, slow push-in. The zombie line judge looks straight into the lens and, with one finger, slowly pulls his small round dark sunglasses down his nose, revealing two completely blank, milky-white dead eyes with no irises and no pupils, like boiled eggs. He does not blink. Nobody speaks. Audio: room tone, a clock ticking." ;;
stare_ambrose) c stare_ambrose 4 ambrose "Static low-angle camera. The ancient chair umpire leans to the gooseneck microphone and says, slowly and firmly, through an old echoing public-address system: \"Quiet, please.\" Audio: only his amplified voice and its echo dying away into the fog." ;;
lights) c lights 6 lights "Static wide shot. One after another, the remaining floodlight banks switch on with heavy electrical clunks, each tower blasting beams through the fog in turn, until the whole court is lit. The two figures on the court stand motionless. Audio: four heavy relay clunks, a rising electrical hum." ;;
stands) c stands 6 stands "Very slow push-in. The dead spectators sit perfectly still and silent. Then, all at the same moment, every head in the stand slowly turns to look directly at the camera. Audio: silence, faint wind, one wooden creak." ;;
challenger) c challenger 8 challenger "Steadicam tracking behind the young woman as she walks to the baseline, stops, and bounces the tennis ball twice on the grass. Across the net, the shambling figures emerge from the fog and come closer. Audio: footsteps on wet grass, two crisp ball bounces, low groans in the fog, the hum of the floodlights." ;;
champion) c champion 8 champion "Static wide shot. The towering zombie champion walks slowly out of the fog toward the net, stops, carefully sets the tarnished trophy down on the grass beside the net post, then raises his old wooden racket and points it straight at the camera. Audio: heavy slow footsteps, the metallic clink of the trophy on the ground, a low rasping growl." ;;
ambrose_night) c ambrose_night 4 ambrose_night "Static low-angle close shot. The ancient chair umpire leans into the microphone and says one single word, slowly, clearly and crisply enunciated, in a thin, dry, ancient upper-class English voice, with a gentle echo from the stadium speakers: \"Play.\" The word is clean and intelligible, not distorted, not whispered. Audio: only that one word and its soft echo, then the low hum of the floodlights." ;;
serve) c serve 4 serve "Slow motion. The tennis ball floats at the apex of the toss in the floodlight glare; the young woman's racket swings up through the frame toward the ball; behind the net the zombies lurch forward. Audio: a deep slow-motion whoosh, a heartbeat, rising tension." ;;
reg_dawn) c reg_dawn 6 reg_dawn "Static medium shot. The zombie groundskeeper dabs the red stain on the white line with his handkerchief, glances up at the camera and says cheerfully, in a slow, gravelly old English countryside accent: \"Lovely day for it.\" Then he carries on dabbing. Audio: only his voice, early morning birdsong, a distant sprinkler." ;;
stands_close) c stands_close 6 stands_close "Static camera. For the first two seconds the dead spectators sit perfectly still, all looking to the left toward the court. Then, in perfect unison, every single head in the stand turns ninety degrees, slowly and mechanically, until every face is looking directly into the camera lens, cloudy eyes wide. They hold the stare, motionless. Nobody speaks, nobody else moves. Audio: silence, faint wind, the creak of old wood as the heads turn, no voices at all." ;;
*) echo "unknown take $1" ;;
esac
}
for n in "$@"; do take "$n" & done; wait