A seed-based generative system for cellular automata patterns.
A catalogue of computational textile compositions for fashion, textile and surface design — algorithmically drawn, seed-documented, and ready for production.
ChaotiColor is a generative design system rather than a single artwork. Each composition is built from a one-dimensional cellular automaton — a single row of cells that evolves downward, one generation at a time, according to a small set of binary rules. Where the rules meet, patterns emerge: triangles, filaments, spirals, sudden chaotic bursts.
The system is designed for:
- Fashion houses adapting rule-based ornament for apparel and accessories
- Textile studios developing repeat patterns and yardage
- Surface designers working across print, wallpaper, and interior applications
Every composition can be licensed, adapted, or commissioned to a brief.
A rule, when it is repeated across a grid, becomes a tapestry — chaotic, precise, quietly yours.
The woven surface — repetitive, rule-bound, endlessly variable — has always been a form of computation. Every textile draft is a small program. Every pattern repeat is a loop. ChaotiColor translates that structure into code. Each composition begins with a single row of cells and a small binary ruleset, and unfolds through simple iteration until the frame fills with an intricate, rule-generated field.
The palette, the grid divisions, and the colour mode are all derived from a single numeric seed.
Unlike the animated volumes in this series (Bezier 2, Brownian Graphe), ChaotiColor is a still composition. The plate, the framed plate, the surfaces, and the archive are all static frames. This is deliberate: a cellular automaton, once generated, is complete. Its character is stillness, precision, and the quiet logic of its rules.
- Seed-based generation — every composition is defined by a numeric seed and can be regenerated exactly
- Deterministic output — the same seed always produces the same composition
- Cellular automata — a single row of cells evolving downward through rule-based generations
- Three colour modes — Black on Color, Color on Black, Random RGB
- 46 built-in palettes — from duotone to eight-colour schemes
- Adaptive grid — 4 to 304 divisions per axis, derived from the seed
- Adaptive surfaces — one seed applied across print, scarf, textile, and wall formats
- Archive — eight curated seeds available for immediate loading
- Download — export the composition as a high-resolution PNG
- Keyboard shortcuts —
Rfor new seed,Sto save
.
├── index.html # Main catalogue page
├── images/
│ ├── fav.svg # Favicon
│ ├── tote.png # Mockup: tote bag
│ ├── tee.png # Mockup: t-shirt
│ └── cushion.png # Mockup: cushion
└── README.md
A numeric seed (a large integer) initializes a deterministic pseudo-random generator. From this seed, the system derives:
- Foreground palette (from a set of 46 curated colour schemes)
- Horizontal division count (4–304)
- Vertical division count (4–304)
- Colour mode (0, 1, or 2)
Because the generator is deterministic, the same seed always produces the same composition — on any device, at any time.
Each composition begins with a single row of cells — a binary vector of length widthdivision, with one cell active and the rest randomized.
The automaton then evolves row by row:
- Each new cell is computed from the three cells above it — the left neighbour, the cell directly above, and the right neighbour.
- A small binary ruleset (eight values, one per possible 3-cell neighbourhood) determines the next value.
- The ruleset itself is derived from the seed, so each composition runs a different rule.
This is a classic one-dimensional cellular automaton — the same family that produces Wolfram's Rule 30 and Rule 110. Some rulesets produce orderly triangles. Some produce chaotic filaments. Some produce near-random noise. The seed decides which.
The composition uses one of three colour modes, chosen by the seed:
| Mode | Name | Behaviour |
|---|---|---|
| 0 | Black on Color | Active cells are black; inactive cells take a palette colour |
| 1 | Color on Black | Active cells take a palette colour; inactive cells are black |
| 2 | Random RGB | Active cells are black; inactive cells are random soft RGB |
Each cell is drawn as a small rectangle with a stroke of the same colour, so adjacent cells read as a tight grid — no visible seams, but a subtle structural emphasis from the strokes.
The grid divisions are derived from the seed, between 4 and 304 on each axis. This means each composition has its own resolution:
- A coarse grid (small division count) produces bold, blocky patterns.
- A fine grid (large division count) produces intricate, textile-like detail.
The cell width and height are computed independently — width / widthdivision and height / heightdivision — so the pattern stays sharp on non-square canvases.
The same seed is rendered across four surface formats. These are static frames — they represent the print-ready composition.
| Surface | Aspect | Material |
|---|---|---|
| 1 : 1 | Cotton rag | |
| Scarf | 3 : 1 | Twill silk |
| Textile | 4 : 3 | Fabric yardage |
| Wall | 2 : 3 | Wallpaper |
Each surface uses the same underlying seed and structural logic — only the repeat, orientation, and scale change.
Unlike Bezier 2 and Brownian Graphe, ChaotiColor does not animate. The plate is a single frozen frame — the composition is complete the moment it is generated.
This is a deliberate design choice. A cellular automaton is not a swarm. It is not a rotation. It is a rule, run to completion. Its stillness is what makes it print-ready in the strictest sense: what you see is what you get.
- Open
index.htmlin any modern browser. - Click New Seed to generate a new composition.
- Click Download to save the composition as a PNG.
- Scroll to the Archive section and click any plate to load it into Plate 001.
| Key | Action |
|---|---|
R |
New seed |
S |
Save as PNG |
Each composition is identified by an 8-digit seed label displayed in the metadata panel. To reproduce a specific composition, note the seed and regenerate it programmatically:
const rng = new RandomGenerator(seed);
const features = buildFeatures(rng);
renderComposition(canvas, features, rng);Because the generator is deterministic, this will produce the identical composition on any device.
- No build step. The system is a single HTML file with inline CSS and JavaScript.
- No dependencies. All drawing is done with the native Canvas 2D API.
- Deterministic. The
RandomGeneratorclass uses a xorshift-based PRNG seeded by an integer, so identical seeds produce identical outputs. - Static rendering. Every canvas renders a single frame. There is no animation loop.
- Feature isolation. Cover, framed plate, surfaces, and archive thumbnails each derive their own feature set from their own local RNG, without disturbing the main plate's state.
- Independent axis scaling. The cell grid uses
width / widthdivisionandheight / heightdivisionindependently, so patterns remain crisp on non-square surfaces. - Responsive. The layout adapts from large desktop down to very small mobile devices (tested at 360px viewport width).
- Accessible. Supports
prefers-reduced-motion. Pinch-zoom is enabled.
Tested in current versions of:
- Chrome / Edge
- Firefox
- Safari (desktop and iOS)
All ChaotiColor compositions are seed-documented and available for licensing across textile, surface, and print applications.
- Standard licenses cover single-product production runs.
- Commercial use, custom editions, or exclusive rights are available on request.
Each license is issued against a specific seed ID. Regeneration of the same seed produces the identical composition — ensuring reproducibility between artist, studio, and manufacturer.
For licensing enquiries: reyhanehdaneshdoost@gmail.com
ChaotiColor is a generative design system, not a fixed artwork. It can be adapted for specific briefs:
| Service | Description |
|---|---|
| Licensing | Existing seeds from the archive, licensed for production use |
| Commission | New compositions designed to your palette, repeat, and product |
| Systems | A private generative tool built for your studio's ongoing use |
To begin a conversation: reyhanehdaneshdoost@gmail.com
ChaotiColor is part of a computational textile series. Each volume approaches ornament from a different structural angle:
| Volume | Structure | Motion |
|---|---|---|
| Girih 1 | Islamic geometric | Static |
| Arachne | Rotating rings | Static |
| Baroque Me Baby | Baroque frames | Static |
| Bezier 1 | Concentric curves | Static |
| Bezier 2 | Single rotating curve | Animated (plate) |
| Brownian Graphe | Graph networks | Animated + interactive |
| Celestial Grove | Recursive branch trees | Static |
| ChaotiColor | Cellular automata | Static |
The series is designed as a coherent whole — same page structure, same seed logic, same licensing and commission terms — so that each volume can be presented individually or as part of a larger body of work.
- Design & Generative System — Reyhaneh Daneshdoost
- Typefaces — Cormorant Garamond · DM Mono
- Platform — Reyrove Studio
- Edition — ChaotiColor, Autumn 2026
Where technical obstacles were encountered, AI tools were used for debugging and code optimization. Every structural, aesthetic, and conceptual decision remained the artist's own.
- Website — reyrove.github.io
- Instagram — @rey._.rove
- LinkedIn — Reyhaneh Daneshdoost
- X — @reyrove
© ChaotiColor · All compositions reproducible by seed · Computational Textile Design