Skip to content

Repository files navigation

Tribute to Tim Holman: Rotated GridTribute to Tim Holman: Chromatic TilesTribute to Jane Street: LogoTribute to Pixel Symphony: Converging GridGod-Ray FalloffTribute to Milan Dobeš: Central Gravity

practices

An ongoing archive of generative art — drawn with code.

86 standalone sketches in p5.js and three.js.


pieces p5.js three.js license


Gallery

Ordered as made, from the first studies to the latest pieces.

Recreations and source-based studies use Tribute to Artist: Work. Tutorial, style, and composition variations retain their study names after the colon. Unknown titles or authors use Unknown; multiple unknown works by the same artist are numbered Unknown #1, Unknown #2, and so on.

Tribute to Tim Holman: Shadow Square
Tribute to Tim Holman: Shadow Square
p0 · geometric
Tribute to Tim Holman: Bisected Square
Tribute to Tim Holman: Bisected Square
p1 · geometric
Tribute to Tim Holman: Diagonal in a Box
Tribute to Tim Holman: Diagonal in a Box
p2 · geometric
Tribute to Tim Holman: Random Diagonals
Tribute to Tim Holman: Random Diagonals
p3 · interactive
Tribute to Tim Holman: Diagonal Tiles
Tribute to Tim Holman: Diagonal Tiles
p4 · tiling
Tribute to Tim Holman: Tiling Lines
Tribute to Tim Holman: Tiling Lines
p5 · tiling
Tribute to Tim Holman: Displaced Lines
Tribute to Tim Holman: Displaced Lines
p6 · geometric
Tribute to Tim Holman: Jittered Dots
Tribute to Tim Holman: Jittered Dots
p7 · geometric
Tribute to Tim Holman: Displaced Rows
Tribute to Tim Holman: Displaced Rows
p8 · generative
Tribute to Tim Holman: De Casteljau
Tribute to Tim Holman: De Casteljau
p9 · bezier
Tribute to Tim Holman: Tiling Curves
Tribute to Tim Holman: Tiling Curves
p10 · tiling
Tribute to Tim Holman: Noise Curves
Tribute to Tim Holman: Noise Curves
p11 · perlin-noise
Tribute to Peter Saville: Unknown Pleasures
Tribute to Peter Saville: Unknown Pleasures
p12 · generative
Tribute to Tim Holman: Drifting Splines
Tribute to Tim Holman: Drifting Splines
p13 · generative
Tribute to Tim Holman: Noise Curtain
Tribute to Tim Holman: Noise Curtain
p14 · flow-field
Tribute to Tim Holman: Random Tiles
Tribute to Tim Holman: Random Tiles
p15 · tiling
Tribute to Tim Holman: Rotated Grid
Tribute to Tim Holman: Rotated Grid
p16 · geometric
Tribute to Tim Holman: Drifting Curves
Tribute to Tim Holman: Drifting Curves
p17 · generative
Tribute to Tim Holman: Tile Drift
Tribute to Tim Holman: Tile Drift
p18 · recursion
Tribute to Tim Holman: Triangle Fractal
Tribute to Tim Holman: Triangle Fractal
p19 · recursion
Tribute to Tim Holman: Eye of Sauron
Tribute to Tim Holman: Eye of Sauron
p20 · recursion
Tribute to Tim Holman: Chromatic Tiles
Tribute to Tim Holman: Chromatic Tiles
p21 · tiling
Tribute to Tim Holman: Twisted Pipes
Tribute to Tim Holman: Twisted Pipes
p22 · generative
Tribute to Tim Holman: Braided Pipes
Tribute to Tim Holman: Braided Pipes
p23 · generative
Tribute to Tim Holman: Silky Drift
Tribute to Tim Holman: Silky Drift
p24 · generative
Tribute to Tim Holman: Fractal Circles
Tribute to Tim Holman: Fractal Circles
p25 · fractal
Tribute to Tim Holman: Flow Field
Tribute to Tim Holman: Flow Field
p26 · flow-field
Tribute to Leonardo da Vinci: Mona Lisa
Tribute to Leonardo da Vinci: Mona Lisa
p27 · halftone
Tribute to Leonardo da Vinci: Mona Lisa
Tribute to Leonardo da Vinci: Mona Lisa
p28 · image-sampling
Tribute to Leonardo da Vinci: Mona Lisa
Tribute to Leonardo da Vinci: Mona Lisa
p29 · pixel-art
Tribute to Tim Holman: Audio Spectrum
Tribute to Tim Holman: Audio Spectrum
p30 · audio
Tribute to Jane Street: Logo
Tribute to Jane Street: Logo
p31 · geometric
Tribute to Kazuki Umeda: 3D Mathematical Flowers
Tribute to Kazuki Umeda: 3D Mathematical Flowers
p32 · webgl
Tribute to Kazuki Umeda: Camellia
Tribute to Kazuki Umeda: Camellia
p33 · webgl
Tribute to Kazuki Umeda: Camellia Tetrahedron
Tribute to Kazuki Umeda: Camellia Tetrahedron
p34 · webgl
Tribute to Calico: Logo
Tribute to Calico: Logo
p35 · logo
Pavilion on Fire
Pavilion on Fire
p36 · halftone
Dystrophin Poster
Dystrophin Poster
p37 · image
Tribute to John Walker: Six Grids, Five Folds
Tribute to John Walker: Six Grids, Five Folds
p38 · after John Walker, 2008
Tribute to John Walker: Folding Grid
Tribute to John Walker: Folding Grid
p39 · geometric
Tribute to Sol LeWitt: Vanish
Tribute to Sol LeWitt: Vanish
p40 · after Sol LeWitt, 1994
Tribute to Sol LeWitt: Unknown
Tribute to Sol LeWitt: Unknown
p41 · after Sol LeWitt
Tribute to Sol LeWitt: Wall Drawing #821
Tribute to Sol LeWitt: Wall Drawing #821
p42 · after Sol LeWitt, 1997
Tribute to Ad Reinhardt: Abstract Painting, Blue
Tribute to Ad Reinhardt: Abstract Painting, Blue
p43 · after Ad Reinhardt, 1953
Tribute to Ad Reinhardt: Abstract Painting
Tribute to Ad Reinhardt: Abstract Painting
p44 · after Ad Reinhardt, 1960s
Tribute to Anthropic: Basic Shapes
Tribute to Anthropic: Basic Shapes
p45 · grid
Seven Colors
Seven Colors
p46 · grid
Accent Block Grid
Accent Block Grid
p47 · grid
Shape Browser
Shape Browser
p48 · svg
2×2 Block Grid
2×2 Block Grid
p49 · grid
Color Accent Grid
Color Accent Grid
p50 · grid
Shape Mosaic
Shape Mosaic
p51 · geometric
18 Compositions
18 Compositions
p52 · grid
Six Compositions
Six Compositions
p53 · grid
Shape Collage
Shape Collage
p54 · grid
Density Gradient
Density Gradient
p55 · grid
Scale & Overlap
Scale & Overlap
p56 · collage
Tribute to Georg Nees: Schotter
Tribute to Georg Nees: Schotter
p57 · grid
Shape Packing
Shape Packing
p58 · packing
Tribute to Piet Mondrian: Recursive Subdivision
Tribute to Piet Mondrian: Recursive Subdivision
p59 · recursion
Radial Ripples
Radial Ripples
p60 · concentric
Tribute to Pixel Symphony: Converging Grid
Tribute to Pixel Symphony: Converging Grid
p61 · after Pixel Symphony
Tribute to Unknown: Digital Access Card
Tribute to Unknown: Digital Access Card
p62 · generative
Cathedral Glass
Cathedral Glass
p63 · three.js
God-Ray Falloff
God-Ray Falloff
p64 · three.js
Leaded Glass Dome
Leaded Glass Dome
p66 · three.js
Tribute to Vera Molnár: 3 carrés noirs, 3 rectangles gris, 5 rectangles bleus
Tribute to Vera Molnár: 3 carrés noirs, 3 rectangles gris, 5 rectangles bleus
p67 · after Vera Molnár, 1950
Tribute to Milan Dobeš: Central Gravity
Tribute to Milan Dobeš: Central Gravity
p68 · after Milan Dobeš, 1965
Tribute to Julio Le Parc: Double Progression
Tribute to Julio Le Parc: Double Progression
p69 · after Julio Le Parc, 1959
Tribute to Horacio García Rossi: Brix
Tribute to Horacio García Rossi: Brix
p70 · after Horacio García Rossi, 1959
Tribute to Anton Stankowski: Equal and Unequal
Tribute to Anton Stankowski: Equal and Unequal
p71 · after Anton Stankowski, 1951
Tribute to Luiz Sacilotto: Untitled
Tribute to Luiz Sacilotto: Untitled
p72 · after Luiz Sacilotto, 1978
Tribute to Victor Vasarely: Symphonie Inachevée
Tribute to Victor Vasarely: Symphonie Inachevée
p73 · after Victor Vasarely, 1966
Tribute to Germaine Derbecq: Multiple Painting (Series 14 No. 1)
Tribute to Germaine Derbecq: Multiple Painting (Series 14 No. 1)
p74 · after Germaine Derbecq, 1969
Tribute to Marcello Morandini: 34
Tribute to Marcello Morandini: 34
p75 · after Marcello Morandini, 1968
Tribute to Elena Asins: LAKH 22 VARZ
Tribute to Elena Asins: LAKH 22 VARZ
p76 · after Elena Asins, 1991
Tribute to Kishio Suga: Untitled (無題)
Tribute to Kishio Suga: Untitled (無題)
p77 · after Kishio Suga, 1975
Tribute to Theo van Doesburg: Composition
Tribute to Theo van Doesburg: Composition
p78 · after Theo van Doesburg, c. 1920s
Tribute to Vera Molnár: Ascension
Tribute to Vera Molnár: Ascension
p79 · after Vera Molnár, 1984
Tribute to Agnes Martin: Summer
Tribute to Agnes Martin: Summer
p80 · after Agnes Martin, 1964
Tribute to Agnes Martin: The Lamp
Tribute to Agnes Martin: The Lamp
p81 · after Agnes Martin, 1959
Tribute to Agnes Martin: Untitled
Tribute to Agnes Martin: Untitled
p82 · after Agnes Martin, 1960
Tribute to Agnes Martin: The Islands
Tribute to Agnes Martin: The Islands
p83 · after Agnes Martin, 1961
Tribute to Agnes Martin: Starlight
Tribute to Agnes Martin: Starlight
p84 · after Agnes Martin, 1963
Tribute to Agnes Martin: With My Back to the World
Tribute to Agnes Martin: With My Back to the World
p85 · after Agnes Martin, 1997
Tribute to Agnes Martin: Untitled #6
Tribute to Agnes Martin: Untitled #6
p86 · after Agnes Martin, 2003

References

The archive includes recreations, tutorial studies, and style tributes. The original artist or source author is credited in each tribute title. Source details and study variations are recorded in artworks/catalog.json. Selected artwork references:

  • Tribute to John Walker: Six Grids, Five Folds — after John Walker, 2008  p38

  • Tribute to Sol LeWitt: Vanish — after Sol LeWitt, 1994  p40

  • Tribute to Sol LeWitt: Unknown — after Sol LeWitt  p41

  • Tribute to Sol LeWitt: Wall Drawing #821 — after Sol LeWitt, 1997  p42

  • Tribute to Ad Reinhardt: Abstract Painting, Blue — after Ad Reinhardt, 1953  p43

  • Tribute to Ad Reinhardt: Abstract Painting — after Ad Reinhardt, 1960s  p44

  • Tribute to Pixel Symphony: Converging Grid — after Pixel Symphony  p61

  • Tribute to Vera Molnár: 3 carrés noirs, 3 rectangles gris, 5 rectangles bleus — after Vera Molnár, 1950  p67

  • Tribute to Milan Dobeš: Central Gravity — after Milan Dobeš, 1965  p68

  • Tribute to Julio Le Parc: Double Progression — after Julio Le Parc, 1959  p69

  • Tribute to Horacio García Rossi: Brix — after Horacio García Rossi, 1959  p70

  • Tribute to Anton Stankowski: Equal and Unequal — after Anton Stankowski, 1951  p71

  • Tribute to Luiz Sacilotto: Untitled — after Luiz Sacilotto, 1978  p72

  • Tribute to Victor Vasarely: Symphonie Inachevée — after Victor Vasarely, 1966  p73

  • Tribute to Germaine Derbecq: Multiple Painting (Series 14 No. 1) — after Germaine Derbecq, 1969  p74

  • Tribute to Marcello Morandini: 34 — after Marcello Morandini, 1968  p75

  • Tribute to Elena Asins: LAKH 22 VARZ — after Elena Asins, 1991  p76

  • Tribute to Kishio Suga: Untitled (無題) — after Kishio Suga, 1975  p77

  • Tribute to Theo van Doesburg: Composition — after Theo van Doesburg, c. 1920s  p78

  • Tribute to Vera Molnár: Ascension — after Vera Molnár, 1984  p79

  • Tribute to Agnes Martin: Summer — after Agnes Martin, 1964  p80 · study notes

  • Tribute to Agnes Martin: The Lamp — after Agnes Martin, 1959  p81 · study notes

  • Tribute to Agnes Martin: Untitled — after Agnes Martin, 1960  p82 · study notes

  • Tribute to Agnes Martin: The Islands — after Agnes Martin, 1961  p83 · study notes

  • Tribute to Agnes Martin: Starlight — after Agnes Martin, 1963  p84 · study notes

  • Tribute to Agnes Martin: With My Back to the World — after Agnes Martin, 1997  p85 · study notes

  • Tribute to Agnes Martin: Untitled #6 — after Agnes Martin, 2003  p86 · study notes

The early sketches (p0–p30) follow exercises from Tim Holman's Speedrunning through p5.js talk.

Run it locally
npm install
npm run dev          # http://localhost:3000

The local Workshop opens with a four-column thumbnail grid (two columns on small screens), following the personal site's Gallery typography and fine grid seams. Search by title, artist, or sketch ID such as p86; filter by artist or change the sort order.

Click a work to open a full-window live canvas below one compact toolbar. Scroll to zoom around the pointer, drag to pan, and double-click or press F to fit the work again. + / − also zoom. These view changes preserve the live canvas and its original PNG resolution. Interact restores the artwork's original mouse controls; its own buttons and sliders remain available in either mode.

Works opens a thumbnail and search drawer without resizing the canvas. ← / → switch within the current results, R regenerates, S saves a PNG at the canvas's original resolution, / opens search, and Esc closes the drawer or returns to browsing. 0–9 still jump to p0–p9. Shortcuts leave form inputs alone and also work after clicking the artwork. The options menu contains Reset artwork, the original reference and shortcut hints.

Selection and filters stay in the URL across refreshes, and Workshop remembers the last selected work. Each sketch runs in an isolated iframe, with p5.js loaded from CDN.

How it's built
  • Sketches live in artworks/ as vanilla p5.js / three.js scripts (p0.js … p86.js).
  • A small Vite plugin scans that folder and auto-generates the gallery manifest — adding a file is all it takes.
  • Titles and source credits live in artworks/catalog.json. The gallery reads them automatically; run npm run titles:sync after editing the catalog to synchronize README labels and standalone sketch title comments.
  • The thumbnails above are rendered headlessly straight from the live sketches (see scripts/capture_gallery.py).

About

Generative art archive — geometric studies, flow fields, op-art recreations & 3D stained glass, in p5.js & three.js

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages