We have a lot of speakers around the house, and have over the years had various solutions to let us centralise as much as possible of the storage into one place, and still be able to listen to all the music in different rooms and places.
We are predominantly a Apple household, so it is no surprise that we store all of our music in iTunes, and also use Apple Music quite a bit.
We now have a decent solution with the combination of
– iTunes running off one server
– Using a combination of AirPlay and Chromecast (courtesy of AirFoil) to send the music digitally around the house.
– And Airplay running through some Raspberry Pi zeros directly to attached speakers.
– Controlling it all from any of the Macs/iPads/iPhones
Our loudspeakers are among others:
– Quad Electrostatics running from a Analogue Amplifier (with a REL Subwoofer for extra bass) via a AppleTV as a DAC
– JBL monitors driven my JustBoom amplifier Phats on top of Raspberry Pi zeros
– Soundbars running off Apple TV’s
– Google Home speakers
– Headphones directly from IOS devices
– Speakers on our treadmill driven by a iPad
Airfoil and Airfoil satellite
Airfoil runs off a central server, with Airfoil satellite running on Mac’s and IOS devices, plus a open source version running off Raspberry Pi Zeros.
On the Mac it looks like this

This gives every Mac and IOS device the ability to control which devices are fed sound from the central server, and the volume.
The Raspberry pi zero has drivers from JustBoom installed, and a good controller (Alsamixer) controlling some of the basic parameters of the JustBoom amplifier through a rather neat terminal based interface (which means the RPI can run headless, and letting it be controlled from anywhere. Just by typing “alsamixer” on the command line of a terminal session.

The source for the Linux version of Airfoil satellite can be download directly from Rogue Amoebas website and run from the command line.
And the sound is not bad as long as it’s not driven too hard – and as long as a decent power supply is used, and connected directly to the PHAT board, ie. not using the 5V from the Usb interface.