The OwleryConstruction field guide Return to station

Archive document / OW–BUILD–159

How to make
silence visible.

The Owlery is a fictional field station built around real acoustic adaptations of owl flight. Its design question was simple: how can a webpage make absence feel more dramatic than noise?

100% code-drawn
no generated assets

01

The concept

The visual register joins a nineteenth-century naturalist folio to a contemporary acoustic laboratory. Barn-owl buff floods the comparison and hunt experiments; everything else falls into spectrogram black. Those alternating exposures make the eye repeatedly adapt, as it would when moving between a lamplit station room and the fen outside. EB Garamond carries wonder and observation. Chivo Mono speaks only when the station measures.

No photographs or generated assets appear anywhere. The owl, moon, bones, feather, leaf litter, acoustic rays, scanlines, and grain are all SVG or CSS. That code-only constraint is central to Wing VII: light itself is the material, not decoration applied afterward.

02

Silence Compared

The centerpiece is the .comparison instrument in index.html. Two SVG paths share the same 1,000-unit timeline. .pigeon-wave chops it with steep transients; .owl-wave gives up its last tremor and becomes horizontal. drawWave in styles.css reveals each normalized path. The click handler in main.js stages pigeon, owl, then a 4.8-second hold while .silence-verdict expands into one luminous dash. The empty interval is the climax.

A second procedure turns the visitor into the specimen. beginStillness() opens the native .hush-dialog and runs a 4.8-second Web Animations hold. Pointer or key movement calls disturbStillness(), writes a buff pressure spike, and restarts the clock; only actual stillness resolves the scope to 0.00 Pa. The animation pauses with page visibility and resolves immediately for reduced motion.

Audio remains off by default. After explicit consent, noiseBurst() builds filtered noise buffers with Web Audio and wingPassage() contrasts four blunt pulses with one faint wash. Visibility changes suspend the audio context; reduced motion resolves immediately to the quiet result.

03

Microscope and hunt

The microscope uses one layered SVG feather. selectFeature() changes the active specimen, roving tab focus, facts, and highlighted group for serrations, velvet pile, or trailing fringe. Dashed airflow paths show which turbulence each adaptation splits, absorbs, or releases.

The localization field is a real pointer and keyboard instrument. renderHunt() compares the reticle with a randomized hidden target, converts offsets into ear delays, and exposes confidence as --confidence. That variable physically tightens the convergence ring. Pointer updates are batched with requestAnimationFrame(); arrow keys move, Enter strikes, and the mouse is always released unharmed.

04

Palette + type tokens

Spectrogram black#090c0aOwl buff#d5b786Moon white#f2eadcSignal green#9de8aeTalon grey#8e9189

Display: EB Garamond 400 italic/roman. Instruments: Chivo Mono 400–600. Headline tracking is tightened to −0.055em; instrument labels use 0.08–0.16em spacing so even tiny text remains crisp.

05

Reproduce this

Prompt an AI agent to build a code-only nocturnal research station around one measurable absence. Require an editorial serif and mono instrument face, alternating dark and biological light fields, and one signature SVG comparison whose quiet result occupies more time and space than its noisy result. Ask for labeled micro-anatomy, a keyboard-operable scientific interaction, synthesized opt-in audio, a single orchestrated load reveal, and a mobile composition that preserves asymmetry and wonder. Explicitly forbid image assets, generic card grids, external requests, and motion without a reduced alternative.