A bit of a rant, but I long for a digital version of an FM transmitter. Multi-speaker playback with basically no setup and perfect sync that also fails gracefully can already be done with an FM transmitter. I would love it if there was a solution for the digital era.
I have been forced into the bluetooth era kicking and screaming with my iPhone 11 and I constantly feel like I've taken a step back by being forced to use bluetooth. The constant pairing issues, even with Apple's AirPods (which are the most reliable by far) has been a constant pain point for me. Pairing, unpairing, and multiple device management is a UX nightmare for something as simple as audio payback.
For a good 90% of people, FM is plenty good enough, and there are a lot of choices when it comes to whole-home FM transmitters. If you're an audiophile, or someone for whom FM isn't good enough, then I don't think there is a real solution out there yet.
FWIW, I picked up a used AM transmitter at Goodwill for $10, and plugged it into a spare iPod. My wife uses it as her own private radio station, and since most of the music on it is ripped from 1940's-70's crooner records that were mastered for AM, they sound great on the vintage radios she has scattered around the house. Whenever she wants to listen to her music all she has to do is turn in the nearest radio. It's like the future!
For her birthday one year I paid a big-name radio DJ to record a bunch of liners and fake station ID's for it. He went along with it because they won't be heard more than a hundred feet from our property. Very fun.
We ARE going backward, partly because spineless apologists defend anti-consumer behavior instead of standing up for themselves and better.
Very smooth UX and useful when watching a movie on a plane on an iPad.
Wireless tech is pretty great. But when it comes to simplicity and reliability, I'll take wired any day.
We use it on long flights to watch movies together.
https://www.samsung.com/au/support/mobile-devices/what-is-th...
My personal little wireless setup is not with an FM-transmitter (although that’s pretty elegant!), but I do try to keep some of the analog simplicity. I use these:
https://audioengineusa.com/shop/adapters/w3-wireless-audio-a...
The sending dongle can function as a USB sound card connected to a computer, but you can also have it transmit an analog signal from its aux in. That makes for the most flexible solution: instead of connecting it to your computer, you can connect it to the pre-out of a hi-fi amp/receiver, and then anything playing on the amp will also be wirelessly transmitted. I’ve personally connected the sending dongle to a mixing desk in the living room. Latency is low, setup is minimal, and compression is lossless.
It’s super rudimentary though, the relative volume of the speakers you have to deal with on the speakers themselves, but its simplicity also makes for less problems. It’s a proprietary protocol but since it’s just something I plug into analog equipment and could replace, the vendor lock-in seems minimal.
I’ve been using my original pair for almost two years, then switched to airpods pro a couple of months ago. First year was on an android phone, after that it was on different iphones. At no point have i had any connection issues or had to fiddle with settings or pairing after the initial setup (which was as easy as just tapping the case with my phone).
They work perfectly 95% of the time, but that 5% I'm doing the dance of closing the AirPods case multiple times, hovering the case all over the phone, unlocking/re-locking until it decides to work again. This was the case on my 6s and 11. No feedback or errors, just frustration. My friends also enjoy their AirPods but acknowledge my experience isn't out of the ordinary.
At the gym packed with people using AirPods, my pair will sometimes cut, for just a split second, and is a constant reminder that I'm using bluetooth. I'm not disputing that the overall experience isn't better with AirPods, because it definitely is, but for me it hasn't been as smooth as promised. Especially at the cost of my headphone jack.
Usually an easy fix but annoying nonetheless
- Previously, I would use Raspotify/etc and automatically change sources as I moved between rooms. This is much cleaner
- My automation server is a Linux VM, which is now my audio source for Snapcast. This means I just use the native, 100% unmodified Spotify client (or really, anything). Previously the various librespot/etc stuff would sometimes break or require updates
- I run two streams: Music + text to speech, and just TTS. Some rooms switch to TTS-only when the room turns off. Other rooms mute completely. Really it just depends how peripheral the room is. i.e. my garage mutes completely when it's off, but more interior rooms still play TTS.
- Pulseaudio junk is what manages the above routing. Linux audio really is gross once you try to do anything past-minimum with it. You can do complicated things, though--I duck music volume down a bit when house TTS is happening. I still have to regularly and automatically restart pulseaudio completely when nothing is playing, to avoid both horrid clock drift and/or crackle
- Any audio you can play/handle on Linux, you can make into a stream. I could easily add a third stream for an aux-in line dangling off the machine, for people to plug in to for parties/hardware players/etc
- Most clients are Raspberry Pis with USB audio DACs. My macOS machines also run snapclient. I only have one Windows machine (my TV box) I wanted to include, and ended up just running a Ubuntu VM with snapclient to make that happen. (The other option is to use pulseaudio in a VM, and then also an ancient Windows port of pulseaudio to actually take the pa data out to the speakers, but ugh)
- Including all computers, I have 8 clients, I think? You can enable "send audio to muted clients" to avoid a re-buffer delay when rooms turn on and off
- You can push latency quite low if you want, especially if everything in your house is hardwired. My desktop audio is almost always Spotify now, out of laziness, and really when I'm using the desktop client I'm actually controlling the remotely-playing VM. The latency doesn't bother me, and I'm pretty sensitive to that kind of thing
- I use cheap 10-button RF remotes as "light switches" in all rooms. It's nice to have that many buttons to standardize some things. For music, two buttons are play/stop spotify, with some overloaded functions (pressing play while music is already playing skips to next track)
Raspi3B+ HiFiBerry Amp+ (sits on top of raspi) Volumio software (free) Any speakers, $50 on Amazon does it
I use the snapcast plugin to pull music from my Synology NAS. Volumio has a nice http UI on computers and phones and Volumio also has a bunch of other great plugins (including ones that pull podcasts, YouTube audio, web radio). It’s been a very solid synchronized system, especially when the server and as many clients as possible are hardwired.
Each client is not necessarily much cheaper than a Sonos client but prevents proprietary lock-in and allows you full flexibility in your setup.
Which are 433mhz. It's a couple of dollars to wire a receiver into a Raspberry Pi to hear them. I don't have any issues with reception, even through the brick wall into my garage. I don't remember which script I started with, but at a glance this looks like the same one: https://www.youtube.com/watch?v=Xe5Bj_N4Crw
I have custom scripts now, to make it easier to add new remotes and handle them (I use Node-RED for automation logic). You can solder pads to change the IDs on the remote, if you don't happen to have matched remotes to use the same ones per-room.
The one downside is that the encoded information isn't complete if you very quickly press a button. It isn't an issue in practice, but I did give up on using a 433mhz doorbell because hurried delivery drivers would barely tap on it.
The cheapest is a recent $10 portable bluetooth speaker (via aux in) for the shower. It turns on when the shower door closes.
Spotify is reliably a B- source of music, once you've used it for awhile. My Daily Mixes are...fine. Never great, but never awful. So I fall back to it as background music.
But because it isn't awful, I'm not motivated to put in heaps of extra effort to move from B-grade to A-grade. Moving up that curve is diminishing returns.
On the technical front, it'd be quite easy to play your own files through snapcast, in a variety of ways.
Would love speakers that could serve music off my Synology NAS reliably and without microphones in my speakers to spy on me.
With the whole google/nest fiasco I don’t want to actively try to thwart a speaker from collecting data on me and my family. It’s exhausting.
Someone needs to start a company, like, Elgato Eve, where their primary feature product is privacy focused products. They would have my money every time.
http://raspberrypimaker.com/cheap-quality-audio-raspberry-pi...
Obviously if you're just using a cheap or old amp it won't have HDMI, but if you're amping with an A/V receiver you can just use the HDMI out and get perfectly good quality.
I'd guess the latency comes from generous buffer sizes that keep playback rock solid even though this does TCP, potentially over somewhat flaky WiFi. Keeping separate speakers synched within 1ms is pretty good — you'll cause a greater variation than that just by moving your head to look at the phone with the playlist :)
500ms should be enough that you can roam between multiple APs without the audio stream being interrupted. If you're on hard-wired ethernet you should just be able to modify the snapcast source code to reduce it to whatever you want (10ms should be fine).
500ms of latency is far too much. Even Sonos suffers from this with port/connect
edit: forgot link https://github.com/Spotifyd/spotifyd
I wonder why TCP? For streaming media I would expect UDP, RTP or even RTMP to be better. Maybe even something newer like QUIC.
edit: in fact, isn't RTP/RTCP made for exactly this purpose? The streaming/synchronization of media?
https://github.com/noelhibbard/node-airplayhub https://github.com/mikebrady/shairport-sync
Of course they would have to introduce a fixed delay of a phrase (or multiple) and people would have to play accordingly.
So making it possible for people to jam together across such distances is an interesting challenge indeed. Such a delay makes a naive approach incredibly awkward! Good musicians can get around it with practice and using drones, for example.
However, if you're synced to a shared reference /background track, you could play in time to that. The problem is that you can't hear any of the contributions of the other players while you're playing -- the signal is too far away.
But you could imagine sort of controlling an AI mimic which would stand in for you in the ears of the other players, and your contribution would be patched in to the final mix. As a minimal step you could just represent your playing with a couple of loops (A and B pieces) and your improvisations can get auditioned and patched in for later contributions later on in the song.
Some things to think about. It's easier to imagine doing it all in the same area! And you can do in in real space, so that's a plus :D
I'll be starring this project and giving it a go as soon as possible. Can't wait!
I'd love to be able to stream from laptops and phones -- without installing additional software on them.
Is Snapcast just more compatible with Linux clients, or are there any other advantages?
For mobile setup, I currently use soundwire (it has an android app as a client, and I serve audio from a linux server) but the sync is not very good.
Also, is this trivial to set up and is there a web app I can use to test it out?