music-video-gen/flow-state/src
Dejvino b879abe230 A region block: how differently the parts of a frame behave from each other
The descriptor could say where a frame's energy sat and not whether one part of
the picture was doing something different from another — and that second thing
is what "nothing to watch" means. A pattern spread evenly over the screen has no
subject precisely because every region is the same region, and `layout`
normalises that away: a uniform field and a field with a form standing in it can
come out at nearly the same distribution.

So each ninth of the frame is now characterised in its own right — how much
detail, which way it runs, how many elements — and expressed as its deviation
from the frame's average. Heterogeneity rather than level, so a brighter or
busier frame does not register as a more varied one.

It is immediately the strongest block in the descriptor, and it credits scenes
the old one was underrating:

    Apollonian Gasket  0.039 -> 0.062   region 0.180
    Plasma Bloom       0.053 -> 0.082   region 0.182
    Moiré Grid         0.037 -> 0.047   region 0.097
    Droste Feedback    0.219 -> 0.324   region 0.446

Apollonian Gasket is the interesting one. It was called out as looking good and
scoring badly, and the answer turns out to be partly that the instrument was
missing the axis it is good on rather than that beauty and variety are simply
different things. Both were true; only one of them was the instrument's fault.

The metric's own gates still hold, which is the condition for believing any of
this: recolour moves structure 0.019 while moving colour 0.723, a quarter turn
moves it 0.0000, and the same scene against itself is 0.0000 against 0.0992 for
two different scenes.

EVERY SCORE HAS MOVED. The total is a mean over six blocks now rather than five,
and the 0.04 bar was derived under the old one. It needs re-deriving from a fresh
gallery before it is used to judge anything.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 18:07:11 +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 A region block: how differently the parts of a frame behave from each other 2026-08-18 18:07:11 +02:00
engine Give a full-frame field a subject the eye can track, and let the song choose 2026-08-18 16:52:57 +02:00
export Fix export frame loss: reject codec profiles that reorder frames 2026-08-06 13:10:24 +02:00
look Give a full-frame field a subject the eye can track, and let the song choose 2026-08-18 16:52:57 +02:00
params A reproducible migration, and the first eighteen scenes through it 2026-08-17 21:59:24 +02:00
scenes Give a full-frame field a subject the eye can track, and let the song choose 2026-08-18 16:52:57 +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