OCSNoise Conditioning
Add noise to your prompt embeddings
- conditioning
- custom_noise
- CONDITIONING
Most noise experiments target the latent: the image in training space. This node targets something stranger - the conditioning itself. OCSNoise Conditioning takes a CONDITIONING (your prompt embeddings, the thing that comes out of a CLIP encode) and injects noise into it before sampling. Done subtly, perturbing prompt embeddings is a known trick for breaking the model out of a rut or nudging composition; done carelessly, it just wrecks your prompt adherence. This node gives you an enormous amount of control over exactly how that perturbation happens.
What it is
A conditioning transformer in the OCS noise family. It generates noise shaped to match your conditioning tensors, blends it in, and returns modified CONDITIONING. It's filed under the sd category rather than the OCS noise section, which tells you it's the odd one out - it doesn't produce noise for samplers, it produces noised prompt data. You'd wire it between your CLIP Text Encode output and your sampler's conditioning input.
The inputs that matter
You don't need to know all 27 of these - the node splits everything into a regular conditioning part and a pooled conditioning part (the SDXL/SD3 pooled vector that also steers generation), and both follow the same pattern.
conditioning(required) - the conditioning to noise.seed(required) - seeds the generated noise, same as everywhere in OCS.blendandpooled_blend(both default 0.01) - how much noise to add, as a percentage where 1.0 = 100%. At 0.01 you're adding one percent noise - a nudge. This is the dial to start with.blend_mode/pooled_blend_mode(defaultinject) - how noise combines with the conditioning:inject(just add it),lerp,a_only,b_only.noise_strength/pooled_noise_strength(default 1) - the strength of the generated noise before blending.conditioning_multiplier/pooled_conditioning_multiplier(default 1) - scale the conditioning itself, independent of the noise.start_time/end_time- as a percentage of sampling, plustime_mode(relaxedvsstrict) controlling how overlap is judged. This lets you noise the prompt only during part of the denoise.custom_noise(optional) - a custom noise generator; default is gaussian.cpu_noise,normalize,fake_channels- the standard noise hygiene controls.
The single CONDITIONING output goes back into your sampling pipeline.
Why you'd bother
Prompt-embedding noise is a niche but real technique in the r/StableDiffusion bag of tricks - it's sometimes used as a "free randomness" lever for getting variety from the same prompt, or as a way to weaken a too-strong prompt. The item_start/item_end and slice_start/slice_end pairs even let you target specific conditioning items or slices of the noise chunk. That's deep power, but the honest advice is: start with blend and pooled_blend near 0.01, look at what changes, and only then start slicing.
Installing and gotchas
Part of the pack - Manager search "Overly Complicated Sampling" or git clone https://github.com/blepping/comfyui_overly_complicated_sampling into ComfyUI/custom_nodes, restart. No models or mandatory deps. The gotcha is philosophical: noise on conditioning is far less forgiving than noise on latents. A blend that looks tiny can still measurably change a generation, so keep the default 0.01 and move in small steps. And remember inject just adds - if you want the blend to respect the conditioning's magnitude, lerp is the more controlled option.
Inputs (25)
| Name | Type | Default | Description |
|---|---|---|---|
| conditioning | CONDITIONING | Input conditioning to be noised. | |
| seed | INT | 00–18446744073709550000 | Seed to use for generated noise. |
| blend | FLOAT | 0.01-10000–10000 | Blend strength of noise to be added to conditioning as a percentage where 1.0 would indicate 100%. |
| pooled_blend | FLOAT | 0.01-10000–10000 | Blend strength of noise to be added to pooled conditioning as a percentage where 1.0 would indicate 100%. |
| blend_mode | COMBO | inject | Blending function used when combining noise with the conditioning. inject just adds it. |
| pooled_blend_mode | COMBO | inject | Blending function used when combining noise with the pooled conditioning. inject just adds it. |
| noise_strength | FLOAT | 1.00-10000–10000 | Strength of the generated noise to be added to conditioning. |
| pooled_noise_strength | FLOAT | 1.00-10000–10000 | Strength of the generated noise to be added to pooled conditioning. |
| conditioning_multiplier | FLOAT | 1.00-10000–10000 | Multiplier applied to conditioning tensors. |
| pooled_conditioning_multiplier | FLOAT | 1.00-10000–10000 | Multiplier applied to pooled conditioning tensors. |
| time_mode | COMBO | relaxed | Controls time matching. Strict requires a conditioning item to be fully within the start/end range while relaxed just requires it to have overlap with the range. For example, if the time range is 0.2 through 0.5 and the conditioning item is 0.0 through 0.4 then strict mode would not match. |
| start_time | FLOAT | 0.000–1 | Conditioning item start time as a percentage of sampling. |
| end_time | FLOAT | 1.000–1 | Conditioning item end time as a percentage of sampling. |
| item_start | FLOAT | 0.000–1 | Conditioning item start as a percentage of the total number of conditioning items. |
| item_end | FLOAT | 1.000–1 | Conditioning item end as a percentage of the total number of conditioning items. |
| pooled_item_start | FLOAT | 0.000–1 | Conditioning pooled output item start as a percentage of the total number of conditioning items. |
| pooled_item_end | FLOAT | 1.000–1 | Conditioning pooled output item end as a percentage of the total number of conditioning items. |
| slice_start | FLOAT | 0.000–1 | Noise is generated to match the total size of matched conditioning items. Slices use a percentage of that chunk of noise. |
| slice_end | FLOAT | 1.000–1 | Noise is generated to match the total size of matched conditioning items. Slices use a percentage of that chunk of noise. |
| pooled_slice_start | FLOAT | 0.000–1 | Noise is generated to match the total size of matched conditioning items. Slices use a percentage of that chunk of noise. |
| pooled_slice_end | FLOAT | 1.000–1 | Noise is generated to match the total size of matched conditioning items. Slices use a percentage of that chunk of noise. |
| cpu_noise | BOOLEAN | true | Controls whether noise will be generated on GPU or CPU. Only affects noise types that support GPU generation. |
| normalize | BOOLEAN | true | Controls whether the generated noise is normalized to 1.0 strength before scaling. Generally should be left enabled. |
| fake_channels | INT | 1 | Noise will be generated with number of channels. Shouldn't make a difference for most noise types. |
| custom_noiseopt | OCS_NOISE,SONAR_CUSTOM_NOISE | Custom noise type to use. If not connected, gaussian noise will be used. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| CONDITIONING | CONDITIONING | — |