#49 address performance issues by replacing onaudioprocess with requestAnimationFrame