I've been running whole-home Snapcast for over a year now, controlled by Home Assistant. Some quick info:<p>- Previously, I would use Raspotify/etc and automatically change sources as I moved between rooms. This is much cleaner<p>- My automation server is a Linux VM, which is now my audio source for Snapcast. This means I just use the native, 100% unmodified Spotify client (or really, anything). Previously the various librespot/etc stuff would sometimes break or require updates<p>- I run two streams: Music + text to speech, and just TTS. Some rooms switch to TTS-only when the room turns off. Other rooms mute completely. Really it just depends how peripheral the room is. i.e. my garage mutes completely when it's off, but more interior rooms still play TTS.<p>- Pulseaudio junk is what manages the above routing. Linux audio really is gross once you try to do anything past-minimum with it. You can do complicated things, though--I duck music volume down a bit when house TTS is happening. I still have to regularly and automatically restart pulseaudio completely when nothing is playing, to avoid both horrid clock drift and/or crackle<p>- Any audio you can play/handle on Linux, you can make into a stream. I could easily add a third stream for an aux-in line dangling off the machine, for people to plug in to for parties/hardware players/etc<p>- Most clients are Raspberry Pis with USB audio DACs. My macOS machines also run snapclient. I only have one Windows machine (my TV box) I wanted to include, and ended up just running a Ubuntu VM with snapclient to make that happen. (The other option is to use pulseaudio in a VM, and then also an ancient Windows port of pulseaudio to actually take the pa data out to the speakers, but ugh)<p>- Including all computers, I have 8 clients, I think? You can enable "send audio to muted clients" to avoid a re-buffer delay when rooms turn on and off<p>- You can push latency quite low if you want, especially if everything in your house is hardwired. My desktop audio is almost always Spotify now, out of laziness, and really when I'm using the desktop client I'm actually controlling the remotely-playing VM. The latency doesn't bother me, and I'm pretty sensitive to that kind of thing<p>- I use cheap 10-button RF remotes as "light switches" in all rooms. It's nice to have that many buttons to standardize some things. For music, two buttons are play/stop spotify, with some overloaded functions (pressing play while music is already playing skips to next track)