Very awesome! Interestingly, in both Chrome and Firefox, the song stops playing ("mostly") if you switch to a different tab. I say "mostly" because Chrome seems to play a single note every 10-20 seconds even with the tab backgrounded.
Yeap, both setTimeout and setInterval are being sacrificed for performance. Alternatively you could use WebWorkers to offload the timers for precision.