Audio Mixer
Mixing audio inside ComfyUI
- audio_1
- audio_2
- audio_3
- audio_4
- audio_5
- audio_6
- audio_7
- audio_8
- mixed_audio
- track_1
- track_2
- track_3
- track_4
- track_5
- track_6
- track_7
- track_8
ComfyUI has gotten genuinely good at making audio - TTS engines, music models, foley. What it's never been good at is arranging it. Until now, mixing three clips into one soundtrack meant exporting each one, opening a DAW, and exporting again. Audio Mixer puts a proper little multi-track timeline right in the graph so the whole edit stays in ComfyUI.
It's the biggest node in the ALICE Lab Audio Tools pack (a fresh, alpha-stage pack from a Japanese dev - the README is bilingual EN/JA - with essentially no community footprint yet, so consider this article one of the few write-ups anywhere). Audio Mixer is the flagship: up to eight AUDIO inputs arranged on a shared timeline with waveform previews, per-clip gain, position, fades, mute and solo, a master gain, and clipping protection. It's a mini-DAW with training wheels, and for the price (no model downloads, no Python deps) it's very much worth having.
How it works
The node is a pure torch mix bus. All connected sources are standardized to the highest sample rate among them, each clip gets its gain (10^(dB/20)), timeline offset, and fades applied, then everything is summed onto one bus. A positive offset delays a clip; a negative offset cuts samples that fall before the timeline start. The README is refreshingly blunt about what prevent_clipping is not: it's a uniform peak-normalization step, not a limiter, compressor, or LUFS normalizer. If the mixed peak exceeds 1.0 it rescales the whole mix down - it won't squash transients for you.
The inputs that actually matter:
audio_1throughaudio_8- optional, wire in whatever tracks you have.master_db- master gain, −100 to +24 dB, 0 is unity.prevent_clipping- on by default, and I'd leave it on.reset_before_run- clears all your clip edits, pastes, gain, position, and fades before mixing. Your "start over" button.
track_settings is the serialized JSON the UI writes behind the scenes. Don't hand-edit it; that's a trap. Edit clips in the node instead: click a clip to select, drag it along the timeline, drag its edges to shorten or extend (trimmed audio is restorable; areas past the source become silence), drag the top handles for linear fades, right-click for copy/cut/duplicate/delete, and double-click the dB, Pos, Fade In, or Fade Out label to zero that value.
Outputs
mixed_audio- the finished bus. This is the one you save or feed into Replace Video Audio.track_1throughtrack_8- each track processed (gain, position, fades applied) so you can keep individual stems. Muted, inactive-solo, and missing tracks emit a block instead of silent audio, so anything downstream silently skips - keep that in mind if a branch "disappears" from your render.
Install
# ComfyUI Manager → Install Custom Nodes → search "ComfyUI ALICE Lab Audio Tools" → Install → restart
# or:
cd ComfyUI/custom_nodes
git clone https://github.com/alice-lab-dev/ComfyUI-ALICE-Lab-Audio-Tools
# restart ComfyUI, then Add Node → ALICE_Lab → Audio
No pip dependencies and nothing to download, but you do need ffmpeg and ffprobe visible to the process that launches ComfyUI (on macOS, /opt/homebrew/bin and /usr/local/bin are checked automatically), and a current ComfyUI build with the native AUDIO type. If the node doesn't appear, hard-refresh the browser and check the terminal for import errors.
The gotchas
The 8-track cap is real - don't plan a 12-track session here. And the always-rerun design (the node forces itself to rebuild every run so audio and UI never go stale) means it's not a free lunch, but for a mixer that's the correct trade. If your mix suddenly sounds wrong, check mute/solo first; then check whether reset_before_run has been flipped on. When it all lines up, you get a real soundtrack without ever leaving the graph.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| master_db | FLOAT | 0.0-100–24 | — |
| prevent_clipping | BOOLEAN | true | — |
| track_settings | STRING | [] | — |
| reset_before_run | BOOLEAN | false | — |
| 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 (9)
| Name | Type | Description |
|---|---|---|
| mixed_audio | AUDIO | — |
| track_1 | AUDIO | — |
| track_2 | AUDIO | — |
| track_3 | AUDIO | — |
| track_4 | AUDIO | — |
| track_5 | AUDIO | — |
| track_6 | AUDIO | — |
| track_7 | AUDIO | — |
| track_8 | AUDIO | — |