For mac just use GarageBand, do a search you'll find it.

How to Create Custom Ringtones

This will not void your warranty because you do not use third party software. Everything is done within iTunes or on the desktop. I think iTunes 7.4-7.5 is required.

Before you start go into any folder and click Tools>Folder Options, then click the View tab and scroll
down until you see a checkbox that says 'Hide Extensions for Known File Types' next to it, uncheck that
box and click Apply. VERY IMPORTANT! Then continue. Once you have your ringtones you can undo this if it annoys you.

1. Choose a song
2. Listen to the song and choose a segment that you want your ringtone to be, you have to know the times, like 0:36-0:56, try to keep it less than 30 seconds
3. Right click the song in iTunes and click Get Info
4. Then Click the Options tab
5. Check the boxes next to Start Time and Stop Time
6. In the box next to Start Time, type the time you want the ringtone to start
7. In the box next to Stop Time, type the time you want the ringtone to stop
8. Clck OK
9. Right click the song in iTunes and click convert selection to AAC
10. A new song will appear and start playing, this is what your ringtone will be
11. Right click the new song and click copy
12. Go to your desktop and click paste
13. Right click the song on your desktop and click rename
14. There may be numbers before the name you can delete those if you want, but change the .m4a to .m4r ALSO VERY IMPORTANT!
15. It will say that some files may not be usable or something when you change to .m4r, just click yes you are sure
16. The icon should change to have the iTunes logo and say Ring under the logo
17. Make iTunes a small window and click the Ringtones section of your library
18. Drag the song from your desktop to the area where your ringtones will be, before you drop the ringtone in there a little plus sign should show up, just drop it in the folder
19. Then go to your iPhone, click the ringtones tab, and click Sync All Ringtones, then click the Sync or Apply button at the bottom of iTunes
20. Once it has synced go to your iPhone, then go to settings then sounds, choose ringtone and there should be a section at the top called custom and your ringtone should be in that section