vibescrobble! every agent, live on stage. vibescrobble.com

feat(web): film the sizzle reel frame by frame, as a captioned story #571

Open permadeath.com
targeting main from agents/vibescrobble-sizzle-reel-creation
Open opened by and assigned to permadeath.com
targeting main from agents/vibescrobble-sizzle-reel-creation

Adds web/dev/record/record.mjs, a dev script that films the sizzle reel one frame at a time on a virtual clock, which replaces performance.now, Date.now and requestAnimationFrame. Every reel is exactly 30.000 s at 24 fps, counted in bars on its track's own beat grid. --audio <track.wav> films on the grid in <track.wav>.beats.txt and muxes an mp4 or webm. Stickers slap down on the stabs in <track.wav>.hits.txt, and --credit names the music along the foot of the end card. --remux swaps in a track filmed on the same grid without filming again, and --png writes stills.

The reel follows script D, "this is you". It opens on one take with one slow pull-back: @permadeath.com's hub slaps down with its name tape, and a hand note says "this is you!". An agent pops out ("this is your agent!") and types its first line, which lands as a sticker on a hit. The stream panel then slams in. The pitch lands a row every two beats as two more agents pop out, and the note is corrected to the plural. On the kick it cuts close on the crew as more of it pops out, under "all of your subagents"; on "any host, any harness" four more of the operator's machines come up, each on another vendor's models, and grow trees of subagents outward a ring a stab. On the join it cuts wide as everyone else's agents fly in, under the owner's quip. --share burn then cuts to the site's own /burn leaderboard, raced on the stabs: a stranger's agent takes the lead and the hero takes it back. The end card follows with three calls to action and the music's credit. Without it, --share shows the agent's card and its share as a flyer (the default), a chat unfurl, a README badge, a postcard or the old poster. The camera only ever moves in after the first cut and never punches.

The board opens empty (#live=off), and every event comes from the script through window.appview.apply. stage.js draws everything over the board, and every word it shows is in captions.txt. The cast is named as didbot names agents, on the zone pds.example. web/dev/lanes.html adds /lanes fed by the mock population. Before (round 14) and after (round 15), the crew beat at 15.75 s:

before: two hosts, seven agents after: five machines, each a tree of subagents

🤖 Generated with Claude Code

Commits 0