• WANTED: Happy members who like to discuss audio and other topics related to our interest. Desire to learn and share knowledge of science required. There are many reviews of audio hardware and expert members to help answer your questions. Click here to have your audio equipment measured for free!

How do you get bit-perfect playback on the Apple Music app?

TylerT

Member
Joined
May 17, 2024
Messages
13
Likes
23
Location
Alberta, Canada
My current setup has an iPhone 15 Pro Max => USB-C Data Cable => Fiio BTR15 or K7 => Hart Balanced Cable => Hifiman Ananda Nano.

After reading about the Apple Music (AM) app online, it seems that the AM app cannot bypass the internal mixer for Windows, MacOS, and Android, as there is no exclusive mode available. The only way to achieve bit-perfect playback is through an iOS device connected to an external DAC. In the iPhone AM settings, I have the “Sound Check” option disabled (volume normalizer), EQ off, Crossfade off, Dolby Atmos off, and audio quality set to Hi-Res Lossless.

My concern is that the iPhone seems to be mixing the audio before sending it to the external DAC. Unlike Tidal's exclusive mode for Windows, I can hear notifications, keyboard sounds, lock sounds, etc., while playing music with the Tidal or AM app. The volume buttons and slider are disabled, but all other sounds (notifications, videos, etc.) are still mixed with the music. How can playback be bit-perfect if the OS is still mixing the music with system audio?

AM doesn’t seem to have an “exclusive mode” so to speak, and while I can “disable” keyboard sounds and lock sounds, I doubt I did anything to bypass the internal mixer. My knowledge of audio science is still that of a novice. If anyone can provide insight into how to enable bit-perfect playback or clarify if the internal mixer reduces quality (similar to Windows and MacOS), that would be very helpful.

Much appreciated,

Tyler
 
How can playback be bit-perfect if the OS is still mixing the music with system audio?
Mixing two digital sounds is actually just an addition operation. So presumably whatever you hear when a notification sound isn't playing would be bit-perfect, since at all other times it's just adding zero to each sample, or doing nothing.

Keep in mind that bits are bits, audio, video, or otherwise. If the internal mixer isn't resampling or actually doing anything to the audio, then it's no different (well, not much different) than opening a spreadsheet in Excel, doing nothing, and closing it again. Bit perfect. :)

BTW welcome to ASR!
 
Mixing two digital sounds is actually just an addition operation. So presumably whatever you hear when a notification sound isn't playing would be bit-perfect, since at all other times it's just adding zero to each sample, or doing nothing.
It’s not that simple. Addition can only be done if the sample rates match. If not at least one of the sources needs to be resampled. Also some sources may have other clock domains and still have the same sample rate, for example when capturing audio, realtime video/audio playback, etc. All in all, a OS sound mixer is quite a bit more complex than it may seem at first glance.

So there is an application that can switch sample rate for Apple Music on the fly:


I think the MacOS mixer assign an app priority mode that will let the app determine the primary clock domain. That way, when nothing else plays, and the sample rate is set correctly, it can output bitperfect audio.
 
It’s not that simple. Addition can only be done if the sample rates match. If not at least one of the sources needs to be resampled. Also some sources may have other clock domains and still have the same sample rate, for example when capturing audio, realtime video/audio playback, etc. All in all, a OS sound mixer is quite a bit more complex than it may seem at first glance.

So there is an application that can switch sample rate for Apple Music on the fly:


I think the MacOS mixer assign an app priority mode that will let the app determine the primary clock domain. That way, when nothing else plays, and the sample rate is set correctly, it can output bitperfect audio.
Great points, thanks. I think if you were doing this with an eye toward music audio quality (which I think Apple does) you'd resample the notification sounds on the way in rather than changing global sample rates or something iffy like that. So I guess the basic point (probably) stands?
 
So I guess the basic point (probably) stands?
More or less. Basically it resamples everything to the rate set in the MIDI settings, and it can assign an app to determine the clock domain. Usually that would be Apple Music. So if you match up the sample rate to the song, and set the volumes to 100%, you’re good to go.

Or you just don’t care and enjoy anyway :)
 
Thanks for the welcome and well-explained information!

I’m glad that Apple has prioritized Apple Music when determining the clock domain. I’m surprised that iOS is the only OS that cares to resample system sounds to match the music sample rate instead of vice versa. It's nice to know I can enjoy bit-perfect playback while still having notifications on.

Honestly, I can’t hear the difference between most sources and format qualities, but I’m the type of person who enjoys something more just knowing it’s running on a higher spec. :cool:
 
I’m glad that Apple has prioritized Apple Music when determining the clock domain. I’m surprised that iOS is the only OS that cares to resample system sounds to match the music sample rate instead of vice versa. It's nice to know I can enjoy bit-perfect playback while still having notifications on.
If you think about it, it makes a bit or sense, given that in iOS there is really only one app active at a time on the foreground.
 
If you think about it, it makes a bit or sense, given that in iOS there is really only one app active at a time on the foreground.
True, mobile OS's are much more optimized than their desktop counterparts, especially iOS.
Although with all the raw processing power we have at our disposal now, I hope that before long, we can have desktops perform the same.
 
The definition of bit perfect is that nothing is changed, so the number of channels, the value of the samples and the sample rate remains unaltered.
As you can't send multiple streams with different properties to a DAC, almost all operating systems have a default. You select a bit depth and a sample rate in the audio panel.
Of course, if the sample rate of your source doesn't match this default, it will be resampled. If this is the case, you are not bit perfect. If this result in a audible degradation is a different matter.

Likewise, even if the sample rate of the source matches the default, the mixer is active. It will convert to float, mix (even if 1 stream is running), dithers and convert back to integer. Again, because of the dither it is not bit prefect. If you have a 16 bit DAC it might be audible. If you have a 24 bit data path, it won't because no playback chain can resolve details at -144 dBFS.

Of course if you apply some DSP upstream like EQ or even something as simple as volume control, you are not bit perfect by design. That is the paradox of EQ. You are bit imperfect as hell to get a better sound quality.....

Of course, if the OS mix e.g. your audio stream and a notification, the result is not bit perfect.

Anyway, in the past bit perfect was an issue (remember the Kmixer?). Today you will probably be hard pressed to hear the difference.
 
Last edited:
I’m the type of person who enjoys something more just knowing it’s running on a higher spec
I know exactly what you mean, but you should try to fight this tendency. Why? Someone will always sell you a "better" piece of gear, but at some point, better specs is just "number go up" and has no effect on the sound quality. In fact, a lot of audio gear is well past that point. It's like buying a Ferrari just to sit in traffic, except in this analogy, your ears are the traffic. :)
 
The definition of bit perfect is that nothing is changed, so the number of channels, the value of the samples and the sample rate remains unaltered.
As you can't send multiple streams with different properties to a DAC, almost all operating systems have a default. You select a bit depth and a sample rate in the audio panel.
Of course, if the sample rate of your source doesn't match this default, it will be resampled. If this is the case, you are not bit perfect. If this result in a audible degradation is a different manner.

Likewise, even if the sample rate of the source matches the default, the mixer is active. It will convert to float, mix (even if 1 stream is running), dithers and convert back to integer. Again, because of the dither it is not bit prefect. If you have a 16 bit DAC it might be audible. If you have a 24 bit data path, it won't because no playback chain can resolve details at -144 dBFS.

Of course if you apply some DSP upstream like EQ or even something as simple as volume control, you are not bit perfect by design. That is the paradox of EQ. You are nit imperfect as hell to get a higher sound quality.....

Of course, if the OS mix e.g. your audio stream and a notification, the result is not bit perfect.

Anyway, in the past bit perfect was an issue (remember the Kmixer?). Today you will probably be hard pressed to hear the difference.
If I understand this right, 16-bit data will be converted to float, mix, dither, and then converted back to integers. This happens even when bit-depth and sample rates match, as long as the mixer is not bypassed. Since dither is imperfect, 16-bit data will have audible noise, while 24-bit noise will be inaudible.

My DAC (Fiio K7 & BTR15) is capable of 24-bit playbacks. Does this mean that it will default to a 24-bit data path to avoid audible noise and imperfect data, or are any songs I play below 24-bit going to inevitably have some audible noise?

My conclusion is that my iPhone => DAC will introduce noise even if it’s considered ‘bit-perfect’ since there is no way to bypass the mixer, and that the only way to avoid this is through ‘exclusive mode’ on Tidal for desktop?

Thanks for the in-depth explanation! As inaudible as it may be, I find listening to bit-perfect, noiseless audio more enjoyable.
 
I know exactly what you mean, but you should try to fight this tendency. Why? Someone will always sell you a "better" piece of gear, but at some point, better specs is just "number go up" and has no effect on the sound quality. In fact, a lot of audio gear is well past that point. It's like buying a Ferrari just to sit in traffic, except in this analogy, your ears are the traffic. :)
That's so true; I often find myself splurging on something just because of its build quality or aesthetics. At best, its functionality remains the same, occasionally even reduced, since I take extra care to avoid ruining the aesthetics.

I find that this is just the human nature part of me and I accept this character as long as it's within reason. :D

Edit: I wouldn't mind sitting in traffic with a Ferrari :cool: (realistically, though, the car would be closer to a brand-new non-used Toyota).
 
That's so true; I often find myself splurging on something just because of its build quality or aesthetics. At best, its functionality remains the same, occasionally even reduced, since I take extra care to avoid ruining the aesthetics.

I find that this is just the human nature part of me and I accept this character as long as it's within reason. :D

Edit: I wouldn't mind sitting in traffic with a Ferrari :cool: (realistically, though, the car would be closer to a brand-new non-used Toyota).
Build quality and aesthetics are worth money, but only you can decide how much.

A LOT of my purchasing is also driven by aesthetics, and not only because I'm married. :)
 
Build quality and aesthetics are worth money, but only you can decide how much.

A LOT of my purchasing is also driven by aesthetics, and not only because I'm married. :)
That's true! I tend to be more irrational about cool-looking things and often splurge more than necessary.

In the long term, I find myself not regretting the decision and appreciating the coolness; so I accept it for what it is. :)
 
Is running auto bit perfect the Apple music on Windows and Android as Tidal does?
 
Hoping someone can diagnose this bug in iOS 18.0.x that relates to this thread:
This is an Airplay (1) question in the Apple world so, if you are not using Airplay (1) devices or Android or Windows, just skip it.
I stream latest iOS 18.0.1 and latest Music from an iPhone to an Airport Express v2 but with its firmware set to the last version of Airplay (1), so I get 16/44 lossless for sure and not AAC 256 lossy. It worked great for some years in previous iOS including last 17.x.
But after the updates to 18.0.0 and 18.0.1, it has a new volume slider bug.
Normally, the volume control on the phone defaults to about 1/3 from zero. Can't hear it at all. This is normal. Since the Airport Express v2 is linked to a DAC and RCA into my amp, I control the volume from the amp. This is normal for Airplay (1) and produces the best Airplay sound. Consequently, I normally raise the Music app slider volume from 1/3 to full so it is also as close to bit perfect as I can get it. But if I leave Music, like to check another app, when I come back to Music, the slider drops about 5-10%! Ugh.
This is, of course, not good as it is a non user triggered change and for audiophiles, the now altered volume from source, means it is far from bit perfect.
BTW: It does not always happen! Making it doubly annoying as a bug!
Other than an actual bug Apple introduced (I reported it), what would cause this volume change randomly? No, I am not accidentally causing it with a slight touch or, hitting the mechanical volume controls!
 
My DAC (Fiio K7 & BTR15) is capable of 24-bit playbacks. Does this mean that it will default to a 24-bit data path to avoid audible noise and imperfect data, or are any songs I play below 24-bit going to inevitably have some audible noise?
A DAC does nothing, it simply plays what is send to it.
If you set the Win default to 16 bit, the mixer will convert to float, mix, dither and convert back to 16.
If you set Win to 24, the mixer will convert to float, mix, dither and convert back to 24.
There is no playback chain for sale able to resolve details at -144 dBFS as this is what bit 24 is about.
If you play 16 bit audio on a 24 bit DAC, it simply will be post fixed with 8 zero bits. No audible differences because of this.
 
If I understand this right, 16-bit data will be converted to float, mix, dither, and then converted back to integers. This happens even when bit-depth and sample rates match, as long as the mixer is not bypassed. Since dither is imperfect, 16-bit data will have audible noise, while 24-bit noise will be inaudible.

My DAC (Fiio K7 & BTR15) is capable of 24-bit playbacks. Does this mean that it will default to a 24-bit data path to avoid audible noise and imperfect data, or are any songs I play below 24-bit going to inevitably have some audible noise?

My conclusion is that my iPhone => DAC will introduce noise even if it’s considered ‘bit-perfect’ since there is no way to bypass the mixer, and that the only way to avoid this is through ‘exclusive mode’ on Tidal for desktop?

Thanks for the in-depth explanation! As inaudible as it may be, I find listening to bit-perfect, noiseless audio more enjoyable.
I know it’s an old post but it was in the “similar threads” list.
I don’t think this is the correct conclusion: DACs like the RME ADI have a dedicated feature for such test, and it demonstrates that the output on iOS is bit perfect.
 
Back
Top Bottom