Commit 1b81e5ea by PLN (Algolia)

feat(slop): clip-idea planner — 7 OPAL tracks are cuttable today, and Slopmotion was never missing

Two findings, one of which unblocked a task that had been stuck on a false premise.

THE FALSE PREMISE. visuals/slop/README.md said Slopmotion was "not installed here yet —
this is the real blocker", after a thorough machine search on 2026-07-25. That was wrong.
Kevin Granger IS Shipow (git log on the repo shows both identities authoring the same
commits), so Slopmotion is hydra-live-hexa — a registered working directory of this
workspace all along. Task #28 was blocked on nothing. The lesson worth keeping: resolve
the PERSON before concluding the SOFTWARE is missing. README corrected in place, with the
wrong claim quoted rather than silently deleted.

WHAT THAT UNLOCKS. Everything needed to generate is already on disk, no network at all:
764 loop mp4s across 23 playsets (including a `parvagues` pack of PLN's own imagery); a
24-pack catalog in src/data/playsetPacks.json which is a generated snapshot of the online
Supabase `packs` table; playwright 1.60 + chromium; and a working headless harness to copy
in scripts/capture_fx_previews.mjs. This matters because the online route is CLOSED:
shipow.io is NXDOMAIN, hydra-live-hexa.vercel.app returns DEPLOYMENT_NOT_FOUND, and .env
carries only HEXA_LOGIN/HEXA_PASS with no VITE_SUPABASE_URL — so the DB can't be reached
from here, and doesn't need to be.

THE PLANNER. visuals/slop/plan_clips.py joins three sources to answer "which shareable
clips can we make right now, for tracks actually in the OPAL set?" Answer: 7 of 13.
  - setlist from backlog.md § OPAL 2026, with MEASURED setcps from the BPM-arc doc rather
    than the backlog's annotations (which were wrong on three tracks).
  - recordings = Take89 (Montreuil Algorave V3, 2026-05-22): PLN-ear-validated boundaries,
    plus per-track peak-anchored 30s/90s promo_cuts already computed by the drops detector.
  - visuals = the playset catalog.
Cuttable: WAP, Take 5 Drops, Piment Bresilien, Mafia, Sunshine, Desire, Revolution. The
6 that aren't (Bombe, Doing it Right, Perfect, Gimme Acid, Vague de CRIME, Electric
Hammer) are the newer/reworked tracks with no Take89 take — they need a fresh recording,
which gig_record.sh will produce at the next rehearsal or at OPAL itself.

Playset/FX pairing is driven by MEASURED features, not vibes: tilt_mean (spectral tilt)
picks the dark/mid/bright playset family, kick_density_p70 decides whether the chain is
trigger-heavy (jumpCut/vibration/flash on kick) or breathing (liquix/wetLens/slowmo), and
ssm_novelty_max sets the Automix interval. Thresholds are the terciles of THIS set's
observed range (tilt 0.13..0.54, kick 1.75..3.75), so they split real material rather than
an abstract scale. The one frankly aesthetic layer — which pack names read as "dark" vs
"bright" — is marked as such in the source.

VALIDATION. Master-timeline offsets cross-check against an independent source: the planner
derives Desire's track start from the studio bundle's boundaries_ground_truth.json and
lands on 2926s, which is exactly the 48:46 cut in armada's separately-authored
boundaries_take89_validated.json. Two files, two provenances, same number.

Renderer (audio slice + playset -> mp4 via the real Hydra engine) is NOT built yet.
parent 52a05f96
# Slop clip ideas — OPAL 2026 x Take89
**7 OPAL tracks have a real recording we can cut from today** (6 do not). Source take: Take89 = Montreuil Algorave V3, 2026-05-22.
Every clip below is a *peak-anchored* window found by the drops detector, offset onto the master timeline using PLN's ear-validated boundaries. Playset + FX pairing is derived from measured audio features (see each row).
| # | Track | BPM | tilt | kick | nov | family | playsets | 30s cut (master) |
|---|-------|-----|------|------|-----|--------|----------|------------------|
| 2 | WAP | 133 | 0.25 | 2.25 | 10.8 | mid | liquid-metal, stripe-resonance, liminal-spaces | 24:53 |
| 4 | Take five Drops | 124 | 0.14 | 2.00 | 12.9 | dark | obsidian-tide, obsidian-iris, behind-screen | 17:05 |
| 5 | Piment Bresilien | 124 | 0.41 | 2.00 | 16.3 | mid | liquid-metal, stripe-resonance, liminal-spaces | 8:50 |
| 9 | Mafia | 160 | 0.52 | 2.75 | 10.0 | bright | iridescent, white-hole, fire-sparkles | 35:28 |
| 10 | Sunshine | 144 | 0.30 | 3.00 | 8.3 | mid | liquid-metal, stripe-resonance, liminal-spaces | 46:42 |
| 11 | Desire | 127 | 0.54 | 2.25 | 8.5 | bright | iridescent, white-hole, fire-sparkles | 51:40 |
| 12 | La Revolution Sera Samplee | 114 | 0.16 | 2.50 | 14.2 | dark | obsidian-tide, obsidian-iris, behind-screen | 72:01 |
## Not cuttable yet
- **Ceci n'est pas Une Bombe** (`bombe_dj`) — no Take89 recording — never played at Montreuil (or added since)
- **Am i Doing it Right?** (`do_it_right`) — no Take89 recording — never played at Montreuil (or added since)
- **Perfect <3** (`perfect`) — no Take89 recording — never played at Montreuil (or added since)
- **Gimme Acid** (`gimme_acid`) — no Take89 recording — never played at Montreuil (or added since)
- **Vague de CRIME** (`vague_de_crime`) — no Take89 recording — never played at Montreuil (or added since)
- **Electric Hammer** (`electric_hammer`) — no Take89 recording — never played at Montreuil (or added since)
These are the newer / reworked tracks. To get promo clips for them we need a fresh recording — which the always-on `tools/gig_record.sh` will produce at the next rehearsal or at OPAL itself.
## Rendering one
```bash
cd /home/pln/Work/Sound/hydra-live-hexa && nvm use 22
npm run dev & # the renderer drives the real app
node scripts/render_slop_clip.mjs \
--ideas ../Tidal/visuals/slop/clip_ideas.json --pick 11 --cut 30s \
--out ../Tidal/visuals/slop/out/
```
...@@ -17,14 +17,36 @@ a lot of work into it recently (new capabilities / capas). Two horizons for us: ...@@ -17,14 +17,36 @@ a lot of work into it recently (new capabilities / capas). Two horizons for us:
3. **Assess as engine** (later) — does it fit the "perf-isolated backdrop" law 3. **Assess as engine** (later) — does it fit the "perf-isolated backdrop" law
(never stalls audio/editor)? Compare with HUD Feature B (#22). (never stalls audio/editor)? Compare with HUD Feature B (#22).
## Pointers (fill in as we learn) ## Pointers
- Slopmotion source / repo: **TODO — get from Kevin** (path or URL). Searched this
machine thoroughly (2026-07-25) — not installed here yet; this is the real blocker > **CORRECTION (2026-07-26).** The line that used to sit here — "not installed on this
on actually running a first generation. > machine, this is the real blocker" — was **wrong**, and it blocked #28 for nothing.
- Install / run notes: TODO > **Kevin Granger IS Shipow** (`git log` on the repo below shows both identities on the
- Input formats it wants (audio? stems? images?): TODO > same commits), so **Slopmotion is `hydra-live-hexa`** — a registered working directory
- Export settings for Insta (aspect, codec, length): TODO — target H.264 mp4, > of this workspace the whole time. Lesson: resolve the *person* before concluding the
vertical 1080×1920 for stories/reels, ≤60s. > *software* is missing.
- **Source / repo:** `/home/pln/Work/Sound/hydra-live-hexa`
(`git@github.com:Shipow/hydra-live-hexa.git`). Read its `CLAUDE.md` + `AGENTS.md` first.
- **Run notes:** **Node 22 required** (`nvm use 22`; system node is 16 and fails).
`npm run dev``http://localhost:5173`. Studio mode is `?studio=1` (the `?` matters).
- **Headless:** `playwright` 1.60 + chromium are already installed, and
`scripts/capture_fx_previews.mjs` is a working headless harness to copy — it drives the
real app through `window.__hydraApplyScene` / `__hydraSetPreviewVideo` /
`__hydraSetTriggerGate` / `hydraSettings.fx` / `customBands`, with swiftshader GL.
- **Assets already local — no download needed:** **764 loop mp4s** across 23 playsets in
`public/loops/`, including a `parvagues` pack (26 clips of PLN's own imagery).
- **Playset/settings catalog:** `src/data/playsetPacks.json` (24 packs) is a *generated
snapshot of the online Supabase `packs` table*, so the local file is enough — no DB
round-trip required. (The deployed app was unreachable on 2026-07-26: `shipow.io`
NXDOMAIN, `hydra-live-hexa.vercel.app``DEPLOYMENT_NOT_FOUND`. `.env` holds only
`HEXA_LOGIN`/`HEXA_PASS`, no `VITE_SUPABASE_URL`, so the DB is not directly reachable
from here anyway — and doesn't need to be.)
- **Audio already local:** the shipped ParVagues studio bundle at
`public/audio/Recordings/Montreuil26_master/studio/` — the 75 MB Montreuil26 Opus
master (= **Take89**), ear-validated `boundaries_ground_truth.json`, and per-track
`highlights/` with **peak-anchored 30s + 90s `promo_cuts`** already computed.
- Export settings for Insta: TODO — target H.264 mp4, vertical 1080×1920, ≤60s.
## Staged test input (ready the moment Slopmotion is available) ## Staged test input (ready the moment Slopmotion is available)
`samples/opal2024_mauerpark_173s-233s.flac` — 60s excerpt, 2:53–3:53 of `samples/opal2024_mauerpark_173s-233s.flac` — 60s excerpt, 2:53–3:53 of
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment