Boyo Mandelbrot Generator
A Mandelbrot zoom for every render, with zero models to download
- frames
- video_path
This is the oddball of the Boyonodes pack, and honestly the most fun one. Boyo Mandelbrot Generator produces a six-second, 30 fps animated zoom into the Mandelbrot set - mathematically, procedurally, with no diffusion model in sight. You hit Queue, it computes 180 frames of fractal zoom with color effects, and hands you either an MP4 or an image batch you can feed into an image-to-video model as a starting point. The name "MandelbrotVideo" is the class; the display name is the honest one.
Why would you reach for this in a ComfyUI graph? Because video models love a weird, high-detail, temporally-moving starting image, and fractals are all three. People use these as img2vid seeds, background plates, or abstract transition material - and it's completely free compute-wise compared to a diffusion pass, plus there are no model downloads, ever.
How it works
The node is a thin shell. It subprocess-runs mandelbrot_video.py (bundled in the pack) with your settings; that script interpolates between keyframes - zooming regions, color palettes, and effects like invert, emboss, and Sobel edge detection, occasionally switching to Julia sets - renders each of 180 frames to PNG, then shells out to ffmpeg again to compile libx264 at CRF 18. Because IS_CHANGED always returns true, every run re-randomizes and you get a new fractal every time. There's no seed input; if you want a specific one back, save the video you liked.
The inputs and the catch
Only three inputs: resolution (square 512×512, widescreen 720×480, vertical 480×836), output_type (video or frames), and grayscale. Both outputs are declared always: frames (IMAGE) and video_path (STRING). Here's the quirk you'll actually hit: in video mode the frames output is an empty tensor and only the MP4 path is meaningful; in frames mode the script skips the ffmpeg compile and loads the PNGs back into the frames output - but the video_path string still points at a random mandelbrot_XXXX.mp4 that was never written. So pick the mode that matches the output you actually want, and ignore the other one.
One more caveat in frames mode: the script dumps into a fixed ComfyUI/output/mandelbrot_frames/ folder, wiping it at the start of every run. If you set output_type to frames, grab the batch immediately or it gets clobbered by the next queue.
Install
ComfyUI Manager, search "Boyonodes", or:
cd ComfyUI/custom_nodes
git clone https://github.com/DragonDiffusionbyBoyo/Boyonodes
Restart ComfyUI. This node needs matplotlib, numpy, pillow, and tqdm (all in the pack's requirements), plus ffmpeg on PATH for the video compile. The pack's heavier requirements - transformers, librosa, the whole audio stack - are not needed for this node, so you can install selectively if you want.
Where people get burned
The big one is environment: the node calls python on your system PATH to run the script. If you launched ComfyUI from a venv or a portable install where python isn't on PATH, the subprocess fails and you get a confusing "Mandelbrot script failed" error with empty stderr. Make sure the python you use is the one with matplotlib installed, or launch from that environment. And if you only wanted a still image, you don't want this node - it's built for motion, all 180 frames of it.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| resolution | COMBO | square | 3 options: square, widescreen, vertical |
| output_type | COMBO | video | 2 options: video, frames |
| grayscale | BOOLEAN | false | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| frames | IMAGE | — |
| video_path | STRING | — |