Welcome to what is possibly the concluding post in my Raspberry Whole Home Audio Project series of posts… or possibly not.
At the start of this journey I had a plan to install mopidy on one of my Raspberry Pis and use pulse audio to stream the output to the others. Along the way I ran into some challenges stemming from me buying the cheapest peripherals I could (and subsequently needing to upgrade the WiFi adapters and power cables I first bought to better ones), and my vision evolved as things progressed.
Kodi, as a full-blown media centre system, might seem like a bit of an odd choice for a headless device (i.e. something with no attached display), but it’s the right choice for me for a couple of reasons.
- I already have it installed on a couple of PCs in the house, attached to the TVs in the living room and the bedroom
- I already have a remote control app for it on my phone
- There are plugins for a bunch of stuff, such as this one for my favourite music streaming service. Well written plugins integrate perfectly with the system, and the remote control app.
- It has built-in support for acting as an airplay receiver
For me, these things combine to provide me with the best of both worlds. If I just want to play music from my library or from an internet streaming service on one set of speakers, then I fire up the remote app and target the particular device I want to output from.
If I want to play the same thing on several (or all) the devices at the same time, then I fire up TuneBlade on my laptop and any sounds that would usually come out of its speakers get redirected to all the airplay receivers.
When it works, it’s glorious. Having the same music playing in sync on all the speakers in the apartment is awesome.
The problem is that it doesn’t always work. TuneBlade includes a setting that lets you set how much of a buffer you want. If you set it too high the devices won’t synchronize because it will take a slightly different amount of time to fill the buffer on each of them. I have it set to zero, which works amazingly well most of the time but leaves me especially prone to blips in network connectivity and bandwidth. When these occur, things get out of sync (which sounds terrible, because each set of speakers is not all that far away from its neighbours), and it can’t seem to automatically recover – I have to manually disconnect and reconnect the affected player to get it back in sync with its peers.
The bottom line then is that my setup is good, but not perfect. It’s no Sonos.
The search for a perfect system will likely continue, but for the time being I’m pretty content. I spent less than $100, and I have a setup that would have cost me $5,000 from them.