Nodes/ComfyUI_Eclipse/MiniMax H3 Audio Timeline Planner V2
ComfyUI Node

MiniMax H3 Audio Timeline Planner V2

H3 Won't Render a 90-Second Take in One Pass — This Node Splits It Without Losing Sync

By r-vage·Created 11 months ago·Updated about 19 hours ago· 35
MiniMax H3 Audio Timeline Planner V2
  • audio
  • image_batch
  • audio_encoder_output
  • conditioning_audio
  • plan
  • extension_task_count
  • total_frames
  • base_keep_frames
  • analysis_manifest
  • report
conditioning_familyfl2va_keyframes
segment_strategywarmup_reset
warmup_seconds2.0000
reset_anchorfirst_only
technical_split_sourceoriginal_image_reset
ref_image_sizematch
manual_transition_times
max_render_frames362
align_to_activity_gaptrue
transition_edgeactivity_resume
search_window_seconds5.00
min_gap_duration0.25
resume_hold_duration0.15
technical_seam_styleplain_reset
technical_cut_instructionDuring the hidden lead-in, rapidly orbit to a strong left-side three-quarter camera angle and dolly far backward. At the cut, hold a waist-up medium-wide shot, visibly different from the prior frontal close-up. Preserve identity, wardrobe, scene, lighting, and ongoing action; do not show a frontal close-up.

MiniMax H3 tops out at 362 frames per render - 15 seconds at 24 fps, and only on a fixed grid of 17k+5 frame counts (124, 141, 158 … 362, nothing in between). So the moment you want a clip that runs the length of an actual song or a two-minute dialogue take, you're not making a video, you're making a run of short H3 tasks and stitching them. The hard part isn't sampling. It's bookkeeping: which frames belong to which image, which prompt owns which second, and where every audio slice has to start so the final mux still lines up.

That's the job of the MiniMax H3 Audio Timeline Planner V2.

Where it sits in the workflow

H3 is MiniMax's 33B omni-modal video model - the one that generates stereo audio with the picture instead of bolting a sound pass on afterwards, with day-zero ComfyUI support. It's also ~42.5 GB of weights, and geofenced out of the US, EU, UK and South Korea. ComfyUI's own H3 nodes do the sampling; this pack handles everything around the sampling.

Eclipse ships three V2 nodes, and this is the entry point: Planner V2 → Plan Step V2 → Segmented Conditioning V2. The pack also still ships three legacy H3 nodes that build a version-4 plan - a separate workflow, not a superset, and the plan types don't interchange.

How it works

The master audio is the clock. Duration × 24 fps gives the exact retained frame count, and the planner carves that timeline into H3-legal tasks, balancing longer spans across the minimum number of tasks. Each entry in image_batch is a timeline state: image 0 owns frame 0, and a transition frame T always belongs to the destination interval, which is the detail that stops your cuts from drifting a frame early.

How a task gets started is the real decision. warmup_reset (the default) renders the destination image before the transition and throws away the generated lead-in, so the frame the viewer sees at T was generated rather than pasted - no reference flash. hard_cut retains the exact destination image at T and expects one deliberate A-to-B jump. first_last_bridge hands the outgoing task an ordered A/B pair and keeps B's exact image hidden at the seam.

Connect Wav2Vec features and the planner nudges transitions into low-activity gaps instead of cutting through the middle of a word.

The inputs you actually touch

  • audio - the untouched master. It defines duration and the final mux timing. Everything else follows it.
  • image_batch - your timeline images, in order.
  • segment_strategy + warmup_seconds - leave the defaults (warm reset, 2.0s) until you have a reason.
  • conditioning_family - fl2va_keyframes or ref2va_active_reference. This one has to match the checkpoint you loaded; Ref2VA needs Ref2VA weights.
  • max_render_frames - 362 by default. Hidden warmup eats into it: two seconds of warmup leaves roughly 314 visible frames in a max-length task.
  • manual_transition_times - comma-separated seconds, one per image after the first. Blank means even spacing, which is usually fine.

The rest - search_window_seconds, min_gap_duration, resume_hold_duration, transition_edge, align_to_activity_gap, technical_split_source, technical_seam_style, reset_anchor, ref_image_size - are second-pass tuning. optional audio_encoder_output and optional conditioning_audio (a vocal stem, same duration as the master within one frame) are both genuinely optional.

Outputs

plan goes to Plan Step V2. extension_task_count tells your loop how many extra tasks to run, total_frames is what you trim the stitched result to, and base_keep_frames is what task 0 contributes. analysis_manifest is tensor-free JSON of transitions, retained ranges and prompt owners; report is the human-readable version. Read the report once - it tells you how the split actually landed.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/r-vage/ComfyUI_Eclipse
pip install -r ComfyUI_Eclipse/requirements.txt   # only if something is actually missing

ComfyUI Manager works too - search the pack title, "ComfyUI Eclipse". Dependencies are all ordinary; no exotic video stack. Restart ComfyUI afterwards. Eclipse also unpacks its prompt/style/wildcard defaults into its own repo folder on startup - normal, and unrelated to these nodes.

Where people get burned

The errors here are mostly consistency errors, and they're telling you something real:

  • "conditioning_audio duration must match the master audio within one 24 FPS frame" - 42 ms of drift is enough. Trim or pad the stem.
  • "warmup_seconds leaves no room in max_render_frames" - 10 s of warmup against a short render budget leaves nothing visible.
  • "technical_cut_instruction must not be blank" - if you switch technical_seam_style to intentional_camera_cut, the default instruction has to stay populated; it's the text that asks H3 for a deliberate angle change.
  • "Ref2VA does not support positional reset endpoints", plus the mixed-keyframe rejection - Ref2VA can't do hard cuts or bridges. That's H3's constraint, not the node being fussy.

Also worth knowing: the pack's README points at tools/analyze-minimax-h3-segmented-timeline-v2.py for transition QA, and as of 4.3.41 that script isn't in the repo. Don't plan an evening around it.

Category🌒 Eclipse/ Video

Inputs (19)

NameTypeDefaultDescription
audioAUDIOUntouched master audio. Its exact sample duration defines the retained 24 FPS video timeline and final mux.
image_batchIMAGEOriginal user images in timeline order. Image 0 owns frame 0; transition frame T belongs to its destination.
conditioning_familyCOMBOfl2va_keyframesfl2va_keyframes supplies positional first/last images. ref2va_active_reference uses only the active non-positional Picture 1 and requires matching Ref2VA weights.
segment_strategyCOMBOwarmup_resethard_cut retains the exact FL2VA destination at T; first_last_bridge hides a destination endpoint at T and starts an independently warmed task there; warmup_reset discards source-conditioned lead-in frames.
warmup_secondsFLOAT2.00000–10Generated lead-in discarded before warm-reset output. Its audio is the real preceding master-audio range, with silence padding only outside the master timeline.
reset_anchorCOMBOfirst_onlyfirst_only is the default reset. The experimental option adds a discarded same-source last endpoint only when no real bridge destination exists. FL2VA only.
technical_split_sourceCOMBOoriginal_image_resetLong-interval technical tasks reset from the active original by default. generated_continuation uses the last 22 generated frames and is available only for FL2VA.
ref_image_sizeCOMBOmatchRef2VA only. match limits the active reference toward the generation pixel area; max permits a 2048-pixel short edge, never upscaling either mode.
manual_transition_timesSTRINGComma-separated seconds, one per image after the first. Leave blank for even distribution.
max_render_framesINT362124–362Maximum legal H3 render on the 17k+5 grid. Hidden warmup and endpoints consume capacity; two seconds leaves about 314 visible frames in a 362-frame task.
align_to_activity_gapBOOLEANtrueAlign image transitions, and eligible single-image technical seams, to gaps derived from optional Wav2Vec features. Falls back deterministically when unavailable.
transition_edgeCOMBOactivity_resumeChoose the sustained activity return or the beginning of the detected low-activity interval.
search_window_secondsFLOAT5.000–10Search radius before and after every multi-image target.
min_gap_durationFLOAT0.250.02–5Minimum low-activity duration accepted as a gap.
resume_hold_durationFLOAT0.150.02–5Minimum sustained activity after a gap when using activity_resume.
technical_seam_styleCOMBOplain_resetplain_reset keeps independent original-image regeneration. intentional_camera_cut adds the editable cut instruction only to same-image technical reset tasks.
technical_cut_instructionSTRINGDuring the hidden lead-in, rapidly orbit to a strong left-side three-quarter camera angle and dolly far backward. At the cut, hold a waist-up medium-wide shot, visibly different from the prior frontal close-up. Preserve identity, wardrobe, scene, lighting, and ongoing action; do not show a frontal close-up.Prompt text appended only at intentional same-image technical reset tasks. Identity, scene, and action continuity remain user-directed and generative.
audio_encoder_outputoptAUDIO_ENCODER_OUTPUTOptional Wav2Vec features used only for activity-gap placement; they never replace either audio stream.
conditioning_audiooptAUDIOOptional native-rate H3 guide audio, such as a vocal stem. Duration must match the master within one frame. The master is used when disconnected.

Outputs (6)

NameTypeDescription
planMINIMAX_H3_SEGMENT_PLANStrict schema-version-1 MINIMAX_H3_SEGMENT_PLAN for the V2 Plan Step.
extension_task_countINTNumber of tasks after task 0 for the stitch loop.
total_framesINTExact retained frame count derived from master audio.
base_keep_framesINTFrames retained from the first generated task.
analysis_manifestSTRINGJSON without tensors: transitions, seams, retained ranges, prompt owners, guide positions, and expected source ownership for the transition analyzer.
reportSTRINGReadable planning, ownership, audio, and task summary.