Generation Settings Pipe (JPS)
Unpack the warehouse node into everything downstream needs
- generation_settings
- source_crop_pos
- source_crop_offset
- support_crop_pos
- support_crop_offset
- crop_intpol
- img2img_strength
- inpaint_strength
- inpaint_grow_mask
- unsampler_strength
- unsampler_cfg
- unsampler_sampler
- unsampler_scheduler
- cannyedge_source
- cannyedge_strength
- cannyedge_start
- cannyedge_end
- cannyedge_low
- cannyedge_high
- zoe_source
- zoe_strength
- zoe_start
- zoe_end
- midas_source
- midas_strength
- midas_start
- midas_end
- midas_a
- midas_bg
- openpose_source
- openpose_strength
- openpose_start
- openpose_end
- openpose_body
- openpose_face
- openpose_hand
The companion to Generation Settings (JPS) - the biggest node in this whole pack, the one that bundles img2img strength, inpainting, unsampling, and full Canny/ZoeDepth/MiDaS/OpenPose ControlNet preprocessor settings into a single generation_settings wire. This node is what takes that bundle apart again. Same Settings/Pipe split every other menu in this pack uses, just at a much larger scale: instead of four or six outputs, you get close to thirty.
What comes out of it
One input, generation_settings, typed BASIC_PIPE (JPS's own bundle - a plain tuple, not Impact Pack's object of the same type name). The outputs sort into the same sections the Settings node groups its inputs into:
- Source/support crop -
source_crop_pos/source_crop_offset,support_crop_pos/support_crop_offset, and a sharedcrop_intpol- how your two candidate reference images get cropped and resized. - Img2img / inpaint -
img2img_strength,inpaint_strength,inpaint_grow_mask. - Unsampling -
unsampler_strength,unsampler_cfg,unsampler_sampler,unsampler_scheduler- parameters for running the diffusion process in reverse (converting an image into a matching noisy latent) rather than a plain forward noise-add, a technique some img2img and style-transfer workflows lean on for higher fidelity. - Canny ControlNet -
cannyedge_source/_strength/_start/_end, plus the edge-detection_low/_highthresholds. - ZoeDepth ControlNet -
zoe_source/_strength/_start/_end. - MiDaS ControlNet -
midas_source/_strength/_start/_end, plus MiDaS's own_a/_bgtuning values. - OpenPose ControlNet -
openpose_source/_strength/_start/_end, and separate_body/_face/_handenable/disable toggles.
This node does none of the actual work - no cropping, no sampling, no ControlNet application. It's routing, full stop, handing each value to whichever specific downstream node is built to consume it.
You almost certainly don't need to wire all of it
Given how many outputs this node has, the natural question is whether you're expected to connect every single one every time. You're not. Generation Settings (JPS) exists for workflows that switch between modes - plain img2img one run, Canny ControlNet the next, inpainting after that - without rebuilding the graph each time, so it holds settings for every mode simultaneously. This pipe unpacks all of them, but on any given run only the branch that's actually active (via whatever switch logic you've built elsewhere) needs its outputs connected to something real. Leave the rest dangling; unused optional outputs cost nothing.
Installing it
ComfyUI Manager, search "JPS Custom Nodes for ComfyUI," or:
cd ComfyUI/custom_nodes
git clone https://github.com/JPS-GER/ComfyUI_JPS-Nodes.git
Restart, find it under JPS Nodes/Pipes. This is a routing node with no models of its own - but the ControlNet sections it unpacks assume you've separately installed ComfyUI's ControlNet Auxiliary Preprocessors pack for the actual Canny/ZoeDepth/MiDaS/OpenPose detection nodes.
Where people get tripped up
The scale is the whole hazard here. It's easy to lose track of which outputs actually matter for the branch you're editing and end up chasing a value that's connected to a section you're not using - check that a given output's section matches the mode currently active in your switch logic before assuming a wire is wrong. If nothing at all is coming out, confirm there's a Generation Settings (JPS) node upstream actually feeding generation_settings - without it, this pipe has nothing to unpack. And given the size of this node's schema, if you're only ever running one mode (say, just img2img, never touching ControlNet), the smaller scoped-down pairs - ImageToImage Settings/Pipe (JPS) for just the img2img/inpaint/unsampler section - are simpler tools for that narrower job.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| generation_settings | BASIC_PIPE | — |
Outputs (35)
| Name | Type | Description |
|---|---|---|
| source_crop_pos | center,top,bottom,left,right | — |
| source_crop_offset | INT | — |
| support_crop_pos | center,top,bottom,left,right | — |
| support_crop_offset | INT | — |
| crop_intpol | lanczos,nearest,bilinear,bicubic,area,nearest-exact | — |
| img2img_strength | FLOAT | — |
| inpaint_strength | FLOAT | — |
| inpaint_grow_mask | INT | — |
| unsampler_strength | FLOAT | — |
| unsampler_cfg | FLOAT | — |
| unsampler_sampler | euler,euler_ancestral,heun,heunpp2,dpm_2,dpm_2_ancestral,lms,dpm_fast,dpm_adaptive,dpmpp_2s_ancestral,dpmpp_sde,dpmpp_sde_gpu,dpmpp_2m,dpmpp_2m_sde,dpmpp_2m_sde_gpu,dpmpp_3m_sde,dpmpp_3m_sde_gpu,ddpm,lcm,ddim,uni_pc,uni_pc_bh2 | — |
| unsampler_scheduler | normal,karras,exponential,sgm_uniform,simple,ddim_uniform | — |
| cannyedge_source | INT | — |
| cannyedge_strength | FLOAT | — |
| cannyedge_start | FLOAT | — |
| cannyedge_end | FLOAT | — |
| cannyedge_low | INT | — |
| cannyedge_high | INT | — |
| zoe_source | INT | — |
| zoe_strength | FLOAT | — |
| zoe_start | FLOAT | — |
| zoe_end | FLOAT | — |
| midas_source | INT | — |
| midas_strength | FLOAT | — |
| midas_start | FLOAT | — |
| midas_end | FLOAT | — |
| midas_a | FLOAT | — |
| midas_bg | FLOAT | — |
| openpose_source | INT | — |
| openpose_strength | FLOAT | — |
| openpose_start | FLOAT | — |
| openpose_end | FLOAT | — |
| openpose_body | enable,disable | — |
| openpose_face | enable,disable | — |
| openpose_hand | enable,disable | — |