Nodes/ComfyUI Geeky AudioMixer/🎡 Geeky AudioMixer
ComfyUI Node

🎡 Geeky AudioMixer

Mix voice, music, and SFX in ComfyUI without leaving the graph

By GeekyGhostΒ·Created about a year agoΒ·Updated about a year agoΒ· 5
🎡 Geeky AudioMixer
  • audio_1
  • audio_2
  • audio_3
  • audio_4
  • mixed_audio
  • mix_info
  • total_duration
  • level_meters
β—„output_duration10.0β–Ί
β—„output_formatwavβ–Ί
β—„sample_rate44100β–Ί
β—„audio_1_volume1.50β–Ί
β—„audio_1_start_time0.0β–Ί
β—„audio_1_fade_in0.0β–Ί
β—„audio_1_fade_out0.0β–Ί
β—„audio_2_volume1.20β–Ί
β—„audio_2_start_time0.0β–Ί
β—„audio_2_fade_in1.0β–Ί
β—„audio_2_fade_out1.0β–Ί
β—„audio_3_volume1.00β–Ί
β—„audio_3_start_time0.0β–Ί
β—„audio_3_fade_in0.0β–Ί
β—„audio_3_fade_out0.0β–Ί
β—„audio_4_volume1.00β–Ί
β—„audio_4_start_time0.0β–Ί
β—„audio_4_fade_in0.0β–Ί
β—„audio_4_fade_out0.0β–Ί
β—„master_volume1.00β–Ί
β—„normalization_modeprevent_clippingβ–Ί
β—„compression_ratio1.0β–Ί
β—„limiter_threshold-1.0β–Ί
β—„pre_gain_boost1.0β–Ί

ComfyUI's audio story is thin. If you're doing a lip-sync or talking-head workflow you'll eventually have narration on one wire, a music track on another, and nowhere to combine them - which is exactly the hole 🎡 Geeky AudioMixer fills. It's a genuine four-track mixer that lives inside the graph: voice in one input, background music in a second, sound effects in a third and fourth, and out the other side comes one timed, leveled, stereo audio track ready to feed your video-combine node. No API, no key, no model files to download - the name isn't a lie for once.

How it works

The node is basically a little console-style mixer built on torchaudio. Each incoming AUDIO input - including ComfyUI's LazyAudioMap lazy-loading format, which trips up plenty of audio nodes - gets extracted into a waveform tensor and resampled to your target sample_rate with sinc interpolation. Then per track it applies volume, fade in/out, and a start-time offset, and adds the result onto a shared stereo timeline. The mix is done additively, so the relative loudness you set is the relative loudness you get. After that come the master stages in order: pre-gain, master volume, normalization, optional compression, and a soft limiter, with a final safety clamp so nothing hard-clips.

The inputs that matter

There are a lot of knobs here (three control groups Γ— four tracks plus master), but for a beginner the handful that actually do the work are:

  • audio_1 - the required main track (voice/narration). audio_2, audio_3, audio_4 are optional, so you can start with just voice + music.
  • normalization_mode - the one to understand. prevent_clipping (default) only scales down if your mix would clip, leaving your volume relationships intact. off does literally nothing. full_normalize boosts everything to peak level - and here's the trap: it's the old behavior that destroyed carefully set ratios. smart_normalize only lifts mixes that are genuinely quiet (roughly below -30dB RMS).
  • master_volume, pre_gain_boost - the two you reach for when output is too quiet. Pre-gain (0.1–10x) is the cleaner fix for a weak source; master volume applies to everything.
  • output_duration, sample_rate - timeline length in seconds (1–300) and the target rate (8k–96k; 44100 is the sensible default for most content).

Per-track you get *_volume (0–500%), *_start_time (0–60s), and *_fade_in/*_fade_out (0–5s). A quick honesty note: the output_format dropdown (wav/mp3/flac) mostly gets recorded into the info JSON - the node returns ComfyUI's native audio dict, so whatever node writes your file downstream decides the real container.

Outputs

mixed_audio (AUDIO) is the one that matters - wire it into a video-combine or audio-save node. The others are for debugging: mix_info and level_meters are JSON strings with RMS/peak levels and the processing steps that ran, and total_duration is a float you can feed into video nodes that need a frame count.

Install

ComfyUI Manager, search "Geeky AudioMixer", install, restart. Or manually:

cd ComfyUI/custom_nodes/
git clone https://github.com/GeekyGhost/ComfyUI_Geeky_AudioMixer.git
cd ComfyUI_Geeky_AudioMixer
pip install -r requirements.txt

Dependencies are light: torchaudio, soundfile, numpy, and scipy (marked optional but recommended). The one that bites: torchaudio isn't always bundled with every ComfyUI install, so if the node errors on import, run that requirements line - it's the whole fix.

Common issues

  • LazyAudioMap errors - the README's most-called-out failure. Update ComfyUI, restart after installing, and double-check your audio source nodes are compatible.
  • Volume ratios mysteriously flat - you're on full_normalize. Switch to prevent_clipping or off.
  • Too quiet - raise pre_gain_boost (1.5–3x for quiet sources) before cranking master volume; that keeps your track balance intact.
  • Clipping/distortion - drop master_volume, or set limiter_threshold lower (‑3dB or below) and compression_ratio to 2–4. The console prints exact RMS/peak at every stage, so watch that output instead of guessing.

It's a small, single-author pack with no install drama and one genuinely good idea - the normalization modes that respect your levels. For in-graph mixing it's hard to beat.

Categoryaudio/mixing

Inputs (28)

NameTypeDefaultDescription
audio_1AUDIOβ€”
output_durationFLOAT10.01–300β€”
output_formatCOMBOwav3 options: wav, mp3, flac
sample_rateINT441008000–96000β€”
audio_1_volumeFLOAT1.500–5β€”
audio_1_start_timeFLOAT0.00–60β€”
audio_1_fade_inFLOAT0.00–5β€”
audio_1_fade_outFLOAT0.00–5β€”
audio_2optAUDIOβ€”
audio_3optAUDIOβ€”
audio_4optAUDIOβ€”
audio_2_volumeoptFLOAT1.200–5β€”
audio_2_start_timeoptFLOAT0.00–60β€”
audio_2_fade_inoptFLOAT1.00–5β€”
audio_2_fade_outoptFLOAT1.00–5β€”
audio_3_volumeoptFLOAT1.000–5β€”
audio_3_start_timeoptFLOAT0.00–60β€”
audio_3_fade_inoptFLOAT0.00–5β€”
audio_3_fade_outoptFLOAT0.00–5β€”
audio_4_volumeoptFLOAT1.000–5β€”
audio_4_start_timeoptFLOAT0.00–60β€”
audio_4_fade_inoptFLOAT0.00–5β€”
audio_4_fade_outoptFLOAT0.00–5β€”
master_volumeoptFLOAT1.000–5β€”
normalization_modeoptCOMBOprevent_clipping4 options: off, prevent_clipping, full_normalize, smart_normalize
compression_ratiooptFLOAT1.01–10β€”
limiter_thresholdoptFLOAT-1.0-20–0β€”
pre_gain_boostoptFLOAT1.00.1–10β€”

Outputs (4)

NameTypeDescription
mixed_audioAUDIOβ€”
mix_infoSTRINGβ€”
total_durationFLOATβ€”
level_metersSTRINGβ€”