TT KSampler (Advanced)
KSampler with a denoise knob, for when you don't want to start from scratch
- model
- positive
- negative
- latent
- LATENT
Every ComfyUI beginner hits the same wall: the basic KSampler can't do partial denoising. It either generates from full noise or it doesn't, and img2img, inpainting, refiner handoffs, and hires-fix all depend on starting from existing latents and only denoising partway. TT KSampler (Advanced) is this pack's version of the core KSamplerAdvanced, and it exists precisely so you have that control inside the TenserTensor sampler family.
Same inputs as a plain sampler - model, positive, negative, latent, seed, steps, cfg, sampler_name, scheduler - plus the four knobs that make it "advanced."
The knobs that matter
denoise(0–1, default 1.0) - the big one. 1.0 means full generation from noise. 0.5 means "keep half the noise structure and re-run," which is how img2img and latent upscaling actually work. Start there.start_step/last_step(default 0 / 10000) - you're slicing the sampling schedule.start_steptells it where in the denoising timeline to begin,last_stepwhere to stop. Leave both at defaults unless you know what you're doing; the pair is how you'd chain two samplers across one schedule (first sampler does steps 0–12, second takes over 12–25).add_noise(default on) - whether to inject fresh noise at the start. Turn it off when you want a near-identical pass over an existing latent instead of a fresh draw.full_denoise(default off) - whether the final step fully cleans the latent. Combined withdenoise < 1, this is the img2img dial.
Under the hood it calls ComfyUI's comfy.sample.sample with all of those arguments, so the behavior matches what you'd expect from the core advanced sampler. It also wires up ComfyUI's latent-preview callback, so you get the live step-by-step preview in the UI - a small quality-of-life thing that stock samplers have too but is nice to have here.
Where you actually reach for it
The canonical use: load an image, VAEEncode it, run this with denoise at 0.4–0.6, and you've got a one-node img2img that respects composition while re-imagining the details. Same graph structure does latent upscaling - upscale the latent, drop denoise to ~0.5, and it refines instead of re-rolling.
Caveats
It's a legacy V1 node. TenserTensor migrated everything to ComfyUI's API V3 and parked the V1 samplers in Deprecated/ with removal planned for a future major release - it works today, but don't build a workflow you'll never touch again on it if you can avoid it.
Install is the pack standard:
cd ComfyUI/custom_nodes
git clone https://github.com/tenser-tensor/ComfyUI-TenserTensor
or ComfyUI Manager → search "TenserTensor" → install → restart. Deps: gguf, kornia.
Where people get burned: setting start_step beyond last_step (the node won't catch it), and cranking cfg way up on flow-matching models where the pack's default of 1.5 is already sensible. Also remember the latent input - if you leave it feeding from an empty latent factory, denoise still works, but add_noise off will just give you an unchanged latent and a confusing result.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| latent | LATENT | — | |
| add_noise | BOOLEAN | true | — |
| full_denoise | BOOLEAN | false | — |
| seed | INT | 00–18446744073709550000 | — |
| steps | INT | 251–10000 | — |
| start_step | INT | 00–10000 | — |
| last_step | INT | 100000–10000 | — |
| cfg | FLOAT | 1.50–100 | — |
| sampler_name | COMBO | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 | |
| scheduler | COMBO | 9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3 | |
| denoise | FLOAT | 1.000–1 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| LATENT | LATENT | — |