JAM

musical accuracy research · MiniMax H3 via fal saved connecting…

API no key

Every generation runs on Comfy Cloud since 2026-09-07 — the seam test, and next the stitch and the batch. Stored on this machine in server/config.json (mode 600) and sent only to cloud.comfy.org. Never returned to this page. From platform.comfy.org; the API needs a paid tier.
Older backends (fal, RunComfy) — kept for the archived runs, no longer used by any button

Inputs

Drop a video or browse
Drop a video or browse
Drop a video or browse
All three are the same performance exported differently. Conditions C, F and H compare them head to head.
Drop an image or browse
Drop audio or browse
beats.json, guitar_tab_v2.json, lyrics.json, lyrics_sentiment.json

Generation

This is an instruction about the thing being measured. It appears in every condition including the floor — otherwise the ablation measures the wording, not the inputs.
H3 synthesises its own soundtrack unless told not to — the character then lip-syncs to invented vocals and the output can't be judged against the real track.
The part that carried you from basic to medium. Worth sweeping on its own later — but hold it constant within a burst.

The burst

stylemusic videoJSONwhat it answers
The grid says what ran; this says what it was for. Edit it — the wording is yours.
A new batch every time. Nothing already generated is reused or overwritten.
Press Preview to see the exact prompt each condition will send. Nothing goes out.

Run idle

Conditions run in sequence; each generation is one row.
No burst yet.

Rows

condseedstatuslatency costtimelineshotsaudiooutputrequest

References C

One combination, carried the whole length of the clip — so the finished piece is one configuration rather than a mixture. Pick the row that won on the Batch page.
stylemusic videoJSONwhat it carries

The chain

This is the join problem, not a preference. H3's reference-to-video has no keyframe field — the previous chunk's last frame goes in reference_image_urls as another <Picture N> and never anchors frame 0. Measured: the first frame of chunk 2 differed from the last frame of chunk 1 by 27× the ordinary frame-to-frame change, and had not converged 24 frames later. Those were separate takes, not a drifting chain — which is why no crossfade fixes it.

LTX-2.3 takes both on one call: audio_url ("the audio track that drives generation") and image_url ("an image to use as the first frame"). The cost: it has no separate style reference, so image_url is the opening frame — the look is set by chunk 0 and propagates down the chain rather than being re-asserted each time. Whether it survives nine chunks is the thing to measure. Run 3 chunks first.
The chunks, one row each
#song timebarrequest trim toanchor
The exact prompt each chunk sends
Press Plan.

Seam test Comfy Cloud

N clips chained in latent space on Comfy Cloud, one job. Each clip's last 22 frames ride into the next as protected latent — no decode, no re-encode — and every clip is anchored to its slice of the song at frame 0. Measured 2026-09-07: the overlapped frames match at SSIM 0.951 (ordinary neighbouring frames: 0.935), audio locked at r = 0.985 on every clip, join judged perfect by eye. Core nodes only: nothing to install, nothing to deploy.
Condition sets what goes in: A is style frame + song; B/C/D add the render, pose or depth window as <Video 1>. The assembly (final.mp4) drops each clip's first 22 frames, lays the original song over the picture, and lands on the Review tab.
Three clips per job at most on the Standard/Creator tier: any job over 30 minutes is cancelled, and two 8s clips took ~9 minutes. Carrying the latent across jobs for a full song is the next build. Sizes are multiples of 32 because the core H3 nodes require it.
Fetch last result downloads a job that finished but whose download or assembly failed. It bills nothing: the sampling is already paid for and Comfy Cloud still holds the files. Use it before re-running anything that reached success.

Prompt shared with Batch

The same blocks as the Batch page — literally the same fields, not a copy. Editing them here changes them there, and every chunk of the chain sends them. Chunk 0's prompt is byte-identical to what Batch would send for the same row and length; later chunks add only the handover.

Chain run idle

No chain yet.
RUNS
Sorted newest first. A run with no video never finished — open Stitch to see why.