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.
A bit of a rant, but I long for a digital version of an FM transmitter.
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.
And people pretend that Bluetooth is a replacement for the headphone jack. Not only is it a janky pain in the ass, but it can't be shared with a companion (watching a movie on a plane, for example).
We ARE going backward, partly because spineless apologists defend anti-consumer behavior instead of standing up for themselves and better.
Sure, it takes up some space. But so does having to carry dongles. If Apple made an iPhone with the jack back again and a couple percent smaller battery, I'd take the jack. The phones has already been getting thicker every year ever since 6 (the 2nd last iPhone so far with a jack), so that's no argument.
Same reason I prefer a wired multi-channel audio system throughout my house. Yes, wiring speakers is not fun and not everyone can do it - especially renters. But there are never sync issues, quality problems, or issues with connectivity. Same goes for wired internet over WiFi.
Wireless tech is pretty great. But when it comes to simplicity and reliability, I'll take wired any day.
Just so you know... some of us are still fighting the loss of the headphone jack: I am now on my third first generation Google pixel phone, 90% for the headphone jack (which I use often with my Shure SE 425s... and actually used today while sharing with my daughter via a $4 3.5mm aux splitter while on a plane) and 10% because today's "regular" phones are all LARGER than 2016's "XL" phones.
I have large hands, and the OG Pixel is the largest screen I can fully use one-handed comfortably. I've used the OG Pixel XL for about 3 months now (because I already had one when my OG Pixel died, RIP) and I still hate the size.
Aside: the screen on all the Pixel 3a display models I've checked out the past few months (I keep getting tempted to finally buy one but) is tinted yellow and has serious burn in issues.
This makes me wonder if there is a way to customize Android's screen resolution so the top of the phone is just ignored (I don't mind if my phone has a large bezel, chin, or forehead).
Squeezebox had this working in shipping internet radios over a decade ago. Logitech was kind enough to open source pretty much everything on that platform, so that it still lives today. No monthly subscription business plan bs or anything. You could even SSH right into the radios and do whatever you want. Not great for security, but really a fairly amazing line of hardware. I wish Logitech would revive it.
I guess the fundamental challenge with a snapcast setup is that you’re provisioning a computer for each node, and the inherent burden in setup and maintenance that comes with this.
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:
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 just set up my Nest Mini. One of the options was to create a "speaker group." I'm not sure if this is what I think it is, but maybe it lets you stream your audio to multiple speakers simultaneously.
AirFoil allows even a mix of wifi and bluetooth, and when all the active nodes are wifi, they're pretty-well sync'd; enough that walking from room to room it's basically seamless. Had that setup (w/ older-gen appletv units as receiving nodes) many years ago. Agreed that BT kinda sucks tho.
Not commenting on the rest of your complaints, but it seems really strange to me that you have experienced any issues with airpods whatsoever, as I’ve never heard of anyone having connectivity/pairing issues with those, and i have quite a lot of friends using those, mostly on androids too.
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).
My experience with AirPods has been that everything is great until it's not. Pairing and checking battery is super slick, just open the case near the phone — until, for no discernable reason it doesn't work.
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.
Yeah this problem recently popped up for me. I have to reboot my damn phone! I'm always bewildered when Bluetooth fails to work reliably. This isn't specific to Apple -- my car sometimes have the same problem. BT just seems like a technology we should have nailed down by now. Someone more knowledgable might be able to give us some insights into this.
I use both AirPods and Powerbeats Pro with my iPhone, Watch, AppleTV and MacBook Pro. Most of the issues are when I am switching between the devices. Admittedly, this is something ordinary bluetooth headphones would not be able to do at all or be extraordinarily difficult pairing/repairing across devices. So I give latitude to connectivity in these scenarios. But when they fail to switch or when AppleWatch fails to connect, it is a pain to "solve".
I’ve had to replace two pairs of AirPods for connectivity issues. The Apple store didn’t even question when I asked for a replacement pair - just a silent acknowledgment that there can be issues with phone calling and the AirPods can’t be repaired.
I have a pair of Sony Bluetooth headphones and they were paired across several devices without any difficulty. And not just my phone and laptop either. My kids borrow them a lot.
Do you switch devices that you use with your headphones? I have issues with my Bluetooth headphones when I try to switch them from my phone to my tablet... sometimes I have to go find my other device and manually disable Bluetooth to get it to connect to my other device.
I do not switch between multiple devices often (mostly between my iphone and macbook, but no issues there, it was as simple as choosing airpods as the audio output on the device I wanted to use them on), so that's the scenario where I accept there could be something I've missed.
To Apple's defense, I don't think there is a wireless pair of headphones in existence at the moment that could handle that scenario better than them, let alone handle the switching scenario at all. I tried the hyped up Sony wireless earbuds that were released in August and promptly dubbed as airpod killers, and they do not support switching between multiple devices at all. Like, it isn't even a bug, it is straight up a feature that doesn't exist. If you want to switch devices, you have to reset the pairing and restart the whole process every time you want to switch the device. Returned them as soon as airpods pro came out, zero regrets.
I find it kind of bizarre that they wouldn’t use the same firmware/chipset as they do in their over the ear headphones. I have a pair of the Sony something-bass (model mdr-xb something or another) over the ear Bluetooth headphones and they’re paired with at least 5 devices.
The situation isn’t quite as dire as that with the Sony buds: you don’t have to forget and re-pair, you can just enter pairing mode on the buds and hit connect from a device that had previously paired, which is better but by no means good at all.
I've been running whole-home Snapcast for over a year now, controlled by Home Assistant. Some quick info:
- 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)
I also do whole-home snapcast and control via Home Assistant. I love it! My server and 5 clients use this build:
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.
I know it’s a bunch of work but if you’re ever up to it even just a gist on GitHub of your hardware setup/software/configuration/scripts/etc. would be so killer. The hardest part about setting up this sort of thing is fighting each tiny little battle. I would have loved that battle years ago but I only have so much time these days.
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.
Very easily! And could certainly happen accidentally.
I live in spread out suburbs, so my radio spectrum is pretty clear. It might be an issue in a vertically-oriented city.
My primary automation network is ZigBee, which does have a (mild) layer of encryption and mechanisms to prevent replay attacks. There are ZigBee buttons and remotes, but nothing cheap enough that I could put two in every room. (And I had a bunch of these remotes previously, from when I just used them with the matching outlets).
Most neighbours are decent folks, so security may not be necessary. For example, I had an open Wifi for years, so the neighbours could share it if they wanted. I also had passwordless Airplay speakers, and only once soneone tried to play music on them. (Was fun)
At some point I unfortunately had to add a password because someone else used all the bandwidth...
> Most neighbours are decent folks, so security may not be necessary.
It's not even necessarily bad intent. I mysteriously had my lights turn on and off (which I control via a common RF controlled socket), but only around christmas time and only in the mornings and evenings. Turns out that's when my my neighbor turned the lights on the christmas tree on/off via their RF remote.
It varies wildly. My main setup are DIY-built "Amiga" speakers, on a Yaqin tube amp. I also have Overnight Sensations speakers in another room. Definitely go DIY if you're looking at something new.
The cheapest is a recent $10 portable bluetooth speaker (via aux in) for the shower. It turns on when the shower door closes.
I guess this comment is going to be a defining example of a useless HN comment, but I've been sitting here aghast and trying to express what I feel about this.
Ha! I mean, it's an $8 contact sensor, and a $10 speaker, and the Raspberry Pi I used for snapclient was already nearby and could handle it. (It was/is doing network monitoring).
I did it because, well, I wanted music in the shower. And it is nice getting the house text-to-speech messages in there too.
(Also it changes the lights in the bathroom)
Home automation is pretty fun once you hit a critical mass of sensor data. You can usually implement new features with a single additional smart outlet or contact sensor. For instance: For awhile, I had a neighborhood cat coming by and marking my patio at night (my cats, who I let out during the day, immediately ran to smell it every morning, and I could verify that was indeed the problem with my security cameras).
I bought a powered, default-closed solonoid valve for my outdoor faucet. I already had everything else--a sprinkler/hose, an unused smart outlet, motion events from my patio cameras, I knew if my doors were closed, etc.
So I added automation to: If patio motion at night, and my doors are closed (so my cats aren't outside), and the bedroom is in night mode (extra check so I don't accidentally hit my cats), and it's above 45F outside (don't want to freeze a poor thing), and there's motion on my patio, turn on the sprinkler for 15 seconds. The outdoor cat got caught once, then learned to fear the click of the outlet engaging but would dodge in time, and then never came back.
Oh, that isn't what I meant. I meant in contrast to hunting around for new music more directly. I used to spend entire weekend afternoons looking for music--reading forum threads, browsing weird labels, going down related-artist rabbit holes in new genres. Lots of this was on OiNK and What.cd, which had tremendous forums and metadata. There are modern replacements, but they aren't equivalent. Lots of this is the diffusion of music lovers in general.
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.
Yes I’m picking up what you’re putting down. I really wish What.cd had been able to continue as a metadata service if nothing else: the discoverability of music was at a level I have not seen anywhere else.
One of the things I pay attention to from a UX standpoint is “Am I avoiding this function because I legitimately have no use for it? Or is it because there’s just enough friction that I’m avoiding it and not noticing?”
An example from my own audio life: I have airplay speakers and an IoT outlet for their power. When I watch video on my iPad I can get much better sound through the speakers, but because it involves pausing the video, pulling down the control centre, tapping the airplay icon, tapping the speakers as the output, then going in to Home and turning on the speakers, more than half the time I just skip the whole process and listen through the iPad.
It only takes 5-10 seconds total, but that’s still enough that I subconsciously avoid it. The subconscious part is that it just ‘slips my mind’ most of the time as opposed to consciously choosing.
I have an extensive sonos setup for my business. I’ve experienced a lot of trouble with the system just cutting out, skipping tracks over and over, and connecting to Apple Music. Every couple of weeks it just totally shits the bed.
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.
I have an incredible set of privacy focused speakers. The only way my privacy can be invaded using them is if I inadvertently turn up the Styx too loud and everyone finds out my secret 80s love.
Not my project but I've been using it for a year on 3 Raspberry Pi and it has been rock solid. I highly recommend it. The synchronization is perfect and it only adds a small delay (500ms max) to the music. I've configured Librespot to use this as a Spotify Play speaker and control it from the desktop or mobile Spotify app.
I bought a couple, they're really good, my only dislike is that the screen software is written as a Mopidy plugin, but I'd prefer a remote mopidy instance and the pis and hats are just clients with controls.
I assume this is only for the analog output, right?
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.
For snapclient, I used a USB DAC at first, but turning it off and then on meant that snapclient lost its connection. I could not resolve that so I purchased a DAC HAT instead.
It was really bad when launched, but to call it really bad now (or in 2018) is not fair. A lot of poeple waste their money on these hats when they don't need to.
Has the hardware improved or just software? I have a DAC-Hat and it definitely picks up some sort of digital noise from the pi. I can literally hear SSH when large amounts of text are being dumped across the wire.
The Pi 1 B+ was improved with a dedicated power supply and I think that might have been it on the hardware side. The big improvement came with the software, details of which are linked elsewhere in this thread.
As others have pointed out, 500ms is huge for some applications. But when the use case is selecting a song from a playlist, starting to hear the track 1 second later is totally fine. It's often preferable to a stream with <30ms latency that drops a buffer every once in a while.
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 :)
Plus, that one second delay is present even if you use native solutions, like spotify play through amazon echo (very small delay, not that annoying) or sonos app (way more noticeable of a delay, closer to 1-2 seconds).
AirPlay uses a fixed latency of 2 seconds, so 500ms is not bad. Either way it's not a technical accomplishment/failure, the longer the latency the longer you can put up with your WiFi breaking without having your audio blip.
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).
Tbh, I feel like this was a genius move by Apple. AirPlay’s 2 second delay gives plenty of time for all devices to sync up and they simply build it in to the AV playback so that videos are perfectly synced to audio as well.
However, without that source-side adjustment: 500ms is a lot. Especially for video.
Yes, snapcast is really designed for audio streaming. For video it's not going to work (but surely for video cases you want something to stream both audio and video?).
Isn’t this a case where you delay the video on the TV side to match the latency of the audio? I assume your TV has an option for audio delay.
The problem that I’d see is that you probably don’t have this setup all the time, so switching your TV back and forth for an audio delay would be annoying. That and 500 ms might be more of a delay than your TV can handle.
The majority of receivers above a certain point have streaming radio, "cast", and/or "smart TV" features. Just like so much of the rest of the appliance world, most of those are powered by some random ARM or MIPS SoC running some flavor of Linux.
A modern networked AV receiver is sort of analogous to a managed switch, there's a fairly generic CPU running a general purpose OS presenting the user-facing interfaces, managing configuration, and handling some housekeeping tasks, then there's specialized hardware that actually deals with the signals and does the real heavy lifting after being set up by the general purpose processor..
ISTM they could just have a different mode for the system that lowers latency and increases droppage. For a sportscast the occasional pop or crackle wouldn't hurt anything.
If you're a fan of overly-complicated setups and looking for low latency, I had some success using JACK on a rpi. Be prepared for some tinkering, though.
I couldn't get Librespot to work, will have to give it another go. What I ended up doing was running the Spotify desktop app, sinking it to the snapcast pipe via pulseaudio.
I don't think librespot is maintained anymore. If you try again, maybe give spotifyd a shot. It works well for me in a basic setup (not using Snapcast)
RTP with RTCP is designed for streaming but not specifically multi listener synchronisation. They are not transport protocols - UDP and TCP are both commonly used for transport.
Now what we need is a method to hijack the phone-home process new Sonos devices use, and have them controlled via this. It's amazing to me how glitchy and fragile the native Sonos network is. I have lots of zones, but wow.
I have trouble getting local latency below that at times with recording and live playback. Trying to sync together multiple people and keeping it below that is still a bit a ways off most current networks.
It takes about 134 ms for a signal moving at the speed of light to go around the Earth. You can do no better if you have to cross such distances (unless you want to bore through the earth somehow).
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
This has existed (at scale, not just experimental prototypes) for over 10 years. I can't recommend anything in particular as I don't use it myself, but the very first search term I tried ("online jamming") turned up some useful leads. Direct integration with DAWs seems quite easy to set up nowadays.
Got two Raspberry Pi with HiFi Berry HATs, and have been trying to use RTP over Pulseaudio, from my home server, but have never managed to get the synchronisation right.
I'll be starring this project and giving it a go as soon as possible. Can't wait!
All streaming will have delay built in. Exponentially so when multi-room is involved. Audio has to be intercepted, encoded/transcoded, sent over the network, possibly endure packet loss, be received, and decoded, before it can be played through speakers.
Can someone explain why I would use this over Shairport Sync [1]? Setting up shairport is so easy, and it works great with iPhones and Macs as audio sources (which happens to be what I use).
Is Snapcast just more compatible with Linux clients, or are there any other advantages?
I've just started getting into Sonos because I want the full house audio, but I'm not sold yet. The worry I have with Snapcast is that sometimes it's worth the money for things to JustWork(tm). I know Sonos is super janky sometimes, but at least I don't have to build it from the ground up with a patchwork of technologies across my various computers and phone
I use this in three ways:
To stream from MPD, to stream from a DLNA renderer (gmrender-resurrect) and to stream from Pulseaudio. It is generally great, but the audio from Pulseaudio is not working well, quality-wise.
The one remaining problem is sometimes that podcasts that I stream via DLNA plays much too fast. Seems to depend on circumstances in the podcast stream.
It has it's own client binary, you can run it on anything you can build the binary for,there is also an Android client app but the Android app has never worked for me. You can't use standard clients with their own proprietary software, e.g. Sonos speakers etc
If you're talking home routers then I doubt you have multiple subnets at home, so just use broadcasts, there's no difference then. But if you do, OpenWrt should handle this.
Just quickly looked at Airfoil and it seems to pipe music to existing clients (chromecast, sonos, etc) whereas Snapcast gives you both the server and client software for you to run however you want. Also Snapcast is FOSS, so that's one other difference.
Snapcast needs you to run its own client. This means it handles the synchronisation perfectly, but sadly you can't connect things like internet radio players (like the LaMetric Time) using a web steam.
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.