Pink Noise
Random, but easier on the eyes
- IMAGE
Audio engineers will tell you pink noise is the "balanced" one - white noise is all frequencies equally harsh, pink tilts toward the warm end, and brown is the deep rumble. JDC_PinkNoise imports that idea into images: it's random noise, but each value is run through a cube root before it's written, which pulls the bright extremes down toward the midtones. The result is softer, warmer static - still clearly random, just without the eye-searing sparkle of pure white noise.
It's one of the five noise generators in comfy-plasma by Jordach, sitting exactly halfway between JDC_RandNoise (harsh) and JDC_BrownNoise (muddy).
How it works
The generator follows the family pattern: a per-pixel loop, per-channel range clamping, a seed. The pink twist is the single cube root - pow(random_value / 255, 1/3) * 255. Taking the cube root of a number between 0 and 1 compresses it toward the middle, so mid-brightness values survive and the very dark / very bright ends get pulled in. It's a gentler pull than brown noise's double cube root, which is exactly the middle-child position: more texture than brown, less harshness than random.
You get the full set of range controls: value_min / value_max (default -1 = full 0–255 range) and per-channel red/green/blue_min/max overrides, plus width / height (128–8192, steps of 8) and a seed. The per-channel overrides tint the pink noise, so you can make a warm, film-grain-like wash in one step.
When you'd reach for it
- Film grain - pink noise is the classic grain texture. It reads as organic rather than digital static.
- Soft texture bases for img2img or latent-init workflows where pure random would be too loud.
- Anywhere you want the idea of noise without the harshness - this is the noise you can leave on for a while.
It's the one I'd reach for first when the goal is "texture that doesn't fight the image."
The seed caveat
Same as the whole family: the seed makes output reproducible, but the author's source comment warns it "does nothing" as far as ComfyUI's caching is concerned - you have to actually change the seed widget or another input to force a fresh roll. No auto-randomize.
Install
No requirements.txt, no models - the pack needs only Pillow, numpy, torch, and requests, all already in ComfyUI.
ComfyUI Manager → Install Custom Nodes → search comfy-plasma → install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/Jordach/comfy-plasma
Restart ComfyUI. It's under image/noise.
Common issues
The per-pixel Python loop means it's fast at 512×512 but noticeably slow if you push toward 8192 - generate small and upscale. And don't mistake the softness for a bug: pink noise is supposed to look calmer than random noise. If it reads as too flat, widen the value_min/value_max range instead of grabbing a contrast node afterward.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| width | INT | 512128–8192 | — |
| height | INT | 512128–8192 | — |
| value_min | INT | -1-1–255 | — |
| value_max | INT | -1-1–255 | — |
| red_min | INT | -1-1–255 | — |
| red_max | INT | -1-1–255 | — |
| green_min | INT | -1-1–255 | — |
| green_max | INT | -1-1–255 | — |
| blue_min | INT | -1-1–255 | — |
| blue_max | INT | -1-1–255 | — |
| seed | INT | 00–18446744073709550000 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |