music-video-gen/flow-state/src
Dejvino 8d9b8a593a Fix a permanently-zero motion block, and let the song arrange Isometric Blocks
Investigating three pieces of feedback turned up a measurement bug underneath
all of them. The gallery built four of the descriptor's five structural blocks
and never rendered a second frame, so `motion` came back 0.000 for every scene
in the library and dragged every score down by a fifth. It read as a property of
the scenes; it was a missing render. Every number in the gallery so far,
including the ones the 0.04 bar was calibrated against, was depressed by it.

    Plasma Bloom      0.0532 -> 0.0624
    Voronoi Shatter   0.0431 -> 0.0463
    Apollonian Gasket 0.0340 -> 0.0388

The Plasma Bloom versus Voronoi Shatter oddity is real and is the metric's
limit rather than a mistake. Plasma Bloom is a centred subject whose position
moves between songs, so its layout distance is 0.096; Voronoi Shatter is
edge-to-edge cells, and a full-frame texture has the same layout however its
cells fall, so its layout distance is 0.004. The descriptor cannot see "the
cells are different" as composition, and for full-frame work the layout block
contributes almost nothing. Worth knowing before the bar is used to judge that
family.

Apollonian Gasket scoring low with good-looking frames is the gallery working:
it measures how much a scene changes between songs, not how good it looks. A
scene can be beautiful six times and identical six times.

Isometric Blocks gets the displacement it was asked for. Every block sat exactly
on its lattice slot, so the plan of the field was the same plan in every song
and only the heights moved — a layout distance of 0.005. `scatter` steps each
cell off its slot by a fixed amount of its own, bounded under half a cell so
blocks do not cross and break the isometric read, and it drives the block's
height and side wall as well as its ground position. 0.034 to 0.049, clearing
the bar, with orientation variety nearly doubling as the rigid lattice softens.

Its layout distance stayed at 0.004, for the same reason Voronoi's did: the
field fills the frame either way.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 16:32:30 +02:00
..
audio Rename clicktrack.js — a content blocker was eating it and killing the app 2026-08-18 07:01:23 +02:00
checks Fix a permanently-zero motion block, and let the song arrange Isometric Blocks 2026-08-18 16:32:30 +02:00
engine Take the effects off the visualizers and leave them to the grade 2026-08-18 16:21:34 +02:00
export Fix export frame loss: reject codec profiles that reorder frames 2026-08-06 13:10:24 +02:00
look Staging: a shared lattice, and the element size the songs were all sharing 2026-08-17 21:36:55 +02:00
params A reproducible migration, and the first eighteen scenes through it 2026-08-17 21:59:24 +02:00
scenes Fix a permanently-zero motion block, and let the song arrange Isometric Blocks 2026-08-18 16:32:30 +02:00
ui Fix export frame loss: reject codec profiles that reorder frames 2026-08-06 13:10:24 +02:00
main.js Rename clicktrack.js — a content blocker was eating it and killing the app 2026-08-18 07:01:23 +02:00
Show.js Make grain a treatment, tempo a governor, and params commit harder 2026-08-06 07:04:27 +02:00