Nodes/Arctenoxs-Essentials_ComfyUI/KSampler (Arctenox's Essentials)
ComfyUI Node

KSampler (Arctenox's Essentials)

KSampler (Arctenox's Essentials)

By Arctenox·Created 8 months ago·Updated 2 months ago· 1
KSampler (Arctenox's Essentials)
  • model
  • positive
  • negative
  • latent_image
  • optional_vae
  • script
  • MODEL
  • CONDITIONING+
  • CONDITIONING-
  • LATENT
  • VAE
  • IMAGE
  • seed_used
  • steps
  • cfg
  • sampler_name
  • scheduler
width960
height1280
batch_size1
seed0
sonar0
steps25
cfg4.00
sampler_name
scheduler
denoise1.00
vae_decode

The classic beginner graph is Checkpoint → two CLIP Text Encode nodes → Empty Latent Image → KSampler → VAE Decode. This node collapses two of those steps into one. It's a stock KSampler that builds its own empty latent from a width, height and batch size, so you can go straight from conditioning into sampling without the Empty Latent node sitting in your way.

There's a second, sneakier reason people reach for it: it also passes out the parameters it just used - actual steps, cfg, sampler_name, scheduler - as wireable outputs, plus a seed_used that tells you the seed it really sampled with. That's the kind of thing that makes metadata workflows and batch setups a lot less fiddly.

How it works

The mechanism is unglamorous in the best way. When you give it no latent, it creates a zeros tensor shaped [batch, 4, height/8, width/8] - exactly what Empty Latent Image builds, at the usual 8× latent downsampling - then runs ComfyUI's standard comfy.sample.sample path. "No Empty Latent node" isn't a different sampler, it's just the same sampling with the latent construction folded in. If you plug a latent_image in instead, it happily becomes an img2img node and denoise suddenly matters.

The extras are where the author's personality shows up:

  • Sonar. A sonar of 0 is a pure pass-through. Any other value deterministically transforms the seed using golden-ratio math (φ⁻¹ ≈ 0.618), so you get related-but-different variations you can reproduce. seed_used tells you what was actually sampled after the transform, which is a genuinely nice touch.
  • Negative seeds get hashed into a deterministic positive space instead of misbehaving.
  • CFG and step safety rails. Values beyond sane ranges get scaled or capped rather than blowing up. Honest caveat: the widget sliders top out at 100 CFG and 10,000 steps, so this mostly matters if you hand-edit the workflow JSON.

The inputs that matter

model, positive, negative are obvious. Then it's mostly the normal sampler set, and these are the ones a beginner actually touches:

  • width, height, batch_size - defaults are 960×1280×1, a portrait SDXL-ish canvas, stepped by 8. This is your Empty Latent replacement.
  • seed and sonar - leave sonar at 0 until you're curious.
  • steps, cfg, sampler_name, scheduler, denoise - same dials as the stock KSampler. Default cfg is 4, which is in the right zone for SDXL-lineage models; on guidance-distilled models you'll be dropping it toward 1.
  • vae_decode - decode to IMAGE inside the node or not. Leave it off and feed the LATENT output into a refiner for a hi-res fix.

The outputs worth wiring

  • LATENT and IMAGE (IMAGE only exists if vae_decode is on).
  • MODEL, CONDITIONING+, CONDITIONING-, VAE pass-throughs - handy when you want to run a second pass with the same model and conditionings without rerouting everything.
  • seed_used, steps, cfg, sampler_name, scheduler - metadata outputs that slot into Save Image With Metadata or your own logging.

Install

Via ComfyUI Manager, search Arctenox's Essentials and install, then restart. Or manually:

cd ComfyUI/custom_nodes/
git clone https://github.com/Arctenox/Arctenoxs-Essentials_ComfyUI

Then restart ComfyUI. Dependencies are just torch and numpy, plus psutil for CPU memory monitoring - no model downloads, no heavy install.

Gotchas

  • Cancelling a running generation can throw "Sampling failed: . Check that all inputs are valid tensors." The README says this is expected on cancel, safe to ignore, and can't be suppressed. Don't chase it.
  • Keep sonar under about ±1,000,000; the author warns huge values get unpredictable.
  • The pack itself is flagged DEPRECATED - Arctenox plans to remaster this stuff into a new combined pack. It works fine today, but don't build a workflow you'll need to maintain for years on it.
CategoryArctenox Essentials/Sampling

Inputs (17)

NameTypeDefaultDescription
modelMODEL
positiveCONDITIONING
negativeCONDITIONING
widthINT96064–8192
heightINT128064–8192
batch_sizeINT11–64
seedINT0-9223372036854776000–18446744073709550000
sonarINT0-18446744073709550000–18446744073709550000
stepsINT251–10000
cfgFLOAT4.000–100
sampler_nameCOMBO44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
schedulerCOMBO9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
denoiseFLOAT1.000–1
vae_decodeCOMBO2 options: true, false
latent_imageoptLATENT
optional_vaeoptVAE
scriptoptSCRIPT

Outputs (11)

NameTypeDescription
MODELMODEL
CONDITIONING+CONDITIONING
CONDITIONING-CONDITIONING
LATENTLATENT
VAEVAE
IMAGEIMAGE
seed_usedINT
stepsINT
cfgFLOAT
sampler_nameSTRING
schedulerSTRING