Continuum Timeline Sampler
The V3.4 engine, driven by a timeline instead of a prompt box
- timeline
- model
- clip
- video_vae
- audio_vae
- sampler
- sigmas
- first_frame
- last_frame
- reference_image_1
- reference_image_2
- reference_image_3
- reference_image_4
- reference_image_5
- reference_image_6
- reference_image_7
- reference_image_8
- reference_video_1
- driving_audio
- video_latents
- audio_latents
- assembly_plan
- take
- status
- refine_state
- driving_audio
MiniMax H3 generates four to fifteen seconds at 24 fps with native synced audio - genuinely one model doing picture and sound together, which is why the chunky-seam problem hurts so much. Long-form work means chunking, and chunking means somebody has to hold the continuation state, the per-chunk prompts and the audio clock together. In the Continuum pack that somebody is a sampler.
Continuum Timeline Sampler is the timeline-driven sibling of the pack's standalone V3.4 sampler. Mechanically it borrows that node's widget schema wholesale - same seeds, same continuity options, same Run Storage - and adds a required timeline socket in front. The project supplies the render selection, the chunk timing and the scoped prompts; this node does the sampling.
How it works
The Studio node compiles your project into windows on a fixed chunk grid, then this sampler walks them: chunk 1 from scratch, chunk 2+ carrying the previous chunk's state forward. With the default Native Masked - exact continuation, the previous accepted H3 video latent tail is copied straight into the start of the next target latent, and Core's H3 denoise-mask marks the copied prefix 0 = preserve, the new region 1 = generate. If generated audio continuity is on and there's no Driving Audio, the aligned audio latent tail comes along too.
That's why the numbers look weird: at 24 fps video and 40 Hz H3 audio, the exact generated-AV boundary is 39 video frames = 65 audio latent steps. Choose 5 or 22 frames with generated audio continuity and it fails rather than silently shifting your audio timing. Guide / Motion Context is the softer path - the previous chunk stays H3 guide context, never a frozen prefix - and that one does support 5 and 22.
video_latents and audio_latents are lists - one entry per physical chunk - so they go through Core VAE Decode / Decode Audio and land as per-chunk batches that the assembler reads via assembly_plan.
The inputs you'll actually set
Required: timeline, model, clip, video_vae, audio_vae, sampler, sigmas, job_index, base_seed, continuity, continuation_method, regenerate_from, reroll_nonce, emit_refine_state.
Start with these four:
width/height(optional sockets, multiple of 32). Leave them unlinked and Studio's canvas decides; connect them and the connected value wins, resolved at execution.continuity-Strong - 39 framesfor any run with generated audio continuity. The tooltip is blunt about it.continuation_method- Native Masked unless you're doing a shot change, in which case Guide.run_storage+run_name- defaults toSave + Auto Resume. Give the run a stable name and completed chunks survive a ComfyUI restart.
Then the retry controls: regenerate_from (0 = Auto, otherwise the one-based chunk to regenerate, reusing the compatible prefix) and reroll_nonce (change it only for a fresh variation of an explicitly regenerated chunk). Implementation detail worth knowing: with regenerate_from > 0 the node's cache key returns NaN - deliberately always-dirty, so it re-executes every queue. Standard ComfyUI rerun trick; also means a stale value here makes everything downstream feel slow.
Optional inputs do the referencing: first_frame, last_frame, reference_image_1..8, reference_video_1 (a frame batch read at 24 fps and applied to every chunk), driving_audio (guides H3 and is selected unchanged for final output), sequence_prompt (when connected, replaces Studio's prompt script for the whole project), prompt_mode, and managed_prompt_source_json for State Manager provenance. Persistent references precede scoped pictures; a scoped video guide replaces reference_video_1 only inside its own windows.
Outputs: video_latents, audio_latents, assembly_plan, take, status, refine_state, driving_audio.
take is the important one for the review workflow - it's the typed record you feed to Continuum Timeline Save Take. job_index matters when Studio splits a long selection into ordered jobs (over 16 chunks gets chunked into multiple submissions); one sampler execution per job.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/xmarre/ComfyUI-H3-Continuum-Plus.git ComfyUI-H3-Continuum
Restart. Manager: search H3 Continuum. You need the H3 model, CLIP, video VAE and audio VAE - the pack ships no weights. requirements.txt is just av>=17.0.0 (PyAV, same minimum as current ComfyUI Core); Studio's media paths also want ffmpeg/ffprobe on PATH. Don't run this alongside upstream ukr8b3g-cmyk/ComfyUI-H3-Continuum.
Common issues
"Core H3 mask API" error. Native Masked capability-detects against Core's MiniMax H3 per-token denoise mask (PR #15375). An older ComfyUI core gets an actionable compatibility error instead of a broken render. Update ComfyUI, or switch to Guide.
5/22 frames rejected. You have generated audio continuity on - either use 39 frames or turn it off.
Changing a chunk 2 setting re-runs everything. Changing persistent models, LoRAs, references, resolution or sampling creates a new contract, and incompatible chunk 2+ state isn't silently reused. Chunk 1 survives method changes; the rest doesn't. That's a correctness feature that costs you time.
Video reference temporal drift. Frames are interpreted at 24 fps; a 25 fps source isn't converted for you. Set force_rate = 24 on the loader or convert the file - decoding and frame rate stay the loader's job.
Inputs (42)
| Name | Type | Default | Description |
|---|---|---|---|
| timeline | H3_CONTINUUM_TIMELINE_PROJECT | — | |
| model | MODEL | — | |
| clip | CLIP | — | |
| video_vae | VAE | — | |
| audio_vae | VAE | — | |
| sampler | SAMPLER | — | |
| sigmas | SIGMAS | — | |
| job_index | INT | 0 | — |
| base_seed | INT | 00–18446744073709550000 | Base seed used to derive deterministic per-chunk seeds. |
| continuity | COMBO | Strong — 39 frames | Protected previous-chunk context. Native Masked generated-audio continuation requires the exact 39-frame AV boundary; video-only continuation and Guide / Motion Context also support 5 or 22 frames. |
| continuation_method | COMBO | Native Masked — exact continuation (Recommended) | Native Masked preserves the previous generated H3 latent directly inside the next target and is recommended for exact same-shot continuation. Guide / Motion Context keeps the previous clip as softer H3 guide context. |
| regenerate_from | INT | 00–16 | 0 = Auto. Otherwise reuse the compatible prefix before this one-based chunk of the selected job and regenerate its suffix. |
| reroll_nonce | INT | 00–4294967295 | Change only when regenerating an explicit chunk and you want a new variation with otherwise identical settings. |
| emit_refine_state | BOOLEAN | false | — |
| audio_continuity | BOOLEAN | true | On passes prior audio context into continuation chunks. Turn it off only to isolate or replace generated audio. |
| diagnostics | COMBO | Basic | 3 options: Basic, Detailed Report, Off |
| debug | BOOLEAN | false | — |
| show_preview | BOOLEAN | true | — |
| run_storage | COMBO | Save + Auto Resume | Atomically save raw AV chunks and resume a compatible saved run. |
| run_name | STRING | Enter a stable name for this saved run. Compatible chunks are selected automatically. | |
| reference_size | COMBO | Match Output | Match Output is the practical default; Max Identity preserves more reference detail. |
| project_id | STRING | Optional. Leave blank to derive a stable ID from this sampler node. Run Name remains the explicit override. | |
| video_reference_size | COMBO | Efficient - 0.4 MP | Efficient limits Video Reference to about 0.4 MP; Balanced uses about 0.6 MP; Match Output uses the output pixel area. Source aspect ratio is preserved and smaller sources are not enlarged. |
| strict_compatibility | BOOLEAN | true | — |
| first_frameopt | IMAGE | Optional. Leave all image inputs disconnected for T2VA. | |
| last_frameopt | IMAGE | — | |
| reference_image_1opt | IMAGE | — | |
| reference_image_2opt | IMAGE | — | |
| reference_image_3opt | IMAGE | — | |
| managed_prompt_source_jsonopt | STRING | Request-local State Manager prompt provenance. Leave empty for ordinary STRING workflows. | |
| conditioning_lookaheadopt | BOOLEAN | true | Encode the next eligible fixed-geometry chunk while Qwen is resident. Disable for matched hot-run performance comparisons. |
| reference_image_4opt | IMAGE | — | |
| reference_image_5opt | IMAGE | — | |
| reference_image_6opt | IMAGE | — | |
| reference_image_7opt | IMAGE | — | |
| reference_image_8opt | IMAGE | — | |
| reference_video_1opt | IMAGE | Optional persistent video reference. Connect an IMAGE frame batch; frames are interpreted at 24 fps and applied to every chunk. | |
| driving_audioopt | AUDIO | Optional original audio timeline. It is used as native H3 guide conditioning and selected unchanged for final output. | |
| sequence_promptopt | STRING | Optional native prompt source. When connected, replaces Studio's prompt script for the full project; prompt clips still belong to Studio when disconnected. | |
| prompt_modeopt | COMBO | Auto | Auto accepts Fixed, list-separated, and timeline prompt styles. |
| widthopt | INT | 134432–16384 | Output width. Use a multiple of 32. |
| heightopt | INT | 76832–16384 | Output height. Use a multiple of 32. |
Outputs (7)
| Name | Type | Description |
|---|---|---|
| video_latents | LATENT | — |
| audio_latents | LATENT | — |
| assembly_plan | H3_CONTINUUM_ASSEMBLY_PLAN | — |
| take | H3_CONTINUUM_TIMELINE_TAKE | — |
| status | STRING | — |
| refine_state | H3_CONTINUUM_REFINE_STATE | — |
| driving_audio | AUDIO | — |