R&D 001 — One-button cover pipelines for adaptive game scores
Take any cue. Re-generate it in five game-score styles engineered for stem separation, cut loop-ready intros automatically, and bucket ~15-second transition swells — from one source file, unattended.
01 — Premise
Game scores need the same musical idea at several intensities, with clean layers to mix interactively, plus intros and transitions that land on downbeats. Producing that set by hand — cover-mode generation, style prompt, form prompt, dials, exports — is a repeatable ritual. Repeatable rituals should be buttons.
The recipe under the button (validated end-to-end against the live API): cover an uploaded source with customMode, a bracketed form in the lyrics field, and a style prompt with production-grade descriptors. Dials: style 85% / weirdness 15% / audio 25%. The source's key and skeleton survive; the skin changes.
02 — The 4-layer discipline
Every game-score style preset names four separable layers, each in its own spectral lane — so a stem split of the result yields usable interactive layers, not mud:
Five presets ship in the palette: Exploration · Stealth/Tension · Light Combat · Heavy Combat · Cinematic Suite — an intensity ladder (light and heavy combat are the same recipe at 120 vs 140 BPM with deliberate headroom between them). Each carries its own bracketed form that stages layers in and out, which doubles as a source of clean solo/duo passages.
03 — Suite fan-out
One click per source file: 5 category covers × 2 takes, plus a transitions bucket —
a ~15-second intro swell and ending swell per category. 15 generations, ~30 assets, ≈15 minutes,
organized on disk as Covers/<name>_SUITE/{,transitions/}. The source uploads
once and is reused across all fifteen tasks.
04 — Findings
Short forms do not shorten covers. A form reading
[Swell — …, 15 seconds total][End] still returned 4:11 and 3:12 takes — the model
front-loads the gesture, then keeps composing. Transitions therefore require a post-trim:
intro = first 18s with 3s fade-out, ending = last 18s with 3s fade-in. Budget every transition
as a full-length generation.
Loop points are detectable when the form stages them. Because the presets
open texture-only by design, the downbeat where the full bed locks in shows up as a sustained
RMS step. Detection: 50ms envelope → threshold at 80% of the whole-track median
(never the peak — late climaxes break it) → snap to the sharpest onset → accept only 4–60s.
The intro asset is [0 → loopPoint] plus a 3s tail-out; the engine loop starts on
that same downbeat. Measured: take A cut cleanly at 6.6s; take B produced no confident point
and was correctly declined rather than mis-cut.
05 — Listen — COMBAT DEMO SET · KNOCKOUT_V5 (CHILLWAVE, C MINOR, 120) RESKINNED
This demo set was produced through the manual account workflow (the "slow way") end-to-end, then post-processed by the same trim and loop-point tooling as the API path — deliberate parity check between the two routes.
06 — Where this went: shipped
This is now a ScoreCanvas feature. Cover / Reskin is live at scorecanvas.io — the full chain from this note: cover → split stems → four interactive layers, per category, per cue, with the five-preset game palette (locked to a shared 80 BPM grid so any cue crossfades onto any other — intensity comes from density and orchestration, never tempo). The middleware gained a dedicated cover contract; the presets, detection recipe, and failure modes documented here rode along intact.
| Asset | Per suite | Ready for |
|---|---|---|
| Category covers (5 × 2 takes) | 10 | stem split → interactive layers |
| Loop-ready intros (+ loop-point sidecar) | up to 10 | intro → loop handoff |
| Transition swells (in/out per category) | 10 (+10 full takes) | segue stingers |