Should I go there? Whole house audio and then some

Also less wire and easier drop in to new locations

1 Like

If you wouldnā€™t mind, would you expound on this a bit? Iā€™m on the fence about implementing them for my personal setup (although the consistency in UI and device room to room is definitely appealing, especially for guests).

In any event, Iā€™m now comfortable enough to offer HA setup to my clients, and I am certain this would be appealing to a fair number of them.

Along these lines, my current starting point for individually sourced audio control per room (was) an Echo Dot with 3.5mm to the central closet zone amp, or to an in-wall amplifier which powers the speakers. Reading the responses in this post, Iā€™m likely to begin recommending a Fire HD 10" tablet instead of the Echo Dot. The extra $100 isnā€™t likely to be much of a hurdle, and the additional ability to load a room specific, slick HA control UI pretty much seals the deal in my mind. Of course, the stated goal is voice control through Alexa as well as WHA through the varios Alexa groupings. The hands free Alexa capability in the Fire 10 makes the substitution more than feasible.

Iā€™d also like to pick (all of) your brain(s) about what youā€™re using for audio amp / distribution on a per room basis. When I can pre-wire without sheetrock, Iā€™m sure Iā€™ll lean towards a central equipment closet to house the amp, but I can see the need for the in-wall variety in a remodel scenario, especially on the first floor of a two story home. Specifically, Iā€™d like options for a multi-zone amp that carries 2-6 inputs, as well as a ā€œpreferredā€ input or two that will auto-mute any of the others in favor of Alexa, doorbell chime, etc. Iā€™m just getting started on this search today, so any recommendations are greatly appreciated!

Iā€™d also be very interested in what youā€™d recommend for an in-wall amplifier that has the same override functionality. Many of the models Iā€™ve seen have a 3.5mm input as well as Bluetooth and perhaps another RCA input pair on the back.

Atlas Sound has 70V 1u high/0.5U wide rack mount amps with mute-on-input capability for doorbell/pa setup. It is 2 channel so single zone stereo or mono dual zone. About $180USD

Monoprice has multizone unit for $450 that has great specs.

Sorry no links

1 Like

Roon sounds good.

Does it have internet radio? Some reviews said it doesnā€™t, but that may have been changed in later releases?

Yes it has internet radio

But can you send the same stream to all 5 rooms simultaneously synchronized perfectly?

Yes, you create a group in the Google app with all 5 devices and it appears in homeassistant as a single player, selecting that player as your output gives perfectly synchronised music everywhere.

I have an ā€˜everywhereā€™ player and a ā€˜downstairsā€™ player, but you can group them however you like :+1:

Well thatā€™s friggin brilliant! I can flood the neighborhood with obnoxious noise ;).

After some research, this seems like the most flexible solution (for me anyway). You outlined the ability to have multiple sources and with each sound card there is a line in jack. This way I can have inputs such as Chromecast and Alexa go throughout the whole house. I purchased a USB 7.1 card and tested the Line in function and slowly trying to get this concept rolling.

Setting up PulseAudio to separate stereo channels and then the PulseAudio connector to HA is very scarce information on the web. I did manage to find information on creating these sinks but are you able to provide a more complete example?

Steps to Find and Create Sinks

Start Pulse Audio

PulseAudio -D

List sinks (a sink is somewhere you can output sound to) available

pacmd list-sinks | grep name:
#Returns
#name: <alsa_output.usb-0d8c_USB_Sound_Device-00.analog-surround-71>

Make new sinks, using information found with the master sinks.

In default.pa (in /etc/pulse*) create new sinks, and usurp some of the outputs:

load-module module-remap-sink sink_name=sink_a remix=no master=alsa_output.usb-0d8c_USB_Sound_Device-00.analog-surround-71 channels=2 master_channel_map=front-left,front-right channel_map=front-left,front-right
load-module module-remap-sink sink_name=sink_b remix=no master=alsa_output.usb-0d8c_USB_Sound_Device-00.analog-surround-71 channels=2 master_channel_map=rear-left,rear-right   channel_map=front-left,front-right
load-module module-remap-sink sink_name=sink_c remix=no master=alsa_output.usb-0d8c_USB_Sound_Device-00.analog-surround-71 channels=2 master_channel_map=front-center,lfe   channel_map=front-left,front-right
load-module module-remap-sink sink_name=sink_d remix=no master=alsa_output.usb-0d8c_USB_Sound_Device-00.analog-surround-71 channels=2 master_channel_map=side-left,side-right   channel_map=front-left,front-right

Note that Iā€™ve just used commands to just create these sinks while running for testing before I update my configs. i.e.:

pactl load-module module-remap-sink sink_name=sink_a remix=no master=alsa_output.usb-0d8c_USB_Sound_Device-00.analog-surround-71 channels=2 master_channel_map=front-left,front-right channel_map=front-left,front-right
pactl load-module module-remap-sink sink_name=sink_b remix=no master=alsa_output.usb-0d8c_USB_Sound_Device-00.analog-surround-71 channels=2 master_channel_map=rear-left,rear-right   channel_map=front-left,front-right
pactl load-module module-remap-sink sink_name=sink_c remix=no master=alsa_output.usb-0d8c_USB_Sound_Device-00.analog-surround-71 channels=2 master_channel_map=front-center,lfe   channel_map=front-left,front-right
pactl load-module module-remap-sink sink_name=sink_d remix=no master=alsa_output.usb-0d8c_USB_Sound_Device-00.analog-surround-71 channels=2 master_channel_map=side-left,side-right   channel_map=front-left,front-right

EDIT - hit Reply button too soon

Sure- here is my system.pa file (im runnig pulseaudio as a system-wide daemon through a systemd service). i put pretty good comments in there because i tend to forget myself.

#!/usr/bin/pulseaudio -nF
# This startup script is used only if PulseAudio is started in system
# mode.

###Load our 2 sound cards manually.
#load-module module-alsa-sink device=surround71:CARD=USB_Sound_2 channels=8 sink_name=SND2
load-module module-alsa-sink device=surround71:CARD=USB_Sound_1 channels=8 sink_name=SND1

load-module module-alsa-source device=sysdefault:CARD=USB_Sound_1 source_name=IN1
#load-module module-alsa-source device=sysdefault:CARD=USB_Sound_2 source_name=IN2

### Used by local clients to control and playback to pulseaudio
load-module module-native-protocol-unix

### Used by home assistant to send and recieve data
load-module module-cli-protocol-tcp

### Automatically restore the volume of streams and devices
load-module module-stream-restore restore_muted=false restore_device=false on_hotplug=false on_rescue=false

### Make sure we always have a sink around, even if it is a null sink.
load-module module-always-sink

###Create a null sink for each input we're going to accept.
#This makes it very predictable where we're getting sound from, and we can route it without anything playing
load-module module-null-sink sink_name=MPDInput1 sink_properties='device.description="Jukebox"'
load-module module-null-sink sink_name=MPDInput2 sink_properties='device.description="Kids Jukebox"'
load-module module-null-sink sink_name=AirplayInput1 sink_properties='device.description="Airplay"'
load-module module-null-sink sink_name=SpotifyInput sink_properties='device.description="Spotify"'
load-module module-null-sink sink_name=WhiteNoiseInput sink_properties='device.description="White Noise"'

###Remap our primary 7.1 surround sound into 4 stereo channels, as needed.
###BASEMENT###
load-module module-remap-sink sink_name=basement_raw remix=no master=SND1 channels=2 master_channel_map=front-left,front-right channel_map=front-left,front-right

load-module module-ladspa-sink sink_name=basement master=basement_raw sink_properties='device.description="Basement"' plugin=caps label=Eq10X2 control=7,5,0,0,-10,0,0,0,5,7

###Main level###
load-module module-remap-sink sink_name=main_level_raw remix=no master=SND1 channels=2 master_channel_map=rear-left,rear-right channel_map=front-left,front-right 

load-module module-ladspa-sink sink_name=main_level master=main_level_raw sink_properties='device.description="Main Level"' plugin=caps label=Eq10X2 control=7,5,0,0,-10,0,0,0,5,7

###Master Bed###
load-module module-remap-sink sink_name=master_bed_raw remix=no master=SND1 channels=2 master_channel_map=side-left,side-right channel_map=front-left,front-right

load-module module-ladspa-sink sink_name=master_bed master=master_bed_raw sink_properties='device.description="Master Bed"' plugin=caps label=Eq10X2 control=7,5,0,0,-10,0,0,0,5,7

###Sadie's room###
load-module module-remap-sink sink_name=sadies_room_raw remix=no master=SND1 channels=2 master_channel_map=center,lfe channel_map=front-left,front-right

load-module module-ladspa-sink sink_name=sadies_room master=sadies_room_raw sink_properties='device.description="Sadie\'s Room"' plugin=caps label=Eq10X2 control=7,5,0,0,-10,0,0,0,5,7

###Always route main level echo to main level.###
load-module module-loopback source=IN1 sink=main_level
#load-module module-loopback source=IN2 sink=main_level

###Always route whitenoise to whole house.###
load-module module-loopback source=WhiteNoiseInput.monitor sink=SND1
###Remap our secondary 7.1 surrount sound into 4 stereo channels, as needed.###

###DECK###
#load-module module-remap-sink sink_name=deck_raw remix=no master=SND2 channels=2 master_channel_map=front-left,front-right channel_map=front-left,front-right

#load-module module-ladspa-sink sink_name=deck master=deck_raw sink_properties='device.description="Deck"' plugin=caps label=Eq10X2 control=7,5,0,0,-10,0,0,0,5,7```
1 Like

Hereā€™s a few examples of the pulseaudio switch configs in hass (these are switch entries):

- platform: pulseaudio_loopback
  name: Main Jukebox -> Guest Bedroom
  sink_name: guest
  source_name: MPDInput1.monitor

- platform: pulseaudio_loopback
  name: Kid's Jukebox -> Guest Bedroom
  sink_name: guest
  source_name: MPDInput2.monitor

- platform: pulseaudio_loopback
  name: Airplay -> Guest Bedroom
  sink_name: guest
  source_name: AirplayInput1.monitor

- platform: pulseaudio_loopback
  name: Family Room Echo -> Guest Bedroom
  sink_name: guest
  source_name: IN1```
1 Like

Hi guys just thought Iā€™d add my experience with running cable in my walls because I have just finished my house. If you ensist on multiroom audio only then take a look at ClearOne XAP 800. Itā€™s a 12x12 multiroom audio switch/mixer and can be found on eBay for around Ā£30.

I spent months looking around for a cheapish open source alternative to Sonos etc because I didnā€™t want to pay their prices and may be locked into a all Sonos setup. In the end I decided the best way was to just run cat6 cable to every room, I then have hdmi over cat6/5 adapters in every room with a hdmi matrix feeding them, they pass 4k and 7.1 sound. I have 2 odroid c1+ with kodi, cable box, PS4, Xbox and pc attached to the hdmi matrix and can be fed to any room or all rooms. You can easily start controlling it all with hdmi CEC and home assistant and with the 3rd party plugins for home assistant you can go much further with control.

1 Like

This is great. After much trial and error today I was able to get the basics down and get it working. I was not able to get the load-module module-ladspa-sink working though. So I am only playing through what you call the raw sinks. I have not figured out how to load ladspa or even what it is for that matter.

I am utilizing the line in on the video card to add things like Alexa and Chromecast. I had that working as well. For example:

switch:
  - platform: pulseaudio_loopback
    name: Linein -> Speaker1
    sink_name: sink_a
    source_name: alsa_input.usb-0d8c_USB_Sound_Device-00.analog-stereo

To clarify for others, alsa_input.usb-0d8c_USB_Sound_Device-00.analog-stereo is the Analog Input on my USB Soundcard. Itā€™s set to only accept either Line In or Microphone. You can check it by executing pacmd list-sources and it will give you the active port.

What are your sources for your Airplay, Spotify, and White Noise? Are you mapping them through a separate MPD somehow? Just did a quick search and I think shairport-sync may be able to play directly to PulseAudio using ā€“with-pa.

I like this idea. The reason I am into home assistant and home audio is because I am building a house very soon. I keep telling the misses I need to figure this out before we starting framing (we have a few months).

Anyway, Iā€™ve never heard of the odroid but seems like a very cool device. Iā€™d like to get more info on your setup.

How do you control ClearOne remotely? It is very cool that you add video to the mix, to me it opens a whole other can of worms (a good thing).

Hi I never ended up using the clearone, I bought it and then had a moment of clarity where it all became clear how simple a setup I could do using cat6 instead. I was going to use the rs232 interface to control it, you can download the manual if you search Google.

You could centralise all your av equipment in 1 place and have all your audio and video go to any room you want using cat6 cable. I chose hdmi over cat6 balluns for simplicity as they all terminate in each room with a hdmi cable attached to the TV in the room, or you can have an av reciever in your living room and then plug the hdmi cable into that.

1: run 2 lengths of cat 6 cable from central location to each room and terminate with a dual faceplate. 1 cable for internet and 1 cable for the hdmi balluns

2: move your cable/satellite feed that comes into your house to the central location, same for internet feed.

3: connect hdmi cables from devices to the hdmi matrix and also connect the hdmi balluns for each room to the matrix. Connect up your router and plug in the cables to feed each room.

4: configure hdmi CEC for home assistant.

You donā€™t need an expensive hdmi matrix, mine cost Ā£130 because you can get a broadlink rm pro2 and put that in the same location as your av equipment and you also have rf control aswell which can be done through HA or remote control, the hdmi balluns have rf pass through so you can use a tablet for control through HA or remote.

Forgot to add that you can do audio through kodi and have it in one room or have as many rooms as you want switch to the kodi input for whole house audio with no delay in any room.

Very cool! The ladspa sinks are equalizers- I just did some trial and error on those. It boosts bass a little and treble a little- so not a big deal if you skipped them.
For the airplay input i am using the shairport sync package you mentioned. I think when I configured this shairport couldnā€™t output directly to pa yet, so it was playing to an alsa device first. For white noise, thatā€™s essentially just aplay playing a local .wav file on loop.
I need to get rid of the Spotify input- I used to have a Linux desktop version of Spotify running on my server using a virtual monitor/console- it was a pretty cheesy setup. Now I just use Spotify from my echo dots.

1 Like

Because of this post, I ended up buying an xap 800 and 400 on eBay (around $20 each). Super easy to set up using this guide (http://members.home.nl/b.vanzoelen/ZMC.htm#ZMC-P1)

Iā€™m going to be hooking it into Home Assistant in the next week or so using this:
xap_controller

Iā€™m also hoping to use hue battery powered dimmers for volume controls in each room.

1 Like

Let us all know how you get on dax. Do you use voice control for Hass yet or tts? Maybe you could do voice commands using snips or Google home for volume control.

If for instance your in your bedroom and ask Hass via snips, Google home etc to start a going to bed automation and have tts feedback sent back to the bedroom because thatā€™s the room you gave your voice command from then Iā€™m sure you will get a lot of help on the coding side of things.

This could be a better solution for snips users to use the xap800 instead of a raspberry pi and speaker hat

So far my plan is only to use the XAPā€™s for home audio routing and not using the mic capabilities, since Iā€™m currently happy with amazon echos for voice commands. Maybe in the future though.

TTS will be over Alexa, Sonos, Chomecast audio, etc. using the XAP line inputs.