IAMCCS Woosh Foley Chunk Planner
Chunk your foley pass so a long clip doesn't explode mid-run
- cine_linx
- cine_linx
- chunk_ranges_json
- chunk_count
- global_foley_prompt
- report
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_secondsandoverlap_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 optionalvisual_summarygets 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.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| cine_linx | IAMCCS_SUPERNODE_LINX | — | |
| fps | FLOAT | 24.001–120 | — |
| max_duration_s | FLOAT | 25.00.1–120 | — |
| chunk_seconds | FLOAT | 8.01–8 | — |
| overlap_seconds | FLOAT | 1.00–4 | — |
| seed | INT | 8010–2147483647 | — |
| prompt_style | STRING | cinematic foley, realistic movement, room tone, environmental ambience, object impacts | — |
| visual_summaryopt | STRING | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| cine_linx | IAMCCS_SUPERNODE_LINX | — |
| chunk_ranges_json | STRING | — |
| chunk_count | INT | — |
| global_foley_prompt | STRING | — |
| report | STRING | — |