build 2 — media session
4 × 30s work / 20s jog, compressed. Every tone is scheduled onto the Web Audio graph
up front at absolute currentTime offsets — no setInterval/setTimeout.
Build 2 adds a real looping <audio> element and Media Session
registration so iOS treats this as active media playback rather than a bare Web Audio
session it can tear down on lock.