#TIL from building a web audio player (for the mixes):

#Safari's #opus support is still quirky. With a #webm container, playback works but AnalyserNodes won't receive anything to compute frequency data with. With #ogg, `getByteFrequencyData()` works, but the audio element calculates the wrong duration, prob. b/c it always assumes CBR. Also if you build the audio pipeline before the first user interaction in Safari, nothing will get routed to the speakers

But still, the #WebAudioAPI is awesome!

Oh, and another thing: #Safari won't let you programmatically set the volume of an audio element. You have to include a GainNode into your audio pipeline to be able to do it.
Understanding Audio Frequency Analysis in JavaScript: A Guide to Using AnalyserNode and getByteFrequencyData

Learn how to analyze audio frequency data in JavaScript using AnalyserNode and getByteFrequencyData. Perfect for building visualizers and VU meters.

Deconstruct - A Blog From the Makers of Pipe