IAMCCS Cine Shot Audio Director
Pick shot 4's audio, pad it, and hand it to the sampler — in one node
- audio_1
- audio_2
- audio_3
- audio_4
- audio_5
- audio_6
- audio_7
- audio_8
- audio
- audio_seconds
- report
In a multi-shot LTX audio-video pipeline, audio isn't a single clip - it's eight lanes you route to different shots, and each shot needs its audio sliced to exactly the right length or the conditioning math breaks. IAMCCS Cine Shot Audio Director is the routing node for that. You point it at which audio lane a shot uses, tell it how long the shot is, and it returns the correctly trimmed-or-padded audio plus its true duration. It's the audio twin of the Multi-Gen Director's audio_index concept, made concrete.
It's a small node, but it solves a surprisingly frequent failure: LTX audio conditioning that silently drops or extends because the audio length doesn't match the segment's frame count. Every long-video person who's seen "conditioning length mismatch" at step 200 knows this pain.
How it works
Required inputs:
audio_index- which of the 8 lanes to pick (1–8; 0 means none).target_duration_seconds- the shot length the audio must match.fallback- what to do if that lane isn't connected:silent(generate zeros atsilent_sample_rate, default 44100),first_connected, orerror.trim_or_pad-pad_or_trim(default) enforces the exact target length by slicing or zero-padding;as_ispasses the audio through untouched.silent_sample_rate- sample rate for the synthetic silence.
The optional audio_1…audio_8 inputs are your lanes. The node unwraps whatever AUDIO format you fed it (it tolerates the various dict/list shapes the ecosystem produces), normalizes the waveform, and does the trim/pad math in samples.
Outputs: audio (ready to feed your LTX audio VAE encoder), audio_seconds (the actual resulting length - verify this matches your segment), and report.
Install
In IAMCCS-nodes:
cd ComfyUI/custom_nodes
git clone https://github.com/IAMCCS/IAMCCS-nodes.git
or Manager → search IAMCCS. README floor: ComfyUI ≥ 0.3.0, Python ≥ 3.12, Torch ≥ 2.8. To actually use the audio you need the LTX audio-video nodes (native in recent ComfyUI) and the LTX audio VAE.
Where people get burned
- The silent fallback is silent.
fallback: silentmeans a missing lane produces zeros, not an error. Your video will generate with no sound for that shot and nothing will tell you. If you'd rather know, setfallback: error. - Sample-rate drift.
silent_sample_rateonly affects generated silence. Real audio keeps its own rate - if your lanes mix 44.1k and 48k, downstream encoding can behave inconsistently. Normalize at the source. as_isdoesn't protect you. Choosingas_isskips the length fix; if the lane is shorter than the segment, the conditioning mismatch returns. Use it only when you've already matched lengths upstream.- Off-by-one on lanes. This node's
audio_indexis 1-based againstaudio_1…audio_8. If the plan'saudio_indexwas written 0-based (some planners do), every shot will grab the wrong lane. - Zero search impressions, one-author tooling. It's a leaf node and safe to adopt on its own, but it's really built for the Shotboard audio-routing pipeline.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| audio_index | INT | 10–8 | — |
| target_duration_seconds | FLOAT | 4.000–36000 | — |
| fallback | COMBO | silent | 3 options: silent, first_connected, error |
| trim_or_pad | COMBO | pad_or_trim | 2 options: pad_or_trim, as_is |
| silent_sample_rate | INT | 441008000–192000 | — |
| audio_1opt | AUDIO | — | |
| audio_2opt | AUDIO | — | |
| audio_3opt | AUDIO | — | |
| audio_4opt | AUDIO | — | |
| audio_5opt | AUDIO | — | |
| audio_6opt | AUDIO | — | |
| audio_7opt | AUDIO | — | |
| audio_8opt | AUDIO | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |
| audio_seconds | FLOAT | — |
| report | STRING | — |