Six weave structures, forty‑eight period‑correct dye colors, and a formal grammar for thread count notation. The question this project keeps circling: when does generated plaid stop being plaid and start being tartan?
Tartan is not plaid. Plaid is any crossed pattern of colored bands. Tartan is a specific thing: a symmetric repeat woven in a twill weave, where the warp and weft share the same thread count, producing a pattern that is identical along both axes. That symmetry constraint is what makes tartan tartan. Remove it and you have check fabric, madras, gingham. All fine. None of them tartan.
The generator starts here, with this constraint, and builds a formal system around it. The input is a thread count notation, the same shorthand used by the Scottish Register of Tartans since the 19th century. A thread count encodes the full color sequence of one repeat: color codes paired with counts, pivoting at each end so the pattern reflects. The notation B/24 W4 B4 W4 B24 R2 B24 describes a blue‑dominant sett with narrow white and red accent stripes. The slash after the first color indicates a pivot point; the pattern reads forward and then reflects.
From this notation the generator constructs a two‑dimensional weave. The thread count determines which colors appear at each row and column. The weave structure determines which thread is visible at each crossing point: warp on top, or weft. A plain weave (1/1) alternates every thread: warp over weft, weft over warp, repeat. A 2/2 twill (the canonical tartan weave) floats each thread over two, under two, shifting one position per row. This produces the characteristic diagonal twill line at 45 degrees. Herringbone is twill with periodic reversal, typically every 4 to 8 threads, creating a zigzag. Hopsack (2/2 basket) groups threads in pairs for a coarser hand. Satin extends the float length (typically 5/1 or 8/1) and distributes interlacing points to avoid diagonal lines, producing a smoother surface. Broken twill introduces irregular reversals at prime-number intervals.
Thread count is a compression format. Rather than specifying every individual thread, you list each color run in order. The parser reads left to right, expanding each code‑count pair into a column of the sett. Pivots (marked with a slash) tell the renderer where the pattern reflects. A full sett is built by reading the sequence forward, reflecting at each pivot, and tiling the result across the cloth.
The notation above describes the Black Watch, one of the most recognized military tartans. Blue and green dominate; a thin red stripe distinguishes it from the unadorned Government sett. This is what the generator parses, validates, and renders.
The color palette is drawn from historical Scottish dyeing practice. Before William Henry Perkin synthesized mauveine in 1856, Highland weavers worked with a constrained set of natural materials: Isatis tinctoria (woad) and imported indigo for blues, Rubia tinctorum (madder root) for reds, weld (Reseda luteola) and broom for yellows, lichen (crottle, primarily Parmelia saxatilis) for warm browns, onion skins for gold, and iron mordant over a tannin base for black. Each color maps to one of the standard STA thread color codes: B for blue, R for red, G for green, K for black, W for white, T for brown, Y for yellow, P for purple, N for grey. The palette includes both "ancient" (muted, pre-1860 vegetable‑dyed) and "modern" (brighter, post‑aniline) variants.
Generative tartans are produced by mutating valid thread counts. The mutation engine operates on the parsed sett structure, not raw text. Four operators: color shift swaps one dye code for an adjacent hue within the same STA color family (e.g., B→LB, staying within blues). Run scale multiplies or divides a single thread count by 2, clamped to the range [2, 48]. Stripe insert adds a new color band (drawn from the palette, width 2-6 threads) at a random position within the half-sett, then mirrors it to maintain symmetry. Sett transpose rotates all color assignments by n positions in the palette while preserving the proportional structure. Every mutation preserves the pivot-symmetric constraint. The result is always a valid tartan, never mere plaid.
The boundary between "valid tartan" and "plaid that happens to look like tartan" is narrow. Remove the symmetric pivot and you have asymmetric check. Use a plain weave instead of twill and you lose the diagonal interlacing that gives tartan cloth its drape and depth. Use colors outside the historical palette and the result reads as costume, not cloth. The generator enforces all three constraints: symmetric sett, twill‑family weave, period palette.
The full output of the generator, organized by generation type: 36 clan tartans from the Scottish Register, 48 single-operator mutations, 15 cross-bred hybrids, 20 multi-generation evolutionary lineages, and 100 purely random setts. Every specimen is a valid tartan: symmetric sett, twill-family weave, period palette.
The database. Named patterns from the Scottish Register.
Four operators applied to six parent tartans. Each mutation preserves the symmetric sett constraint.
Cross-pollination. The first half of one sett spliced with the second half of another.
Sequential drift. Ten generations of random mutation from a single ancestor.
Pure generation. No ancestry, no constraint beyond the structural rules.
The loom does not know
what a clan is.
Neither does the algorithm.
T-0112 and T-0113 share the same parent sett. The mutation engine swapped the dominant color: madder red in the first, woad blue in the second. Everything else is identical. The same thread counts, the same proportions, the same herringbone weave. Yet the two specimens register completely differently. The red reads as Highland dress, formal, associated with clan gatherings and military ceremony. The blue reads as working cloth, everyday, associated with estate tweeds and fishing jackets.
This is the central observation of the project. The structure of a tartan carries surprisingly little of its cultural meaning. Color does most of the work. A regimental tartan in madder and green signals one thing; the same structure in grey and white signals mourning. The Scottish Register encodes this distinction explicitly: many clans register "ancient," "modern," "weathered," and "dress" variants that differ only in palette, not in sett.
The mutation engine surfaces this without any explicit programming for it. Shift the dominant color and the resulting tartan lands in a different cultural register. The sett remains mathematically identical. The association changes completely.
The difference between Plate VI and Plate VII is the difference between a district tartan and a shepherd's check. Both are structurally valid. Both use period colors. But T-0388 packs seven colors into a dense, short sett, producing the kind of visually busy, high-information pattern associated with Royal Stewart and other "dress" tartans. T-0401 uses only two colors in long, open runs, producing something closer to the simple estate checks that predate the Victorian tartan revival.
Neither is more correct. The Scottish Register contains both extremes. What the generator reveals is the continuity between them. There is no categorical line between "simple check" and "complex tartan." There is a spectrum, controlled primarily by two parameters: the number of distinct colors in the sett, and the ratio of the longest run to the shortest. Push one high and the other low, and you get a maximally complex sett. Push both low and you get a shepherd's plaid. The generator walks this spectrum freely, producing specimens that feel intuitively "right" at both ends.
What the generator cannot produce is cultural context. A generated tartan has no clan, no regiment, no district. It is pure structure, stripped of provenance. Whether that makes it less interesting or more depends on what you think tartan is for. If tartan is primarily an identity marker, a flag worn as fabric, then generation misses the point entirely. If tartan is primarily a design system, a formal grammar for colored cloth, then generation is the right tool for exploring the space of possible expressions within that grammar.
This project takes the second view.
The thread count is the score.
The weave is the performance.
The cloth is what the loom decides to make of both.
● D. Murray · April 2026 · Edgeless Lab ●