Latency Loom
A room several tabs weave together, where the network delay between players is the instrument — every note reaches the others late, so the room plays itself as a distributed canon. Open this page in a second tab and you both join the same loom.
Drag to re-tune the canon: your notes reach every other player this many milliseconds late, quantized onto the shared 110-BPM grid. The delay is the compositional control, not an error to hide.
Read the design notes
Transport is a serverless BroadcastChannel; each open tab is a live player. Because BroadcastChannel is effectively instant, inter-peer distance is simulated per player and applied as a scheduling delay — the delay is the instrument (NIME 2025, latency-as-device).
A shared metronome (Oda & Fiebrink, NIME 2016) keeps every tab on one grid via performance.timeOrigin. Receivers re-synthesize control events locally (the Cornelljam pattern), so the room scales at zero bandwidth. Tuning is 7-limit just intonation, deliberately not pentatonic.