Nodes/ComfyUI Timesaver Nodes/TS Audio Visualizer
ComfyUI Node

TS Audio Visualizer

SoundCloud-style waveform images, generated in the graph

By AlexYez·Created 2 years ago·Updated a day ago· 12
TS Audio Visualizer
  • audio
  • IMAGE
  • MASK
width1280
height320
stylemirror
bar_width6
bar_gap4
color_presetViolet
gradient_modehorizontal
backgrounddark
bg_patternnebula
bg_intensity0.60
glow0.40
sensitivity0.65
smoothing0.15
height_scale0.90
normalizetrue
rounded_capstrue

Every musician, podcaster, and clip-maker eventually needs the same thing: a pretty waveform image to post. TS Audio Visualizer turns any AUDIO input into a SoundCloud-style graphic - gradient bars with a neon glow over an audio-reactive abstract background - and outputs it as both an IMAGE and a MASK. Rendered entirely on torch, no extra dependencies, and it's fast enough to regenerate on every tweak.

It's a niche node, but a real one: audiogram clips for social, music-video overlays, or a quick visual for a voiceover track. The MASK output is the sleeper feature - it gives you the bar shapes as alpha, so you can composite the waveform over actual footage instead of just pasting a flat image.

How it works

The node decodes your audio, splits it into time bins, and computes a loudness envelope per bin. Each envelope value becomes a bar, drawn as antialiased rounded capsules (the SoundCloud look) with a soft neon glow, sitting over an abstract background that reacts to the same loudness signal. All of it is torch tensor math, so there's nothing to install beyond the pack itself.

The controls are split into the things that matter and the things you'll tweak once:

  • style - mirror (bars grow from the center line) or bottom (bars grow up from a baseline). Mirror is the classic look.
  • color_preset and gradient_mode - the bar palette (Violet is the default, but there are Indigo, Neon, Spectrum, Fire, and more) and whether the gradient runs along time (horizontal), along height (vertical), or by loudness (amplitude).
  • background / bg_pattern - solid dark/black/white, or the reactive patterns: nebula, glow, mountains, plasma. bg_intensity scales how strongly the pattern reacts.
  • sensitivity and smoothing - the loudness curve. Lower sensitivity lifts quiet parts; smoothing blends each bar with its neighbors for a less spiky envelope. These two are where the difference between "looks like a waveform" and "looks like noise" lives.
  • glow, height_scale, normalize, rounded_caps - the polish: glow strength, how tall the loudest bar can get, whether to normalize the loudest bar to full height, and rounded vs. flat bar ends.

The outputs

Two of them, and the pairing is the point: IMAGE is the rendered waveform (with a transparent background option that gives you black RGB with the alpha in the mask), and MASK is the alpha of the bars plus their glow, background excluded. Wire the MASK into a compositing node and you can place the waveform over your video footage and have it blend instead of sitting in a box.

Installing it

Part of comfyui-timesaver. Install via ComfyUI Manager (search "Timesaver") or:

cd ComfyUI/custom_nodes
git clone https://github.com/AlexYez/comfyui-timesaver
cd comfyui-timesaver
python -m pip install -r requirements.txt

Restart ComfyUI. This one genuinely has no model files and no optional extras - the README calls it "rendered entirely on torch," which is the rare case where the marketing is literally true.

Gotchas

Nothing deep here, but two habits save you time. First, remember the pack's audio nodes all rely on the imageio-ffmpeg binary for decoding - if it's missing you'll see ffmpeg errors instead of a waveform (python -m pip install --upgrade imageio-ffmpeg fixes it). Second, the input is a standard ComfyUI AUDIO object, so you can't feed it a raw file path - wire the output of TS Audio Loader (or anything upstream that emits AUDIO) into it. And if your waveform looks like a solid block, it's almost always sensitivity being too high - drop it toward 0.3 and the quiet parts start showing up.

CategoryTS/Audio

Inputs (17)

NameTypeDefaultDescription
audioAUDIOAudio clip to visualize as a waveform image.
widthINT128064–8192Output image width in pixels.
heightINT32032–8192Output image height in pixels.
styleCOMBOmirrormirror: bars grow symmetrically from the centre line. bottom: bars grow up from the baseline.
bar_widthINT61–128Width of each bar in pixels.
bar_gapINT40–128Gap between bars in pixels.
color_presetCOMBOVioletColour gradient applied to the bars and their glow.
gradient_modeCOMBOhorizontalhorizontal: along time. vertical: along height. amplitude: colour by bar loudness.
backgroundCOMBOdarkBase canvas. dark: deep indigo gradient. black/white: solid. transparent: black RGB, alpha in MASK (no background pattern).
bg_patternCOMBOnebulaAudio-reactive abstract background behind the bars: nebula (mountains+glow), glow (waveform aura), mountains (layered silhouettes), plasma (smoky field), none.
bg_intensityFLOAT0.600–1Strength of the abstract background pattern.
glowFLOAT0.400–1Neon glow / bloom intensity around the bars.
sensitivityFLOAT0.650.1–1Loudness curve. Lower values lift quiet parts (amp ** sensitivity).
smoothingFLOAT0.150–1Blend each bar with its neighbours for a smoother envelope.
height_scaleFLOAT0.900.1–1Fraction of the image height the loudest bar may occupy.
normalizeBOOLEANtrueScale the loudest bar to full height.
rounded_capsBOOLEANtrueRounded bar ends (SoundCloud look) vs. flat rectangles.

Outputs (2)

NameTypeDescription
IMAGEIMAGERendered waveform visualization.
MASKMASKAlpha of bars plus their glow (background excluded), for compositing.