In April 2012, I participated in a Mozilla Dev Derby, a hackathon-like event where developers create things using a new web platform feature. This event focused on new browser audio features, and I had the privilege of meeting other audio developers, and future Mozilla colleagues. I created one of the winning entries, an audio-visualization library for the web, dancer.js.
dancer.js provided beat detection, frequency, and time domain audio data, abstracted over the very experimental, and different, browser audio APIs. The library was popularized as an early demo of visualizing audio with 3D (three.js) on the web, with cross-platform support by integrating audio data from several sources:
- Web Audio API, implemented in Chrome in 2011, the first, prefixed version of the now-standardized API.
- Audio Data API, implemented in Firefox around 2011, a more simple but less powerful alternative to the Web Audio API.
- SoundManager2 providing flash fallback to support all other browsers.
A few years later, thanks to more collaboration with browser vendors and progress on web standards, there's not much need for dancer.js and patching over various audio implementations: the Web Audio API is now stable and implemented across all modern browsers.