Three.js + Web Audio API + a lazy beat