First I thought the script just made things bounce at intervals, but then I noticed the different boxes for base, mid and high range sounds actually follow the changes in the music. How do they do this? - I guess I should read the source code :)
[0] https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNod...
[1] https://github.com/Okazari/Rythm.js/blob/4693385a2d854f0c5f1...
[2] https://github.com/Okazari/Rythm.js/blob/c054c475e6e758878db...
-- edit: formatting
To describe it fast : I keep an history of frequency (size customable) and compare the subscribed frequency range to its relative history max / min value. I get a percentage out of it that i give to the dance function associated to this specific class.