So you want audio huh? But not just any audio, you want audio EVERYWHERE! In your bedroom, bathroom, kitchen, closet, shed, doghouse, etc. Still not enough? Well, what if I told you all of this audio can be controlled (volume and what is playing) on a room by room basis from ANYWHERE in your house, all for far less than it would cost you to buy a similar retail system. Don't believe me? You're not alone, but if you keep reading hopefully I'll change your mind.
First of all, let me start with some disclaimers: This system is not perfect. There are limitations. Furthermore, it will take effort and it will be worth it.
Second: You will need a building in which you can/already have routed speaker wire to every room in which you want audio. This is ridiculously hard to do in older buildings unless you are willing to tear down walls. I recommend waiting until you plan on renovating/building a house or, I guess, if you're that kind of person, you could just run speaker wire through the hallways and trip over it every time you get up to pet the cat. If you cannot/are not willing to do this, step away now. You will not want to keep reading and realize what you are missing in your house. If you do, I am not responsible for any damage to walls that may occur from spontaneous urges to run speaker wire.
Ok, now that all the boring stuff is over, LET'S GET BUILDING!
PART 1: THE BASICS
The first thing you will need to do is go buy an arduino. If you're unfamiliar with Arduino, it's basically a very small, low powered computer which will be controlling our system. Arduinos range from very small to much bigger and more powerful. The Arduino we'll be using in this tutorial is the Arduino Uno R3. The Uno is a middle range, great for beginners Arduino which is very versatile. You can get one for around $20 from your favorite online store.
Now that you have your Arduino, STOP. Drop everything. Take a weekend and get to know your Arduino. Make its LEDs blink. Power it through a 9v battery. Make it talk to you. Take it for a romantic dinner at your favorite restaurant. Whatever floats your boat. The most important thing is to learn what you are working with! There are plenty of Arduino tutorials available online so I won't bother to make one. If you merely just follow my instructions step-by-step and copy my Arduino code exactly you won't learn anything! Sure, you'll have a working audio system but what good is that? What happens if you want to control your blender from your phone? I know how to do it, but that's because I've taken the time to learn about Arduino and all the wonderful things it can do.
Now that that's over and you have at least a basic idea of what we're working with it's, time to start thinking about what we want our system to do. First thing's first, we want AUDIO! Well that's easy. All we need is an amp, right? Something like one of these, right? WRONG! What we want is something simple, stripped down, and efficient. We don't need any of that airplay or HDMI mumbo jumbo. We'll integrate that ourselves. What we want is a plain and simple amplifier. That's it. An audio signal in, and a speaker output. I'm using (and highly recommend) this one. It has six channels meaning it will be good for up to three rooms (assuming you take the stereo route which I'm guessing most people will).
Next you will need speakers for each room you want audio. I'm going to let you have some freedom on this task. Really any speakers will do. Go find some that fit your price range and room size. I personally picked up these and have been extremely impressed with their sound quality, especially considering their price.
PART 2: THE ARDUINO
Time for controls! We need to decide how to control our system. I said earlier we'll be using our phones to control it, right? Well how might we interface a phone with an arduino.... There's bluetooth, WiFi, and NFC. Bluetooth and NFC both have annoying range restrictions (NFC especially, HA) so let's choose WiFi. In order to send commands from your phone to the arduino, the arduino will need to be connected to your home network. Luckily, there is an ethernet shield for the Arduino Uno which plugs right into the top of your new best friend. This allows the Arduino to communicate with other devices on your home network and send and receive files from its included microSD card. You probably have a microSD card lying around somewhere. If not, buy one. It doesn't need to be big. The file we are going to put on it is only a couple of kilobytes.