AU+IMG2VID Audio Timeline (legacy alias)
Trim the right slice of audio for the segment you're about to generate
- audio
- parent_contract
- linx
- audio_payload
- contract
- linx
- conditioning_audio
- segment_audio
- continue_generation
- effective_unique_frames
- trim_frames
- report
Audio-guided video generation has a subtle problem: your model takes one segment's worth of audio as conditioning, but a long track is way too much to feed it at once. You need the right slice - enough context for the current segment, trimmed so the model doesn't drown. IAMCCS_AUIMG2VID_AudioTimeline (a legacy alias for Ltx2HelperModules_AudioTimeline) is the node that does that slicing.
It takes three things: the planner_payload from your planner (which defines the current segment's frame range), the full audio track, and the mode that says how much context to grab around the segment. The modes are left_context_only, right_context_only, symmetric_context, and no_overlap. For a video segment, the audio you care about is usually the segment itself plus a little lead-in (left_context_only is the default), because the model is generating the segment forward. Set left_overlap_s / right_overlap_s to control the seconds of context on each side - 0.5s of left context is a sane starting point.
It returns a segment_audio (the slice for this segment) and a conditioning_audio (the context slice), so you can wire the segment to your sampler's audio input and the conditioning to whatever node wants the surrounding context separately. Two more outputs matter for the loop: continue_generation (a boolean the planner/gate uses to decide whether more segments remain) and effective_unique_frames (how many genuinely-new frames this segment represents after trimming overlap). clamp_policy (soft_clamp vs strict) controls what happens when the requested context runs past the start or end of the audio - soft clamps it gracefully, strict errors - and min_next_frames sets the floor for deciding a next segment is worth it.
Where this fits: in the AU+IMG2VID chain, it sits right after the planner and before sampling. The planner decides the segment plan, this node turns it into actual audio slices, and the continuity/refresh nodes handle the video side of the overlap. It's also usable standalone if you're building your own audio-conditioned chunk loop and just want reliable trimming.
Installing: one node in IAMCCS/IAMCCS-nodes - ComfyUI Manager → search "IAMCCS", or cd ComfyUI/custom_nodes && git clone https://github.com/IAMCCS/IAMCCS-nodes.git, restart. No models, no extra deps; the slicing is sample math over the AUDIO tensor.
The trap here is forgetting that the slice only covers the current segment's range. If you feed this node's conditioning_audio to a node expecting the whole track, your video will quietly condition on a 1-second blip. And if your planner_payload is {} (the default) because you never connected the planner, the node has no frame range to work from - that empty-payload default is a common source of "why is my audio slice empty?" moments. Connect the payload, read the report, and the slicing becomes boringly correct.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| planner_payload | STRING | {} | — |
| audio | AUDIO | — | |
| mode | COMBO | left_context_only | 4 options: left_context_only, right_context_only, symmetric_context, no_overlap |
| left_overlap_s | FLOAT | 0.500–30 | — |
| right_overlap_s | FLOAT | 0.000–30 | — |
| clamp_policy | COMBO | soft_clamp | 2 options: soft_clamp, strict |
| min_next_frames | INT | 11–100000 | — |
| parent_contractopt | IAMCCS_SUPERNODE_CONTRACT | — | |
| linxopt | IAMCCS_SUPERNODE_LINX | — |
Outputs (9)
| Name | Type | Description |
|---|---|---|
| audio_payload | STRING | — |
| contract | IAMCCS_SUPERNODE_CONTRACT | — |
| linx | IAMCCS_SUPERNODE_LINX | — |
| conditioning_audio | AUDIO | — |
| segment_audio | AUDIO | — |
| continue_generation | BOOLEAN | — |
| effective_unique_frames | INT | — |
| trim_frames | INT | — |
| report | STRING | — |