music-video-gen/flow-state/tools
Dejvino 91e74ff167 A cast census, and the arrangement it needed to be true
"Twenty-three of sixty-one scenes are never cast" was an artefact of the song it
was measured on. synthesizeSectioned has one change point, so it segments into
exactly two sections and both are quiet kinds — and intro, breakdown and outro
are restricted to the restful families for every director. Half the library was
unreachable before a seed was drawn, and the measurement reported that as a
casting failure.

synthesizeArrangement builds a real one: intro, build, drop, breakdown, drop,
outro, shaped to hit the segmenter's own classifier rather than to sound like
anything. Measured against a bank of those, two scenes out of sixty-one are
never a background, not twenty-three.

The census exists because "never cast" without a reason is unactionable. A scene
can die at the signature gate, at the director's family table, or in the roster
draw, and those are three different repairs — a trait declaration, a table, and
arithmetic that neither fixes. It reports which one, and it separates being cast
as a background from appearing as a translucent overlay, because a library can
look fully used while nine scenes carry every frame.

What it finds is that eligibility is almost entirely a function of how many
traits a scene declares. Four-trait scenes are eligible for every track and open
half of all videos; two-trait scenes are eligible for one track in fourteen; the
single scene declaring one trait is eligible for none, ever.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-17 06:45:42 +02:00
..
cast-census.js A cast census, and the arrangement it needed to be true 2026-08-17 06:45:42 +02:00
lint-scenes.js Six more visualizers, built through the scaffolder 2026-08-06 00:14:20 +02:00
new-scene.js Phase 10: variety, twelve scenes, and tooling to write the next one 2026-08-05 23:59:20 +02:00
probe-mp4.js Fix export frame loss: reject codec profiles that reorder frames 2026-08-06 13:10:24 +02:00