Now I know there are plenty free apps out there for ringtone making. However if you like a bit of fun/challenge, here is how to do it without apps. Sounds complicated but it is actually easy to do. You can do it under 5. :)
1. pick a song and add it to iTune Library
2. go to iTune -> Library -> music -> your song
3. listen to the song, pay attention to the time counter on top of the iTune screen, write down the time when you want your ringtone to start and the time when to stop, e.g. start at 0:20 (20sec into the song) and stop at 0:50 (50sec into the song), the ringtone has to be less than 30sec long
3. point to the song and right click your mouse, on the drop down menu, choose "Get Info"
4. go to tab "options", tick the "start time" box, fill in the start time your wrote down earlier, using the format 0:00, and tick the "stop time" box, fill in the stop time you wrote down earlier, using the same format, click ok
5. iTune will bring you back to its main screen, now point to that same song, right click the mouse, and choose "create AAC version"
6. now iTune will make a copy of the original song, it usually sits right underneath the original copy, showing the length of it being 29sec (or less depending on your selection)
7. point to that newly copied short version, right click the mouse, choose "show in windows explorer"
8. when the windows explorer pops up, you should see your song in there, drag it to the desk top (point to the song in the window explorer, left click your mouse, dont release it, drag it all the way to the desk top, and dump it there)
9. now on desk top, point to that song we just dumped there, right click the mouse and choose "rename"
10. keep the name of the song, but rename the file extension from .m4a to .m4r, and click ok, the windows will warn you about the change, just click ok to go ahead. if you can't see the file extension, it is because the feature is turned off by default. go to control panel -> folder options -> view -> uncheck "hide extensions for known file types"
11. after you changed the file type to .m4r, just double click the file (on desk top) and it should start playing. and iTune will now automatically copy it to its "ringtone" folder
12. go back to iTune, check under Library -> ringtones, it should be there
13. connect your iPhone to computer, you should see your iPhone folder appears on the left hand side menu in iTune. there should be a "ringtones" folder in your iPhone as well.
14. you can sync your phone, and see if the new ringtone has been copied into your iphone ringtone folder, however it never worked for me, so i copy it manually by clicking the ringtone we just created (under library -> ringtones) and drag it to your iphone ringtone folder. and it is done!!!