A year and a half ago I wrote about a way to use RTP multicast to provide whole-house audio.
Less than a month later, SnapCast was uploaded to GitHub and made that whole guide obsolete.
Available for Raspberry (and C.H.I.P.), Linux, FreeBSD, macOS, Android, and OpenWrt,
Snapcast is a multi-room client-server audio player, where all clients
are time synchronized with the server to play perfectly synced audio.
It’s not a standalone player, but an extension that turns your existing
audio player into a Sonos-like multi-room solution.
The server’s audio input is a named pipe /tmp/snapfifo. All
data that is fed into this file will be send to the connected clients.
One of the most generic ways to use Snapcast is in conjunction with the
music player daemon (MPD) or Mopidy, which can be configured to use a named pipe as audio output.
Snapcast is absurdly simple to set up with sane defaults. I currently have the server (and a client) running on my main server, a client on my laptop, a client on my phone, and a client on a CHIP that I have speakers plugged into… and it’s all in sync… without clobbering my WiFi.
This is a great little application that does something really simple and awesome, with guides that are pretty straightforward.
Still not convinced? You can get a $8 early version of the C.H.I.P. (with Debian installed), then set it up using this guide: https://bbs.nextthing.co/t/setting-up-chip-as-a-headless-server-with-minimal-tools/1505 . Install the arm version of SnapCast and hook it up to a sub-$20 speaker. BOOM. Music in the kitchen, cheaply and all under your control.