This was a blast to program, and I hope you guys enjoy it. If you come across any suggestions or problems, such as error messages popping up, I would appreciate it if you paste them to me in a PM -- thanks!
One cool feature you might not be aware of: you can click on the visualization screen to drop down a menu that lets you switch between the different visualizations.
just a warning, technical stuff follows!
Right now, one big problem happens when you have another noisy Flash page open -- say, YouTube -- while the visualizer is up. The computeSpectrum function, which grabs the waveform data from audio, actually tries to grab it globally from every running instance of the Flash plugin, including the crazy YouTube video you might have open! This is actually a limitation of ActionScript. In turn, this causes Flash to throw a security error -- you aren't allowed to grab sound data from a file outside of the SWF's domain. :X
I currently catch this error and badly generate fake sound data when it happens. But why can't we get the spectrum data for only the current instance of Flash Player? This seems to me like a pretty bad oversight in ActionScript 3.0 and really hurts an otherwise cool feature. Not sure if it's because of technical limitations or what -- what gives, Adobe?
In the future, I'll probably go ahead and convert the audio player and visualizer into Flex components. I avoided Flex for now because I didn't want to add any bloat to the audio player. However, the next update of Flash player will cache the Flex framework, reducing bloat. Using the Flex framework opens the door for lots of cool stuff in the future, too, such as having customizable NG audio players that people can throw onto their webpages. hell, maybe even an Adobe AIR audio player? :O