Often, smartphones can not boast of good sound, including "music smartphones with DAC" in comparison with individual Hi-Fi players. This material is about the causes and their possible solutions. The part that is critical for smartphones will be described in most detail.
When comparing a separate Hi-Fi player and a smartphone, the difference in the operating logic of the OS is not obvious to many. And for this reason, a smartphone with a heaped DAC may sound significantly worse than a separate player with simpler components. Consider the whole chain of the sound signal passing through the blocks and their influence on the final sound quality.

In its simplest form, the signal path looks like this. Let's take a closer look at each block.
Original file
The quality of the source code is certainly important, but if you do not consider Lossy low bitrate formats, the impact on the overall quality is small. Of course, it is better to use Lossless formats in the form of ape, flac, etc ...
Player
From the player depends on the correct transmission of the audio stream further into the system. If you do not consider the inclusion of various effects of sound processing, then in the case of lossless, the sound should be transmitted unchanged, and for Lossy, the sound may differ between players due to different sets of decoders.
OS mixer
It is in the mixer is the fundamental difference between the Hi-Fi player and a smartphone on the Android OS.
Only one stereo stream should come to the DAC, but at the same time several applications can simultaneously reproduce sound. For example, a player, various music notifications, music in the game, etc ... All these audio streams can have different sampling rates and bit depths. Mixer all streams should lead to a single frequency and then put in one stream. Such logic is the same for smartphones on Android, iOS, Windows, Linux, etc.
In rare cases, if the sound is played only from one program, the mixer can be turned off. But this is a rare exception that was practiced in earlier versions of the PC OS. The reason for turning off the mixer was to save resources. Today, emphasis is placed on the versatility and stability of applications. For the system assigned a single sampling rate and its bit depth. Due to the conversion algorithms, the sound quality degrades.
Since PCs are actively used to work with sound, where the system mixer is completely superfluous, there are two alternative audio outputs for Windows: WASAPI and ASIO.

When using WASAPI and ASIO, the audio stream passes the system mixer and goes directly to the device driver and then to the DAC. In the diagram, the driver block between the mixer and the DAC is removed for simplicity.
With this organization of the signal path in the system, only one application can play sound. The remaining applications will be silent. In practice, this approach is not always pleasant to the user, where, when the sequencer is running, there is no sound, for example from skype. For some sound cards, a tricky move has been made - the driver can accept two streams - one with WASAPI and one of ASIO and then mix them with high quality using the means of its driver.
If for Windows everything is relatively transparent and there are clear names for sound output, then in Android smartphones there is total darkness. Now, in some players, you can find names such as “Hi-Rez output driver”, which are inherently analogous to WASAPI / ASIO and allow you to stream audio past the Android system OS mixer.
In FiiO Hi-Fi players on Android, there is a special mode when everything that can be and remains only the software player in the system is turned off. Although the players of some companies use the recalculation of the stream from 44.1 to 48 kHz. But, if for example the
Pioneer XDP-300R has a high
-quality algorithm, then the first expensive flagship Sony ZX1 was mediocre.
Why such a detailed description of the OS mixer? How badly does he hurt?
If we take a very rough analogy with photos and videos, then we have a 4k movie at the entrance. And there is a corresponding TV with a resolution of 4k (analogue of a good DAC, amplifier and high-quality headphones). The software player sends the frames to the OS mixer and the mixer converts everything into 640x480 resolution in the lowest quality way so that additional system captions can be superimposed (similar to ringtones). After the stream is converted back to 4k from 640x480 and the picture quality on a good TV leaves much to be desired. How does the user solve this problem, who does not understand too much, from what the quality of the picture has suffered so much? He goes through different players, turns the settings for sharpness, brightness, dynamic processing in them and stops at that player, where pre-processing the image before lowering to 640x480 and back to 4k will give the least terrible result. And this player will then be recommended as "the highest quality."
When we directly compare the quality of the picture from the player, which will directly carry the picture without the step of changing the resolution at 640x480, for example, broadcasting to a monitor with a resolution of 2k - the result will be significantly better. Other comments can be discussed in the comments.
For a real assessment of the effect of the mixer on the sound, special sound files are prepared.
Quality degradation is most noticeable in quiet areas of the composition or when the volume is set to a low level. Moreover, the initially louder the smartphone (with a powerful amplifier), the more you need to lower the level for comfortable listening in headphones and thus more distortion will be heard.
For example, the entry Mari Boine - Song For The Unborn was digitized. This is a completely ordinary track. If you wish, you can pick up a more problematic track or even get along with a technical signal.
The source was made by the smartphone Xiaomi Redmi Note 4x on Android 7. Android has 15 steps available for adjusting the volume level. For a complete picture, all levels were digitized in the standard Android player Google Player (Play Music) and Neutron (a paid version with the ability to stream audio bypassing the system mixer in this smartphone). In the file name: level "15" corresponds to the maximum level, "1" to the minimum. Letter G - Android Google Player, N - Neutron.
Android Google Player 1Neutron, 1For those who do not want to delve into the subtleties, you can separately listen to two files for a minimum volume level, where the difference is most obvious.
The tracks are normalized to full volume and, accordingly, the background noise from the DAC should be well audible for low volume options.
In the version for Google player, the distortions discussed in this material are much stronger.
Perhaps you will have a new association with the phrase "android sound." If the difference in sound is perfect is not obvious, then either there are serious problems with hearing, or the playback device is no good. In any case, leave your opinion in the comments to the material.
Full archiveThe archive is represented by files for all levels. They are normalized to the same amplitude. Try to compare files from different players on the same amplitude. In headphones of normal and mediocre quality, the difference should be audible to levels 10-11. Further, the difference can rest against the capabilities of your source - if it adds distortion, then the files from Neutron will lose the original transparency of the sound.
On equipment where playback is direct, without additional distortions from the system, there is a difference for all levels.
The difference of amplitudes relative to the maximum for the levels of the regulator looks like this:

Perhaps in other devices other than Xiaomi Redmi Note 4x, the distribution of amplitudes is different. Percentage values in Neutron have no direct connection with decibels, these numbers are arbitrary.
In general, if the data is processed in a 24-bit volume control and this stream enters the DAC, then without loss of quality, there is a margin of adjustment up to 48 dB (up to the 1st stage). With a decrease of more than 48 dB with a correct decrease in amplitude, the original sound stream will become slightly noisier, and if it is incorrect, distortions will be added and the quality will decrease.
When transmitting data in 32 bits, the margin for volume control without distortion is 96 dB.
In a cursory search, it was not possible to find a reference to which DAC uses Xiaomi Redmi Note 4x, but it is likely that something from the Qualcomm Aqstic series Audio Codec, which are recommended for the used Qualcomm Snapdragon 625. The current Aqstic series has characteristics in the form of a dynamic range of 130 dB and distortion level up to -109 dB. The younger WCD9335 accepts stream up to 192kHz / 24bit, the older WCD9341 up to 384kHz / 32bit and DSD128. In relation to Redmi Note 4x, it is a bit confusing that it was not possible to fully output the audio stream above 48 kHz. Perhaps, an even earlier version of the codec with similar parameters is used. As a result of testing, you can confidently say that there is full support for 24-bit, and in
terms of distortion, this DAC is no worse than alternative modern ESS / AKM.
After listening to the demo recordings, as soon as it becomes obvious what exactly you need to hear, try listening to your tracks in different players. Perhaps you have a good smartphone with a regular branded player and there are no such problems. And maybe the opposite situation - the DAC from the ESS / AKM, and the sound from both "Android".
The distortions in each smartphone may differ slightly due to different actual sampling rates. By default, the mixer operates at the maximum supported frequency for the DAC.
Maybe this option, the mixer will add distortion from the conversion of the audio stream, but the master volume level will work in the DAC itself, which will make the distortion barely audible in the whole range of volume levels.
Or, instead of a regular resampler, a smartphone can use high-quality and resource-intensive SRC, where the smartphone does not support direct playback at 44.1 kHz, but with
This converts very high quality into 48/96/192 kHz, as the
Onkyo Granbeat DP-CMX1 does for example.
Ways to solve problems with distortion
Using a special player
Use a player that supports audio bypassing the mixer. The solution at first glance is simple, but not always working. The fact is that players with such support are just a few and work on the principle of "good luck." Moreover, the player can show in the settings that the sound output is direct, but in fact it is a curve. It is also not excluded, and "tricks" from the next system updates.
From my own experience, by testing almost all players a year ago, we managed to identify a single player for the Xiaomi Readmi Note 4x in the form of PowerAmp version v704 with an experimental Hi-Rez sound output. Happiness lasted a month or two, because after the OS it was updated from the 6th to the 7th version and the output in Hi-Rez stopped working. For almost a year there was not a single player with a direct output for Android 7. Then a version of the v790 appeared, from which the audio stream went no higher than 16 bits and the application stopped the sound if the screen went out. Literally the other day, the v709 version was released, and it, with the exception of some bugs, works as it should.
At the same time, Neutron was updated a little earlier, which added support for direct output in the same way. But since Neutron does not bother to publish versions, it is hard to say when exactly the working version actually appeared. Previously, Neutron could correctly output the audio stream only via USB.
On the nose update to Android 8 with similar risks of losing the possibility of direct sound output for an indefinite period. Do I need to upgrade to Android 8, if the smartphone is used as a source of sound - a good question.
An example is often foobar2000. This player shows an adequate result for the internal codec only in Android 5. And at the same time only for 16 bits.
For example, testing in the RAA laboratory of
LeEco Cool changer s1 and
Xiaomi Redmi Note 4 smartphones just fell into the gap in the lack of suitable players for Android 7 and the results cannot be called good.
Using an external DAC with an amplifier
This is a good option, where you can and the DAC "pump" and the amplifier. But, when such a device is connected, the Android mixer will likewise increase the sampling rate with sound problems.
Xiaomi Mi A1 and xDuoo XD-05Here, in the example, playback from Android Google Player with the source file with a sampling frequency of 44.1 kHz. On the xDuoo XD-05 screen, we see 192 kHz. A screen with a frequency display is a handy thing.
For external DACs, you need to select a separate player with its own driver library. From practice - each player works only with a certain list of devices and for each device it is necessary to select a separate player. Fortunately, although they are paid, they are relatively inexpensive and there are usually trial versions.
Xiaomi Mi A1, Pro-Ject Pre Box S2 Digital and Final Audio Design F4100When playing from a more suitable player, the playback frequency in an external DAC will coincide with the frequency of the original file. In the example, when playing through Neutron, the Pro-Ject Pre Box S2 Digital screen shows the original frequency of 44.1 kHz.
USB players are usually updated more quickly when new OSes come out, since they are aimed at users for whom sound quality is important and who understand what it is.
In fact, the use of an external DAC for a smartphone is desirable only by having a slightly larger number of possible players with a more rapid update for new systems. But the version of the "sandwich" from the smartphone and the DAC in operation is not very convenient.
If for a certain smartphone all software players do not support direct audio output for a USB-DAC, then everything is not so bad, a recommendation is appropriate for the case of using a conventional amplifier.
Separate amplifier
If your smartphone uses a good DAC, you can minimize the effect of distortion from the system’s mixer.
Xiaomi Mi A1, Aune B1s and Final Audio Design F4100To do this, you need to set the volume level to maximum and to further adjust the volume in the amplifier itself. And along the way, monitor information on updates of the version of the software players.
An alternative without an amplifier is to use headphones with an analog volume control, such as the Sennheiser CX 980.
DAC
Although it is the DAC that usually receives the most attention in advertising brochures, in fact its contribution to the overall sound is minimal. The fact is that its quality is highly dependent on the implementation, where a good result is usually achieved in large dimensions with substantial power consumption.
The sound can be good within the smartphone, but all other parts of the chain are more critical in practice.
Amplifier
If it turns out to output the sound directly to the DAC, then this particular section will be the second most significant.
The final volume level of the device will depend on which voltage the amplifier can output. If the voltage is low, the amplifier will be quiet and it will be possible to use only in-channel highly sensitive headphones. If the voltage amplitude is high on the contrary, then the smartphone will probably “shake” full-size headphones, but when connecting in-ear headphones you will need to lower the volume level dramatically. This is fraught with good audibility of background noise (as in tracks with volume steps below 5). If the player has no direct sound output, then additional distortion will be added to the noise.
In addition to the voltage, the value of the output current of the amplifier is also important. The current may be limited to ensure long device operation. When a certain volume is reached with the headphones connected, the sound may become harsh or hoarse.
It is important to select the optimal headphones for the original amplifier amplifier in the smartphone. For this, the
corresponding comparison service in the RAA is made .
Headphones
Headphones must be compatible with the amplifier. There should be an optimal combination of sensitivity and resistance (impedance) with the voltage and current of the amplifier. There should be a margin for adjusting the volume both up and down. Compatibility in this case is comparable to the choice of "gears" in the gearbox of the car to ensure optimal speed. Headphone quality is certainly important, but it doesn’t replace amplifier matching.
On the coordination of headphones and amplifiers can be found in a separate article -
Recommended headphone impedance for the amplifierPlayers and smartphones
In the RAA laboratory, testing of software players for smartphones and Hi-Fi players on Android is at the final stage. This will allow you to make group tests of players in a relatively short time and give accurate information on support for direct sound output and player settings for a standard DAC / codec and USB output. Bare numbers, without a subjective "it seemed."
It is only the interest of ordinary users to this topic. And manufacturers have an understanding that there really is such an interest.
In this material there was no specifics with a list of players and their settings for smartphones. The main goal was to show the existence of a problem and common solutions to problems.