TdxhControlNetApply
ControlNet loader and applier fused, with an off switch
- positive
- negative
- image
- positive
- negative
TdxhControlNetApply fuses the two stock ControlNet nodes - ControlNetLoader and ControlNetApplyAdvanced - into a single node and bolts on an on/off switch. If you're using ControlNet at all, you know the drill: the loader pulls a checkpoint from models/controlnet, and the applier injects that conditioning into your positive and negative at a strength you set, over a start/end range of the sampling. This node just does both in one slot, which is the whole TDXH philosophy in action.
The inputs are the familiar ones: bool_int (the switch), control_net_name (dropdown from your controlnet folder), positive and negative CONDITIONING, the control image, strength (0–10, default 1), start_percent (default 0) and end_percent (default 1). Outputs are positive and negative CONDITIONING, wired downstream into your KSampler like stock.
The mechanism is worth understanding because it explains two behaviors. When bool_int is 0 or strength is 0, the node short-circuits and returns your positive/negative conditioning completely untouched - no model load, no injection. That means "off" costs nothing and you can also mute a ControlNet by sliding strength to 0 instead of flipping the switch. When it's on, it runs the core ControlNetApplyAdvanced logic verbatim: strength scales how strongly the spatial condition steers the UNet, and start/end percent confine the control to a window of the sampling - the classic trick of letting ControlNet dictate composition early (say start 0, end 0.6) and then letting the prompt take over for the fine detail.
Quick ControlNet context if it helps: this is spatial conditioning - edges, depth, pose - where the prompt decides what appears and the ControlNet decides where it goes. You feed it a preprocessed image, not a raw photo, so the usual pairing is TdxhControlNetProcessor (or any preprocessor) → this node → KSampler. One switch per ControlNet makes A/B testing trivial when you're stacking several of them, which is exactly the author's use case.
Installing it
ComfyUI Manager → search tdxh_node_comfyui → install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/youyegit/tdxh_node_comfyui
Restart and it's under TDXH → tdxh_efficiency. You still need the ControlNet checkpoint files themselves in models/controlnet - the node doesn't download those. Hobbyist pack, GPL-3.0; the README warns nodes can change between versions, and since this one wraps stock logic, an update could theoretically lag a ComfyUI change - the fix is always the stock node.
The honest take
If your graph is already dense with ControlNets, halving their node count is real clutter relief. If you only use one, stock is fine and you'll lose nothing by skipping this. It's a convenience node, not a new capability - but the "off means the graph still runs" property is genuinely handy for testing.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| bool_int | INT | 10–1 | — |
| control_net_name | COMBO | 0 options: | |
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| image | IMAGE | — | |
| strength | FLOAT | 1.000–10 | — |
| start_percent | FLOAT | 0.0000–1 | — |
| end_percent | FLOAT | 1.0000–1 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| positive | CONDITIONING | — |
| negative | CONDITIONING | — |