Multiple simultaneous outputs for a multi-zone receiver

Hi, I’m new here.

I’m looking at grabbing a CuBox (not sure which yet) to use for Volumio, but I have a special requirement that I cannot find anyone discussing. This is a system I’m building for my parents – while they don’t need high-end DACs or anything like that, I would like to do some basic DRC via brutefir, folve, etc.

The special requirement is that we need to be able to play the same music to two zones of their Denon AVR simultaneously, but I want to apply different speaker correction to each of the two zones. So from the Denon receiver’s point of view, the two sources will be different.

Why? Because room 1 (Main Zone) has some wall-mounted speakers, and the dining room (Zone 2) has some in-wall speakers, and I’m not sure the Denon will give me the EQ control I need to really adjust it to taste.

The Denon 2808CI supports 2-channel pcm (spdif only – not hdmi) sources into Zone 2, and, of course, 2-channel pcm over hdmi into the Main Zone, and simultaneously it should be able to do this… I hope.

But from the CuBox-i / Volumio side, I need to know if there’s a way to assign playback to two separate devices at the same time? For example, does the software allow me to assign both hdmi and spdif outputs simultaneously? Or will I need to manually edit the MPD and Alsa configs to make this happen? I suppose I could create a new device under .asoundrc, which then feeds both hdmi and spdif output, as long as Volumio can be convinced to use that new device.

I’m just hoping the CuBox-i has the horsepower to run 4 channels of Brutefir.

Any advice would be greatly appreciated.

Thanks,
Josh
Atlanta, GA

Instead of HDMI for zone 1 and S/PDIF for zone 2, you could use S/PDIF for both zones. Just get a coax splitter and feed the same signal to both inputs. S/PDIF is quite robust for short ( < 10m ) cables, so it should work fine.

Jake

I use the Duriosound dac and do what you are looking for by using the headphone output. I have outdoor speakers that need help so I run the headphone out into a graphic equalizer then back into zone 2 of the amp. Works great.

Reviving this thread since it’s something I was interested in and solved…

Summary: I wanted to output PCM streams to both HDMI and USB (from my RPi) in order to control different zones. The solution is simply to clone the stream and output it to the different devices by using a custom ALSA configuration in /etc/asound.conf. The following is my file which should work for any RPi, however on different devices the card and device assignment may be different:

pcm.!default {
        type plug
        slave {
                pcm "both"
        }
}

pcm.both {
        type route
        slave {
            pcm multi
            channels 4
        }
        ttable.0.0 1.0
        ttable.1.1 1.0
        ttable.0.2 1.0
        ttable.1.3 1.0
}

pcm.multi {
        type multi
        slaves.a {
            pcm "hdmi_hw"
            channels 2
        }
        slaves.b {
            pcm "digital_hw"
            channels 2
        }
        bindings.0.slave a
        bindings.0.channel 0
        bindings.1.slave a
        bindings.1.channel 1
        bindings.2.slave b
        bindings.2.channel 0
        bindings.3.slave b
        bindings.3.channel 1
}

pcm.hdmi_hw {
        type hw
        card 1
        device 1
        channels 2
}

pcm.digital_hw {
        type hw
        card 0
        device 1
        channels 2
}

This configuration can be expanded to as many devices as are present by increasing the channel count and corresponding ttable entries, adding new slaves and binding them then finally defining the additional hardware devices.

Additionally, you need to change MPD configuration in /etc/mpd.conf. Unfortunately right now the web GUI doesn’t list “default” as an MPD output option, so you’ll have to modify the file by hand and make sure it doesn’t get overwritten. The only change is the to “device” parameter in the “audio_output” section:

audio_output {

		 type 		"alsa"
		 name 		"Output"
		 device 	"default"
		 dop 	"no"

}

Hope this helps someone.