Latent Channel Offset (CCN)
The A1111 channel-offset slider, reborn as a node
- latent
- latent
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.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| latent | LATENT | — | |
| channel_0 | FLOAT | 0.00 | — |
| channel_1 | FLOAT | 0.00 | — |
| channel_2 | FLOAT | 0.00 | — |
| channel_3 | FLOAT | 0.00 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| latent | LATENT | — |