Apply Advanced ControlNet(1) ππ π π
Single-conditioning ControlNet in ComfyUI
- conditioning
- control_net
- image
- mask_optional
- timestep_kf
- latent_kf_override
- weights_override
- model_optional
- vae_optional
- CONDITIONING
- model_opt
This is the node that actually applies a ControlNet to your conditioning - the single-conditioning variant. Where the classic Apply ControlNet takes both positive and negative conditioning, this one takes a single conditioning stream. That's the shape newer architectures want: Flux and SD3-style pipelines route one conditioning, so the "(1)" version is what you wire into those graphs.
More importantly, it's the node that unlocks everything else in this pack. Advanced-ControlNet's scheduling, custom weights, and - the big one - sliding-context-window support for AnimateDiff only kick in when at least one Advanced apply (or loader) node is in the graph. Drop a vanilla ControlNet into an Advanced Apply and it gets auto-converted to the Advanced version on the fly. No conversion node, no ceremony.
What it does under the hood
It attaches a loaded ControlNet to your conditioning with the standard strength and start/end controls, then - if you've wired them - layers on the pack's extras: timestep keyframes, latent keyframes, custom per-block weights, and attention masks. The KB's one-line summary of why this matters: an edit model has no controlnet_conditioning_scale and no start/end step, so you cannot ask it for 40% of a pose. This node is where you get that dial.
Inputs and outputs that matter
The required set is the ControlNet basics:
- conditioning - your single conditioning stream (out of CLIP Text Encode, usually).
- control_net - the loaded ControlNet; auto-upgraded to Advanced here.
- image - the preprocessed control image (canny map, depth map, pose, etc.). One image applies to all latents; a batch applies frame-by-frame.
- strength / start_percent / end_percent - how hard, and the sampling-percentage window it applies over. Ending control around 0.5 is the standard "lock composition, then let go" trick.
The optionals are where the pack's power lives: mask_optional (attention mask - where the ControlNet applies), timestep_kf (schedule across steps), latent_kf_override and weights_override (apply latent keyframes / custom weights to all timesteps without a full keyframe chain), and model_optional / vae_optional for the newer ControlNets that need the model or a VAE handed to them.
Outputs: CONDITIONING (now carrying the ControlNet, wire it to your sampler) and model_opt, which passes the model through when you supplied one via model_optional - connect it onward so any model-side patching survives.
Installing the pack
ComfyUI Manager β search "ComfyUI-Advanced-ControlNet" β install β restart. Or cd ComfyUI/custom_nodes && git clone https://github.com/Kosinkadink/ComfyUI-Advanced-ControlNet then restart. Pure ComfyUI, nothing heavy to compile. Kosinkadink's pack, actively maintained. It ships no preprocessors (comfyui_controlnet_aux handles those) and no ControlNet checkpoints - those go in ComfyUI/models/controlnet.
Common gotchas
The image input expects an already preprocessed map if your ControlNet needs one - feed a canny model a raw photo and you'll get mush. Run it through the matching preprocessor first.
The override inputs are a documented trap worth repeating: latent_kf_override and weights_override apply to all timesteps and ignore anything attached to your timestep keyframes. They're the shortcut for when you don't need a full schedule; if you do have a keyframe chain, don't also fill the overrides or they'll quietly take over. And the usual reminder: use this single-conditioning node for one-conditioning pipelines; if your graph has separate positive and negative conditioning, the regular pos/neg Apply Advanced ControlNet is the better fit.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| conditioning | CONDITIONING | β | |
| control_net | CONTROL_NET | β | |
| image | IMAGE | β | |
| strength | FLOAT | 1.000β10 | β |
| start_percent | FLOAT | 0.0000β1 | β |
| end_percent | FLOAT | 1.0000β1 | β |
| mask_optionalopt | MASK | β | |
| timestep_kfopt | TIMESTEP_KEYFRAME | β | |
| latent_kf_overrideopt | LATENT_KEYFRAME | β | |
| weights_overrideopt | CONTROL_NET_WEIGHTS | β | |
| model_optionalopt | MODEL | β | |
| vae_optionalopt | VAE | β |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| CONDITIONING | CONDITIONING | β |
| model_opt | MODEL | β |