LED Sculpture generative pixel studio · 1:1, no scaling, ever ○ not connected — open this page from the sculpture (http://sculpture.local/) to drive the wall ← haus-design pixel editor →
on the wall
brightness 40
hanging
art
react to

Viewport — nearest-neighbour only

C++ row — paste into Registry.h

Kinetic preview — rail + spin

Turns the preview panel the way the sculpture will turn on its axis; drag the rail fast and let go to feel it stop. Water pieces (Splash, Sloshing tank) react to gravity, to the stop, and to a knock. On the wall the IMU does this for real when react to: motion is on.
Panel simulation — what if the panel were different
panel / artwork
effective pitch
physical size
LED fill (linear / area)
gap between LEDs
modules / HUB75 chain
peak draw (all white)
PSU to buy
DMA buffer @11-bit, 2×
MatrixPortal S3 verdict
Fidelity — browser preview vs the wall
The RNG is a bit-exact port of the firmware's xoshiro128**, verified against reference vectors from the C++ build. A seed found here reproduces on the panel.

Exact parity (integer-only): CyclicCA, Truchet, Bayer, Life.
Slow drift (float): Plasma, FlowField, Rain, Isometric, Rings, Tunnel — JS uses doubles, the ESP32 uses float. They start identical and diverge over thousands of frames. Recognisably the same piece; not bit-identical.
Indices below the black run are true black — unlit LEDs. That is the negative space every field generator gets for free; a colour that is merely dark still lights the LED, dimly. Keep at least one.
Ramps are sampled NEAREST, never interpolated — the hard 16-step banding is the aesthetic, not a limitation. Built-ins are the firmware’s own table; editing one forks a copy. Custom palettes are saved in this browser and travel to the sculpture inside the collection.

      
Type below and the panel shows it immediately. 10 characters per line, 8 lines — longer than that and it scrolls. Press Enter for a hard break. Apply to panel in the dock shows it on the wall now; Add to collection keeps it with your seeds.
 
Once the message has settled, single letters riffle again now and then. The fader sets how often — the timing itself stays irregular.
align
Nothing curated yet. Find a seed you like in Explore, name it, and hit Add to collection.
Paste a piece from Creature Lab (or any {gen, seed, params}) to preview it here.
clips on the sculpture
Artwork drawn in the pixel editor and saved to the sculpture. Adding one here puts it in the collection like any other piece — it keeps playing in rotation instead of taking the wall.
Back up before pio run -t uploadfs — that rewrites the whole filesystem and takes the clip library with it.


        
Getting this onto the sculpture
You are on the sculpture itself. Send collection in the dock replaces what the wall has stored; Load from wall brings the stored collection back here to edit. Custom palettes ride along. This copy is not on the sculpture, so the dock is greyed: the page is HTTPS (or a local file) and the sculpture is plain HTTP on your LAN, and browsers block that outright. On the same WiFi, open http://sculpture.local/ on your phone and curate there — or Download playlist.json here and Load playlist.json there.

A piece is 16 bytes and a palette 48, so a whole collection is about a kilobyte.