Code Monkey home page Code Monkey logo

audiostation's Introduction

Build Status

Audiostation

Opensource multiroom audio project. Easy to install and use.

Provides the following:

Quickstart

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.

Configure

Adjust docker-compose.yml or add a docker-compose.overwrite.yml.

Goal

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.

Plans

  • Airplay via Shairport-Sync
  • pulseaudio
  • armhf builds for raspberrypis
  • ready to use clients
  • Suggestions?

About

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.

Dockerimages

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.

Docker Hub Images

amd64

Credits

Its a fork of https://github.com/nolte/docker_compose-audiostation.

audiostation's People

Contributors

deisi avatar ursusexplorans avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.