Nodes/IAMCCS-nodes/IAMCCS Woosh Foley Chunk Planner
ComfyUI Node

IAMCCS Woosh Foley Chunk Planner

Chunk your foley pass so a long clip doesn't explode mid-run

By IAMCCS·Created 11 months ago·Updated 8 days ago· 113
IAMCCS Woosh Foley Chunk Planner
  • cine_linx
  • cine_linx
  • chunk_ranges_json
  • chunk_count
  • global_foley_prompt
  • report
fps24.00
max_duration_s25.0
chunk_seconds8.0
overlap_seconds1.0
seed801
prompt_stylecinematic foley, realistic movement, room tone, environmental ambience, object impacts
visual_summary

Long video workflows have a dirty secret: you can't generate one continuous foley pass for a 25-second clip and expect it to hold together. Memory climbs, temporal consistency drifts, and by frame 400 your "room tone" sounds like a jet engine. The Woosh Foley Chunk Planner exists to never let that happen - it takes your timeline, chops it into overlapping chunks, and hands you a plan (plus per-chunk seeds) that the rest of the IAMCCS audio chain can actually chew on.

This is a planning node, not an audio generator. It reads the timing out of the cine_linx it's handed, and writes a chunk schedule back into that same linx. If you're used to the pack's Shotboard/planner pattern, this is the same idea applied to sound: decide where the cuts are before you generate anything.

How it works

You feed it a cine_linx (the IAMCCS SuperNode data bundle that travels through these graphs) plus a handful of knobs: fps, max_duration_s, chunk_seconds, overlap_seconds, and a seed. The node reads the timeline duration from the linx, then walks it forward in steps of chunk_seconds - overlap_seconds, producing ranges like:

{"index": 0, "start_s": 0.0, "end_s": 8.0, "start_frame": 0, "end_frame": 192, "seed": 801}

Each chunk gets its own seed derived from your base seed + index, so a chunk that fails mid-run can be regenerated in isolation and still match. The overlapping windows give the downstream audio/video nodes continuity at the seams - that's what keeps a "whoosh" from clicking where two chunks meet.

The inputs that matter

  • cine_linx - where the duration comes from. Connect whatever IAMCCS planner/shotboard produced your timeline.
  • chunk_seconds and overlap_seconds - the two you'll actually tune. Defaults of 8s / 1s are a sane starting point; drop chunk size if you're on a tight VRAM budget.
  • seed - set it once and keep it if you want reproducible chunk plans.
  • prompt_style - the base foley prompt every chunk inherits; the optional visual_summary gets appended to it as context.

Outputs: an updated cine_linx (with cine_woosh_foley_chunks_json and the prompt stored in its resources), plus chunk_ranges_json, chunk_count, global_foley_prompt, and a report for your own eyes. The chunk_ranges_json is the one to wire into whichever IAMCCS audio node does the actual generation.

Install

The whole pack installs as one unit - there's no separate download for this node.

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

Restart ComfyUI, or just search "IAMCCS" in ComfyUI Manager and install it there. No extra Python packages are needed for this node; the pack's requirements are the ComfyUI baseline (recent build, Python 3.12+, Torch 2.8+).

Gotchas

This node is pure metadata - if you run it alone it does nothing visible. It only earns its keep inside an IAMCCS cine/audio graph where a real cine_linx exists upstream. And note the author is a solo dev shipping fast (the pack has been iterating through 1.x versions for a while now), so if a chunk count looks off, check that your upstream planner actually wrote the duration into the linx before you blame the chunks.

CategoryIAMCCS/Cine/Audio

Inputs (8)

NameTypeDefaultDescription
cine_linxIAMCCS_SUPERNODE_LINX
fpsFLOAT24.001–120
max_duration_sFLOAT25.00.1–120
chunk_secondsFLOAT8.01–8
overlap_secondsFLOAT1.00–4
seedINT8010–2147483647
prompt_styleSTRINGcinematic foley, realistic movement, room tone, environmental ambience, object impacts
visual_summaryoptSTRING

Outputs (5)

NameTypeDescription
cine_linxIAMCCS_SUPERNODE_LINX
chunk_ranges_jsonSTRING
chunk_countINT
global_foley_promptSTRING
reportSTRING