Nodes/Dehypnotic/🧘 SonicColor Noise (Dehypnotic)
ComfyUI Node

🧘 SonicColor Noise (Dehypnotic)

Five colors of noise, one node, zero samples

By DehypnoticΒ·Created about a month agoΒ·Updated 9 days agoΒ· 4
🧘 SonicColor Noise (Dehypnotic)
  • audio
  • audio
β—„params{}β–Ί

SonicColor Noise (Dehypnotic) is a synthesized-sound generator in a single node: five colors of noise (white, pink, brown, blue, violet), a resonant filter with five modes, a 10-band graphic EQ, an ADSR envelope, and an optional audio input to mix underneath. It's the "make the ambience for your video" node - wind, rain-adjacent hiss, deep brown-noise drone, or a textured bed under a voiceover.

Here's the thing about ComfyUI's audio layer: it's the youngest, thinnest part of an ecosystem that spent years being image-first, then video-first. When your video finally has a soundtrack slot to fill, the models get all the attention (TTS, music gen) but the humble workhorse - "give me X seconds of background noise, shaped a certain way" - falls to a node like this. SonicColor is that workhorse, and it needs no models, no GPU, and no downloads. It's pure DSP in numpy, plus scipy when it's available.

How it works

The entire node is driven by one params JSON string - the dark 3-tab GUI (Color Mix, Filter & Env, 10-Band EQ) is just a nice frontend that serializes your settings into that string. Under the hood each noise color is generated with a textbook algorithm: pink uses the Paul Kellet filter approximation, brown is a leaky integrator, blue and violet are derivatives of pink and white. The filters and EQ are biquads run through scipy's signal.lfilter. Default output is stereo; the ADSR envelope shapes the start and end so you don't get a click at the edges.

The genuinely useful feature is the media-duration detection: if you connect an audio input (say from Load Video Dehypnotic) and leave duration at zero, SonicColor detects the incoming track's length, rounds up to the whole second, and builds noise to fill it. The incoming audio gets mixed once - not looped - with its own volume slider, padded with silence if it's shorter than the target. That's "pad 90 seconds of brown noise under this narration" in one node.

Inputs and outputs

  • params (required STRING) - the serialized JSON of every setting. You don't hand-write this; use the GUI.
  • audio (optional AUDIO) - external track to mix under the noise; also what drives auto-duration.
  • Output: audio (AUDIO) - standard waveform dict, wire it into Save Audio (Dehypnotic) or any audio save node. There's a live ▢️ WebAudio preview button, which works in the browser before you even wire the output anywhere.

Installing it

ComfyUI Manager: search "Dehypnotic", install, restart. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/Dehypnotic/ComfyUI-Dehypnotic

Then restart. Delete any old Dehypnotic split-pack folders first (the README names comfyui-aspect-ratio-advanced, comfyui-numbered-text, comfyui-range-to-string, comfyui-dehypnotic-save-nodes) - this repo is now the single home for all of them.

The pack ships no requirements.txt, and this node specifically leans on scipy for the filters and EQ. If scipy isn't in your environment, the node still runs - the code silently falls back to simpler paths - but filters and pink/brown coloring degrade. If something sounds wrong, that's the first thing to check:

pip install scipy

Common issues

  • Filters don't seem to do anything. Almost certainly missing scipy, which makes the node skip filtering entirely rather than crash. Install scipy and restart.
  • The noise is longer/shorter than you expected. Duration comes from the hours/minutes/seconds settings in the GUI; it only auto-fits to the audio input when you leave it at zero.
  • Saving the preset. Presets live in ComfyUI/user/Dehypnotic/sonic_color/ as JSON - the user folder means they survive node updates, which is exactly what you want.
CategoryDehypnotic/Audio

Inputs (2)

NameTypeDefaultDescription
paramsSTRING{}β€”
audiooptAUDIOβ€”

Outputs (1)

NameTypeDescription
audioAUDIOβ€”