Wave ControlNet Controller
Pump ControlNet strength along the wave
- wave_config
- wave_config
A ControlNet applied at a constant strength across an animation is how you get a video that's stuck to its conditioning image like glue - edges that never stop dominating every frame. Wave ControlNet Controller exists to break that grip by making the ControlNet strength, and its start/end influence window, breathe along the wave cycle. One frame the structure holds hard; a few frames later it loosens and the prompt gets to drive.
What it does
This is a pure config-enrichment node: wave_config in, wave_config out. It stamps ControlNet modulation parameters onto the config, and the sampler evaluates them per frame - same wave clock as everything else in the graph. The inputs are six floats, in min/max pairs:
- strength_min / strength_max - the range the ControlNet strength oscillates between (defaults 0.5 → 1.0). Max is the control at full pull; min is where it lets go.
- start_at_min / start_at_max - the range for when the ControlNet starts influencing each frame's denoise, as a fraction of the sample (0–1).
- end_at_min / end_at_max - the range for when it stops influencing. Defaults are 1.0/1.0, meaning it holds through the whole sample; pull the max down (say to 0.5) and the control releases partway through every frame, letting the model add its own detail late in the sample.
That last pair is the one that matters most, honestly. The community's standing advice for structure-heavy work - from the ControlNet playbook - is to release the condition once composition has formed rather than ride it through every step. The wave just does that on a schedule instead of a fixed setting.
Where it sits
The chain is: Wave ControlNet Apply → Wave ControlNet Controller → sampler. The Apply node attaches the ControlNet; this node modulates it. You can use the Apply node without this one (strength stays at whatever base value), but this controller is what makes the control breathe. It takes the enriched config from the Apply node and hands the modulated config to the sampler.
Installing it
Part of kentskooking-nodes: ComfyUI Manager → search kentskooking-nodes → install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/Kentskooking/kentskooking-nodes
Restart after. No models, no extra deps.
Tuning notes
Start from the defaults (0.5–1.0 strength, hold-through end). If the animation reads as "controlled to death," widen the strength range or drop end_at_max toward 0.6 so each frame frees up late. If structure vanishes, you've gone too far - raise strength_min. One warning: this node only affects ControlNets attached through Wave ControlNet Apply. A ControlNet applied with a stock ControlNet Apply node won't be touched, because the sampler never sees it. Keep the whole control path inside the pack's nodes.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| wave_config | WAVE_CONFIG | — | |
| strength_min | FLOAT | 0.500–10 | — |
| strength_max | FLOAT | 1.000–10 | — |
| start_at_min | FLOAT | 0.0000–1 | — |
| start_at_max | FLOAT | 0.0000–1 | — |
| end_at_min | FLOAT | 1.0000–1 | — |
| end_at_max | FLOAT | 1.0000–1 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| wave_config | WAVE_CONFIG | — |