Lattice/City128 BPM · 2:00v2Lines and particles
0:00 / 2:0000Origin

A real-time film2:0064 bars at 128

Lattice City

A city with no ground, no sky and no edge

Two minutes inside a city that is a crystal: one cell, repeated in every direction. Four districts, four lattices, one rule. Nothing here was recorded. Every frame is ray-marched in your browser as it plays, and the score was composed in code on the same bars the picture is cut to.

Runtime
2:00
Tempo
128 BPM · 64 bars
Picture
Ray-marched live in WebGL2
Resolution
Adaptive, follows your GPU
Frames recorded
None
Sound
Original score, synthesised in code
Cuts
On the bar, every one
A

Chapters

B

Districts

Four Bravais lattices, one per district. Neighbours is the coordination number; packing is the fraction of space filled by equal spheres touching at the nearest points.

  1. SC

    Simple cubic

    Basis
    (1, 0, 0)(0, 1, 0)(0, 0, 1)
    Neighbours
    6
    Packing
    π/6 ≈ 0.524

    The avenues. Streets along three axes, towers in the cells between them.

  2. BCC

    Body-centred cubic

    Basis
    (1, 0, 0)(0, 1, 0)(½, ½, ½)
    Neighbours
    8
    Packing
    π√3/8 ≈ 0.680

    A point at the centre of every cube, braced to its eight corners.

  3. FCC

    Face-centred cubic

    Basis
    (½, ½, 0)(½, 0, ½)(0, ½, ½)
    Neighbours
    12
    Packing
    π/(3√2) ≈ 0.740

    The octet truss: all triangles, the densest way to stack equal spheres.

  4. HEX

    Simple hexagonal

    Basis
    (1, 0, 0)(½, √3/2, 0)(0, 0, 1)
    Neighbours
    8
    Packing
    π/(3√3) ≈ 0.605

    Hexagonal towers in a honeycomb plan, stacked floor on floor.

C

Cue sheet

Every word that appears on screen, by bar.

D

Notes

One cell

A lattice is a single cell and a rule for copying it: step a₁, a₂ or a₃, as many times as you like, in either direction. The city on screen is exactly that. Every beam, tower and window is worked out from where it sits in its cell, so the camera can fly for ever without reaching the end of a model. There is no end.

No frames

Each pixel sends a ray into the city and steps along it by the distance to the nearest surface, cell by cell, until it touches something or the haze swallows it. The light trails, the pulses running up the beams and the wave in Signal are all functions of time. Scrub anywhere and the frame is simply computed again.

The signal

In Signal a pulse leaves one node and travels only along the beams. After n steps it has reached every node whose coordinates add up, in absolute value, to n. Those nodes lie on the surface of an octahedron, and there are 4n² + 2 of them. The counter on screen is that formula.

Cut to the bar

The score was written as code on a 128 BPM grid and rendered offline into one track. The picture is cut on the same grid. Every cut and flash, every camera jolt on a kick drum, is a bar or a beat in the same arrangement table the music was rendered from.

Direction & code
yLookbook
Picture
Signed-distance ray marching, WebGL2
Score
Synthesised in code at 128 BPM, rendered offline with Web Audio
Type
Unbounded · Geist · JetBrains Mono

Ray-marched live in your browser. Every frame computed, none recorded.

四宫格