@templewulf The music is all at 120 bpm, and the animation is synced to I think 0.5 seconds! So if the browser behaves correctly, it matches up nicely.

Related hack: the music being at 120 bpm means when JS in a background tab falls back (as it does in most or all browsers) to a 1000ms refresh rate, the second-long samples loop right on time instead of getting herky jerky the way backgrounded audio sometimes might.

@templewulf I did...something or other to prevent async? I don't remember what. It might just be the nature of the once-a-second call, but there's probably some measurable but small pre-load delay up front. Problem with not looking at your own code for years, I really don't remember the details!