Nodes/IAMCCS-nodes/IAMCCS_Ltx2HelperModules Planner
ComfyUI Node

IAMCCS_Ltx2HelperModules Planner

The planner that ends LTX-2 segment-math headaches

By IAMCCS·Created 11 months ago·Updated 8 days ago· 113
IAMCCS_Ltx2HelperModules Planner
  • audio
  • upstream_contract
  • linx
  • planner_payload
  • contract
  • linx
  • segment_count
  • continuation_loops
  • current_segment_start_frames
  • current_segment_unique_frames
  • current_source_end
  • report
  • total_frames
  • unique_segment_frames
  • first_segment_raw_frames
  • continuation_raw_frames
  • fps_out
goal1_presetcustom
fps24.00
segment_seconds10.00
target_duration_seconds30.00
duration_sourcetarget_duration_seconds
planning_modeauto_profile
content_profilevideoclip
overlap_frames9
ltx_round_modeup
segment_index0
surface_profilecompact
backend_bindingltx_audio_guided_lowram

Anyone who's built a long LTX-2 workflow by hand knows the pain: frame math everywhere, VAE logic split across half the graph, and one wrong value breaks everything three segments later. That's the author's own framing, and it's accurate. Ltx2HelperModules Planner is the node that makes it stop - it computes the entire segment plan for an audio+image→video project in one place, then hands a single JSON planner_payload to the other helper modules so they all agree on the numbers without you doing arithmetic in your head.

This is the head of the "au_img2vid" (audio + image → video) SuperNode-style pipeline. It doesn't generate anything - it plans. Everything downstream (AudioTimeline, KeyframeTimeline, Continuity, Finalize…) reads its payload, which is why in a helper-module graph this node's STRING output is the trunk everything branches from.

How it works

Give it a target duration, FPS, and segment length, and it computes total frames, segment count, per-segment start/end frames, and the source range for the current segment - all rounded to LTX-legal values (ltx_round_mode applies the 8n+1 rule on top of the raw math). Key behaviors:

  • duration_source - where the "how long is this project" answer comes from: target_duration_seconds, the length of your audio clip, or max_audio_target (whichever is longer). For audio-driven pieces, feeding the audio in and picking audio is the reliable way to keep video and audio lengths aligned.
  • goal1_preset - presets that set sane defaults for the whole chain: lowram_safe_videoclip, lowram_fast_videoclip, normal_quality_videoclip, lowram_monologue, or custom. These drive planning_mode, content_profile, overlap, and backend_binding - pick one that matches your hardware and let it do the thinking.
  • segment_index - which segment you're currently planning. The node returns the current segment's numbers (current_segment_start_frames, current_segment_unique_frames, current_source_end) plus project-wide totals. In a loop, you increment this each pass.
  • planning_mode - manual_segment_seconds (you set the segment length) or auto_profile (the preset picks lengths).

The inputs and outputs that matter

The widgets you actually set: fps (24), target_duration_seconds, segment_seconds, segment_index, and maybe duration_source + goal1_preset. The rest ride the presets.

Outputs: planner_payload (STRING JSON - the handshake object), contract and linx (the pack's supernode plumbing for chaining wrappers), then convenience values: segment_count, continuation_loops, current_segment_start_frames, current_segment_unique_frames, current_source_end, total_frames, unique_segment_frames, first_segment_raw_frames, continuation_raw_frames, fps_out, plus report. The INT outputs let you wire numbers into your sampler's length without parsing JSON - that's why there are so many.

Installing it

This node lives in IAMCCS-nodes under IAMCCS/Ltx2 Helper Modules. Install via Manager (search "IAMCCS") or:

cd ComfyUI/custom_nodes
git clone https://github.com/IAMCCS/IAMCCS-nodes.git

Restart ComfyUI. The planner itself has no heavy dependencies - but the full helper-module chain expects ComfyUI's native LTXV audio-video nodes and, for audio-driven planning, MTB's Audio Duration node.

Common issues

The most common stumble is feeding it audio but leaving duration_source on target_duration_seconds - you'll get video/audio mismatch further down the chain and won't know why. Pick the duration source deliberately. Second: the planner_payload is a plain STRING, so it's easy to accidentally wire into the wrong node - if a downstream module returns "missing planner fields," you've connected it somewhere that isn't expecting a payload. And remember segment_index counts from 0; off-by-one here produces a plan for the wrong segment, which shows up as garbage audio timing, not an error.

CategoryIAMCCS/Ltx2 Helper Modules

Inputs (15)

NameTypeDefaultDescription
goal1_presetCOMBOcustom5 options: custom, lowram_safe_videoclip, lowram_fast_videoclip, normal_quality_videoclip, lowram_monologue
fpsFLOAT24.000.001–240
segment_secondsFLOAT10.000.01–3600
target_duration_secondsFLOAT30.000.01–36000
duration_sourceCOMBOtarget_duration_seconds3 options: target_duration_seconds, audio, max_audio_target
planning_modeCOMBOauto_profile2 options: manual_segment_seconds, auto_profile
content_profileCOMBOvideoclip2 options: videoclip, monologue
overlap_framesINT90–4096
ltx_round_modeCOMBOup3 options: up, nearest, down
segment_indexINT00–100000
surface_profileCOMBOcompact3 options: compact, progressive, debug_surface
backend_bindingCOMBOltx_audio_guided_lowram3 options: ltx_audio_guided_lowram, ltx_audio_guided_normal, custom
audiooptAUDIO
upstream_contractoptIAMCCS_SUPERNODE_CONTRACT
linxoptIAMCCS_SUPERNODE_LINX

Outputs (14)

NameTypeDescription
planner_payloadSTRING
contractIAMCCS_SUPERNODE_CONTRACT
linxIAMCCS_SUPERNODE_LINX
segment_countINT
continuation_loopsINT
current_segment_start_framesINT
current_segment_unique_framesINT
current_source_endINT
reportSTRING
total_framesINT
unique_segment_framesINT
first_segment_raw_framesINT
continuation_raw_framesINT
fps_outFLOAT