i C. infinity music video and karaoke pipeline

Infinity Engine master plan (v2)

Written 2026-07-21, superseding the v1 plan. v1 covered the vault and the model registries; since then the system has grown audio ingestion, treatments, a karaoke renderer design, cast/LoRA registries, a recon loop, and now the distribution layer. This plan makes all the moving parts one flow.

Prices in AUD (converted at AUD/USD 0.70, 2026-07-20 unless noted). Honest tense throughout: built means running today, designed means agreed shape not yet coded, horizon means intentionally later.


1. North star

Turn the i C. infinity catalogue into film across three lanes: Recon (fast, rough, cheap: test models, harvest LoRA data, learn), Release (publishable, teachable, community-facing), Hero (A Protopian Gambit and festival shorts, fully directed). Earlier albums are deliberately the R&D lab and community on-ramp. Everything ships from a pipeline Luke owns end to end: open-weight first, rented GPUs on demand, nothing locked to a vendor.

2. The one flow

The diagram at the top of this page is the whole pipeline: sources stay on trusted machines, feed ingestion, land in the note, pass Luke's gate, branch into treatments, render to every platform format, assemble into release packs, ship.

Rule that never changes: sources and the vault stay local; only small derived data (JSON, timings) and approved renders move. Stems are ~470 MB a song; their feature block is a few KB. Same privacy rule as the lyrics.

3. Ingestion (the nuance layer)

Three inputs, one note:

1. Lyric structure (BUILT): marker-aware parsing (Verse/Chorus/Bridge labels when present, hook-line detection when not), per-section keywords, song-wide motifs. 2. Audio (BUILT core; ML layer next): from the Suno stem export per song. Verified from a real export: WAV 32-bit float / 48 kHz stereo (not 24-bit/44.1k), track 0 is the full mix, the rest are per-instrument stems with silent placeholder tracks (~-91 dBFS). engine ingest-audio PATH --slug S --bpm N (BUILT, stdlib-only, reads WAVs straight from the folder or the zip so nothing bloats disk): parses the float WAV headers, maps roles by track name, RMS-detects and skips silent stems, records the active-stem list and arrangement density (sparse/medium/full = a visual signal), writes an audio block to the note. Proven on Be The Legend: 167 BPM, 209s, 6/12 active (drums, backing vocals, vocals, synth, percussion, bass). NEXT layer (needs installs): All-In-One (timed sections, beats, downbeats), WhisperX on the Vocals stem against the known lyrics (word timestamps; never ASR guessing, which kills the CapCut problem at the root), Essentia energy curves. Output grows into timing.json per song. 3. Human cockpit (DESIGNED): the 001 Human Listen page's signals (quick notes, pads, per-timestamp feelings) finally get a home as a human_signals block on the note. Objective + subjective, one source of truth.

Reconciliation: parsed lyric sections + timed audio sections + energy = a timestamped, energy-aware section_plan. That is the spine every treatment reads.

4. Treatments

A song has one spine status (ingested → analysed → briefed) and then one status per treatment in a productions: list on the note:

productions:
  - lane: karaoke          # karaoke | artistic | complex | comic | course | micro-drama
    tier: release          # recon | release | hero
    relationship: support  # support | counterpoint | tangent (artistic/complex)
    status: rendered       # planned | briefed | panels | shots | assembled | rendered | released
    formats: {yt: released, shorts: rendered, ig-feed: queued, canvas: planned}

5. Formats and platforms (the new layer)

One treatment renders to many formats. The format matrix comes straight from the asset guide (ai-native-indie-distribution/asset-guide.html) and lives in the repo as formats.yaml so it is data, not prose:

KeySizePlatform / useNotes
yt1920x1080 16:9YouTube mainH.264/AAC, thumbnail 1280x720
shorts1080x1920 9:16Shorts / Reels / TikTok shared mastercaptions safe, hook timestamp, loop point
ig-feed1080x1080 1:1Instagram feedstill or video
ig-portrait1080x1350 4:5Instagram portrait
canvas9:16, 3-8s loopSpotify Canvas720-1080px tall, MP4
story1080x1920story frame still
cover3000x3000DSP cover master+ 1080 square, WebP web copies
siteresponsiverelease page embed+ compressed poster frame

Per-format rules a skin must respect (safe zones, caption areas, hook-first cutdown for vertical) are fields in formats.yaml. One master render per treatment, then automated crops/cutdowns per format, vertical is reframed, not squashed.

Status icons + priority. Each production's formats: map drives the site: a compact icon strip per song/treatment (done / rendering / queued / planned per format). Priority is config, not vibes: a default platform order per lane in formats.yaml (karaoke default: yt → shorts → canvas → ig-feed), and the site computes "next up": the highest-priority undone format across the catalogue. That answers "what do I render next, for which platform" at a glance.

6. Release packs and distribution

Every song (and album) accumulates an agent-ready release folder matching the asset guide's structure: /audio /artwork /video /copy /metadata /licensing /public /private + manifest.md. The engine fills what it produces (video formats, captions SRT, timing-derived metadata like BPM/key/hook timestamp, lyric sheet); Luke and other tools fill the rest (cover art, credits, ISRC/UPC). engine release <slug> (designed) assembles the folder and writes the manifest with per-asset status and the asset-guide checklist. The release pack is the handoff point to distribution workflows (ai-native-indie-distribution builders) and to the paid packages on strange-but-true / right-place-right-time, including the fan-custom karaoke render perk (pick song + skin, rendered in seconds, near-zero marginal cost).

7. Progress, authority and the site

One tree, rolled up everywhere:

Catalogue → Album → Song → Treatment → Format
Collections (course, short film, series) → reference treatments across albums

8. Registries and the recon loop (built)

Patterns, Cast (41), LoRA plan, open Models (44 incl. audio + worlds), Frontier (46 with verified affiliates), Compute (AUD), Sources, and the watcher → recon queue → vet → promote loop. Content notes (unfiltered/filtered/strict) on every model. These stay current via the watcher plus dated research passes; nothing enters Hero without earning it on our own footage.

9. Build order (revised)

#PieceStateExit test
1ingest-audio (timing.json + audio block)nextBe The Legend's map matches ears + Suno screenshot; word timing is karaoke-tight
2Karaoke renderer (ASS + skins + format renders)designedone song, two skins, yt+shorts out; restyle in seconds
3productions/formats data model + site icons, next-up queuedesignedsite shows per-treatment/per-format truth
4engine release pack assemblerdesignedone complete agent-ready folder from real artefacts
5Human cockpit → human_signalsdesignedcockpit saves into a note
6Comic pre-viz worker (panels from section_plan)designedfirst panel set on the production box
7Remote video worker (Wan 2.2 on rented GPU)designedfirst artistic-film shots, cost logged in A$
8Cast LoRA foundrydesignedfirst validated character LoRA
9Control rig (pose/motion, shot unit)horizonfirst directed hero shot

Full karaoke catalogue sweep (96 songs) becomes possible at step 2 and costs ~nothing but render time; that is the community-facing win while the generative lanes mature.

10. Cost picture (unchanged fundamentals)

Karaoke lane: A$0 GPU, local ffmpeg. Draft generative: Vast.ai 4090 ~A$0.45/hr. Hero: RunPod A100 ~A$2.00/hr / H100 ~A$4.30/hr. LoRA training ~A$2-7 per character. Full draft-clip sweep of the catalogue ~A$18-22. Stems stay local (~45 GB catalogue-wide); only KB-scale derived data moves.