Nodes/ComfyUI-Apt_Preset/Amp_audio_Normalized
ComfyUI Node

Amp_audio_Normalized

Turn a soundtrack into a per-frame value for audio-reactive animation

By cardenluo·Created 2 years ago·Updated 18 days ago· 309
Amp_audio_Normalized
  • audio
  • normalized_amp
frame_rate12
operationmax
start_frame0
limit_frames0

This is the pack's building block for audio-reactive animation - the technique where music or voice drives visual motion, ControlNet strength, or IPAdapter weight instead of a hand-typed curve. It's a small node with one job: take an AUDIO input and turn it into a single FLOAT, normalized_amp, representing loudness at a given point in the track. Wire it up correctly and you can make ControlNet strength or motion intensity pulse with a beat instead of running flat through an entire clip.

This exact pattern - separating audio into stems and using amplitude to drive keyframe transitions, ControlNet strength, and motion amount - is a real, still-active corner of the community, mostly associated with Yvann's dedicated audio-reactive node pack and used heavily in AnimateDiff-era music-video work; one recent example described pushing a ControlNet multiplier from 1.1 to 1.3 and sampler denoise from 0.55 to 0.65 specifically to get audio-driven motion rather than warping artifacts. Amp_audio_Normalized doesn't do the stem separation or the full pipeline those dedicated packs offer, but it gives you the same core primitive - audio in, a usable float out - without installing a second pack, if all you need is amplitude rather than isolated vocals/drums/bass.

The parameters: frame_rate (0–240, default 12) sets how the node chunks the audio timeline into frames - match this to your actual output video's frame rate or the amplitude values won't line up with what you're animating. operation (avg / max / sum, default max) controls how loudness gets summarized within each frame's audio window: avg gives you a smoother, less twitchy curve; max catches transient peaks (a drum hit, a sudden loud moment) even if they're brief, which is why it's the default for anything meant to look reactive rather than smoothed; sum accumulates total energy across the window, which behaves more like a loudness-over-time measure than a peak detector. Two optional fields let you work on a slice of a longer track instead of the whole thing: start_frame (default 0, can go negative) and limit_frames (default 0, meaning no limit - set it to cap how many frames get processed).

The output is a single FLOAT, not a schedule object - so the natural place to send it is AD_sch_value's territory, or directly into any node in your graph that takes a plain float, like a ControlNet strength or an IPAdapter weight input, if you want that one value to update per-frame across an animation rather than staying static for the whole render.

Installing it: ComfyUI Manager, search "ComfyUI-Apt_Preset," or clone directly - cd ComfyUI/custom_nodes && git clone https://github.com/cardenluo/ComfyUI-Apt_Preset - then install.bat and restart. No models to download for this node; it's signal processing on the audio you already have.

Troubleshooting: if the resulting values feel disconnected from your actual video timing, check frame_rate first - it needs to match your render's actual frame rate, not just be "close enough," or the amplitude-to-frame mapping drifts over a longer clip. If the curve feels too jumpy to be usable directly, switch operation from max to avg before adding smoothing elsewhere in your graph - that one change often gets you most of the way to a workable curve on its own.

CategoryApt_Preset/AD

Inputs (5)

NameTypeDefaultDescription
audioAUDIO
frame_rateINT120–240
operationCOMBOmax3 options: avg, max, sum
start_frameoptINT0-100000–100000
limit_framesoptINT00–100000

Outputs (1)

NameTypeDescription
normalized_ampFLOAT