π Perlin Noise
The 'Natural' Noise β Slow, Organic Swells Instead of Static
- audio
White noise is static - the audio equivalent of TV snow, constant and featureless. PerlinNoise is the opposite: instead of every sample being random, it generates slow, continuous, organic variation. The same idea behind procedural terrain and clouds in computer graphics, here turned into sound. Where NoiseGenerator's perlin type gives you a taste, this node is the full meal with octaves and persistence control.
What it's for
This is the generator you reach for when a plain noise bed is too static. Its signature is the slow, rolling, almost tidal motion - like wind through a forest or waves in the distance. It's the go-to source for ambient drones and evolving pads, and it layers beautifully: a PerlinNoise drone underneath a NoiseGenerator white-noise wall gives the harsh stuff a living foundation instead of a flat one. In the README's own ecosystem, the "evolving ambient drone" is where this node lives.
How it works
Perlin-style fractal noise is built by layering octaves - copies of the base pattern at doubled frequencies. frequency (0.1β100) is the base speed of the motion (lower = slower, more "geological"; higher = faster, more "fluttery"), and octaves (1β8, default 6) is how many layers stack up. Each octave adds finer detail; more octaves means richer, more textured motion but more computation.
The persistence control (0.1β2.0) classically scales the amplitude of each higher octave. Honest note: in the shipped code, persistence is accepted but not wired into the fractal amplitude math - it's applied as a simple gain on the final result. So it still does something useful (a loudness/character dial), just not the textbook "fractal persistence" it sounds like. Don't let that stop you - the octaves are doing the real work.
channels defaults to 2 (stereo), with the same stereo_mode/stereo_width controls as the other generators - independent gives two unrelated evolving noises (nice wide movement), correlated keeps them locked, and decorrelated sits between.
The inputs that matter
frequency- the pace of the motion. Start at 2 and go lower for a proper drone.octaves- the richness. 6 is a good default; 8 gets busier, 3 gets smoother and simpler.seed- as with every generator here, seed 0 is the default and means the same evolution every run. Change it for variety.
Output: a single audio.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/eg0pr0xy/comfyui_noisegen.git
cd comfyui_noisegen
pip install -r requirements.txt
(Windows embedded Python: ComfyUI\python_embeded\python.exe -m pip install -r requirements.txt.) Or ComfyUI Manager β search "NoiseGen" / eg0pr0xy. No models, no keys.
Gotchas
Pack rule: pip install is mandatory - scipy is imported at load, and a missing install takes the whole pack down. For this node specifically, remember that it's a slow sound - if you render five seconds and hear only a couple of swells, that's correct, not a bug; give it 30 seconds and the motion becomes obvious. And because persistence is essentially a gain in the current code, don't expect it to restructure the texture the way octaves do - if you want more detail, add octaves.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| duration | FLOAT | 5.00.1β300 | β |
| frequency | FLOAT | 2.00.1β100 | β |
| sample_rate | COMBO | 44100 | 6 options: 8000, 16000, 22050, 44100, 48000, 96000 |
| amplitude | FLOAT | 0.800β2 | β |
| seed | INT | 00β2147483647 | β |
| channels | COMBO | 2 | 2 options: 1, 2 |
| stereo_mode | COMBO | independent | 3 options: independent, correlated, decorrelated |
| octaves | INT | 61β8 | β |
| persistence | FLOAT | 1.00.1β2 | β |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | AUDIO | β |