Risograph Color Separations From Code
A seeded composition becomes two grayscale Riso plates with measured coverage, overprint regions, registration marks, traps, and a physical-proof receipt.
Risograph color separations are grayscale printing instructions, not a screen duotone flattened into RGB. Each plate controls one spot ink; where the plates overlap, paper, ink order, opacity, and registration create a third material color.
This generative printmaking study turns one seed into two reproducible plates, measures coverage and overlap, adds registration marks and trapping, and exports a proof contact sheet. The screen preview is a planning aid; the physical Riso print remains the color authority.
Plan Risograph color separations as two plates
Choose two available inks, paper stock, print order, trim size, bleed, and the composition's intended third-color overlap before generating pixels. The example uses a cool dark plate for structure and a warm fluorescent plate for interruptions, but names are illustrative until matched to the studio's actual drums and swatches. Each output file is grayscale: black means more of that ink and white means paper.
A composite preview tints the plates only to communicate intent. It must retain labels so nobody mistakes an RGB mockup for measured spot color printing.
Runnable artifact: The seeded plate generator produces two deterministic one-bit masks, confirms an overlap region, and hashes the combined grayscale plate bytes. Its riso-plate-generator.test.mjs receipt keeps the article's simplified boundary executable and reviewable.
Save the inspectable proof as riso-plate-generator.test.mjs and run node riso-plate-generator.test.mjs. Expected final line: PASS: two plates reproduced.
import assert from "node:assert/strict";import crypto from "node:crypto";
const plates=(seed,w=16)=>{let x=seed;const next=()=>((x=(x*1664525+1013904223)>>>0)/2**32);const a=[],b=[];for(let i=0;i<w*w;i++){const v=next();a.push(v>.46?255:0);b.push(v<.62?255:0)}return {a,b}};const one=plates(73),two=plates(73);assert.deepEqual(one,two);const hash=crypto.createHash("sha256").update(Buffer.from([...one.a,...one.b])).digest("hex");assert.equal(hash.length,64);assert.ok(one.a.some((v,i)=>v&&one.b[i]));console.log("PASS: two plates reproduced");
Generate one deterministic source composition
Use a named seed, canvas dimensions, coordinate system, primitive recipe, and generator version. The fixture places a quiet field of discs, a directional band, and a sparse set of type-like bars; those forms are chosen to expose coverage and registration rather than demonstrate random variety. Keep geometry in normalized coordinates until export, then record raster dimensions and resolution.
The same seed should reproduce identical source geometry before separation. Determinism supports edition repair and critique, but it does not guarantee the printer, paper, and ink will reproduce identical material results.
Build grayscale plate functions
A duotone separation can assign luminosity ranges, semantic shapes, or authored masks to each plate. This study uses authored ownership plus controlled shared regions: structural bars favor the dark ink, circular interruptions favor the bright ink, and selected intersections print on both. Represent coverage as values from paper to full ink rather than premixed RGB.
Apply tonal curves per plate with documented thresholds and preserve an unclipped diagnostic export. If source photography is used, compare channel and gradient-map approaches against the intended ink behavior instead of relying on one automatic conversion.
Control coverage, overprint, and paper
Measure average and peak coverage for each plate, total area above thresholds, and overlap area. Very dense solids can behave differently from open halftones, so the limits come from the studio and physical proof, not an invented universal percentage. Build an overprint preview using photographed or measured swatches when available, while labeling it as a simulation affected by display and profile.
Paper color is an active third participant: unprinted negative space changes both inks and their mixture. Compose with those material relationships rather than treating separation as post-production.
| Control | Teal plate | Orange plate | Physical proof |
|---|---|---|---|
| Role | Structure | Interruption | Visual hierarchy |
| Coverage | Mid-density | Sparse accents | Ink laydown |
| Overlap | Shared masks | Shared masks | Third color |
| Offset | Reference | Sweep ±2 mm | Registration plateau |
Design for Riso registration tolerance
Riso registration varies with machine, paper, feed, temperature, and repeated passes, so the composition needs a tolerance strategy. Add registration marks outside trim and a controlled offset atlas that shifts one plate horizontally and vertically. Decide where misregistration is expressive and where it damages legibility.
A small trap or spread can prevent accidental paper slivers around critical overlaps, but it changes the artwork and must be authored. Keep fine reversed type and hairlines away from fragile two-plate alignment unless the physical proof demonstrates a stable plateau.
Choose halftone and texture intentionally
Grayscale tones become printed patterns according to the machine and preparation workflow. Test flat fills, gradients, image textures, and any selected halftone treatment at final scale. Avoid stacking independently chosen screens that create an accidental moiré unless interference is the concept.
The generator can add seeded grain, but distinguish digital texture from machine texture and paper absorption. Export a tone wedge on both plates and an overlap wedge so the proof documents what the material stack actually produces. That wedge becomes more useful than a remembered preference when the edition is reprinted.
Export production files and a human-readable map
Produce one correctly sized grayscale file per ink with consistent orientation, resolution, bleed, and registration marks. Filenames include edition, plate number, ink, dimensions, and revision. Include a low-resolution composite preview, plate thumbnails, ink and paper notes, print order, trim box, expected offset tolerance, and source hash in the handoff.
Confirm whether the studio wants PDF, TIFF, PNG, or another format and how it interprets black. Open the final files independently; a two-page document can still be misread if its pages are not unmistakably labeled.
- 1Compose
Freeze seeded geometry
- 2Separate
Emit two grayscale plates
- 3Calibrate
Print tone + offset atlas
- 4Edition
Archive physical receipt
Let the physical proof close the edition
Print the calibration strip and a representative crop before the full run. Photograph it under documented light with a neutral reference if color communication matters, but keep the physical sheet as authority. Record registration range, solid coverage, small-detail survival, overlap mixtures, setoff or drying issues, and operator adjustments.
Feed those findings into generator parameters and produce a new revision rather than editing one plate manually without provenance. Risograph color separations pass when code, files, machine setup, and material proof tell one coherent story.
Carry screen decisions all the way to the press
RISO's spot-color guidance belongs beside the University of Illinois raster file-preparation sheet and the Risograph Museum's separation explainer. For deeper generative-print experiments, compare CMYK halftone rosettes, seeded randomness, lenticular interlacing, and moiré interference; all four expose how repeatable code meets registration, sampling, and physical output.
Design the proof strip as part of the artwork
Reserve one edge of the sheet for tone ramps, small reversed marks, trapping variants, and a registration sweep from negative to positive offset. Generate that strip from the same seed, transforms, screen rules, and plate coordinate system as the composition, then print it before the edition image. Risograph color separations improve when the proof identifies the density range, overlap mixture, and misregistration plateau the physical machine can sustain; those observations should revise generator parameters, never disappear into undocumented manual plate edits.
Write the accepted tone range, overlap mixture, offset window, paper, ink order, drum, and operator adjustments back into a versioned edition manifest. Risograph color separations are reproducible only when the next print can connect generated grayscale values to a physical proof; a source-code seed without the press conditions reproduces geometry, not the artwork's material result. Photograph the control strip beside the accepted sheet under the same neutral light so a later edition can compare dot gain, alignment, and overlap drift against a named material reference.
| Decision | Evidence retained | Stop condition |
|---|---|---|
| Plan Risograph color separations as two plates | machine and studio, ink names and drum condition, paper, plate order, trim and bleed, intended overlap role, and preview disclaimer | the production handoff contains only one flattened color image |
| Generate one deterministic source composition | seed, generator commit, dimensions, resolution, primitive parameters, source-geometry hash, and edition identifier | a rerun produces visually related but non-identical plate ownership |
| Build grayscale plate functions | source primitive or tone, plate assignment rule, curve, threshold, grayscale convention, overlap mask, and diagnostic histogram | separation logic cannot explain why a visible region belongs to one ink |
| Control coverage, overprint, and paper | coverage histogram per plate, overlap percentage, paper identifier, preview source, ink order, and any studio-advised density limits | the composite preview is described as an exact prediction of dried ink |
| Design for Riso registration tolerance | registration marks, offset atlas range, acceptable x-y window, trap width, critical alignment regions, and measured proof notes | perfect pixel registration is assumed because the exported files align |
| Choose halftone and texture intentionally | screen or machine settings, tone steps, digital texture seed, scale, overlap wedge, scan or photograph conditions, and selected range | a monitor zoom is used to approve final dot behavior |
| Export production files and a human-readable map | two production filenames and digests, dimensions, profiles, plate labels, print order, trim and bleed, and approved studio format | one plate is inverted, rescaled, or assigned to the wrong ink during handoff |
| Let the physical proof close the edition | proof sheet ID, machine, operator settings, paper and ink lots, observed registration, accepted tone range, photographs, changes, and final revision | the edition proceeds from the screen mockup after the proof reveals unreadable overlap or unstable alignment |
Risograph color separations finish on paper, where ink, order, pressure, and registration become visible. Archive both grayscale plates with the physical proof and exact generative recipe.