zoom toward the cursor. every layer arrives locked: the wheel never changes layer (arrows, ladder, ◀◀ ▶▶ do)
shift + wheel
zoom without passing through
hold the wheel, drag
move the layer across the screen: what you grab stays under the cursor
→ ↓ ← ↑
next layer · previous layer
drag
slide a picture layer · turn the block
right drag
the other one
0
center the layer
k
unlock this layer: the wheel falls through to the next, as before · again locks it · remembered per layer until reload
v
straight down · oblique
o
focus: one layer, fog
a
sound for this layer. only the layer you are on sounds
m
silence: every sound on every layer, at once (also ■ on the nanoKONTROL, and the button in the panel header) · again brings it back
c
captions (your screen)
l h p
layer list · panel · stage (both)
f
full screen
+ −
zoom in · zoom out
9
audience window: the render alone, for the projector. opening it turns on the 16:9 frame (1920 × 1080). it also keeps the picture moving if this window is covered
projector (panel)
16:9 frame · projector look: brightness, lift the faint, colour, line weight. kept in this browser. reset never touches it
g
make the core (on the column)
d
diagnostics
?
this legend
in the stack
drag
look: up at the generations above, down into the ones below
right drag
turn around the layer
shift + drag
slide
k, then wheel
zoom out and travel the stack without leaving the layer
0
straight down again
what was sown
on arrival
muted until a, the levels up, every process off, the wheel only zooms
1 2 3 4 5
views: the layer · the film · the flowers · the seed and prints · the soil above, the clouds and the field
q
playhead: a frame steps across the flower photographs, one per bloom
click a flower photo
the lane, and where the playhead starts
s
sowing: the loudest flowers let seed go; where it takes it germinates and joins the score
r
grazing: sampled ground rests
e
field arp: the flowers in the frame as a pattern across the beat
i
bass walks: four chords, one per photograph · off, the drone
u
key from the soil: the newest cloud sets the root
z
voices read the relief · off, the print as photographed
x
save the map
click a print
focus it
click the block
(view 5) the pore nearest the click falls out of the soil as a cloud
j
a cloud from the pore a drop of water is in right now
shift click a print
lift the shape under the click as a cloud
play the level
lift the contour at the contour level as a cloud
click a cloud
select it: the knobs become that cloud · again, empty ground or esc lets go
drag a cloud
move it over the layer · the rain follows
wheel on a cloud
raise it or lower it, the field to the block
tumble x y z (panel)
the selected cloud turns on each axis at its own speed · lock the tumble holds it
esc
let go of the cloud · again: clear every cloud
] [ · track ▶ ◀
next · previous stage (the stages panel: save, views, export)
the soil above (panel)
where the block hangs (height, left / right, near / far) · NG2 / RC2 · gap · rain · drops, water speed · rain magnetism · section, void light, network · turn with the tempo · the round: 1 2 3 more faces
w
snap the selected cloud under the water: where most water left the base in the last 30 s
shift j
clear every cloud
what lives here · the table
b
hold the table (drone)
w
write the table
n
melody: the canon theme on the table
click a print
the print the head reads in one print mode
midi keys
any keyboard plays the table
on the block
click a pore
lift it, it sounds · loop is on at arrival and the pore level at zero (knob 4)
space
play · stop the lifted pore
t
lift a random pore
y
return: the screen becomes the next generation's void
esc
put the pore back
nanoKONTROL 2
◀◀ ▶▶
previous layer · next layer
▶
play the lifted pore, or lift and play one
■
silence: every sound on every layer, at once · again brings it back · ■ ■ on what was sown: clear every cloud
●
return
cycle
lock layer
track ◀ ▶
NG2 · RC2
marker set
center · on what was sown: view 1
marker ◀ ▶
sound off · on for this layer
every knob and fader
takes hold only once it passes the value it controls, so nothing jumps. pull all eight faders down before you start
knobs 1 to 8
1 2 3 4
1 mm pore = Hz · speed · tone · pore level
5 6 7 8
drops per second · water speed · section · void light
the cloud's arp · its rain runs (the selected cloud, else the newest)
M4
remove the selected cloud
M5 M6 M7 M8
views 2 · 3 · 4 · 5 (marker set is view 1)
R1 R2 R3
gap 300 · 400 · 600 (the soil above)
R4 R5
play the level (a cloud) · relief
R6 R7 R8
playhead · sowing · grazing
midi: not connected
descent
the audience window is the render alone: no panels, no ladder, no cursor. open it, drag it to the projector (windows display settings: extend, not duplicate), click it for full screen. your screen keeps everything. captions there are off, name and scale, or full. if the venue can only mirror, stage (p) is the one screen version.
every sound, films and recordings included, passes one slow level match (it lifts by at most 6 dB, slowly, and pulls down by at most 9 dB, faster) and a limiter. only the layer you are on makes sound; changing layer fades out whatever belonged to the last one. the trim is per layer and remembered.
stage hides every panel and the ladder; with full screen (f) nothing is on screen but the column and the captions. p again brings the panels back. center puts the layer back in its fitted view.
every layer is silent until you turn its sound on: the a key, or this button. the choice is remembered per layer, so the stack can be loud and the block quiet, or the reverse.
zoom: shift+wheel anywhere, or the − and + keys, or these buttons. whole column pulls right back with focus off so the entire descent is in view; any arrow or ladder press returns you to a layer. every layer arrives locked (r46): the wheel only zooms, and only the arrows and the ladder change the layer. k unlocks the layer you are on, so the wheel falls through as before; the choice holds for that layer until the page reloads. inside the soil the wheel always zooms. straight down looks down the column (v); off, the oblique view that shows the whole column. light drops the render size and decodes one video plane at a time when the machine struggles. focus fades the layers above and below so only the one in frame is seen; off, the whole column shows through. full screen hides the browser (f). the wheel zooms. zoom into a layer far enough and you go through it: the next layer arrives at full frame. zoom out far enough and the layer above arrives at full frame. shift+wheel or lock layer zooms without going through. drag turns, right drag slides, 0 centers. sound (a) is per layer and off by default. captions on or off. edit caption opens this station's text for typing; captions.json beside this page holds all of them and is the place to rewrite them for good. → ← jump a layer; shift+wheel zooms.
projector
r48b. 16:9 frame draws the render at exactly 1920 × 1080, the projector's own size, in a 16:9 box at the top left of this screen; the panel floats over it here but the audience window gets the whole frame. it turns on by itself when the audience window opens. projector look is for a dim projector in a bright room: brightness, lift the faint (raises dark detail without lifting black), colour, line weight (thickens thin lines). it shows on your screen and in the audience window alike. set it by eye on the real screen; it is kept in this browser and survives a reload. this section never collapses on its own.
map
the five HUC12 sub watersheds of the WFM area of interest. one lights its polygon and says which sites it holds. the sound on this layer (a) is the Meadowlark strip at dawn; the beam stands on that point while it plays.
video
the thirteen planes share one 45 second clock; the nearest five decode, the nearest one is audible. restart puts every plane back to its first frame.
relief
the print is shown as scanned. relief turns on the lit height field. play the level lifts the longest closed contour at the contour level and reads it as a boundary: the edge is the waveform, the print surface inside it is the relief the scan row reads. click picks a contour: clicking the print then plays the closed contour nearest the click at that level instead of the whole outline.
the contour tool on the focused relief: levels, exaggeration, cutting tilt, invert, single ink or spectrum. the 3D relief mode in the pore section then scans the print surface itself, row by row, not only its edge.
the cyanotype reliefs from the contour tool, read exactly as a pore is read: the outermost contour is the edge, ink density is the thickness. click a relief, or press this, and it lifts into the pore space with its own sound.
stages
the layer as a ladder, simplest to fullest. next (] or track ▶) goes to the next stage: the view moves first, switches land at once, levels, tempo, wind and the rest glide over the stage's fade. any control you touch is yours until the next stage. clouds are yours: a stage never lifts or removes one. to make a stage: play it until it sounds right, then save to this stage. the view buttons set what the camera does when you arrive (hold leaves it where it is). to keep them: export stages downloads stages_seed.json; put it in keynote\data. the page reads that file when it opens. edits are kept in this browser as a draft until you export; restore the draft brings back the last one, back to the file drops it.
field
each new bloom in the film is one beat. before the playhead, each bloom sounds the ground voice. playhead: a frame steps across the three flower photographs, one frame per bloom, and starts over at the first. it is a bar of music: across the frame is when a flower sounds, up the frame is how high. each flower head inside is its own note, the largest first (flowers per frame). susan, aster and gentian each have a voice: the positive print is its sound, read down its surface as it plays; the negative shapes its decay. the grass and ground in the frame are the 8 pair, low. click a photo to set the lane and where the playhead starts. sowing: the loudest flowers let seed go on the wind; seed that lands on rested ground takes, golden, and after the germination time flowers in its parent's colour and joins the score. it withers after about a minute and a half. grazing: the stretch the playhead just read rests, shown by the outline of its frame; seed will not take there until the outline fades. nothing is drawn over the photographs. save writes the map as a png.
porosity
bach
the crab canon film, sent to a room and a delay. both arrive at zero: the film as it is. faders 1 to 4 on this layer: room, delay level, delay time, feedback. the hall adds its own room; set these there.
the soil above
the soil instrument's rain keeps falling through the block above this layer. what leaves its base falls straight down, here, where the soil lets it out: a cloud catches it only if you put it under the water. a mark on the field shows each place water leaves; w (or snap under the water in the clouds section) moves the selected cloud under the busiest of them in the last 30 s. rain magnetism above 0 bends the falling water toward the nearest cloud below it. the block makes no sound on this layer (r48): its rain is heard only on its own layer. at 600 µm both blocks drain through the base; at 300 and 400 µm neither does, and nothing falls. drops per second, water speed and the looks are the same settings as on the soil instrument's own layer. turning: the block turns with the tempo, easing in and out. the round: 1, 2 or 3 more faces carry the same section, each replaying the block's own water, late by its share of a turn: the back face half a turn, the sides a quarter and three quarters. as the block turns, each face reaches you playing what the front played when it was there.
clouds
routing. rain from the soil above → lands on a cloud → one note, low where the cloud is deep, high at its thin edge → drips on to the field. each beat every cloud reads its next line, a row or a column of its own surface. how rugged that line is, against the cloud's own smoothest and roughest, drives its role across the whole layer. rhythm: how many flowers sound and how often the arpeggio repeats. key: the chord under the field, i, iv or v. timbre: how far each voice reads down its print, and the fold with voices on the relief. wind: variation and how far seed blows. tone: brightness and room. depth is how far the cloud pulls its target from the slider. scan rate is how many beats it holds each line. lifting. from the soil: click the block (view 5 puts it in frame; soil above height sets how low it hangs) and the pore under the click falls out of its face; j lifts the pore a drop of water is passing through right now. from the seed: shift click a print for the shape under the click; play the level for the contour; the print button for its widest pore. up to three; a fourth replaces the oldest. handling. click a cloud to select it (the knobs become that cloud); click it again, click empty ground or esc to let go. drag a cloud to move it; the wheel over a cloud raises or lowers it. tumble: x, y and z each turn the selected cloud at their own speed, in turns a minute, the middle of each slider still. lock the tumble holds all three: the sliders and buttons stop answering until it is unlocked. still stops it where it is; upright stops it and turns it back to face the rain. a tumbling cloud catches rain on either face and catches less as it turns edge on. the rain aims at wherever the clouds are. a drip that lands on the field sounds a quiet echo of its note, so a high cloud echoes late. sound. each cloud has a level (faders 4 to 6), rain notes, runs (the next notes across its surface from where a drop landed) and its own arp (M2): the frame's flowers an octave up, voiced by the line the cloud is reading, 3, 4 and 5 notes a beat by default. views: 1 the layer, 2 the film, 3 the flowers, 4 the seed and prints, 5 the soil above, the clouds and the field. clouds shape the field off: they only catch rain and play.
table
the prints as one wavetable. a read head, fixed in the room, lies across the plane; the line it reads down the prints is one cycle of the sound. head position moves it across the whole plane in one continuous scan, print to print, skipping the gaps. whole plane reads every print; one print reads only the print you last clicked. rotate x, y and z turn the plane under the head: z crosses the prints at an angle, x and y tilt them so the head reads a shorter or longer stretch, past 90 it reads the back of the relief. relief height and invert height change what it reads.
hold the table sounds the head at the drone pitch. write the table sweeps the head across the plane and keeps that many frames: a wavetable. play the written table plays from the kept frames instead of the live head, position morphing between them. melody plays the crab canon theme, the prairie voice, on the table, with the head travelling from start to end of the table across the melody. save wav writes the kept frames, 2048 samples each, one after another. any midi keyboard plays the table on this layer. pores still work: click reads a pore and play the level are unchanged.
→ or ↓ steps one station down the axis, ← or ↑ back. the ladder on the left jumps. f is full screen, h hides this panel. the nearest video plane carries its own sound when video sound is on.
block
the site and the bridging gap. two pores are joined when the matrix between them is thinner than the gap. 300 µm is the working default. at the pair and at bach both blocks are on screen and these buttons do nothing.
water
rain enters the top face and follows the joined void down, always preferring the way down. a drop makes a grain when it enters a pore and a low thud when it leaves the base. drops that reach a dead end pool and fade.
camera
on the block drag turns and right drag slides; on a picture layer drag slides and right drag turns. the wheel zooms toward the cursor. travel the void rides the longest connected route through the joined void at this gap, as Void Road did.
play
the instrument playing itself: the 24 census casts of this site, one after another, in the chosen order. by size is widest first. as water arrives is the order the flood reaches them at this gap; casts the water never reaches are skipped.
bach: the crab canon, NG2 the theme forward, RC2 the theme backward, every note a pore lighting where it sits. return: the screen is re-censused and becomes the next generation's void. site recording: the soil bioacoustics from this site, sound only.
pore
click a pore in the block and it leaves the block for its own space on the right. 2D: the needle rides the edge; one revolution is one cycle of the sound. 3D: the void's thickness as a terrain; the scan line reads a row of it as the cycle, and rain landing on it makes grains pitched by depth.
by size: 1 mm pore = the base you set, wide pores low, f = base × √(1000 / diameter). by speed: the speed knob is the pitch, revolutions per second = Hz. quantize snaps to D minor pentatonic on the root you set. reverse reads the edge backwards.
loop (on at arrival): the groove repeats until space, stop or esc, and a new pore takes over from the last. the pore level arrives at zero: raise it (knob 4). hold: the pore sounds until you stop it, flat. groove: one note; the needle spirals from the edge to the deepest point over eight turns, and the void's thickness under it is the envelope.
core
every layer you entered left a frame. the core takes the same narrow vertical cut through each, reads it as void, and stacks them top to bottom: the column as one reading. play reads the core top to bottom as a waveform, the void fraction of each row, ten seconds a pass. save writes the png.
view
data: the census numbers for the block and for the lifted pore. explain: this text, under every control, and a running line at the bottom left saying what is happening. h hides this panel.
Pixel of Grassland
first prototype performed 9 October 2026 as the keynote for Wormfarm Institute’s Decomposium, Sauk City, Wisconsin
Sound on. Best in Chrome, on a computer.
Click to begin.
→ or ↓ next · ← or ↑ back · C captions · H hide the controls