IAMCCS Timeline Audio Mixer
Place dialogue lines on the shotboard timeline and mix in foley
- cine_linx
- line_1_audio
- line_2_audio
- line_3_audio
- line_4_audio
- foley_audio
- final_audio
- dialogue_only
- report
Generating a scene that sounds right usually means generating dialogue, foley, and ambience separately and then gluing them together in an editor. Timeline Audio Mixer pulls part of that into the graph: it takes up to four dialogue line audios, places them on the shotboard timeline at their scheduled times, and mixes them with a foley track into one final audio output. The docstring: "Place up to four dialogue line audios on the BoardMaker timeline and mix foley." It's the audio side of the shotboard family, and it plays nice with the pack's dialogue-planning nodes.
How it works. It reads the cine_linx plan to know where each dialogue line sits on the timeline, then places line_1_audio through line_4_audio accordingly. foley_audio is the ambience/sound-effects bed under it all. Everything is resampled to target_sample_rate (48 kHz default), gain-adjusted per bus, optionally peak-normalized, and mixed down.
The inputs that matter:
cine_linx- the plan that carries the line placement and timing.target_sample_rate- 48000 Hz default (range 8000–192000). Feed it what your video/audio pipeline expects so nothing gets resampled downstream in a surprising way.dialogue_gain_db(default 0, −60 to +24) - the dialogue bus level.foley_gain_db(default −9) - note the author's default: foley sits 9 dB under the dialogue. That's a sane starting point for "dialogue is the star, ambience is the bed."normalize_peak(default on) - push the final mix up to full scale so you're not clipping or wasting headroom.
The outputs. final_audio (the full mix), dialogue_only (just the dialogue bus, genuinely handy if you want to check the lines in isolation or feed a separate processing chain), and report (JSON describing what was placed and mixed). Wire final_audio into your save/video-combine or back into an LTX audio path.
Where it fits. After your audio-generation nodes (LTX-2.3 speech, TTS, or foley generators) and before the final video/audio combine. The audio inputs are optional - a node with only line_1_audio connected still works, and it's fine to start with just foley.
Install. Pack-wide: ComfyUI Manager (search "IAMCCS"), or git clone https://github.com/IAMCCS/IAMCCS-nodes into custom_nodes, restart. The audio DSP runs on numpy/torch - no extra pip packages, but if you're feeding it audio from elsewhere, that elsewhere needs to produce AUDIO tensors.
Gotchas. The cine_linx drives the placement, so if the plan's line timing is wrong, the mix inherits the error - fix the timeline, not the mixer. And mind the sample-rate default: if your source clips are 44.1 kHz and you leave the target at 48 kHz, you get resampling (fine), but if your downstream expects 44.1, the mismatch will surface as pitch/timing drift in the final file. Also, the dialogue_only output is before normalization in some paths - don't be surprised if it's quieter than the mix; that's expected when foley is the only thing subtracted.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| cine_linx | IAMCCS_SUPERNODE_LINX | — | |
| target_sample_rate | INT | 480008000–192000 | — |
| dialogue_gain_db | FLOAT | 0.0-60–24 | — |
| foley_gain_db | FLOAT | -9.0-60–24 | — |
| normalize_peak | BOOLEAN | true | — |
| line_1_audioopt | AUDIO | — | |
| line_2_audioopt | AUDIO | — | |
| line_3_audioopt | AUDIO | — | |
| line_4_audioopt | AUDIO | — | |
| foley_audioopt | AUDIO | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| final_audio | AUDIO | — |
| dialogue_only | AUDIO | — |
| report | STRING | — |