I am surpised nobody replied already.
This is a good topic.
It depends on what kind of sounds you want.
I use fruitloops if I want a techno sound.
Many use audacity (it is free) for recording their own guitar/etc.
I bought Cubase for that same purpose.
Sony Acid Music Studio has pre-recorded loops you can just mix and match if you want to put something together quick.