IAMCCS MultiTimeline Bridge
Chop a master audio timeline into chunked generations, automatically
- cine_linx
- cine_linx
- generation_index_json
- active_take_json
- concat_plan_json
- report
Video generation models work in clips of a few seconds; a project timeline is minutes. Bridging those two scales is the whole job of IAMCCS_MultiTimelineBridge. It takes audio-bus data - the master output or any of five tracks - chops the timeline into generation-sized chunks, and emits a generation_index_json: a structured index of every chunk and take that downstream nodes can iterate over. Think of it as the "plan the whole project before you generate a frame" node.
It's part of IAMCCS-nodes' Cine/Multigeneration subsystem - the production tooling that grew out of IAMCCS' Shotboard/AudioBoard workflow (the README's 1.5.0 release is built around this "Shotboard multigen pipeline" for multi-timeline video work). This node is the front door of that pipeline.
How it works
You feed it bus JSON (via bus_manifest_json, master_out_json, track_1_json…track_5_json, or through a connected cine_linx carrying the manifest), pick which bus to plan around with source_bus, and it does the timing math:
chunk_template(10s/15s/20s/25s/custom) sets the generation chunk size -custom_chunk_secondsif you pick custom.take_source_mode:auto_detect_multi_lanesfinds multiple takes across lanes automatically;chunk_source_bususes just the chosen bus.take_count_mode:auto_from_audioderives take count from the audio;fixed_take_countforces a number.max_takescaps the total,active_takepicks which take is highlighted,frame_rate(24) converts seconds to frames.
The output is the contract everything else consumes: generation_index_json (the per-chunk take index), active_take_json (the currently selected take's details), concat_plan_json (the assembly plan for stitching chunks back into the full timeline), and report. take_track_layout decides whether takes collapse to a single lane or keep their bus tracks - collapse_to_lane_1 for most renders, preserve_bus_tracks when you need per-bus audio identity later.
Inputs and outputs
Key required: chunk_template, source_bus, take_source_mode, take_count_mode, max_takes, active_take, frame_rate, take_track_layout. Optional: cine_linx and the bus/track JSON strings.
Outputs: cine_linx, generation_index_json, active_take_json, concat_plan_json, report.
How to install
Ships in IAMCCS-nodes. ComfyUI Manager search "IAMCCS", or:
cd ComfyUI/custom_nodes
git clone https://github.com/IAMCCS/IAMCCS-nodes.git
Restart. No model downloads - this is pure planning logic. Pack floors: ComfyUI ≥ 0.3.0, Python ≥ 3.12, Torch ≥ 2.8.
Gotchas
The JSON inputs are the trap. This node plans from the author's audio-bus contract - if you wire a track_1_json that isn't in the bus_manifest schema, the node falls back to defaults and you get a plan that doesn't match your audio. The report output is the first place to look: it tells you what duration it actually derived. If source_duration resolves to zero, the node just builds a default skeleton (chunk_frames × fixed_take_count), which is a silent way to get a nonsense plan. And remember it's a planner, not a renderer - you still feed the resulting index to the take picker and then to actual generation nodes. The multi-lane auto-detect assumes your audio really has lanes; on a single-lane master bus, chunk_source_bus is the honest choice.
Inputs (19)
| Name | Type | Default | Description |
|---|---|---|---|
| chunk_template | COMBO | 20s | 5 options: 10s, 15s, 20s, 25s, custom |
| custom_chunk_seconds | FLOAT | 20.001–300 | — |
| source_bus | COMBO | master_out | 6 options: master_out, track_1, track_2, track_3, track_4, track_5 |
| take_source_mode | COMBO | auto_detect_multi_lanes | 2 options: auto_detect_multi_lanes, chunk_source_bus |
| take_count_mode | COMBO | auto_from_audio | 2 options: auto_from_audio, fixed_take_count |
| fixed_take_count | INT | 31–64 | — |
| max_takes | INT | 121–64 | — |
| active_take | INT | 11–64 | — |
| frame_rate | FLOAT | 24.001–120 | — |
| take_track_layout | COMBO | collapse_to_lane_1 | 2 options: collapse_to_lane_1, preserve_bus_tracks |
| cine_linxopt | IAMCCS_SUPERNODE_LINX | — | |
| bus_manifest_jsonopt | STRING | — | |
| master_out_jsonopt | STRING | — | |
| track_1_jsonopt | STRING | — | |
| track_2_jsonopt | STRING | — | |
| track_3_jsonopt | STRING | — | |
| track_4_jsonopt | STRING | — | |
| track_5_jsonopt | STRING | — | |
| visual_timelines_jsonopt | STRING | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| cine_linx | IAMCCS_SUPERNODE_LINX | — |
| generation_index_json | STRING | — |
| active_take_json | STRING | — |
| concat_plan_json | STRING | — |
| report | STRING | — |