Gapless playback on Android!

I am disproportionately happy about something geeky again today :). I finally found an Android app that supports gapless playback properly.

This has annoyed me ever since my faithful iPod provided the perfect finale to one of the worst weekends of my life back in 2010 by suddenly dying completely and leaving me music-less just before a 5 hour car journey on my own. I decided to save money by getting a big memory card for my HTC Wildfire and putting all my music on there instead of replacing the iPod. Mostly this worked ok, but two things about the default Android music player app began to irritate me quite a lot. One is the fact that once you’ve started playing a song, there doesn’t seem to be any way to go back to the track list for that album or the album list for that artist. If you decide you want a different song by them (which I do quite often), you have to go right back to the start of the process and find them in the alphabetical list of artists again, then the album list, then the track list.

The other annoyance was the lack of gapless playback. On the iPod if you ripped a CD with tracks that were supposed to run straight into each other without a gap (like the first two tracks on Sergeant Pepper to give a well known example), they would play correctly and you wouldn’t even notice the transition. On Android there was always a gap between, no matter how you ripped them. This probably wouldn’t have bothered most people but I am (a) easily irritated when technology doesn’t do what I want, (b) the sort of person who likes to immerse myself in music and that doesn’t really work when there’s suddenly a jarring silence that’s not meant to be there, and (c) a big fan of several artists (Mike Oldfield, The Arcade Fire and Evanescence to name three) that tend to use quite a few gapless tracks on their albums.

I had a hunt around online for ways of getting gapless playback on Android, but it quickly became apparent that not many other people had managed to do it either. There were several apps that claimed they would do it… something called Museek tried to simulate gapless playback by slightly overlapping each track with the next one, the effect of which was, erm, “interesting” but still quite a long way off being seamless. Others could only do gapless if you went back and re-ripped each album as one single huge file instead of individual tracks. Others I think could only do it if they were running on a version of Android that supported it, which mine (2.2) doesn’t.

I was sure it must be possible, though, and last year I started hacking together an app to do it myself. The built in Android audio decoding libraries wouldn’t do gapless properly, but there was no reason you couldn’t bypass those and do the decoding in the app code instead – it would just be more work. After a few days I had an app that was capable of playing two OGG files with no gap whatsoever between them, but I got bored of it and it slipped way down my todo list before I’d got around to making it do anything useful.

And then today I found Poweramp… which uses exactly the same approach as my little app was going to, doing the decoding itself instead of using the Android system libraries. For the last few hours I’ve been stress testing it on all the gapless albums I can find and I’m very impressed. It even makes a decent attempt at removing the gaps when playing a file format that doesn’t support gapless (like standard MP3), though it’s only completely seamless when playing formats that do (OGG, etc.). I’m still using the trial version at the moment but I think this may be the first mobile app I actually end up paying for. Highly recommended 🙂