For example, jsmad allows Firefox 4.0+ to play MP3s without any Flash. Faster loading times. Fewer security holes. No 64-bit headaches on Linux. Fewer memory leaks.
jsmad is released under the GPLv2 license.
It works out of the box under Firefox 4.0 and above. On Chrome 13.0+, you have to enable manually the Web Audio API in 'about:flags', then restart the browser and it should work fine! No Opera support at the moment.
- @nddrylliog - lead developer
- @jensnockert - helped porting & debugging the code at MusicHackDay Berlin
- @mgeorgi - helped debugging the code after MusicHackDay Berlin
It performs well enough to decode and play MP3s in realtime on Firefox on modern computers, although if you do lots of things at once, Firefox might forget at all about scheduled tasks and let the soundcard underflow. There is a rescue mechanism for that in the demo, which works most of the time.
jsmad is available under the terms of the GNU General Public License, Version 2. Please note that under the GPL, there is absolutely no warranty of any kind, to the extent permitted by the law.
libmad has commercial license. As for jsmad, we're in a sort of grey legal area. If you're from Underbit and want to work this out with us please drop me a note at firstname.lastname@example.org
What's next? A few things:
- Strings are still used in the core decoding routines instead of Uint8Arrays - this should change
- Optimizations, always
- Better buffering strategy - player.js is still pretty naive and we stumble now and then onto buffer underflow
- MPEG Layer I and II are not supported, only Layer III is - it should be pretty trivial but we had no interest for it in the first place.
- MPEG 2.5 is not supported.
- Free bitrate streams are not supported (this is different from VBR - VBR is supported)
- Most of ID3v2.2 and ID3v2.3 are implemented, but some tags are mising.