LIGHT STUDY: SOL/001 — THRESHOLD
01 — CONCEPT
Light arriving at structure and transforming it without changing it. A warm canvas breathes. Traces of darkness appear and fade — not threatening, just present. A brutalist structure materialises from the warmth — it was always there, hidden by fog. Orange hues begin arriving from the right — light, not applied colour. The grays of the structure become interspersed with oranges. Not replacing. Coexisting.
THRESHOLD is the SOL series thesis rendered as a single piece. Where INT pieces emerge from darkness, SOL pieces begin in warmth and introduce structure into it. The darkness is not defeated — it is still there, interspersed. The light does not replace the gray; it reveals what was already there. This maps directly to the series philosophy: you did not become someone different. You finally saw what was always there.
The title refers to the moment between states — the threshold between darkness and light, between seeing and not seeing, between the structure as it was and what it becomes when light finds it.
02 — VISUAL LANGUAGE
The piece operates within the same monospace character-rendering constraint as the INT series — all visuals are constructed from Unicode characters rendered via canvas fillText() on a 14px grid. The brutalist structure is built from block elements (█ ▓ ▒ ░), with a heavy solid perimeter (█) defining the architectural silhouette. The interior is raw mass and void.
The building is defined as stepped sections sharing a common ground line — a tower, a main mass, a plinth, and a cantilever — creating a dramatic asymmetric skyline. The silhouette is the primary architectural statement. Interior detail follows: solid mass zones (heavy block characters) alternate with void bands (recessed windows, rendered as subtle dots). A weight gradient makes the base heavier than the top.
The structure does not enter the frame — it was always there. During the ground phase the building is invisible, rendered in colours identical to the warm cream background. During memory, the faintest traces emerge. During approach, the structure materialises through a noise-modulated colour transition: cream → brown → gray. Each cell has its own reveal threshold derived from simplex noise, creating an organic, fog-lifting effect rather than a uniform fade. The building emerges from obscurity rather than arriving from elsewhere. This maps to the series thesis: you did not become someone different. You finally saw what was always there.
The illumination is not applied uniformly. A gradient front sweeps from right to left during the illumination phase, its edge made organic by simplex noise. Structure characters in the lit zone shift colour from warm gray to a mix of international orange, gold, and persistent gray — the coexistence effect. Not every cell turns orange. Some remain gray. Light and shadow share the same form. Void cells in the lit zone may catch reflected gold light, adding depth to the recesses.
During the presence phase, text fragments emerge half-visible from the structure — "still here", "it worked eventually", "you will always begin again". They are not displayed prominently. They are discovered, like something left where you would find it. The quality of a note someone placed knowing you would eventually see it.
03 — CYCLE BEHAVIOUR
Each cycle runs approximately 42 seconds — matching the INT series cadence — and transitions through six phases. A new seed generates a fresh building configuration and fragment selection per cycle. The phase system is time-driven. Unlike INT, where you observe a system that does not know you are watching, SOL pieces know you are there. The piece accompanies you.
04 — ITERATIONS
Initial implementation defined the building as overlapping rectangles with a uniform floor/column grid throughout the interior. Floor lines (─) and column lines (│) created a repeating grid pattern with noise-driven block characters between them. The result read as a data table or MSX game sprite rather than architecture — too uniform, too regular. The structure lacked silhouette, weight hierarchy, and the interplay of mass and void that defines brutalism. However, the colour work was correct from the start: the orange/gold/gray coexistence through the light front created the right emotional effect.
Redesigned the building system entirely. Replaced overlapping rectangles with stepped sections sharing a common ground line — tower, main mass, plinth, cantilever — creating a dramatic asymmetric skyline. Removed interior grid lines entirely. Added mass/void interior pattern: concrete floor slabs alternate with recessed void bands (windows). Perimeter uses heavy solid characters (█) to define the silhouette. Weight gradient makes the base heavier. The structure now reads as architecture.
The camera pan from v2 created a jarring scrolling effect — the building entering from off-screen felt like a game sprite rather than architecture being revealed. Replaced the pan with a fog-reveal: the building occupies its final position in all phases but is invisible during ground (rendered in background-matching cream). During approach, per-cell noise thresholds drive an organic colour transition from cream → brown → gray. The structure materialises from obscurity rather than arriving from elsewhere. This better serves the series thesis and removes the last vestige of the MSX aesthetic from v1.
05 — CURRENT PARAMETERS
GRID
cell_width ········· 14px
cell_height ········ 20px
font_size ·········· 14px
TIMING
ground ············· 5,000ms
memory ············· 5,000ms
approach ··········· 8,000ms
illumination ······· 12,000ms
presence ··········· 8,000ms
fade ··············· 4,000ms
total_cycle ········ ~42s
STRUCTURE
type ··············· stepped sections (tower, mass, plinth, cantilever)
perimeter ·········· heavy solid border (█)
interior ··········· mass/void alternation
floor_slab_height ·· 2 rows
void_band_height ··· 3–4 rows (seeded)
pier_width ········· 2–3 cells (seeded)
void_width ········· 3–5 cells (seeded)
weight_gradient ···· heavier at base (+0.25 density bias)
REVEAL
method ············· fog reveal (no camera pan)
approach_easing ···· cubic ease-out
cell_threshold ····· per-cell noise (simplex 0.05 freq)
colour_transition ·· bg → lerpColor → fullStructureColour
LIGHT
direction ·········· right to left
front_shape ········ noise-modulated (±6 cells)
lit_colours ········ accent (#E86A3A), gold (#D4A56A), gray (coexistence)
void_lit ··········· gold reflection or shadow
FRAGMENTS (per cycle, seeded)
pool ··············· "still here", "it worked eventually",
"you will always begin again", "this world is malleable"
emergence ·········· character-by-character during presence phase
visibility ········· half-visible (textMuted / textSubtle alternation)06 — AUDIO
THRESHOLD is the first SOL piece with audio. Where INT/002 STATION used shortwave radio synthesis — cold, mechanical, indifferent — THRESHOLD uses warm generative tones in G Mixolydian. Mixolydian is a major scale with a flat seventh: bright but with a bittersweet undertone. Joy that knows sadness.
The audio accompanies rather than surveils. INT audio feels like a system that does not know or care that you are listening. SOL audio feels like it knows you are there — present with you rather than indifferent to you.
Master Gain → Destination
├── Pad: 2× sine oscillators → lowpass filter → master
│ Sustained chords (root+5th, root+3rd)
│ Long ramp times for gentle evolution
├── Arpeggio: triangle oscillator → lowpass filter → master
│ Steps through G Mixolydian scale
│ Tempo slows/quickens with phase
└── Texture: pink noise → bandpass filter → master
Warm atmospheric presence07 — RELATIONSHIP TO INT
SOL/001 shares the same technical foundation as INT — canvas character rendering, colour-batched fillText, phase-driven animation cycles, Tone.js audio. The palette uses the same hex values as INT's Amber Schematic, inverted: what was background becomes ground, what was accent becomes the colour of structure being revealed. International orange remains the shared constant — but its register shifts entirely. In INT: warning flash in darkness. In SOL: warmth, sunrise, hearth.
The same code, entirely different meaning depending on context.
08 — DEPENDENCIES
simplex-noise ··· 3D noise field (ground breathing, structure density, light front) tone ············ generative audio synthesis (Tone.js) mulberry32 ······ seeded PRNG for reproducible cycles (inline) canvas 2d ······· browser-native rendering geist mono ······ monospace typeface