Memory Landscape

The terrain at rest. Point, card, and wire positions are computed from the dataset.
A personal dataset rendered as generative terrain.
Memory Landscape is a browser-based generative terrain built from a structured dataset of places I have lived, the memories attached to them, and the languages they happened in. Every visual and sonic parameter is derived from a field in that dataset. The piece renders as a WebGL point cloud sphere with orbit and zoom controls and reactive audio.
Source material
The source material is a set of physical documents collected across two countries and two languages: train tickets, receipts, photographs, letters, official papers. Each carries partial structured information. A ticket holds a date and a price. A letter holds a recipient and a language. Formats are inconsistent across types.
Before modeling, each item was cataloged as an object with a fixed set of properties: place, period, type, language, and sentiment.

Memory cards over Nanjing. Each card type, receipt, photo, document, letter, has a distinct layout.
The schema
Each location is a record: years, duration, intensity, significance, valence, and a language balance between English and Chinese, each normalized to a 0 to 1 range. Each memory attached to a location is a child record with a type, a sentiment score, and a language. Nothing in the piece is styled by hand. Every visual quality is driven by a field, and any quality that cannot be written as a number is excluded.
The schema is small by design: a dozen fields per location, three per memory.

Loading state. The dataset is parsed and the terrain computed before first render.
The mappings
Each field is bound to one visual or sonic output through a plain function from input range to output range. Every binding is documented in the piece's process view. The core bindings:
Intensity scales elevation amplitude. Significance sets plateau height and erosion rate. Valence controls ridge sharpness in both directions from neutral. Duration adds surface roughness detail. Eighteen years in Nanjing produces the highest plateau with the slowest erosion. No terrain features are placed manually.

The surface up close. Plateaus and ridges computed from location fields.

The in-piece process view. Each mapping listed as a function.

Each binding shows its source field, output channel, and transfer function.
Cards and wires
Each memory renders as a card in a ring around its location, connected to the surface by a wire. Connections between locations arc across the sphere. Connection strength sets arc height and brightness. Cards activate by pointer proximity rather than click. Within a threshold distance of a card's anchor, the card rises, the anchor scales up, and the wire brightens.

A letter card activated by pointer proximity, wire highlighted to its anchor.

Focus state on Nanjing. The underlying record printed as text at the frame edge.
Camera and audio
Audio parameters are bound to navigation state. Camera distance drives a low-pass filter cutoff. Pointer position pans the stereo field and shifts timbre. Hovering a cluster sets the pitch and harmonic spread of two oscillators from the same fields that shape the local terrain.

The full dataset at maximum camera distance, with the year spiral visible around the sphere.
One dataset drives every visual and sonic parameter.