Nodes/RyanOnTheInside/Flex Audio Visualizer Line βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜
ComfyUI Node

Flex Audio Visualizer Line βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜

The classic bar/line audio visualizer, built in

By ryanontheinsideΒ·Created 2 years agoΒ·Updated 5 months agoΒ· 852
Flex Audio Visualizer Line βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜
  • audio
  • opt_feature
  • IMAGE
  • MASK
β—„strength1.00β–Ί
β—„feature_threshold0.00β–Ί
β—„feature_paramβ–Ύβ–Ί
β—„feature_moderelativeβ–Ί
β—„frame_rate30β–Ί
β—„screen_width768β–Ί
β—„screen_height464β–Ί
β—„position_x0.50β–Ί
β—„position_y0.50β–Ί
β—„visualization_methodbarβ–Ί
β—„visualization_featurefrequencyβ–Ί
β—„smoothing0.50β–Ί
β—„rotation0β–Ί
β—„length0β–Ί
β—„num_bars64β–Ί
β—„max_height200β–Ί
β—„min_height10β–Ί
β—„separation5β–Ί
β—„curvature0β–Ί
β—„curve_smoothing0.00β–Ί
β—„fft_size2048β–Ί
β—„min_frequency20β–Ί
β—„max_frequency8000β–Ί
β—„reflectfalseβ–Ί

If you need the audio visualizer you've seen a thousand times - a row of bars pulsing to the beat, or a smooth waveform line - this is that node, rendered directly to an image sequence you can composite over anything. It's the "generic" visualizer in the pack; its sibling, FlexAudioVisualizerContour, does the fancier version that traces a mask's shape instead of sitting in a straight line.

How it works

Feed it audio and it analyzes it via FFT, either showing visualization_feature: frequency (a proper spectrum analysis, low to high) or waveform (raw amplitude - more organic, less "EQ display"). visualization_method picks the render style: bar for discrete bars, line for a continuous connected line through the same data. frame_rate controls how many image frames come out, independent of the audio's own sample rate.

Everything else is layout and shape. screen_width/screen_height set the canvas, position_x/position_y place the visualizer's center within it (0–1, so 0.5/0.5 is dead center), and rotation spins the whole thing - useful for a vertical bar stack instead of horizontal. length sets how far the visualization extends before auto-fitting to the screen edges (0 = auto-fit based on rotation). For bars specifically: num_bars, max_height/min_height, separation (gap between bars), and curvature (rounds the bar corners). For the line mode: curve_smoothing. reflect flips the whole render to draw downward from the baseline instead of up - handy for a mirrored, "meter-style" look.

Like every Flex node, it accepts an optional opt_feature that can additionally modulate one of 14+ of the above parameters (feature_param picks which; the schema shows the first dozen - smoothing, rotation, position_y, num_bars, max/min height, separation, curvature, reflect, curve smoothing, fft_size, min/max frequency - plus a couple more), with feature_mode (relative/absolute), feature_threshold, and strength controlling how that modulation behaves. In practice most people leave opt_feature unconnected and just let the audio itself drive the bars via visualization_feature - the feature input is for a second, independent reactive layer on top (e.g. motion from another clip nudging the rotation while the audio drives the bar heights).

Inputs and outputs that matter

The ones worth touching first: audio, visualization_method (bar vs line), num_bars or length, and max_height/min_height to fit your canvas. Outputs are IMAGE (the rendered visualization) and MASK (the same shape as a mask, so you can composite it, recolor it, or use it to punch a hole in something else).

How to install it

ComfyUI Manager, search "RyanOnTheInside," or:

cd ComfyUI/custom_nodes
git clone https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside
cd ComfyUI_RyanOnTheInside
pip install -r requirements.txt

then restart. Audio analysis depends on librosa; make sure that install step actually finishes without errors before you go hunting for bugs elsewhere.

Common issues & troubleshooting

Bars/line render but never move. Check visualization_feature is set to something meaningful for your source - silent or near-silent audio produces a flat visualization regardless of settings, since there's nothing in the signal to display.

Output frame count doesn't match your other video nodes. frame_rate here is independent from your project's video frame rate; if you're compositing this over footage, set frame_rate to match, or run the result through a frame-rate/interpolation node afterward.

It looks cramped or clipped. screen_width/screen_height define the canvas this node renders at - if you composite the output onto a differently-sized image without resizing, bars can overflow or look tiny. Match the canvas to your target resolution up front rather than scaling after the fact.

CategoryRyanOnTheInside/FlexFeatures/Targets/Audio/Visualizers

Inputs (26)

NameTypeDefaultDescription
strengthFLOAT1.000–1Strength of parameter modulation (0.0 to 1.0)
feature_thresholdFLOAT0.000–1Minimum feature value to trigger the effect (0.0 to 1.0) Only applies the effect when the feature value exceeds this threshold. Lower values make the effect more sensitive, higher values make it more selective.
feature_paramCOMBOParameter to modulate based on the optional feature input
feature_modeCOMBOrelativeMode of parameter modulation ('relative' or 'absolute')
audioAUDIOInput audio to visualize
frame_rateFLOAT301–240Frame rate of the output visualization (1.0 to 240.0 fps)
screen_widthINT768100–1920Width of the output visualization (100 to 1920 pixels)
screen_heightINT464100–1080Height of the output visualization (100 to 1080 pixels)
position_xFLOAT0.500–1Horizontal position of the visualization center (0.0 to 1.0)
position_yFLOAT0.500–1Vertical position of the visualization center (0.0 to 1.0)
visualization_methodCOMBObarVisualization style ('bar' or 'line')
visualization_featureCOMBOfrequencyData source for visualization ('frequency' or 'waveform')
smoothingFLOAT0.500–1Amount of smoothing applied to the visualization (0.0 to 1.0)
rotationFLOAT00–360Rotation angle in degrees (0.0 to 360.0)
lengthFLOAT00–4000Length of the visualization in pixels. 0 means auto-fit to screen edges based on rotation (0.0 to 4000.0)
num_barsINT641–1024Number of bars/points in visualization (1 to 1024)
max_heightFLOAT20010–2000Maximum height of visualization (10.0 to 2000.0)
min_heightFLOAT100–500Minimum height of visualization (0.0 to 500.0)
separationFLOAT50–100Separation between bars (0.0 to 100.0)
curvatureFLOAT00–50Curvature of bar corners (0.0 to 50.0)
curve_smoothingFLOAT0.000–1Smoothing for line visualization (0.0 to 1.0)
fft_sizeINT2048256–8192FFT window size for frequency analysis (256 to 8192)
min_frequencyFLOAT2020–20000Minimum frequency to visualize (20.0 to 20000.0 Hz)
max_frequencyFLOAT800020–20000Maximum frequency to visualize (20.0 to 20000.0 Hz)
reflectBOOLEANfalseWhether to draw visualization upward (false) or downward (true) from baseline
opt_featureoptFEATUREOptional feature input for parameter modulation

Outputs (2)

NameTypeDescription
IMAGEIMAGEβ€”
MASKMASKβ€”