Ask HN: Why can't modern smartphones play music smoothly?
As computing power grows, smartphones should theoretically encounter fewer and fewer stutters. However, at least on the phones I've used, which are iPhone8 Plus and Pixel 7, stutters still exist during music playing (even with the phone put in sleep mode). And I don't think it's only the case for the phones I've used.
The sources of the stutters I can come up with are:
1. all available LITTLE cores are busy and at least a task wake up in the meantime. 2. the CPU scheduler doesn't schedule properly (from the user experience perspective). 3. music player doesn't advice itself as latency-sensitive app.
It's easy for modern smartphones to have ready_to_run_tasks (daemons) > available_cpus, and a CPU scheduler which ignores latency-sensitive apps can easily preempt the music player.
To sum up, user experience is probably the utmost thing that modern phones care, how can things like "stutters during music playing" happen? Can't we just defer those daemon tasks?
(maybe this is why my collegue got a MP3 player instead)
49 comments
[ 5.2 ms ] story [ 113 ms ] thread- faulty 3.5mm jacks on certain headphones causing intermittent cutout
- buffering pauses for remote libraries/streaming (eg. YouTube or Spotify)
- Bluetooth/codec issues, where the proper codec isn't negotiated and "headset" mode stays on
That being said, I don't stream FLAC and my library is <10,000 songs. Maybe you've got a big library?
Good question.
It's nice that streaming works at all, but a lot of things have to be working underneath. I wonder how a DJ would set things up, even if that's not my use case. What MP3 player did your colleague get?
I have more challenges using my Pixel Buds with a Bluetooth dongle on my PC.
https://android-developers.googleblog.com/2021/03/an-update-...
I haven't heard about issues with latency in iOS audio, but the iPhone 8 is certainly not "modern". Are you using bluetooth headphones? Which apps are you using to play the audio?
So there's probably jitter in my headphones, or the app was not suppose to do music playback smoothly because that's not its main usage.
There are also inconsistent stutters throughout songs.
iPhone 13 and 2nd gen AirPods Pro, if it's relevant.
I've filed a feedback but Apple feedback is a black hole these days.
The worst for me was an issue where occasionally my entire computer would slow down with no evidence from Activity Monitor that something was eating cycles or taking memory. I finally traced it down to Apple Music while in fullscreen and using multiple monitors, which was my preferred setup. Filed a ticket with Apple feedback and it's still open with no response.
I suspect that the stutter happens when it decides to change audio tracks to a higher bit rate stream, but that’s me talking out of my rear.
That particular problem went away once I turned off lossless in Apple Music settings.
Amazon Music Unlimited has no stutter whatsoever when streaming lossless files. Perhaps Apple wasn't quite ready to offer Lossless, knew the stutter was there, and released it anyway.
Audible app over Bluetooth to my car has issues between chapters/tracks. But it’s probably fair to blame Audible’s software for not handling this edge case very well (since I don’t encounter the same when switching tracks in other apps in the same setup).
Maybe your issues are something similar, and specific to a particular case you have rather than a general issue with modern smartphones.
Although since you mention Audible, it might be about the length of the tracks or something like that.
[1] https://imgur.com/CG6FwO9
Even when switching wifi networks, driving on cell coverage, Bluetooth or hardwired headphones etc...
Smooth audio is actually quite hard to achieve.
Usually it works like this - audio driver has a buffer that the device is ought to fill with waveform data in a given amount of time. Then that buffer is shifted to the DAC and goes to your speaker. If during that process something happens like an interrupt that takes takes enough time that the process filling the buffer can't finish on time you get clicks and stutters.
Filling a buffer sounds simple, but it may involve DSP processing like filtering, mixing multiple channels etc. that also costs processing power.
Some operating systems "solved" this by setting buffer high enough that such interruptions would minimise stutters but that is at the expense of the latency (the delay between filling the buffer and then buffer being transferred to the speaker through DAC).
Audio in Android is very much still broken (though I am not on latest Android).
Don't know about iPhone.
The problem is unlikely going to be solved as if you make sure audio can run in real time and be stable, you encounter other problems that make phone use problematic.
Everything has trade offs.
That's why I used to prefer having separate device for playing music, optimised for this task.
There is no stuttering problem on audio playback on any of the smart phones you've listed. And there hasn't been any stuttering problem since the initial launch of the first generation iPhone.
The last time I remember any stuttering on any phone I've owned was maybe the Motorola Rokr twenty years ago.
You must have some sort of accessory problem.
I don't remember any stuttering on this or previous phones.
I use pretty much exclusively bluetooth for audio between PCs/phone/TV and both earphones and speakers, and my car's stereo is the only bluetooth connection I have that ever has connection/lag issues at all (and even then it's infrequent enough that I still choose it over plugging a USB cable in between phone and car).
I had one device that would suddenly connect at random times and music would suddenly start playing from an app that was previously not playing until the bluetooth device "woke up" or whatever happened.
I hate bluetooth for all of the little paper cut issues it has. Not one of them are killer, but together just ruins its likeability.
My wife's van, for example, can store a few connections - but only "likes" to keep its most recent (so ... in her vehicle, while my phone is 'paired', it never connects)
The only thing I have with more than 1 or 2 pairings are my [nice] Bose headphones ... and those are only paired to 'my' devices (two laptops (home & work), my cell, and my wife's cell (because she likes to steal them to use when mowing))
Bluetooth soundbar? Only connects to my laptop
Bluetooth earbuds? Only connects to my phone
Bluetooth wall speaker? One connects to my wife's phone, the other to mine
Walk into Apple store and try opening an Email app on top end phone, or try swipe-scrolling a PDF to see how smooth it is.
1- Click an unread (demo) email that conains images. Watch as text size loads way too small, the emails load, then text bounces to correct size after the images are fully loaded. A very unsmooth experience, all told, that could be characterized as a stutter.
2- Search the iPhone for "pdf" to find a pre-loaded demo PDF document. Open it. Now swip-down (flick) to let it scroll "smoothly". You get 120 Hz smoothness, but then it "hiccups" now and then, even in a pretty small file given the device resources. So, stuttery.
Yeah, not perfect. But, really good overall, considering it replaces a desktop in the hand for many tasks.
Still, it would be amazing for all the little things were ironed out.
Some day I think it will happen. But as others comment, there's a lot that has to occur behind each detail.
There are other obvious bugs that have also been out for months or years in other software from other companies, some used quite a bit and some less so.
I think it gives a window into how bottlenecked some orgs are, by one factor or another.
Besides Bluetooth radio interference, as other commenters noted, stutter happen because of kilometres deep bug ridden code base.
On the watch I suspect it’s some kind of Bluetooth/encoding bottleneck because the processor seems totally capable of smooth audio playback, but I’m not certain it can mediate the connection, encoding, and transferring flawlessly.
So my assumption has always been that the problem is Bluetooth. Perhaps RF interference or something.
I jest, but at the same time I don't. Like everyone else on this thread, I'm like "stutters? What is it, 1999 and I'm using a Pentium II to play my 28kbps MP3?" Ergo, if you're not using a hard-wired headphone connection, my only thought in this modern age is radio interference.
If you mean, "can't stream smoothly" - check your connection and your service choice (eg Paramount+ always seems to have problems for me ... regardless of the connection or device)
But "play music smoothly" has been a core feature (with nary a problem) since the first iPhone
Every one I have had runs all the audio I have ever wanted to run with no issue - 4G, 6S+, 8+, 11, SE, 14, and 15
My dad's and mother-in-law's Pixel 7 also have no issues