Nodes/JPS Custom Nodes for ComfyUI/Generation Settings Pipe (JPS)
ComfyUI Node

Generation Settings Pipe (JPS)

Unpack the warehouse node into everything downstream needs

By JPS-GER·Created 3 years ago·Updated 2 years ago· 100
Generation Settings Pipe (JPS)
  • 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 shared crop_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/_high thresholds.
  • ZoeDepth ControlNet - zoe_source/_strength/_start/_end.
  • MiDaS ControlNet - midas_source/_strength/_start/_end, plus MiDaS's own _a/_bg tuning values.
  • OpenPose ControlNet - openpose_source/_strength/_start/_end, and separate _body/_face/_hand enable/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.

CategoryJPS Nodes/Pipes

Inputs (1)

NameTypeDefaultDescription
generation_settingsBASIC_PIPE

Outputs (35)

NameTypeDescription
source_crop_poscenter,top,bottom,left,right
source_crop_offsetINT
support_crop_poscenter,top,bottom,left,right
support_crop_offsetINT
crop_intpollanczos,nearest,bilinear,bicubic,area,nearest-exact
img2img_strengthFLOAT
inpaint_strengthFLOAT
inpaint_grow_maskINT
unsampler_strengthFLOAT
unsampler_cfgFLOAT
unsampler_samplereuler,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_schedulernormal,karras,exponential,sgm_uniform,simple,ddim_uniform
cannyedge_sourceINT
cannyedge_strengthFLOAT
cannyedge_startFLOAT
cannyedge_endFLOAT
cannyedge_lowINT
cannyedge_highINT
zoe_sourceINT
zoe_strengthFLOAT
zoe_startFLOAT
zoe_endFLOAT
midas_sourceINT
midas_strengthFLOAT
midas_startFLOAT
midas_endFLOAT
midas_aFLOAT
midas_bgFLOAT
openpose_sourceINT
openpose_strengthFLOAT
openpose_startFLOAT
openpose_endFLOAT
openpose_bodyenable,disable
openpose_faceenable,disable
openpose_handenable,disable