ComfyUI Node

(SP) Waveform

A waveform image, exactly when you need one

By c0ffymachyne·Created 2 years ago·Updated about a year ago· 22
(SP) Waveform
  • audio_input
  • waveform_image
colorblack
background_colorwhite
width800
height200
line_width1.0

Sometimes you just want to see the shape of your audio. (SP) Waveform renders the amplitude envelope of a clip - time across, loudness up and down - and hands it back as a normal ComfyUI IMAGE. It's the sibling of (SP) Spectogram: where the spectrogram shows you frequency content, the waveform shows you dynamics and structure. Did that Limiter actually flatten the peaks? Is there a massive silence gap in the middle of your pad? This is the node that answers it at a glance.

It's deliberately dumb in the best way: it averages your channels to mono, plots the samples with matplotlib, and returns an image. No analysis, no cleverness, no "insight" - just the picture you'd expect from a DAW's track view.

The inputs

  • color - the trace color, default black. Any matplotlib color name works (red, blue, #ff8800, ...).
  • background_color - default white. Default output is a black trace on white, which is readable on any preview.
  • width / height - image size in pixels, defaults 800×200. The height is your dynamic-range view; a taller image makes the quiet parts easier to see.
  • line_width - trace thickness, 0.1–10, default 1.0. Thicker looks bolder; thinner shows more fine detail.

One waveform_image output, ready for the preview pane or to feed into image nodes if you're building a visualization workflow.

The honest take

This is a utility node, and it knows it. There's no "smooth the envelope" option, no RMS overlay, no peak marker - you could replicate it with a Python node in an afternoon. So reach for it when you want a quick visual check inside the graph, especially paired with the Spectrogram: waveform for "is it structured right," spectrogram for "is it sonically right." It's also the friendlier of the two for total beginners, because a black-and-white trace needs no explanation.

One practical note: the plot's y-axis is clamped to a fixed range around the signal, so a very quiet clip still renders as a visibly squashed line - it doesn't auto-zoom to make quiet audio look loud. If you want to compare two clips' levels visually, normalize first (or don't, and enjoy the honest picture). And like every node in this pack, if the whole pack fails to load, the pinned cupy-cuda11x is the usual suspect - fix that and the visualizers come back with everything else.

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, ...) plus matplotlib for the plotting - Manager handles the install. The repo is a work in progress, but this is one of its most reliable, zero-surprise nodes.

CategorySignal Processing

Inputs (6)

NameTypeDefaultDescription
audio_inputAUDIO
coloroptSTRINGblack
background_coloroptSTRINGwhite
widthoptINT800100–4000
heightoptINT20050–1000
line_widthoptFLOAT1.00.1–10

Outputs (1)

NameTypeDescription
waveform_imageIMAGE