Nodes/petty-paint-comfyui-node/PettyPaintArguments
ComfyUI Node

PettyPaintArguments

Bundle every sampler setting into one wire

By mephisto83·Created 2 years ago·Updated 2 years ago· 3
PettyPaintArguments
  • skip
  • PETTYARGS
add_noiseenable
noise_seed0
steps20
cfg8.0
sampler_name
scheduler
start_at_step0
end_at_step10000
return_with_leftover_noiseenable
denoise1.00

A KSampler has eleven settings you care about - seed, steps, cfg, sampler, scheduler, denoise, noise behavior, start/end steps - and every workflow you copy has them scattered across three nodes with different defaults. PettyPaintArguments collects the whole sampler config into a single bundle: eleven inputs in, one PETTYARGS output out. That bundle is exactly what the pack's PPKSamplerAdvanced node expects, so the pair forms a "configure sampling in one place, sample in another" pattern.

It's an arguments-object pattern ported to the graph, and it shines in two situations. First, when you have one settings source that multiple sampler branches should share - change the steps once, every KSampler picks it up. Second, when a workflow is driven from a hub like the pack's PettyPaintComponent, which outputs steps and denoise picked in the web app; you can wire those into this node and let everything else stay as defaults.

How it works

It's a pure data collector - no sampling happens here. Every input is optional, every one has a sensible default (steps 20, cfg 8.0, denoise 1.0, add_noise/return_with_leftover_noise "enable"), and the node stuffs them all into one dict under the PETTYARGS wildcard type. The sampler downstream unpacks that dict. Because all the inputs are forceInput, you're meant to wire values in from constant nodes or other nodes rather than rely on typing - which is annoying when you just want to tweak a number, but it's what makes the bundle actually sharable across branches.

The inputs that matter

  • steps (1–10000), cfg (0–100), denoise (0–1) - the three you'll touch constantly.
  • sampler_name and scheduler - dropdowns listing the full ComfyUI sampler/scheduler menus (euler, dpmpp_2m, lcm, and all the rest; normal, karras, exponential, …).
  • noise_seed, start_at_step, end_at_step - for advanced/partial sampling.
  • skip - a wildcard passthrough that rides along in the bundle; wire anything through it if you need the sampler branch to carry extra data.
  • Output: PETTYARGS (*), feeding PPKSamplerAdvanced.

Installing it

It ships in the petty-paint pack:

cd ComfyUI/custom_nodes
git clone https://github.com/mephisto83/petty-paint-comfyui-node

Restart ComfyUI, or install via ComfyUI Manager searching "petty-paint-comfyui-node". Declared dependency: Flask==2.1.2, unused here.

Common issues

The trap is expecting this node to sample anything - it doesn't. Wire PETTYARGS into the pack's PPKSamplerAdvanced (or a compatible sampler) or you'll get nothing. Second: every input being forceInput means unwired optional inputs can throw validation errors in some ComfyUI versions, so it's easiest to feed the whole bundle from a small set of constant nodes rather than mix typed values with wired ones. And don't confuse it with PettyPaintKSamplerAdvanced, which does sample and takes a PETTYARGS - this node makes the bundle, that one spends it.

CategoryPettyPaint

Inputs (11)

NameTypeDefaultDescription
add_noiseoptSTRINGenable
skipopt*
noise_seedoptINT00–18446744073709550000
stepsoptINT201–10000
cfgoptFLOAT8.00–100
sampler_nameoptCOMBO34 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +28
scheduleroptCOMBO9 options: normal, karras, exponential, sgm_uniform, simple, ddim_uniform, +3
start_at_stepoptINT00–10000
end_at_stepoptINT100000–10000
return_with_leftover_noiseoptSTRINGenable
denoiseoptFLOAT1.000–1

Outputs (1)

NameTypeDescription
PETTYARGS*