Use Ogg Vorbis for Lag-free Ringtones on Android

Update 2010-06-21: If you want to use custom ringtones in the first place, install Rings Extended from the Android Market, then go to Home > Settings > Sound & display > Phone ringtone.  When it asks which application you want to use, select Rings Extended, and check the checkbox so that it doesn't ask you again.

This will work anywhere any application asks for you to pick a ringtone, assuming it asks via a standard means!

I've also written another article detailing how to convert your music in to Ogg Vorbis files.

Why, do I hear you cry?

Simple really, here’s the story: when I first transferred various files to my phone for use as ringtones (one each for calls, texts, e-mails…) I used MP3s.  Thanks to the Rings Extended application in the marketplace I had no trouble in using them.

But one thing struck me as odd whenever I got a call (or text etc.); lag.  If I were to get a call right now, the phone would vibrate, the screen would turn black, and then a couple of seconds later the contact details show and my ringtone starts playing.  Not ideal.

So I decided to try something.  I set one of the standard ringtones that came with the phone as the current ringtone, and tried again.  This time the phone started vibrating and played the tone at the same time.

After that I had to figure out what format they used, since I had no idea where the files could be and what format they were.  I reasoned that Ogg Vorbis would be the format they’d use — an open-source OS with open-source ringtones.  Makes sense, right?

So I tried it: I converted those same ringtones I started out with to 128kbps CBR Vorbis files.  128kbps because I thought that a higher bitrate would lag the phone out (plus you wouldn’t hear a quality difference from the speaker anyway), and CBR because I thought it would be easier for the decoder to work with, though I have no evidence to back this up.

Voilà!  Suddenly my ringtones loaded a lot quicker, and no longer did I get vibrations with no accompanying ringtone (unless it was set to vibrate only!).

I haven’t tested other settings on the Vorbis encoder (different bitrates, VBR etc.), nor have I tested other formats aside from MP3 and Ogg.

Hope this is of help to someone that actually cares about this stuff.