JLC Dynamic Aux Preprocessor Wrapper
One image in, ten ControlNet hints out
- image
- image_01
- image_02
- image_03
- image_04
- image_05
- image_06
- image_07
- image_08
- image_09
- image_10
A good multi-ControlNet workflow almost always starts from the same source image: you run it through HED for edges, a depth estimator, a normal map, and suddenly your canvas has four separate hint images that all have to become ControlNet conditions. The default ComfyUI way is one preprocessor node per hint, wired across the graph. JLC Dynamic Aux Preprocessor Wrapper (from Damkohler's jlc-comfyui-nodes pack) does the same thing in a single node: one IMAGE in, up to ten preprocessed hints out.
It's a thin, deliberately limited convenience layer. The actual preprocessors come from Fannovel16's comfyui_controlnet_aux package - the JLC node just gives you a compact multi-slot front end over the simple ones. It doesn't replace the upstream nodes and doesn't claim the preprocessors as its own.
What it exposes (and what it won't)
The wrapper only offers preprocessors that fit a strict shape: IMAGE in, optional shared resolution, IMAGE out. That means the friendly lineup - HED, TEED, Anime Line Art, Manga2Anime, Any Line Art, Binary, and the depth family (Zoe, Depth Anything, Depth Anything V2, MiDaS) - is in, and anything parameter-heavy or with special outputs is deliberately out. Canny thresholds, OpenPose/DWPose keypoint JSON, SAM, segmentation payloads: those keep their controls in their native ControlNet Aux nodes, because a compact wrapper would have to hide the knobs that make them useful.
Per slot, set preprocessor_XX to one of the ~25 available options, or leave it DISABLED. slot_count (1–10) decides how many slots actually run; rows above it are ignored even if their serialized values linger in the workflow JSON. resolution is shared across all active slots - one size fits all, which is the tradeoff you accept for the compact UI. Default 512; raise it if your hints come out mushy.
Outputs are ten IMAGE sockets, image_01 through image_10. Slots that aren't active emit a None absent-image signal - which matters if you're feeding the JLC ControlNet Orchestrator, since it treats a None image as "skip this slot."
Installing it - the one real dependency
The pack installs normally, but this node does not work alone:
cd ComfyUI/custom_nodes
git clone https://github.com/Damkohler/jlc-comfyui-nodes.git
Then install Fannovel16's comfyui_controlnet_aux via ComfyUI Manager (search "controlnet aux") or from its repo, and restart. DISABLED slots are safe no-ops without it, but the moment an active slot runs it raises an error telling you the dependency is missing. Plan ahead: several preprocessors (Depth Anything especially) download a sizable aux model on first use, so your first run through a new preprocessor will be slow and needs internet.
Where people get burned
The two classic misses: forgetting the aux dependency (see above), and expecting Canny or OpenPose in the dropdown. Neither will be there - that's by design, not a broken install. And remember the shared resolution applies to every slot, so a slot that needs high detail is held hostage by the lowest common denominator. When one hint genuinely needs its own settings, that's the signal to reach for the native ControlNet Aux node instead of fighting the wrapper.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| slot_count | INT | 11–10 | Number of visible/executed aux preprocessor slots. |
| resolution | INT | 51264–16384 | Dynamic multi-slot wrapper for image-in/image-out preprocessors provided by Fannovel16's comfyui_controlnet_aux package. The node exposes preprocessors with IMAGE input, optional shared resolution, IMAGE-only output, and defaultable extra parameters. Special-output nodes should use their native ControlNet Aux nodes instead. |
| preprocessor_01 | COMBO | DISABLED | Dynamic multi-slot wrapper for image-in/image-out preprocessors provided by Fannovel16's comfyui_controlnet_aux package. The node exposes preprocessors with IMAGE input, optional shared resolution, IMAGE-only output, and defaultable extra parameters. Special-output nodes should use their native ControlNet Aux nodes instead. |
| preprocessor_02 | COMBO | DISABLED | Dynamic multi-slot wrapper for image-in/image-out preprocessors provided by Fannovel16's comfyui_controlnet_aux package. The node exposes preprocessors with IMAGE input, optional shared resolution, IMAGE-only output, and defaultable extra parameters. Special-output nodes should use their native ControlNet Aux nodes instead. |
| preprocessor_03 | COMBO | DISABLED | Dynamic multi-slot wrapper for image-in/image-out preprocessors provided by Fannovel16's comfyui_controlnet_aux package. The node exposes preprocessors with IMAGE input, optional shared resolution, IMAGE-only output, and defaultable extra parameters. Special-output nodes should use their native ControlNet Aux nodes instead. |
| preprocessor_04 | COMBO | DISABLED | Dynamic multi-slot wrapper for image-in/image-out preprocessors provided by Fannovel16's comfyui_controlnet_aux package. The node exposes preprocessors with IMAGE input, optional shared resolution, IMAGE-only output, and defaultable extra parameters. Special-output nodes should use their native ControlNet Aux nodes instead. |
| preprocessor_05 | COMBO | DISABLED | Dynamic multi-slot wrapper for image-in/image-out preprocessors provided by Fannovel16's comfyui_controlnet_aux package. The node exposes preprocessors with IMAGE input, optional shared resolution, IMAGE-only output, and defaultable extra parameters. Special-output nodes should use their native ControlNet Aux nodes instead. |
| preprocessor_06 | COMBO | DISABLED | Dynamic multi-slot wrapper for image-in/image-out preprocessors provided by Fannovel16's comfyui_controlnet_aux package. The node exposes preprocessors with IMAGE input, optional shared resolution, IMAGE-only output, and defaultable extra parameters. Special-output nodes should use their native ControlNet Aux nodes instead. |
| preprocessor_07 | COMBO | DISABLED | Dynamic multi-slot wrapper for image-in/image-out preprocessors provided by Fannovel16's comfyui_controlnet_aux package. The node exposes preprocessors with IMAGE input, optional shared resolution, IMAGE-only output, and defaultable extra parameters. Special-output nodes should use their native ControlNet Aux nodes instead. |
| preprocessor_08 | COMBO | DISABLED | Dynamic multi-slot wrapper for image-in/image-out preprocessors provided by Fannovel16's comfyui_controlnet_aux package. The node exposes preprocessors with IMAGE input, optional shared resolution, IMAGE-only output, and defaultable extra parameters. Special-output nodes should use their native ControlNet Aux nodes instead. |
| preprocessor_09 | COMBO | DISABLED | Dynamic multi-slot wrapper for image-in/image-out preprocessors provided by Fannovel16's comfyui_controlnet_aux package. The node exposes preprocessors with IMAGE input, optional shared resolution, IMAGE-only output, and defaultable extra parameters. Special-output nodes should use their native ControlNet Aux nodes instead. |
| preprocessor_10 | COMBO | DISABLED | Dynamic multi-slot wrapper for image-in/image-out preprocessors provided by Fannovel16's comfyui_controlnet_aux package. The node exposes preprocessors with IMAGE input, optional shared resolution, IMAGE-only output, and defaultable extra parameters. Special-output nodes should use their native ControlNet Aux nodes instead. |
Outputs (10)
| Name | Type | Description |
|---|---|---|
| image_01 | IMAGE | — |
| image_02 | IMAGE | — |
| image_03 | IMAGE | — |
| image_04 | IMAGE | — |
| image_05 | IMAGE | — |
| image_06 | IMAGE | — |
| image_07 | IMAGE | — |
| image_08 | IMAGE | — |
| image_09 | IMAGE | — |
| image_10 | IMAGE | — |