Superframe
Describe a piece in plain words and get it back in every medium at once: a painting, a page of living type, a line drawing, a carved material, a sound and a touch pattern, all from one seeded recipe. Then read it back as a study of its own parts, in whichever sense works for you.
- Version
- 0.2.0
- Runs on
- Node 24 or later, no dependencies
- Licence
- FSL-1.1-MIT; fonts under the SIL Open Font License 1.1
- Source
- HarperZ9/superframe
One recipe, four of its six readouts. Each one sweeps in as a front from where its strongest element sits; choose one to hold it.
Try it
git clone https://github.com/HarperZ9/superframe
cd superframe
npm run make -- "heavy rust coral upper left, fine teal frost on the right" out/first --seed first
The same words and seed give the same files, byte for byte. Change one word and only that element changes, in every medium, in the same place. Text in quotes inside the description becomes the type.
One recipe, every medium
This piece came from one sentence. Each surface on this site stands in as the law that shares its property: the gallery's seeded plates as a tiling, the Studio's timeline as poured ink, Night School's paths as a mycelium network, the explainers as contour lines, the fractal suite as Turing coral, transparency as frost. The type sets the line "properties and laws, back to one".




Hear it
Left to right is time, top to bottom is pitch. The coral in the upper left plays early and high, and the ochre network plays late and low.
Sixteen seconds of the same piece as sound: 72 partials from 70 Hz to 7 kHz, each one's loudness read from a band of the picture.
The piece as its own study
Every render can draw a study plate from its own data. The graph joins each element to each medium, and an edge's width is how much of the element survived the crossing, measured from the outputs. The strip below it is the sound, drawn back as a spectrogram: the picture again, read as a score.

Hear an image, see a sound
Every element is a law acting on a field: reaction-diffusion coral, marbling, frost, ink in a fluid, a slime-mould network, Kepler orbits and nine more. Each medium reads that field its own way, and the mapping is fixed and stated, so a person can learn to hear where things are and to see what a sound holds. You pick the readout that works for you, or layer two. The engine's room opens a private local space for this, where words, numbers, pictures and sound turn into one another. It is a creative tool, and it makes no claims about therapy or outcomes.
A study for every reader
Each render writes a study of its own parts. study.md gives one plain sentence per element and alt text for each medium, for people and screen readers. study.json gives the properties, the weights each law read and the ones it ignored, and a measured record of how much of each element survived into each medium, for software and language models. tactile.json is a vibration pattern for a phone.
Change it freely
node superframe/cli/superframe.mjs artifact out/first/recipe.json out/b --isomer permute
node superframe/cli/superframe.mjs artifact out/first/recipe.json out/c --metamer coral
node superframe/cli/superframe.mjs artifact out/first/recipe.json out/d --route coral:sound:0
- Isomer
- the same weights in a new arrangement
- Metamer
- an ink that matches in daylight and splits under tungsten
- Route
- how much of an element passes into a medium; 0 silences it there
- Edit
- one weight, by its path in the recipe


What is tested
271 tests run with npm test. The same recipe repeats byte for byte in every medium. A one-weight edit changed 37,122 paint pixels inside its element's region and none outside, and no sound outside its time window. The same check after a global step finds 186,861 pixels outside, so it can fail. A word the reader does not know changes nothing.
Limits
- Each law runs on its own grid, a few hundred cells across its region, so up close its edges are soft. This piece renders at full 4K size in about 35 seconds.
- Elements do not act on one another yet; each law runs alone in its region.
- Type is the weakest crossing: on this piece an element's ticks correlate with what the type shows at 0.06 to 0.33, against up to 0.80 for paint, 0.87 for sound and 0.94 for material.
- The intent reader knows a small English vocabulary. Words it does not know are listed, never guessed.