Make Audio List
Ten Audio Sockets Into One List, With a Quiet Little Secret
- audio1
- audio2
- audio3
- audio4
- audio5
- audio6
- audio7
- audio8
- audio9
- audio10
- AUDIO
The audio member of the pack's list-making family
Same pattern as easy makeImageList and easy makeVideoList, but for sound. The Timeline Editor and MultiTrack Editor each take a single audio port, and a dialogue scene with three voice lines needs three audio clips in three different segments. easy makeAudioList packs up to ten audio inputs into one AUDIO list, which the editors then distribute across segments.
The README's guidance is the same as the video version: if a segment only needs one audio, connect it directly; if you need multiple audio segments, build a list with this node.
How it works
The loop is the same as its siblings, but the placeholder is different and it's the interesting bit:
if v is not None:
audios.append(v)
elif not skip_empty:
empty = silence(16000, 0.001, 1) # 1ms of silence @ 16kHz
audios.append({"waveform": empty, "sample_rate": 16000})
Unconnected slots get filled with a 1-millisecond silent waveform at 16 kHz when skip_empty is off. Why not a zero tensor like the image version? Because audio objects carry a waveform and a sample rate, and a 0-length or garbage waveform would crash naive consumers. One millisecond of genuine silence is a valid, well-behaved AUDIO object that downstream nodes (and the editors' audio track) treat as "no sound here."
That positional bookkeeping is the point. In fill mode your audio in slot 5 stays attached to segment 5 even when segments 2 and 3 are silent. In skip mode the list compresses to only the connected tracks, which is right when you just want "these are the audio files" with no positional meaning.
Inputs and output
skip_empty- fill with silence vs. skip, as above.audio1…audio10- all optional.AUDIOout - an audio list (is_list output).
Setup and notes
Install is the pack install: ComfyUI Manager → ComfyUI-Easy-Media, or git clone into custom_nodes + restart. No models, no FFmpeg requirement for this node itself.
Practical things:
- The silence filler is real. At 1 ms it's essentially inaudible, but if you iterate over the list you'll see ten items, most of them near-empty. Consumers that don't expect empties can produce a faint click or a skipped beat - that's the placeholder doing its job, and
skip_emptyis your off switch. - Sample-rate mismatch. The filler is 16 kHz; if your real clips are 44.1 kHz, the list is technically mixed-rate. The editors and merge nodes handle this, but if you're feeding the list somewhere strict, keep everything at the same sample rate.
- Order is the contract.
audio1is always index 0.
For dubbing, TTS, and dialogue workflows - where several voice clips need to land in the right timeline slots - this is the quiet little node that keeps the alignment honest.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| skip_empty | BOOLEAN | false | — |
| audio1opt | AUDIO | — | |
| audio2opt | AUDIO | — | |
| audio3opt | AUDIO | — | |
| audio4opt | AUDIO | — | |
| audio5opt | AUDIO | — | |
| audio6opt | AUDIO | — | |
| audio7opt | AUDIO | — | |
| audio8opt | AUDIO | — | |
| audio9opt | AUDIO | — | |
| audio10opt | AUDIO | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| AUDIO | AUDIO | — |