It uses AnalyserNode[0] to get frequency data and moves the elements based on the frequency ratio[1][2].
[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