You don't need to buy anything if you have QuickTime 7 (Mac) (Win) and iTunes. If you do not have Quicktime 7, you can use Audacity - a FREE open source Audio Program instead.

Find the song you want to use in iTunes and right-click to choose "Show in Finder". If the song is not in .AIFF (.aif) format, use Quicktime 7 or Audacity to convert it. Open your .AIFF file in QuickTime 7 (or Audacity). If your .AIFF file is less than 40 seconds in length, you should be fine with iTunes, if not use Quicktime 7 (or Audacity) to cut the file to 40 seconds and save in .AIFF format again.

On the Mac version, iTunes can read .AIFF files (if not, I'm sure there are a few good freeware converters for Windows you can use). Import the file into iTunes.

Go into preferences/options, choose the general tab, look for the section “When a CD is Inserted” and click the import settings button, and choose AAC format. Now exit that window and right click on the file, and choose Convert to AAC from the drop-down menu.

On a mac, select Show File In Finder and copy it to your desktop, On Windows, use File Explorer to find your new AAC format file.

The file extension should be .M4A - rename it so the extension is .M4R and then add it to iTunes. It should appear in your ringtones folder. Add it to your iPhone as you would any other ringtone.