🎬 Studio42 Audio Mixer
A six-track audio mixer that never leaves the node graph
- audio_1
- audio_2
- audio_3
- audio_4
- audio_5
- audio_6
- mixed_audio
- total_duration
- mix_info
- level_analysis
- track_info
- sample_rate
Studio42 Audio Mixer is the pack's answer to "I have several audio files and I want them in one file, with volume, timing, fades, and maybe a limiter - all inside ComfyUI." It takes up to six AUDIO inputs and mixes them into one, with per-track volume, start-time offset, fade-in/out, and stereo pan, plus a proper master bus with normalization, compression, and limiting. It's the rare node in this suite that is genuinely what it claims to be: a mini mixing console as a node.
This is the node to reach for when you're building a video with a music bed and voiceover, or stitching sound effects onto a soundtrack. The full pipeline lives in the graph: load audio (Studio42 Audio Loader), mix it here, feed the result into a video or save step. The first track is the required backbone; tracks 2–6 are optional layers on top.
The inputs that matter
- audio_1 through audio_6 - the AUDIO inputs. Track 1 is required; the rest appear as you connect them.
- output_duration - total mix length in seconds (0.5–600). Tracks get placed/sliced against this.
- output_format -
wav,mp3, orflac. - sample_rate - 8000 to 192000; the tooltip spells it out: 44100 CD, 48000 pro, 96000 hi-res.
- Per-track: volume (1.0 = original, up to 5), start_time (seconds offset), fade_in/fade_out (up to 10s), and pan (−1 left, 0 center, 1 right) for tracks 2+.
The professional bus is where this gets interesting:
- master_volume - overall gain.
- normalization_mode -
off,prevent_clipping,full_normalize,smart_normalize, orbroadcast_standard. The defaultsmart_normalizeplus the limiter is the combo that stops you clipping. - enable_compression with ratio (2:1 gentle to 10:1 heavy), threshold (dB), attack/release (ms) - a real dynamic-range compressor.
- enable_limiter (on by default) with limiter_threshold at −0.5 dB, which is why your mix won't brickwall.
- enable_crossfade with crossfade_duration for bleeding tracks into each other.
- target_loudness in LUFS if you're aiming at broadcast levels.
What comes out
The main output is mixed_audio (AUDIO), ready for a video mux or save node. It also exposes total_duration, sample_rate, and several STRING outputs (mix_info, level_analysis, track_info) that describe what it did - handy for logging and debugging.
Installing it
Same pack, 24oiduts-ComfyUI:
- ComfyUI Manager: search 24oiduts, install, restart.
- Manual:
then restart.cd ComfyUI/custom_nodes/ git clone https://github.com/GeekyGhost/24oiduts-ComfyUI pip install -r 24oiduts-ComfyUI/requirements.txt
This node needs torchaudio and soundfile (both in the pack's requirements) for actual audio work. The GitHub README is a stale Studio42 template that claims the project is "not recommended for use" with no license - ignore it; the code runs.
Troubleshooting
- Node won't load / no audio output -
torchaudioorsoundfilemissing; install them in ComfyUI's venv and restart. - Mix is quiet or clipping - leave
smart_normalizeon, keep the limiter on, and checktarget_loudnessif you set a manual value. - Tracks don't line up - set each track's
start_time; the mix places them againstoutput_duration, not end-to-end automatically.
For graph-native audio finishing without leaving ComfyUI, this is one of the more genuinely capable nodes in the suite.
Inputs (51)
| Name | Type | Default | Description |
|---|---|---|---|
| audio_1 | AUDIO | — | |
| output_duration | FLOAT | 10.00.5–600 | — |
| output_format | COMBO | wav | 3 options: wav, mp3, flac |
| sample_rate | INT | 441008000–192000 | — |
| audio_1_volume | FLOAT | 1.000–5 | — |
| audio_1_start_time | FLOAT | 0.00–300 | — |
| audio_1_fade_in | FLOAT | 0.00–10 | — |
| audio_1_fade_out | FLOAT | 0.00–10 | — |
| audio_2opt | AUDIO | — | |
| audio_3opt | AUDIO | — | |
| audio_4opt | AUDIO | — | |
| audio_5opt | AUDIO | — | |
| audio_6opt | AUDIO | — | |
| audio_2_volumeopt | FLOAT | 0.800–5 | — |
| audio_2_start_timeopt | FLOAT | 0.00–300 | — |
| audio_2_fade_inopt | FLOAT | 0.50–10 | — |
| audio_2_fade_outopt | FLOAT | 0.50–10 | — |
| audio_2_panopt | FLOAT | 0.0-1–1 | — |
| audio_3_volumeopt | FLOAT | 0.600–5 | — |
| audio_3_start_timeopt | FLOAT | 0.00–300 | — |
| audio_3_fade_inopt | FLOAT | 1.00–10 | — |
| audio_3_fade_outopt | FLOAT | 1.00–10 | — |
| audio_3_panopt | FLOAT | 0.0-1–1 | — |
| audio_4_volumeopt | FLOAT | 0.400–5 | — |
| audio_4_start_timeopt | FLOAT | 0.00–300 | — |
| audio_4_fade_inopt | FLOAT | 0.00–10 | — |
| audio_4_fade_outopt | FLOAT | 0.00–10 | — |
| audio_4_panopt | FLOAT | 0.0-1–1 | — |
| audio_5_volumeopt | FLOAT | 0.300–5 | — |
| audio_5_start_timeopt | FLOAT | 0.00–300 | — |
| audio_5_fade_inopt | FLOAT | 0.00–10 | — |
| audio_5_fade_outopt | FLOAT | 0.00–10 | — |
| audio_5_panopt | FLOAT | 0.0-1–1 | — |
| audio_6_volumeopt | FLOAT | 0.200–5 | — |
| audio_6_start_timeopt | FLOAT | 0.00–300 | — |
| audio_6_fade_inopt | FLOAT | 0.00–10 | — |
| audio_6_fade_outopt | FLOAT | 0.00–10 | — |
| audio_6_panopt | FLOAT | 0.0-1–1 | — |
| master_volumeopt | FLOAT | 1.000–3 | — |
| normalization_modeopt | COMBO | smart_normalize | 5 options: off, prevent_clipping, full_normalize, smart_normalize, broadcast_standard |
| enable_compressionopt | BOOLEAN | false | — |
| compression_ratioopt | FLOAT | 2.01–10 | — |
| compression_thresholdopt | FLOAT | -12.0-60–0 | — |
| compression_attackopt | FLOAT | 5.00.1–100 | — |
| compression_releaseopt | FLOAT | 5010–1000 | — |
| enable_limiteropt | BOOLEAN | true | — |
| limiter_thresholdopt | FLOAT | -0.5-10–0 | — |
| enable_crossfadeopt | BOOLEAN | false | — |
| crossfade_durationopt | FLOAT | 2.00.1–10 | — |
| enable_analysisopt | BOOLEAN | true | — |
| target_loudnessopt | FLOAT | -16.0-30–-6 | — |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| mixed_audio | AUDIO | — |
| total_duration | FLOAT | — |
| mix_info | STRING | — |
| level_analysis | STRING | — |
| track_info | STRING | — |
| sample_rate | INT | — |