Nodes/IAMCCS-nodes/IAMCCS Cine Shot Planner
ComfyUI Node

IAMCCS Cine Shot Planner

Decide where your reference frames land in time, not just what they show

By IAMCCS·Created 12 months ago·Updated 5 days ago· 117
IAMCCS Cine Shot Planner
  • audio
  • plan_json
  • total_frames
  • total_seconds
  • frame_1
  • frame_2
  • frame_3
  • frame_4
  • frame_5
  • frame_6
  • frame_7
  • frame_8
  • strength_1
  • strength_2
  • strength_3
  • strength_4
  • strength_5
  • strength_6
  • strength_7
  • strength_8
  • report
◄duration_sourcemanual►
◄duration_seconds8.00►
◄fps24.00►
◄total_frames_override0►
◄ltx_round_modeup►
◄presetshot_reverse_shot►
◄reference_count2►
◄position_moderatio►
◄positions0 0.30 0.58 -1►
◄strengths0.95 0.78 0.72 0.90►
◄min_spacing_frames8►

Here's the thing about reference-conditioned video generation: it's not just which reference frames you feed, it's when they land. Feed a reference at frame 10 and the model treats it as an anchor; feed it at frame 90 and it's more of a destination. Cine Shot Planner is the node that answers the "when" - it takes up to eight reference positions and strengths and computes exactly which frame each one fires at, plus the total duration math.

It's a planner in the strict sense: no conditioning in, no images in. You give it timing and it gives you numbers.

The inputs that matter:

  • duration_source - manual (default), audio, or max_manual_audio. If you feed an optional audio input, audio derives duration from the audio's length and max_manual_audio takes the longer of the two.
  • duration_seconds, fps (default 24), and total_frames_override - the timeline. The override, if nonzero, wins.
  • ltx_round_mode - up, nearest, down, or none. LTX wants frame counts rounded to 8n+1, and this is where you decide which way. (This is the earlier, simpler version of the up_8n_plus_1 modes on the newer planners.)
  • preset - shot_reverse_shot, room_coverage, two_reference_dialogue, beat_markers, or custom. Presets seed sensible reference timings for common dialogue scenes; custom lets you set everything by hand.
  • reference_count - how many references (1–8) your plan uses.
  • position_mode - ratio, seconds, or frames. How to interpret the positions list. With ratio (default) positions are 0–1 fractions of the timeline.
  • positions and strengths - multiline lists, one per line. The default (0 / 0.30 / 0.58 / -1) reads: reference at the start, at 30%, at 58%, and "-1" as a stop marker.
  • min_spacing_frames (default 8) - a floor on how close two references can be, so you don't stack them on the same frame.

The outputs. plan_json (the whole plan as JSON), total_frames, total_seconds, and then frame_1 through frame_8 with a matching strength_1 through strength_8 - the resolved frame numbers and strengths for each reference slot, ready to wire into whatever consumes timed references (the shotboard/FLF path, or a manual setup). report describes the plan.

Install. Same pack, same drill: ComfyUI Manager (search "IAMCCS"), or git clone https://github.com/IAMCCS/IAMCCS-nodes into custom_nodes, restart. ComfyUI ≥ 0.3.0, Python ≥ 3.12. The audio-duration modes need an audio input and ideally the pack's audio helper nodes; nothing else needs downloading.

Gotchas. The positions list format trips people up - with ratio mode, lines are fractions, not frame numbers, and -1 is the terminator, not a position. If your plan comes out with weird totals, check whether you meant seconds or frames mode. And this node only computes; it doesn't inject anything. It's upstream of the nodes that actually condition the sampler, so an unconnected plan_json is just a nice number printout.

CategoryIAMCCS/Cine/02 Single Generation

Inputs (12)

NameTypeDefaultDescription
duration_sourceCOMBOmanual3 options: manual, audio, max_manual_audio
duration_secondsFLOAT8.000.01–36000—
fpsFLOAT24.000.001–240—
total_frames_overrideINT00–10000000—
ltx_round_modeCOMBOup4 options: up, nearest, down, none
presetCOMBOshot_reverse_shot5 options: shot_reverse_shot, room_coverage, two_reference_dialogue, beat_markers, custom
reference_countINT21–8—
position_modeCOMBOratio3 options: ratio, seconds, frames
positionsSTRING0 0.30 0.58 -1—
strengthsSTRING0.95 0.78 0.72 0.90—
min_spacing_framesINT80–100000—
audiooptAUDIO—

Outputs (20)

NameTypeDescription
plan_jsonSTRING—
total_framesINT—
total_secondsFLOAT—
frame_1INT—
frame_2INT—
frame_3INT—
frame_4INT—
frame_5INT—
frame_6INT—
frame_7INT—
frame_8INT—
strength_1FLOAT—
strength_2FLOAT—
strength_3FLOAT—
strength_4FLOAT—
strength_5FLOAT—
strength_6FLOAT—
strength_7FLOAT—
strength_8FLOAT—
reportSTRING—