Opensource multiroom audio project. Easy to install and use.
Provides the following:
- Mopidy: local data and web radio stations
- Spotifyd: Spotify Connect compatibility
- upmpdcli: upnp/dlna streaming
- SnapCast: syncronous playback on multiple clients
Install docker and docker-compose.
git clone https://github.com/deisi/audiostation.git
cd audiostation
sudo docker-compose up -d
Run snapcasts snapclient on various clients throughout your house and enjoy synchronous playback. Possible clients are Raspberrypis, Android phones, mips devices like routers or any x86 pc that runs linux. Take a look at https://github.com/badaix/snapcast/releases for ready to use releases.
Open spotify and play audio via Audiostation on all snapclients. Use bubbleupnp or any other upnp controller software to play audio from your cell phone or kodi throughout your house. Open http://localhost:6680 on the Audiostation server and use the Mopdiy web interface.
Adjust docker-compose.yml
or add a docker-compose.overwrite.yml
.
I have been playing around with multiroom-audio-solutions for quite some time. However, I never found them very satisfying. They are often proprietary and work only for a very limited set of hardware, or they are not reliable, extremely difficult to configure or all at once. My goal is to provide a docker based "ready to use" solution, that allows for flexible configuration but at the same time just works.
From experience I know, that snapcast is an excellent program to share audio
around in the local network. It is lightweight and reliable and synchronous.
However it is rarely implemented into any project right away. Instead one can
convince almost any program into sending its audio to snapcast, either via
alsa
, pulseaudio
or in a direct fashion via piping the audio into a fifo
.
The goal of this project is to simplify the setup of such a system. Instead of
configuring each player (mopidy, spotify, dlna, airplay,...) individually a
docker-compose.yml
stack will be provided and this already interconnects all
the players. It is then up to the user to decide weather she wants all of the
player at once or just some.
- Airplay via Shairport-Sync
- pulseaudio
- armhf builds for raspberrypis
- ready to use clients
- Suggestions?
Snapcast is the core of the project. It allows to stream music from one server (snapserver) to multiple clients (snapclient). Each client needs to run an instance of the snapclient program from the Snapcast project. Currently Snapcast supports Android, amd64(Linux), armhf(Raspberrypi) and mips(Router). A Windows Client is planned but not released yet.
Snapcast adds a delay of about 1s to its audio pipeline. If you want to be able to watch video with this, you need to find a way to delay the video by the same amount of time. If you want to play an ego shooter game with this you will be disapointed. Snapcast provides no way of "realtime" processing, as large buffers are build in to cope with bad network/soundcard constrains.
As players Mopidy and Spotifyd are used but more are planned.
The Dockerimages of the player share a common fifo at
/tmp/sharesound/snapfifo
. On Docker the fifo file will be create by a data
container, all containers share a
volume containing the
shared file. Containers are pre configured to pipe audio into the fifo.
Containers should be as small as possible and thus based on alpine if possible.
amd64
- https://hub.docker.com/r/audiostation/snapcast
- https://hub.docker.com/r/audiostation/spotify
- https://hub.docker.com/r/audiostation/mopidy
- https://hub.docker.com/r/audiostation/upmpdcli
Its a fork of https://github.com/nolte/docker_compose-audiostation.