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.

agnes-martin

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.

Modes

  • 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.

Architecture

Rendering mermaid diagram...
  • main.tsx — HTTP entrypoint. / viewing room, /gallery collection, /art.svg?seed=N (immutable-cached SVG), /art.json?seed=N (metadata + records the piece), /pieces (collection JSON), /source
  • generator.ts — pure, dependency-free generator
  • db.ts — SQLite pieces table (val-scoped). Every seed viewed on the main page is recorded permanently; seeds 1–24 seeded on first run
  • frontend/ — 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.