"Android audio floating point output" option in app ?
Dec 15, 2023 at 12:26 PM Thread Starter Post #1 of 6

brjoon1021

100+ Head-Fier
Joined
Sep 30, 2023
Posts
141
Likes
70
Location
Earth
Hello,

I use my phone for streaming most often.
An application called HIBY music player offers floating point output for Android audio in their experimental section.

Firstly, I am wondering if theoretically that would even be advisable - what little I've understood well from my reading about floating point has left me uncertain ?

Secondly, any of you who are familiar with how the Android USB stack works And why apps such as HIBY music player and USB audio player Pro seek to bypass that stack as their reason for being might see why I am confused about the naming of that option.

If I am using their app aren't I bypassing the Android audio output?

In short, I'm just wondering if using it can do any signal harm or if enabling that option might offer better sound? For this exercise let's assume that God gave me ears to hear the color of the carpet in the studio. I would rather avoid assertions that nothing like this (floating point enabled or not) can possibly be heard by a human being.

Thank you
 
Last edited:
Dec 16, 2023 at 12:40 PM Post #2 of 6
I think most (if not all) DACs would convert the floating point samples to fixed point before doing any further processing but I'm not 100% sure. I heard that android resamples everything to a certain sample rate (44.1kHz or 48kHz, idk) so if you play back a file that has a different sample rate, it gets resampled before the reconstruction to the only supported sample rate.

Maybe @Joe Bloggs has some actual info on this?
 
Dec 17, 2023 at 4:18 AM Post #4 of 6
An application called HIBY music player offers floating point output for Android audio in their experimental section.
Firstly, I am wondering if theoretically that would even be advisable - what little I've understood well from my reading about floating point has left me uncertain ?
Theoretically, it would be inadvisable. Converting a 24bit file to 32bit float provides the exact same data in the mantissa but you get 8 bits of additional data for (the effectively unused) exponent. With 16bit files, the 32bit float mantissa is padded to 24bit, plus you’ve got the additional (effectively unused) 8 bits for the exponent. In other words, you’ve increased the amount of data you’re outputting (by 8 or 16 bits per sample) but the content of that data is identical, so there’s nothing to be gained only disadvantages: The use of more data transfer bandwidth and a higher likelihood of more errors. In practice though it would make little/no difference, that “higher likelihood“ is still vanishingly tiny and for modern USB protocols the additional bandwidth usage would be negligible.
Secondly, any of you who are familiar with how the Android USB stack works
I’m not familiar with how the Android USB stack works.
And why apps such as HIBY music player and USB audio player Pro seek to bypass that stack as their reason for being might see why I am confused about the naming of that option.
There’s only two potential reasons, by far the most likely is pure marketing, pandering to the audiophile myth of more bits/data being supposedly better. However there is a potentially legitimate reason, if the Android stack is resampling everything to a 48kHz sample rate using some hideously ancient algorithm (with audible artefacts). There is a possibility this is actually the case but it’s a remote possibility at best.
In short, I'm just wondering if using it can do any signal harm or if enabling that option might offer better sound?
With the exception of that very remote possibility mentioned above, then it will either make no difference to the sound whatsoever or in certain cases, enabling it could result in worse sound (assuming “better sound” means higher fidelity).
For this exercise let's assume that God gave me ears to hear the color of the carpet in the studio. I would rather avoid assertions that nothing like this (floating point enabled or not) can possibly be heard by a human being.
In the mostly likely case audibility is irrelevant, if there’s no difference in the sound it doesn‘t matter how good your ears are/hearing is. Having said this, it entirely depends on what exactly HIBY/other software is bypassing. There could potentially be very significant differences which are easily audible, if for example, it’s bypassing loudness normalisation (replaygain), applied EQ, etc.

G
 
Dec 22, 2023 at 10:48 AM Post #5 of 6
To the best of my knowledge Android is UAC2 compatible. That is the reason why all USB-DACs can be used.
Like almost any operating system, Android is designend to play multiple audio streams. This can only be done using a mixer and this requires all audio streams to run at the same sample rate. In case of Anroid this is 48 kHz and there is no user interface to change this.
Some media players do play all audio at its native sample rate. They simply bypass the Android audio stack. A bit like WASAPI/Exclusive in Win or hogmode in OSX.

Android 14 allows for automatic sample rate switching when using USB https://android-developers.googleblog.com/2023/05/android-14-beta-2.html
 
Last edited:
Dec 25, 2023 at 12:50 AM Post #6 of 6
Hello,

I use my phone for streaming most often.
An application called HIBY music player offers floating point output for Android audio in their experimental section.
Well there you go, it's experimental. I wonder how long it's been experimental (media players can have experimental features for years in their development when it's not in demand or there hasn't been an accepted standard).
Firstly, I am wondering if theoretically that would even be advisable - what little I've understood well from my reading about floating point has left me uncertain ?
A floating point format is used for representing large numbers (be it integers or precise decimal). It's been common with Image formats to use 32bit floating formats to simulate full dynamic ranges of bright light (first made common with 3D animation and raytracing realistic light levels). There are more audio technologies coming out now that utilize floating point in the recording phase (where there could be situations you have a system that doesn't have inherent clipping with DR and you have the flexibility to adjust levels for a particular session). With the mixing stage, 32bit float can have some advantages. I fail to see what advantage it could have in the reproduction stage: where CD quality is more than adequate for frequency ranges and dynamic range of a speaker system.
In short, I'm just wondering if using it can do any signal harm or if enabling that option might offer better sound? For this exercise let's assume that God gave me ears to hear the color of the carpet in the studio. I would rather avoid assertions that nothing like this (floating point enabled or not) can possibly be heard by a human being.

Thank you
As mentioned, there are APIs with OSes that have a direct hardware bypass for whatever file format the audio is. Usually with computer systems, it's bitstreaming lossless audio tracks like TrueHD (Atmos) or DTS-MA (DTS:X). Since floating point hasn't been intended for consumer media reproduction, it seems more than overboard (and I'm guessing that since your source isn't floating point, it's not doing anything).
 
Last edited:

Users who are viewing this thread

Back
Top