Nodes/H3 Continuum Plus/Continuum Timeline Sampler
ComfyUI Node

Continuum Timeline Sampler

The V3.4 engine, driven by a timeline instead of a prompt box

By xmarre·Created 3 months ago·Updated 7 days ago· 8
Continuum Timeline Sampler
  • 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
◄job_index0►
◄base_seed0►
◄continuityStrong — 39 frames►
◄continuation_methodNative Masked — exact continuation (Recommended)►
◄regenerate_from0►
◄reroll_nonce0►
◄emit_refine_statefalse►
◄audio_continuitytrue►
◄diagnosticsBasic►
◄debugfalse►
◄show_previewtrue►
◄run_storageSave + Auto Resume►
◄run_name►
◄reference_sizeMatch Output►
◄project_id►
◄video_reference_sizeEfficient - 0.4 MP►
◄strict_compatibilitytrue►
◄managed_prompt_source_json►
◄conditioning_lookaheadtrue►
◄sequence_prompt—►
◄prompt_modeAuto►
◄width1344►
◄height768►

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 frames for 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 to Save + 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.

CategoryMiniMax H3/Continuum/Timeline Studio

Inputs (42)

NameTypeDefaultDescription
timelineH3_CONTINUUM_TIMELINE_PROJECT—
modelMODEL—
clipCLIP—
video_vaeVAE—
audio_vaeVAE—
samplerSAMPLER—
sigmasSIGMAS—
job_indexINT0—
base_seedINT00–18446744073709550000Base seed used to derive deterministic per-chunk seeds.
continuityCOMBOStrong — 39 framesProtected 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_methodCOMBONative 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_fromINT00–160 = Auto. Otherwise reuse the compatible prefix before this one-based chunk of the selected job and regenerate its suffix.
reroll_nonceINT00–4294967295Change only when regenerating an explicit chunk and you want a new variation with otherwise identical settings.
emit_refine_stateBOOLEANfalse—
audio_continuityBOOLEANtrueOn passes prior audio context into continuation chunks. Turn it off only to isolate or replace generated audio.
diagnosticsCOMBOBasic3 options: Basic, Detailed Report, Off
debugBOOLEANfalse—
show_previewBOOLEANtrue—
run_storageCOMBOSave + Auto ResumeAtomically save raw AV chunks and resume a compatible saved run.
run_nameSTRINGEnter a stable name for this saved run. Compatible chunks are selected automatically.
reference_sizeCOMBOMatch OutputMatch Output is the practical default; Max Identity preserves more reference detail.
project_idSTRINGOptional. Leave blank to derive a stable ID from this sampler node. Run Name remains the explicit override.
video_reference_sizeCOMBOEfficient - 0.4 MPEfficient 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_compatibilityBOOLEANtrue—
first_frameoptIMAGEOptional. Leave all image inputs disconnected for T2VA.
last_frameoptIMAGE—
reference_image_1optIMAGE—
reference_image_2optIMAGE—
reference_image_3optIMAGE—
managed_prompt_source_jsonoptSTRINGRequest-local State Manager prompt provenance. Leave empty for ordinary STRING workflows.
conditioning_lookaheadoptBOOLEANtrueEncode the next eligible fixed-geometry chunk while Qwen is resident. Disable for matched hot-run performance comparisons.
reference_image_4optIMAGE—
reference_image_5optIMAGE—
reference_image_6optIMAGE—
reference_image_7optIMAGE—
reference_image_8optIMAGE—
reference_video_1optIMAGEOptional persistent video reference. Connect an IMAGE frame batch; frames are interpreted at 24 fps and applied to every chunk.
driving_audiooptAUDIOOptional original audio timeline. It is used as native H3 guide conditioning and selected unchanged for final output.
sequence_promptoptSTRINGOptional native prompt source. When connected, replaces Studio's prompt script for the full project; prompt clips still belong to Studio when disconnected.
prompt_modeoptCOMBOAutoAuto accepts Fixed, list-separated, and timeline prompt styles.
widthoptINT134432–16384Output width. Use a multiple of 32.
heightoptINT76832–16384Output height. Use a multiple of 32.

Outputs (7)

NameTypeDescription
video_latentsLATENT—
audio_latentsLATENT—
assembly_planH3_CONTINUUM_ASSEMBLY_PLAN—
takeH3_CONTINUUM_TIMELINE_TAKE—
statusSTRING—
refine_stateH3_CONTINUUM_REFINE_STATE—
driving_audioAUDIO—