TS Audio Visualizer
SoundCloud-style waveform images, generated in the graph
- audio
- IMAGE
- MASK
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) orbottom(bars grow up from a baseline). Mirror is the classic look.color_presetandgradient_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_intensityscales how strongly the pattern reacts.sensitivityandsmoothing- the loudness curve. Lowersensitivitylifts quiet parts;smoothingblends 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.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | Audio clip to visualize as a waveform image. | |
| width | INT | 128064–8192 | Output image width in pixels. |
| height | INT | 32032–8192 | Output image height in pixels. |
| style | COMBO | mirror | mirror: bars grow symmetrically from the centre line. bottom: bars grow up from the baseline. |
| bar_width | INT | 61–128 | Width of each bar in pixels. |
| bar_gap | INT | 40–128 | Gap between bars in pixels. |
| color_preset | COMBO | Violet | Colour gradient applied to the bars and their glow. |
| gradient_mode | COMBO | horizontal | horizontal: along time. vertical: along height. amplitude: colour by bar loudness. |
| background | COMBO | dark | Base canvas. dark: deep indigo gradient. black/white: solid. transparent: black RGB, alpha in MASK (no background pattern). |
| bg_pattern | COMBO | nebula | Audio-reactive abstract background behind the bars: nebula (mountains+glow), glow (waveform aura), mountains (layered silhouettes), plasma (smoky field), none. |
| bg_intensity | FLOAT | 0.600–1 | Strength of the abstract background pattern. |
| glow | FLOAT | 0.400–1 | Neon glow / bloom intensity around the bars. |
| sensitivity | FLOAT | 0.650.1–1 | Loudness curve. Lower values lift quiet parts (amp ** sensitivity). |
| smoothing | FLOAT | 0.150–1 | Blend each bar with its neighbours for a smoother envelope. |
| height_scale | FLOAT | 0.900.1–1 | Fraction of the image height the loudest bar may occupy. |
| normalize | BOOLEAN | true | Scale the loudest bar to full height. |
| rounded_caps | BOOLEAN | true | Rounded bar ends (SoundCloud look) vs. flat rectangles. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | Rendered waveform visualization. |
| MASK | MASK | Alpha of bars plus their glow (background excluded), for compositing. |