Audio Timeline Mixer 5 (Nukun)
A mini timeline mixer so you can stop fighting ComfyUI's audio
- audio_1
- audio_2
- audio_3
- audio_4
- audio_5
- audio
- duration_sec
- report
Once ComfyUI started making audio, the missing piece became obvious: you get a voice track and a music track and no easy way to put them together. Audio Timeline Mixer 5 (Nukun) is that piece - a five-track mixer that lives inside the graph, like a very small DAW with no timeline view. Give it up to five AUDIO inputs, position each one in time, set gains and fades, and it hands back one mixed track.
It's the kind of node you don't notice until you need it, then you need it constantly. If you're scoring a video from ACE-Step stems, or dropping a voiceover over a Wan clip, this is the glue at the end of the chain.
How it works
Each of the five slots (audio_1 … audio_5) has its own set of controls, and only connected inputs count - empty or muted slots are skipped. Per track you get offset_sec (where in the timeline it starts, up to an hour), gain_db (−60 to +24), mute, and fade_in_ms/fade_out_ms (default a barely-there 5ms - set these properly or every track will click at its edges). The node then does the boring-but-necessary normalization: it resamples everything to one sample rate (sample_rate_mode: first active, highest, or fixed 44.1/48 kHz), upmixes mono to stereo if needed, sums the tracks, applies master_gain_db (default −3), and runs peak protection toward peak_ceiling_db (default −1 dBFS). Resampling is handled by torchaudio, which ships with ComfyUI's audio support.
The inputs and outputs that matter
Honestly, three things matter: offset_sec per track (your timeline), gain_db per track (your balance), and master_gain_db + peak_mode at the end (your loudness insurance). peak_mode has a real tradeoff worth knowing:
reduce_peak(default) - scales the whole mix down so nothing exceeds the ceiling. Transparent, keeps dynamics, your track just gets quieter.hard_clip- crushes anything above the ceiling. Louder, but it's distortion; fine for a hard limiter vibe, wrong for delicate mixes.none- does nothing and just warns you in thereport.
Outputs are the mixed audio (wire it to your save/combine node), duration_sec, and a report string listing every track's offset, gain, and resample/fade decisions - which is genuinely useful when a mix sounds wrong and you need to know what the node thought you asked for.
Install and gotchas
Same pack, same install as the rest:
cd ComfyUI/custom_nodes
git clone https://github.com/OnekoSL/Nukun_ComfyUI_Nodes.git
Restart ComfyUI. No extra models, no Ollama - this is the one node in the pack's audio corner with zero external moving parts. If the node refuses to load, the usual suspect is a missing torchaudio (older ComfyUI installs); make sure it matches your torch build.
Two traps. First, maximum_duration_sec (default 600) is a hard cap - if a track's offset plus length overshoots it, you get an error rather than a trimmed result, so raise it for long sessions. Second, the node won't invent a silent empty track for you: it errors if no active, non-empty input is connected. Connect a track, set its offset, and you're mixing.
Inputs (36)
| Name | Type | Default | Description |
|---|---|---|---|
| gain_db_1 | FLOAT | 0.0-60–24 | — |
| offset_sec_1 | FLOAT | 0.000–3600 | — |
| mute_1 | BOOLEAN | false | — |
| fade_in_ms_1 | FLOAT | 50–10000 | — |
| fade_out_ms_1 | FLOAT | 50–10000 | — |
| gain_db_2 | FLOAT | 0.0-60–24 | — |
| offset_sec_2 | FLOAT | 0.000–3600 | — |
| mute_2 | BOOLEAN | false | — |
| fade_in_ms_2 | FLOAT | 50–10000 | — |
| fade_out_ms_2 | FLOAT | 50–10000 | — |
| gain_db_3 | FLOAT | 0.0-60–24 | — |
| offset_sec_3 | FLOAT | 0.000–3600 | — |
| mute_3 | BOOLEAN | false | — |
| fade_in_ms_3 | FLOAT | 50–10000 | — |
| fade_out_ms_3 | FLOAT | 50–10000 | — |
| gain_db_4 | FLOAT | 0.0-60–24 | — |
| offset_sec_4 | FLOAT | 0.000–3600 | — |
| mute_4 | BOOLEAN | false | — |
| fade_in_ms_4 | FLOAT | 50–10000 | — |
| fade_out_ms_4 | FLOAT | 50–10000 | — |
| gain_db_5 | FLOAT | 0.0-60–24 | — |
| offset_sec_5 | FLOAT | 0.000–3600 | — |
| mute_5 | BOOLEAN | false | — |
| fade_in_ms_5 | FLOAT | 50–10000 | — |
| fade_out_ms_5 | FLOAT | 50–10000 | — |
| master_gain_db | FLOAT | -3.0-60–24 | — |
| sample_rate_mode | COMBO | first_active | 4 options: first_active, highest, 44100, 48000 |
| channel_mode | COMBO | auto | 2 options: auto, force_stereo |
| peak_mode | COMBO | reduce_peak | 3 options: reduce_peak, hard_clip, none |
| peak_ceiling_db | FLOAT | -1.0-24–0 | — |
| maximum_duration_sec | FLOAT | 6001–3600 | — |
| audio_1opt | AUDIO | — | |
| audio_2opt | AUDIO | — | |
| audio_3opt | AUDIO | — | |
| audio_4opt | AUDIO | — | |
| audio_5opt | AUDIO | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | — |
| duration_sec | FLOAT | — |
| report | STRING | — |