Real multi room, multi input-multi output audio system for smart home

Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.
Dear all,

I'm just few weeks before cabling my new house with all possible smart home solutions (lights, doors, roller shutters, heating, cooling etc). Since two weeks I'm looking for a solution for multi room - multi source audio system. The problem is it should be scalable, the best would be to send audio over LAN network (all house will be wired with gigabit LAN). So before putting much to much cables for sources and speakers I was trying to find solution to avoid unnecessary cabling all the house with even more cables.

I would like to be able, to use my audio system either independent or partially/fully synchronized. I would like to keep all the possible audio zones independent, at least it would be:
- living room
- kitchen
- bathroom 1
- bathroom 2
- terrace
maybe also later
- fitness room
- office

Because you never know what come in the future, this is why I would like to be able to keep the system scalable. I like the feeling when every single door is open, you move over the house and hear everywhere the same music. At the moment in my old flat it is just possible if I turn the same analog radio in each room. But it would be the best to be able select any source for any room/zone, like:
- TV
- Spotify/webradio
- own music collection
- any AUX device - like lokal Radio reciver, CD player, turntable etc
- bluetooth device - smartphone, laptop

The way, that I can play any source on any device.

I was trying to put some schematic together, how it could look like:
Multiroom%20audio,%20multi%20zone,%20multi%20source%20multi%20output%20by%20raspberry%20pi.png


I was trying to find any working solution, but there is a lot of informations about low latency audio streaming (PulseAudio, Jack), but there is no information about how to get it work that way. I belive there must be any working solution that may apply to my requirements. I already install volumio on my spare raspberry pi 3, but at the moment I don't have other one, to try multiroom possibility of volumio. And there is one problem I can see on volumio - how to connect an external audio input, like AUX?

Maybe I'm overlooking some solutions, or maybe I'm completely wrong with my idea...

Thank you in advance to help me!
 
Last edited:
I created a basic audio application that is "one-input, multiple-output", meaning that all the sources for audio reside on one computer (I call it the "audio server") and there can exist any number of playback systems on the LAN, all of which can be very closely synchronized. This is all done using Gstreamer pipelines and a long BASH shell script that takes input from user-editable plain text configuration files.

While the actual audio SOURCEs reside on one computer, control for the audio source(s) in my system is distributed. I can control the system from the source computer itself, or via a tablet using networked interfaces to the software on the server, or from any other system that can ssh into the "server". I mostly just use the tablet, and I can take it around the house with me to turn systems on and off, control volume, select music, etc. It's all done with free software.

Your diagram shows a TV and receiver. When the audio is all 2-channel stereo then it is easy to be consistent across all playback systems, which are typically stereo. For your TV, if you have multichannel surround sound capabilities there, you will probably want or need to mixdown the audio from that source to stereo before sending it on.

If you want a multi-source, multi-playback-client system you will still need some central "switching control" of sources and sinks (playback system). For example, if I wanted to be able to switch between multiple sources, it is possible for all sources to sent their audio to the "switching control" computer via RTP, each to a different port. Some software like the one I have created would then be instructed to choose between the incoming streams, or a local source, and then send that audio stream on to one or more playback clients. Gstreamer can do all of this.

I am currently making some modifications to my code, and this brings up the prospect of input switching. The way it is set up now, the gstreamer pipeline always monitors one input that multiple apps can connect to. But it could instead be directed to choose from multiple input streams somehow. That would be an interesting feature, so I will think about how that might be implemented.

It was not totally clear to me if you are looking for an off-the-shelf commercial system/software to do all of this for you, or if you are wanting to build/code something yourself. I am sure that, for a lot of money, there are some whole-home audio systems that you can buy... for $100,000 and up!
 
Many thanks for your answer CharlieLaub!

How much latancy is in your system?

I was searching, and searching, but only what I have found was TRX:
trx: Realtime audio over IP

But I think this is very similar to your system, maybe there will be another protocol, but this one has only few ms latency - so perfect for multizone audio.

But what do you thing, would it be possible to have one "server" that is streaming few sources, like WebRadio, Spotify, Own music collection and maybe Bluetooth and AUX source? And then few sinks, that you can control what to play, which stream. Looking like this:

An externally hosted image should be here but it was not working when we last tested it.
 
I that is very possible. The current version of GSASysCon does that for the most part. It doesn't control "input switching" between sources.

If you connect everything using ethernet cable the latency can be pretty low, although probably more that a few msec, maybe a few tens of msec. Not sure, since I only use WiFi to send audio around. With WiFi the latency can be under 100msec, how low will probably depend on the signal strength and quality. My systems have more latency, more than 500msec, but this is including all latency in the system, including buffering in the player, in the transmission of the data to the client, and processing on the client (I do DSP on the clients).
 
Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.