Nodes/ComfyCollectorNodes/Latent Channel Offset (CCN)
ComfyUI Node

Latent Channel Offset (CCN)

The A1111 channel-offset slider, reborn as a node

By valkymaera·Created 4 months ago·Updated 10 days ago· 1
Latent Channel Offset (CCN)
  • latent
  • latent
channel_00.00
channel_10.00
channel_20.00
channel_30.00

This node is a direct descendant of the author's first release: back in 2025, before ComfyUI, they published an Automatic1111 extension called Channel Noise Offset with sliders that let you nudge the latent noise channels directly before generation - "to bring out features in most models that might be difficult to get from prompts and emphasis alone, such as darker darks and brighter brights." Someone in the thread asked for a ComfyUI version, and here it is: four sliders, one per latent channel, each adding an offset to that channel's values.

The rationale is the same one the pack leans on throughout: latents are compressed representations, and each channel carries rough semantic weight, not just color. The source's channel notes for SD 1.5/SDXL are worth quoting because they set expectations:

  • channel_0 - cyan-red axis, brightness/openness
  • channel_1 - magenta-green, structural elements
  • channel_2 - yellow-blue tones
  • channel_3 - luminance/contrast

Add a positive offset and you push toward one end of that channel's spectrum; negative pushes the other way. Crucially, the effects are "abstract and semantic, not just color shifts" - which is the whole appeal and the whole frustration. You can pull darker darks and brighter brights out of a model that won't do it via prompting, but you can't reliably predict what a given offset does on a given model. That's tinker territory by design.

How to drive it

Wire a latent in, move the four floats, get a latent out - nothing else to configure. Start with ±0.5 to ±1.0 on one channel at a time, inspect, iterate. Because the offsets apply before the sampler, this is a pre-generation tool: drop it between your latent source and the sampler, not after.

One genuine gotcha: unlike the pack's Latent Clamp and Normalize, the channel nodes rebuild the latent dict as just {"samples": ...}, so extra keys like noise_mask (used by inpainting) are not carried through. If you're running masked workflows, put these nodes somewhere a mask doesn't need to survive, or prepare to re-add the mask downstream. The x16 and Scale siblings share the same behavior.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/valkymaera/ComfyCollectorNodes

restart, or Manager → ComfyCollectorNodes. No models, no deps beyond torch. The x16 variant exists for 16-channel models like Wan; the Scale variants multiply channels instead of adding to them. For SD 1.5/SDXL and their 4-channel derivatives, this node is the one you want.

CategoryComfyCollectorNodes/Latent

Inputs (5)

NameTypeDefaultDescription
latentLATENT
channel_0FLOAT0.00
channel_1FLOAT0.00
channel_2FLOAT0.00
channel_3FLOAT0.00

Outputs (1)

NameTypeDescription
latentLATENT