A sunflower head is a packing problem solved by a plant. The seeds are arranged so that each new one sits as far as possible from its predecessors, which produces the interlocking double spiral everyone recognises — and which turns out to be generated by a single angle.
Jagi Natarajan has built it as an audio-reactive LED display: 89 individual cells, each lit by an addressable LED, now through two iterations with a third planned.
In their words: “I’ve been fascinated by understanding patterns that appear in nature, through code. Communing with the inherent emergent patterns that exist in the universe.” And: “It’s surprisingly simple code.”
The one line of maths
Phyllotaxis — the arrangement of leaves, seeds or florets around a stem or disc — comes from Vogel’s formula, which places the nth element at:
angle = n × 137.508° (the golden angle)
radius = c × √n
That is the whole thing. Two lines, no iteration, no physics simulation, no relaxation step. Every seed’s position is a direct function of its index.
The golden angle, 137.508°, is 360° divided by the square of the golden ratio φ — equivalently, 360° × (1 − 1/φ). It is the most irrational rotation available, which is precisely why it works: turn by any rational fraction of a circle and your elements line up into spokes after a few rotations, leaving gaps. Turn by the golden angle and they never align, so each new element lands in the largest remaining gap. The spiral packing is a consequence of maximal irrationality.
The √n radius is what keeps the density even. Area grows as r², so if you want each element to occupy equal area, radius must grow as √n. Use linear radius instead and the centre is crowded while the edge is sparse.
Why 89 cells is the right number
89 is a Fibonacci number — 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144.
This is not a coincidence or a coincidence-shaped marketing detail. The number of visible spirals in a real phyllotactic arrangement is always a pair of consecutive Fibonacci numbers — a sunflower typically shows 34 clockwise and 55 anticlockwise, or 55 and 89. That falls out of the golden angle: the best rational approximations to φ are ratios of consecutive Fibonacci numbers, and those approximations are exactly where near-alignments occur, which is what the eye reads as a spiral arm.
So a display with 89 cells will show Fibonacci spiral structure cleanly, with the arms resolving at the counts a real sunflower shows. A display with 90 or 100 cells would still be a phyllotaxis, and the spiral arms would be less legible because the count sits between the natural resolutions.
That is a genuinely elegant piece of hardware design: the panel count is chosen to make the mathematics visible.
What audio-reactive means here, and the mapping question
Audio-reactive LED work lives or dies on the mapping — which property of the sound drives which property of the light — and a phyllotaxis gives you unusually good options, because it has two natural coordinate systems at once.
By index. Element 0 to 88, in placement order. Driving brightness by index is a ripple that travels outward in the order the pattern was generated, which traces the golden-angle sequence and looks like nothing else.
By radius. Centre to edge. The obvious mapping is frequency → radius: bass at the centre, treble at the rim, so an FFT becomes a glowing disc that blooms with the low end. It is the most readable option and the one most people will want.
By angle. Driving by angular position gives you a sweep, and because the spiral arms are at Fibonacci counts, an angular sweep interferes with the arm structure — you get moiré that is specific to this geometry.
By spiral arm. The hardest and most interesting: group the cells into their 34 or 55 arms and drive each arm as a unit. The arms are implicit in the index — arm membership is n mod 55 or n mod 34 — so this is a modulo away.
That last one is the thing worth trying if you build this. It is the only mapping that uses what makes the geometry special rather than treating it as a decorative scatter of points.
Build notes
The cell-per-LED construction — each cell lit by one addressable LED — is the right call over a bare strip, because diffusion is most of what makes LED work look finished. An individual cell with a wall around it and a diffuser over it reads as a lit object; a bare WS2812 reads as a bright dot with a glare.
For anyone starting: place in software, not in hardware. Compute the 89 positions with Vogel’s formula, export as coordinates, then use those to lay out the physical cells (laser-cut, 3D-printed, or drilled). The alternative — eyeballing a spiral — will not produce legible arms.
And then keep the index→position map in your firmware, because every interesting mapping above needs to know where each LED physically is. A lookup table of 89 (x, y, r, θ) tuples is a few hundred bytes and makes the whole thing programmable.