Audio Waveform π΅
The Audio-Edition of 'Show Me the Shape'
- audio_samples
- waveform_image
Every audio editor shows you a waveform for a reason: the shape tells you almost everything about the sound at a glance. Loud parts are tall, quiet parts are thin, silence is a flat line, and a wall of solid blocks means clipping. Audio Waveform renders that shape as a ComfyUI IMAGE tensor, so the same "read the sound by looking at it" habit works inside your node graph.
The mechanism is deliberately simple: it takes the audio samples, downsamples them to fit the requested width, and draws the envelope as a filled shape on a colored background. That's the whole job, and the node is honest about it - it's a visualization, not an analysis.
The controls, and the one that matters
width/height- output resolution of the image.line_color_r/g/bandbg_color_r/g/b- RGB colors for the waveform and the background. The defaults (a cyan line on a dark blue-black) look good on dark ComfyUI themes, but if you're saving these out for a video you'll want to match your actual palette.line_thickness- pixel width of the waveform stroke.
That's the whole input list. The single output is waveform_image, an IMAGE.
Why you'd actually reach for it
Three genuinely useful jobs, and none of them is "make a pretty picture":
- Verifying generated audio actually has signal. Loudness-matching, normalization, sidechain ducking - all of them silently fail in ways a waveform exposes instantly. A generator that produced silence (or a pure DC thump) looks nothing like a healthy waveform, and you'll catch it in a preview before it wastes a render pass downstream.
- Spotting clipping and level problems. A waveform whose top and bottom are flat square lines is clipping - the audio has slammed into the ceiling. That's a visual red flag you can check without meters, and it's the fastest way to know you need
Audio Normalizebefore mixing. - As a visual contact-sheet index. Render waveforms for a batch of audio files, tile them with a contact-sheet node, and you get a browsable map of what each file contains - which file has the loud section, which is mostly silence, where the hits are.
It pairs naturally with Audio Spectrogram (frequency content) as the amplitude-over-time companion, and the two together give you a complete "read the audio by eye" setup.
Install and gotchas
ComfyUI Manager β search OmniNodes, or:
cd ComfyUI/custom_nodes
git clone https://github.com/TensorVizion/OmniNodes
Restart ComfyUI; it's under TensorVizion/Audio. Pure NumPy/Pillow, no extra dependencies.
The honest note: this is a plot, not an analysis - it won't tell you BPM or loudness numerically. If you want numbers, use Audio Beat Detect or Audio Normalize's peak_db/rms_db outputs. And like the spectrogram, a long track at default width compresses a lot of audio into a small image; for a real read, bump the width up.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| audio_samples | AUDIO | β | |
| width | INT | 1024256β4096 | β |
| height | INT | 25664β2048 | β |
| line_color_r | INT | 00β255 | β |
| line_color_g | INT | 2120β255 | β |
| line_color_b | INT | 2550β255 | β |
| bg_color_r | INT | 50β255 | β |
| bg_color_g | INT | 100β255 | β |
| bg_color_b | INT | 200β255 | β |
| line_thickness | INT | 21β8 | β |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| waveform_image | IMAGE | β |