I have a Mac and have been using: Rogue Amoeba - Under The Microscope
What I do is fire up Garageband, cut out the clip of a song I want, do any fading in and out then export song (NOT RINGTONE, they sound terrible) to iTunes. Then right click that song and click Convert Selection. After, I locate the converted file drag it in the app and instantly converted and it shows up in the Ringtones section in iTunes.
FREE solution. I can't remember where I got this info, but I've tried it and it works for me with iTunes 7.7 and my iPhone 3G
1. First get the song you want to make the ringtone from.
2. Open it with quicktime pro (or any other editor)
3. Cust out the section you want as the ringtone and save it as a new mp3.
4. Import it into iTunes
5. in iTunes go into
Preferences > Advanced > Importing
Set to Import using: AAC encoder 128Kbps
6. Right click on the file you want as a ringtone and select
Convert selection to AAC
Your file will now be converted to an AAC file. (appears in iTunes under your original file)
7. Right click on the new file, click on show in finder (or open folder on windows)
8. You will now see your AAC file, all you have to do now is change the file extension from .m4a to .m4r
9. Drag the file out of the folder to the desktop, then drop it back into itunes.
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.