Public
Deterministic Agnes Martin-style generative paintings
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.
Deterministic generative compositions in the spirit of Agnes Martin. No AI — a seeded PRNG (mulberry32) picks one of four period-inspired modes and renders SVG server-side. Same seed always yields the same painting.
- grid — hand-ruled graphite grid over a pale wash or grey-white ground, unpainted border (1960s)
- marks — a small brushmark resting inside every cell of an open grid (early 60s)
- bands — horizontal or vertical color washes divided by graphite lines (post-1974)
- stripes — broad pastel trios (pink/blue/yellow families) separated by white (late 1990s)
- white — dense horizontal graphite on gesso
- verticals — vertical graphite lines activating a tinted field (1963)
- grey — grey band arrangements (1980s grey paintings)
- gold — rare: incised grid on gold leaf with faint bruising (1963)
Style ingredients: 72×72 square format, wavering "straightedge-guided" polylines (sine drift + per-point jitter, varying opacity/width), uneven acrylic washes (gradient + dry streaks), and a fractal-noise canvas grain.
Rendering mermaid diagram...
main.tsx— HTTP entrypoint./viewing room,/gallerycollection,/art.svg?seed=N(immutable-cached SVG),/art.json?seed=N(metadata + records the piece),/pieces(collection JSON),/sourcegenerator.ts— pure, dependency-free generatordb.ts— SQLitepiecestable (val-scoped). Every seed viewed on the main page is recorded permanently; seeds 1–24 seeded on first runfrontend/— viewing room (click canvas or "again" for a new piece) + collection grid at/gallery
Since pieces are pure functions of the seed, "saving" = storing the seed; the SVG regenerates identically forever. No env vars.