I asked my coding agent to make me some neat fractal things in Sema. Then: make them move, make them loop, add bloom, and try three wildly different designs. Here's what it made.




These ended up as parametric animations rather than fractals. Kinetic Loom has 84 woven ribbons; Wave Atlas adds three travelling waves into a moving landscape; Comet Ballet sends 270 lights along different orbits; Prism Engine rotates 25 nested octahedra.
The GIFs are smaller 20 fps previews. Each full render is a six-second, 1920×1920 MP4 at 60 fps, with 360 frames.
A little Sema
The wave surface is just a few sine and cosine terms. This is the actual height calculation from Wave Atlas:
(define (surface u v)
(let* ((r (sqrt (+ (* u u) (* v v))))
(height (+ (* 34 (sin (- (* 7 r) phase)))
(* 25 (sin (+ (* 4 u) (* 3 v) (* 2 phase))))
(* 17 (cos (- (* 5 v) (* 3 phase))))))
(x (* u 310)) (y (* v 310)))
(list (+ 600 (* 0.82 (- x y)))
(+ 610 (* 0.39 (+ x y)) (* -2.0 height)))))
To make it loop, time runs around a circle. All the temporal frequencies are integers, so the geometry returns to its starting state after one turn:
(set! phase (* tau (/ (mod frame frames) frames)))
Sema calculates the geometry, writes SVG paths, and coordinates rendering and verification. rsvg-convert rasterizes
each frame at 3840×3840; FFmpeg downsamples and encodes the video. The glow comes from three layers of blurred SVG
geometry, combined in linear RGB.
Try it
The source and rendered animations are on GitHub. With Sema,
rsvg-convert, and FFmpeg on your PATH:
git clone https://github.com/sema-lisp/sema-fractals.git
cd sema-fractals/evolving-scenes
sema --no-llm animate.sema # Kinetic Loom
sema --no-llm animate-three.sema # the other three, concurrently
Rendering the full-resolution bloom takes a while. For a single still, run sema --no-llm render.sema from the same
directory, or from one of the three scene directories.
Individual scene files: Kinetic Loom, Wave Atlas, Comet Ballet, and Prism Engine.
I started with “make me something cool” and ended up watching a Lisp interpreter render glowing geometry for half an hour. Pretty happy with that.
