Dynamic beat tracking in the browser. A click track (5 ms decaying 1 kHz
bursts, sr=22050) plays 90 BPM for 4 s, then 140 BPM for 4 s. Two trackers
run on it. The static tracker takes one scalar
tempo() for the whole clip, so its beats keep a single spacing and over-detect in the
slow half. The dynamic tracker takes the per-frame
tempo(aggregate:null) curve, feeds it to beat_track(bpm=array), and its
beat spacing bends with the music — the inter-beat interval drops from ~0.667 s to
~0.429 s exactly at the switch. Prior width matters: this narrow 90–140 range needs the
default std_bpm=1 (a wider std_bpm=4 suits a 30–240 span; here
the wide prior would collapse 140 BPM onto its 70 BPM subharmonic). Same asserts as
examples/node/plot-dynamic-beat.mjs.