Skip to content

  • Projects
  • Groups
  • Snippets
  • Help
  • This project
    • Loading...
  • Sign in / Register
T
Tidal
  • Overview
    • Overview
    • Details
    • Activity
    • Cycle Analytics
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Charts
  • Issues 0
    • Issues 0
    • List
    • Board
    • Labels
    • Milestones
  • Merge Requests 0
    • Merge Requests 0
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
    • Charts
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Charts
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • PLN
  • Tidal
  • Repository

Switch branch/tag
  • Tidal
  • visuals
  • slop
  • render_slop_clip.mjs
Find file
BlameHistoryPermalink
  • PLN (Algolia)'s avatar
    feat(slop): the clip renderer exists — first reel rendered from a ParVagues take (#28) · a9ef8cb8
    PLN has said repeatedly he is bad at socials and hoped slop would carry that weight.
    The plan for this has been complete since the clip planner landed; the renderer had
    never been written, so nothing could actually be produced. It can now.
    
    `visuals/slop/render_slop_clip.mjs` takes either a planned cut (`--idea desire --cut 90`,
    from clip_ideas.json with its measured tilt/kick-density/novelty and playset choice) or
    an arbitrary window of any file (`--audio ... --start ... --dur ...`), and renders a
    vertical 1080x1920 reel with Slopmotion reacting to that audio.
    
    DESIGN NOTES WORTH KEEPING
    
    - It lives in THIS repo, not hexa. hexa is Kevin's project and its main is clean; the
      script borrows its node_modules through createRequire instead of being committed
      into someone else's tree. Its scratch files go in hexa/public/__slop and are removed
      in a finally block — nothing is left behind in his working copy.
    - Capture is REALTIME via CDP screencast, not per-frame screenshots. Hydra's animation
      clock is wall time, so frame-stepping plays motion back ~3x fast and drifts away
      from the audio it is supposed to be reacting to. Screencast frames arrive timestamped
      and become a vfr->cfr concat, so a dropped frame is a slightly longer one — invisible
      — rather than a wrong clock.
    - The bands are computed from the REAL audio through an AnalyserNode, not from the
      synthetic pump the FX-preview script uses. Kick is a fast rise in the sub band above
      its own slow running average, because an absolute threshold would need retuning per
      track while a relative one rides the mix.
    - Backdrop clip choice is a hash of the job name, not Math.random: two renders of the
      same cut must be comparable, which is the entire point of a review pipeline.
    - The viewport is 9:16 natively rather than a 16:9 scene centre-cropped afterwards,
      which would throw away most of the motion.
    
    TWO ENVIRONMENT PROBLEMS FOUND AND FIXED WITHOUT COLLATERAL
    
    - The hexa checkout could not boot at all: 9 declared dependencies were missing from
      node_modules, so vite 500'd on @supabase/ssr and @vercel/speed-insights. `npm ci`
      refused (lock out of sync with package.json), and plain `npm install` would have
      rewritten package-lock.json — a TRACKED file in Kevin's repo. Installed the 9 with
      --no-save --no-package-lock instead; his tracked files are byte-identical after.
    - Playwright 1.60 wants chromium build 1223 and the cache has 1217. Rather than pulling
      ~150 MB into PLN's shared browser cache unasked, the script finds the newest full
      chromium already present. Full chromium, not chrome-headless-shell, which ships
      without the GPU/ANGLE stack this needs.
    
    WHAT IS NOT DONE: frame rate. 7.0 fps at 1080x1920 under swiftshader — the page itself
    renders at 7 fps, so it is the GL backend and the machine, not the capture. The two
    follow-up measurements (hardware EGL, and half resolution) both came back at 1.1 fps,
    which is not a verdict on either: load average was 12.5 with Pulsar burning a core from
    the #7 marker leak. They measure the machine. Recorded in FEEDBACK.md with an explicit
    warning to re-measure on a quiet box before concluding anything — a false workaround
    adopted from a contended benchmark is very hard to remove later.
    
    Deliberately not pushed further tonight: a sustained software-GL render is a CPU load
    test, and those do not run at night here while the rig is up.
    PLN (Algolia) authored Jul 29, 2026
    a9ef8cb8
render_slop_clip.mjs 15.6 KB
EditWeb IDE
×

Replace render_slop_clip.mjs

Attach a file by drag & drop or click to upload


Cancel
A new branch will be created in your fork and a new merge request will be started.