FL Audio Reactive Brightness
Pulse a video's exposure on the beat
- frames
- mask
- frames
The most direct member of Fill-Nodes' "apply an envelope to pixels" family: it multiplies every frame's pixel values by a brightness factor derived from an audio envelope, at that exact frame. Give it a kick-drum envelope and you get a video that visibly brightens on every kick - a beat-synced pulse without going all the way to a hard black/white strobe.
How it works
For each frame, the node reads the corresponding value in envelope_json and computes a brightness multiplier from it, then applies that multiplier to the frame's pixels. base_brightness sets the resting exposure before any envelope is applied; brightness_intensity controls how much the envelope actually swings that value. The two invert-style controls are worth understanding separately because they do different things: invert flips the envelope curve itself (loud moments become dim instead of bright), while a negative brightness_intensity flips the direction of the swing (envelope still peaks where the audio peaks, but the pulse pushes brightness down instead of up). Combined, those give you four distinct pulse behaviors - worth trying side by side rather than guessing.
The inputs and outputs that matter
Required: frames, envelope_json - feed it one of the three outputs from FL_Audio_Reactive_Envelope (kick, snare, or hi-hat) depending on which hit you want driving the pulse.
Optional: mask - restrict the brightness pulse to a masked region, leaving the rest of the frame static; base_brightness (0–3, default 1); brightness_intensity (-1 to 1, default 0.15 - the knob that actually controls pulse strength, not base_brightness); invert; clamp_output (default true - keeps values in valid range; leave this on unless you specifically want blown-out pixels feeding into a downstream HDR-style effect).
Output: frames.
How to install it
ComfyUI Manager: search ComfyUI_Fill-Nodes, install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/filliptm/ComfyUI_Fill-Nodes
then restart. No extra dependencies beyond torch - the audio analysis work happens upstream in FL_Audio_Drum_Detector and FL_Audio_Reactive_Envelope.
Common issues & troubleshooting
Effect too subtle or too extreme. Adjust brightness_intensity, not base_brightness - the latter just shifts overall exposure, it doesn't change how much the beat pushes it.
Pulse doesn't feel synced to the actual beat. Double-check you're feeding the right envelope output for the drum type you want - a hi-hat envelope driving this on a slow ballad gives a busy, flickery pulse instead of a punchy one tied to the downbeat. If the mismatch feels timing-related rather than drum-type-related, verify FL_Audio_Reactive_Envelope's fps matches your actual output framerate - that's the far more common cause of a pulse that just feels "off."
Highlights clip and lose detail. That's clamp_output doing its job at the top end of the range combined with a high base_brightness plus a positive brightness_intensity pushing well past 1.0 on peaks - pull base_brightness down closer to 1 if you want headroom for the pulse to actually read as a brightening rather than a flat white flash.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| frames | IMAGE | — | |
| envelope_json | STRING | — | |
| maskopt | IMAGE | — | |
| base_brightnessopt | FLOAT | 1.000–3 | — |
| brightness_intensityopt | FLOAT | 0.15-1–1 | — |
| invertopt | BOOLEAN | false | — |
| clamp_outputopt | BOOLEAN | true | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| frames | IMAGE | — |