Ok, the iPhone 3G is a pretty damned nice phone when you buy it, but let's face it, the ringtone selection SUCKS. You can always buy ringtone capable songs from iTunes and pay an extra $.99 to snip a 30 second ringtone out of it, but what if you want a movie theme song, a cartoon show theme song from your years as a kid, or some funky sound effects you found on the web?
Here's what you do if you have a Windows machine, or have a 10.4.11 (Tiger) Mac. (If you want to use a full song that isn't 45 seconds or less, you need to find software to crop the section you want. Any Mac can use GarageBand for this, and I am sure there are free Windows solutions as well. To ease the pain of this step, I just download pre-made ringtones in MP3 format and go from there.)
1. Find a ringtone. I personally get all mine from CrackBerry.com or TuneUsIn.com because they are already in short ringtone format and I don't have to edit or crop them (it has to be 45 seconds or less).
2. Download the ringtone to your desktop
3. Open iTunes and go to your Preferences (might be called Settings on Windows) > Advanced Tab > Importing sub-tab > Find where it says "Import Using" and set it to AAC encoder.
4. On a Mac, double click it and it will automatically add to your iTunes library and start playing. On a PC, it will most likely open WMP automatically, so just drag it to your iTunes library.
5. Find the rintone you just dragged to your iTunes library and right click it, then select "Convert to AAC."
6. It will create a duplicate of the ringtone in AAC format and should start playing it automatically.
7. Drag the file to your desktop. (Since the new AAC format ringtone starts playing automatically, it will have a speaker next to it, which makes it easy to determine which file you need to drag)
8. Delete the two copies of the ringtone from your general Music list (you don't have to, but I don't think you want ringtones randomly playing next time you do a song shuffle...)
9. See that ringtone you just dragged to your desktop? It should be "songname.m4a." Now, simply change the file extension to .m4r. You can leave the file name alone, or you can make it whatever you want, the important thing is that you change the extension to .m4r.
10. On a Mac, double click it and it will auto add to your Ringtones list in iTunes. On a PC, you may have to manually drag it to the list.
You're done. You now have custom ringtones on your iPhone for free, and they can be whatever sounds you can find... as long as they are shorter than 45 seconds.
I know it looks like a bunch of steps, but it isn't. The whole process takes maybe 30 seconds after you do it once or twice.