I have 6 different audio zones in my house, not counting the theater room. 4 are pairs of in-ceiling Klipsch speakers, 1 is a pair of bookshelf speakers, and the last is a pair of outdoor speakers. There is a volume knob on the wall in each location. I used these volume knobs: https://amzn.to/3QzJdoA
They are impedance matching, and have a little switch on them for how many speakers you want to run from a single channel - so you can actually drive multiple pairs of speakers from the same amp channel without overloading the amp. They work REALLY well, and when I first set this up, I had only two channels - the main floor and the upper floor. Eventually I figured out that having separate channels worked much better for us, so I bought two more amps and changed the switches on each volume control to only a single pair of speakers.
When we remodeled, I pulled speaker wire from all the locations back down to the AV room in the basement. Each pair (channel) is independently driven by a Yamaha receiver. I have two RX-V6As and an old RX-V680-something (I forget). Since each receiver is capable of driving 2 zones, that gets me a total of 6 discrete channels.
At $400 each for the V6As, that’s a cost of $200 per channel to drive the speakers, plus the cost of the wire and the speakers.
Each channel can use the tuner (of course), but since each receiver only has a single tuner, I had to be selective in which 2 channels I paired together on what amp. I chose adjacent spaces, figuring that you’d go from one space to the next and want to hear the same music. Want the same radio station everywhere? Set all three tuners to the same station and power on all 6 channels.
For distributing digital audio, I’m using Chromecasts. The main channel on each receiver gets audio from the HDMI connection on the Chromecast, and zone_2 gets audio via an HDMI to RCA converter: https://amzn.to/3DPXOoc
For “party mode”, I have an HDMI splitter: https://amzn.to/3E8AaDH that has a Chromecast running it, which is split into 4 outputs. Each output goes to an HDMI in on the receiver, and then zone_2 on each receiver is just set to party mode with the main_zone, so the same audio plays everywhere with no delay between the various channels.
I use a Plex server to serve up the thousands of audio files I’ve amassed over the years.
As an aside, if you don’t want to use an HDMI splitter, you can create Chromecast groups in the Google Home app, which will then show up both in HA as well as Plex. I was doing this for a while, but for some reason I found that some devices would drop off the group. Never did figure out why. It’s only the Chromecasts, the group I have for my Google Nest Minis that I use for TTS announcements works just fine.
As for the dashboard, I custom wrote one to manage it all, complete with buttons to switch between inputs/party mode, set the tuner, etc.
I also made a volume control since the Yamaha receivers don’t use 1-10, but rather they use dB, which goes from -80 or so to +16 (depends on the channel). I posted about most of this on here last summer when I got it all set up, but I’ll be making a YouTube video about it and posting it to my channel as well in the coming months.
All off:
Example of tuner control:
All on (the old VX680-something (kitchen and deck) doesn’t have tone controls on zone_2):
Hope this helps!