Ringdroid is one of the best I use, Also there is another good one called Myxer. They both allow you to pick a song and customize it to where you want it to be for your ringtone. Hope this helps you!
I use RingDroid as well.That app is pretty awesome. You can use the songs in your phone as a ringtone & even cut it down to where you want the part of the song to play. There are a few more ringtone apps you may want to check out:
-Ringtone by ringtone
-Ringtones by naruto
-Ringtones by MobileRing
-Ringtones by mobileworld
-Ringtones by Luke T
-Ringtone by social Soft
As previous post mentioned ZEDGE is a good free app for tones in addition to wallpapers. However the best solution might just be to put your own music on the phone through Windows Media Player (or whatever you use) and use RINGDROID to make your own
I like the combination of RingDroid and Shuffletone. Shuffletones works for Calls and Messaging. I make my own tones and let Shuffle tone play a different tone at random when ever I get a call or message.