# Slop visuals — ParVagues × Slopmotion (Kevin)

**Slopmotion** is visual-generation software our friend **Kevin** is building. He's put
a lot of work into it recently (new capabilities / capas). Two horizons for us:

- **Short-term (NOW):** use it as a *generator* — produce easy, shareable **MP4** clips
  for Instagram / socials from ParVagues material. Low commitment, high value.
- **Long-term (LATER, not ready yet):** evaluate it as a **live gig visual engine**
  (real-time backdrop, à la the HUD scene layer #22). Kevin's own read is it's not
  there yet — so this stays exploratory, no gig dependency on it.

## Our jobs here
1. **Generate** — get Slopmotion running locally, feed it ParVagues audio/imagery,
   render a first shareable MP4. Output clips land in this dir (`visuals/slop/out/`).
2. **Give Kevin feedback** — capture reactions as we use it (see `FEEDBACK.md`).
   He built the capas; concrete, kind, specific feedback is the gift back.
3. **Assess as engine** (later) — does it fit the "perf-isolated backdrop" law
   (never stalls audio/editor)? Compare with HUD Feature B (#22).

## Pointers

> **CORRECTION (2026-07-26).** The line that used to sit here — "not installed on this
> machine, this is the real blocker" — was **wrong**, and it blocked #28 for nothing.
> **Kevin Granger IS Shipow** (`git log` on the repo below shows both identities on the
> same commits), so **Slopmotion is `hydra-live-hexa`** — a registered working directory
> of this workspace the whole time. Lesson: resolve the *person* before concluding the
> *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)
`samples/opal2024_mauerpark_173s-233s.flac` — 60s excerpt, 2:53–3:53 of
`Prod/Opal2024/12_Mauerpark.flac` (loudest sustained window, found via RMS sliding-sum).
Chosen deliberately: same track lineage as `live/midi/nova/techno/ete_a_mauerpark.tidal`
(currently being edited for OPAL 2026) and same event series (Opal) — the natural
first test clip once Slopmotion is in hand.

Related: `../../live/` (source tracks), HUD scene backdrop (task #22),
GLITCHWAVE source imagery.
