Nodes/MD Nodes/MD: Custom Noise Generator
ComfyUI Node

MD: Custom Noise Generator

Feed your sampler Perlin and Voronoi noise

By MDMAchine·Created about a year ago·Updated 3 months ago· 15
MD: Custom Noise Generator
    • noise
    • preview_image
    noise_typeGaussian
    scale1.0
    strength1.00
    channel_modeShared (Monochrome)
    seed0
    preview_width512
    preview_height512

    Every diffusion run starts the same way: a random Gaussian noise field gets sculpted into an image. But nobody says the starting noise has to be Gaussian. MD_CustomNoiseGenerator hands you the keys to that initial tensor - 15 noise algorithms including Perlin, Voronoi, wavelets, and heavy-tail distributions - and feeds the result into your sampler as a custom NOISE object, with a preview image so you can see what you're about to inject.

    The idea has a real lineage: structural noise (Perlin-style low-frequency patterns) biases generation toward coherent composition, which is why people experiment with it for landscapes and textures, while wavelet and pyramid schemes change how detail evolves across scales. It's a creative-control tool with an on-ramp you can actually see.

    The inputs

    • noise_type - the algorithm. Gaussian is the baseline (and the default). Perlin and Wavelet (Haar) are the author's recommendations for creative texture. Voronoi (Euclidean/Manhattan) gives cell-based patterns; Collatz (Orbit) is the weird one, straight out of number theory; Student-t and Laplacian are the heavy-tail distributions; HiRes Pyramid and HiRes Pyramid (Bislerp) do multi-scale noise.
    • scale - frequency/zoom of the pattern, 0.1 (macro, zoomed in) to 10 (micro, zoomed out). Default 1.0.
    • strength - global amplitude multiplier, default 1.0. This controls how aggressively the noise replaces standard Gaussian.
    • channel_mode - Shared (Monochrome) uses the same pattern on all latent channels, good for structural/compositional influence; Independent (Color) varies per channel, for color/texture variation.
    • seed - deterministic generation, capped at JS-safe max so the UI can't round it into a different number.
    • preview_width / preview_height - resolution of the preview image (default 512).

    Outputs: noise (the NOISE object - this is what plugs into a sampler's noise input, like the noise input on SamplerCustom or a custom sampler that accepts one) and preview_image (the IMAGE visualization, so you know what you're injecting before you commit).

    How to actually use it

    The honest framing: this is an experimentation node, not a daily driver. Gaussian exists for a reason - the model was trained to denoise it, and anything structural biases the result. Where the bias is desirable (consistent composition, terrain-like texture, artistic variation), that's the experiment. The workflow is: pick a type, look at the preview, run a low-strength pass, compare against the Gaussian baseline on a fixed seed. If the effect is what you want, tune strength; if it's chaos, it's not a bug - structural noise at high strength is genuinely destructive to some checkpoints.

    Installing it

    Part of MD Nodes (MDMAchine/ComfyUI_MD_Nodes). ComfyUI Manager → search MD_Nodes → Install, restart, or:

    cd path/to/ComfyUI/custom_nodes
    git clone https://github.com/MDMAchine/ComfyUI_MD_Nodes.git
    cd ComfyUI_MD_Nodes
    pip install -r requirements.txt
    

    Restart ComfyUI. Python 3.10+, current ComfyUI, GPL v3. The preview needs matplotlib (in the pack's requirements); the heavier noise types (wavelets, Collatz) take a bit longer to generate, per the tooltip, but nothing GPU-breaking.

    Common issues

    The usual confusion is expecting strength to work like a denoise slider - it doesn't; it's an amplitude multiplier on the noise tensor, and values above 1.0 don't "add detail," they push the signal toward clipping territory. Start at 1.0 and move down, not up. And if your preview looks nothing like the final image, remember the preview is the noise field itself - the final image is what the model does with that field, which is the whole point of the experiment, not a mismatch.

    CategoryMD_Nodes/Noise

    Inputs (7)

    NameTypeDefaultDescription
    noise_typeCOMBOGaussianNOISE TYPE • Purpose: Select the mathematical algorithm used to generate the pattern. • Options: 17 types including Voronoi, Wavelets, and Heavy-tail distributions. • Trade-offs: Complex types (e.g., Wavelet, Collatz) take slightly longer to generate. ⭐ Recommended: Perlin or Wavelet for creative texture.
    scaleFLOAT1.00.1–10NOISE SCALE • Purpose: Controls the frequency/zoom of the pattern. • Range: 0.1 (Macro/Zoomed in) to 10.0 (Micro/Zoomed out). ⭐ Recommended: 1.0
    strengthFLOAT1.000–10NOISE STRENGTH • Purpose: Global amplitude multiplier for the output tensor. • Effect: Determines how aggressively the noise replaces standard Gaussian generation. ⭐ Recommended: 1.0
    channel_modeCOMBOShared (Monochrome)CHANNEL MODE • Purpose: Determines if noise patterns vary across latent channels. • Shared: Same pattern on all channels (Good for structural composition). • Independent: Different pattern per channel (Good for color/texture variation). ⭐ Recommended: Shared (Monochrome)
    seedINT00–9007199254740991RANDOM SEED • Purpose: Deterministic starting point for noise generation. • Note: Capped at 9 Quadrillion to prevent UI rounding errors. ⭐ Recommended: Use a fixed value for reproducible outputs.
    preview_widthINT51264–2048PREVIEW WIDTH • Purpose: Resolution for the preview image output.
    preview_heightINT51264–2048PREVIEW HEIGHT • Purpose: Resolution for the preview image output.

    Outputs (2)

    NameTypeDescription
    noiseNOISE
    preview_imageIMAGE