LED Strips Controlled by PC with Different Modes

So I would like to create some sort of device that will let me control some led strips using my pc. The types of features i would like are as follows:

Visualizer for Audio
Smooth Adjustable Fading into other colors (not audio dependent/visualizer off).
Other programmable "modes"

From what I have researched the Arduino UNO should be a good micro-controller to start with. I've also looking into possibly using a Spectrum Analyzer Shield and WS2801 LEDs. I've never done any sort of circuitry but and I haven't been able to find any pre-built solutions out there that will attack all of my wants/needs. Also to clarify I am a software developer and will want to be able to create an application that will handle all of this as well to have a nice GUI. It would be nice to be able to say "turn on visualizer for audio" so that it takes any audio that the pc is outputting and send it to the device to handle the led brightness and coloring based off frequency's and such. Along with having that I then want to be able to say "Fade Colors" or something of that sort that will ignore the audio and just fade into colors that maybe the user can program into the application or some sort of thing like that. My question is, with what I supplied for the hardware, is that all I would need... How do I hook all of these pieces of hardware together... etc. Any tips/help/comments are all very much appreciated!

If you need more information to determine what I want please feel free to let me know! =)