play aesel sounds against the aesthetic computer net clock master
Sound previews were scheduled from a local Audio element, so two machines with the same loop drifted apart. net-clock.js mirrors the disk API's clock: sample /api/clock, take server time minus the request midpoint, ease later samples 25%, and derive beat, loop phase and next beat from shared time alone, the way the clock piece does. The main process samples it through Electron's net (the renderer's CSP can't reach the site) and hands it to the renderer over IPC, throttled to one fetch per five seconds. The preview is now a Web Audio deck that pairs shared time with the context clock: loops start at the shared phase, one-shots wait for the next beat, and a running loop relocks if it drifts past 20ms. Scores carry their grid, loops must be a whole number of beats, and the compose tools ask for notes on beats and loops on whole bars. Tests cover the clock math with fake fetch and time; two fake machines with different skews land on the same beat. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>