Nodes/Nukun_ComfyUI_Nodes/Audio Timeline Mixer 5 (Nukun)
ComfyUI Node

Audio Timeline Mixer 5 (Nukun)

A mini timeline mixer so you can stop fighting ComfyUI's audio

By OnekoSL·Created 3 months ago·Updated a day ago· 1
Audio Timeline Mixer 5 (Nukun)
  • audio_1
  • audio_2
  • audio_3
  • audio_4
  • audio_5
  • audio
  • duration_sec
  • report
gain_db_10.0
offset_sec_10.00
mute_1false
fade_in_ms_15
fade_out_ms_15
gain_db_20.0
offset_sec_20.00
mute_2false
fade_in_ms_25
fade_out_ms_25
gain_db_30.0
offset_sec_30.00
mute_3false
fade_in_ms_35
fade_out_ms_35
gain_db_40.0
offset_sec_40.00
mute_4false
fade_in_ms_45
fade_out_ms_45
gain_db_50.0
offset_sec_50.00
mute_5false
fade_in_ms_55
fade_out_ms_55
master_gain_db-3.0
sample_rate_modefirst_active
channel_modeauto
peak_modereduce_peak
peak_ceiling_db-1.0
maximum_duration_sec600

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_1audio_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 the report.

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.

CategoryNukun/Audio

Inputs (36)

NameTypeDefaultDescription
gain_db_1FLOAT0.0-60–24
offset_sec_1FLOAT0.000–3600
mute_1BOOLEANfalse
fade_in_ms_1FLOAT50–10000
fade_out_ms_1FLOAT50–10000
gain_db_2FLOAT0.0-60–24
offset_sec_2FLOAT0.000–3600
mute_2BOOLEANfalse
fade_in_ms_2FLOAT50–10000
fade_out_ms_2FLOAT50–10000
gain_db_3FLOAT0.0-60–24
offset_sec_3FLOAT0.000–3600
mute_3BOOLEANfalse
fade_in_ms_3FLOAT50–10000
fade_out_ms_3FLOAT50–10000
gain_db_4FLOAT0.0-60–24
offset_sec_4FLOAT0.000–3600
mute_4BOOLEANfalse
fade_in_ms_4FLOAT50–10000
fade_out_ms_4FLOAT50–10000
gain_db_5FLOAT0.0-60–24
offset_sec_5FLOAT0.000–3600
mute_5BOOLEANfalse
fade_in_ms_5FLOAT50–10000
fade_out_ms_5FLOAT50–10000
master_gain_dbFLOAT-3.0-60–24
sample_rate_modeCOMBOfirst_active4 options: first_active, highest, 44100, 48000
channel_modeCOMBOauto2 options: auto, force_stereo
peak_modeCOMBOreduce_peak3 options: reduce_peak, hard_clip, none
peak_ceiling_dbFLOAT-1.0-24–0
maximum_duration_secFLOAT6001–3600
audio_1optAUDIO
audio_2optAUDIO
audio_3optAUDIO
audio_4optAUDIO
audio_5optAUDIO

Outputs (3)

NameTypeDescription
audioAUDIO
duration_secFLOAT
reportSTRING