(SP) Mix Down
Turn a pile of audio lists into one track
- audio_inputs
- gain_factors
- mixed_audio
Every audio pack eventually needs the glue node, and (SP) Mix Down is it. Its one job: take a list of audio clips and sum them into a single mixed track, with an optional per-clip volume control. In this pack it exists mostly to catch the AUDIO_LIST output of (SP) PadSynth Choir - the choir generates one note per list entry, and this is how you turn those notes into one playable chord.
It's more careful than a naive "add them up" though, and the details matter:
- Sample rate mismatch is handled. If your clips are at different rates, each one is resampled to match the first input before mixing. You won't get a silent or mangled result from mixing a 44.1 kHz and 48 kHz clip - it just works.
- Lengths get padded, not cropped. Every clip is zero-padded (silence) up to the longest one, so a short voice note doesn't vanish because a longer pad clipped it off.
- The mix is LUFS-normalized. This pack's signature move - the summed result is normalized to a loudness target, so stacking several tracks doesn't blow your head off.
The inputs
- audio_inputs - the AUDIO_LIST to mix. This is a list input, so it's meant to receive the list output from something like PadSynth Choir (or any list-producing node).
- gain_factors - optional FLOAT_LIST, one volume multiplier (0.0–2.0) per input clip. This is the "volume control per note" the README promises. Empty (the default) means all clips at unity gain - perfectly fine for a quick mix.
One mixed_audio output, ready to feed the rest of the chain.
Where people get tripped up
The classic error is dropping a single AUDIO into audio_inputs - that's a type mismatch, because this socket expects a list. If you have one plain audio clip, you don't need this node at all; and if you're getting "no audio inputs provided," you've handed it an empty list. Also worth knowing: if you provide gain_factors, its length must exactly match the number of input clips, or the node raises an error rather than silently guessing. That's a friendly failure mode, but it means you should double-check your list lengths when wiring them up.
How it fits
PadSynth Choir → Mix Down → Stereo Width → Filter → Convolution Reverb is the whole "generate a pad from nothing" pipeline in this pack, and Mix Down is the hinge. For anything else, it's just a clean way to sum a batch of clips - and given the resampling and padding behavior, it's more forgiving than most.
Installing it
ComfyUI Manager → "Install Custom Nodes" → search ComfyUI Signal Processing, or:
cd ComfyUI/custom_nodes
git clone https://github.com/c0ffymachyne/ComfyUI_SignalProcessing
then restart ComfyUI. Dependencies from requirements.txt (scipy, pyfar, torchaudio, pyloudnorm, cupy-cuda11x, ...) - Manager handles them. The repo is a work in progress; if the pack won't load at all, the pinned cupy-cuda11x is the usual suspect.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| audio_inputs | AUDIO_LIST | — | |
| gain_factorsopt | FLOAT_LIST | 0–2 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| mixed_audio | AUDIO | — |