romain8991 Posted January 8 Share Posted January 8 (edited) Hello, I was just wondering if you could please add 64 bit fixed point internal sample format and DSP, for better audio quality and precision. Thanks in advance! Edited January 8 by romain8991 Link to comment Share on other sites More sharing options...
andrewilley Posted January 8 Share Posted January 8 I think internally the DSP audio engine already uses 32/64 bit (possibly as floating point, but I'm not sure?). @maxmp will be able to provide more detail anyway. Andre Link to comment Share on other sites More sharing options...
romain8991 Posted January 8 Author Share Posted January 8 (edited) @andrewilley Thanks for the quick reply! I wanted more detail on this matter and asking for 64 bit fixed point, since TSN/DSP infos seem a bit unclear in the app and to suggest it only uses floating point: Edited January 8 by romain8991 Link to comment Share on other sites More sharing options...
andrewilley Posted January 8 Share Posted January 8 Just checked back a while, and from the release notes when the Poweramp v3 audio engine was first introduced: Poweramp core DSP now uses 64-bit float internal math, helps a lot for accurate high amplification of bass So yes, internal processing is 64-bit - but floating point not fixed. Andre Link to comment Share on other sites More sharing options...
romain8991 Posted January 8 Author Share Posted January 8 (edited) @andrewilley Thanks for the details about DSP format. What about the internal sample format, since some websites (like Slant) suggest that it uses 32 bit floating point? And could you still add 64 bit fixed point internal sample and DSP? Edited January 8 by romain8991 Link to comment Share on other sites More sharing options...
romain8991 Posted January 8 Author Share Posted January 8 (edited) Through FFmpeg libswresample commands, I think it's feasible: - https://ffmpeg.org/ffmpeg-resampler.html - https://ffmpeg.org/doxygen/trunk/group__lswr.html - https://ffmpeg.xabe.net/docs/Xabe.FFmpeg.AudioCodec.html Edited January 8 by romain8991 Link to comment Share on other sites More sharing options...
maxmp Posted January 8 Share Posted January 8 @romain8991 Poweramp DSP uses Float64 (double in c/c++) for the intermediate processing and Float32 (float) as much as possible in it’s pipeline staring from the decoding (most lossy formats decoded to Float32 directly). Link to comment Share on other sites More sharing options...
romain8991 Posted January 8 Author Share Posted January 8 (edited) @maxmp Thanks for the response. So, is the internal format Float64 with lossless formats and most formats? Edited January 8 by romain8991 Link to comment Share on other sites More sharing options...
andrewilley Posted January 8 Share Posted January 8 From what Max just said, it would be fixed 32-bit for most of the audio pipeline - regardless of the source fidelity (16-bit, 24-bit, 32-bit, sampling frequencies, compressed or lossless). But float64 is used within the DSP processing code (such as EQ if enabled, etc). Andre Link to comment Share on other sites More sharing options...
romain8991 Posted January 8 Author Share Posted January 8 (edited) @andrewilley Alright, I see, thanks for the clarification. But could you please add support for 64 bit fixed point for internal sample and DSP, for better sound quality and precision? Edited January 8 by romain8991 Link to comment Share on other sites More sharing options...
Fitzian Posted January 8 Share Posted January 8 35 minutes ago, romain8991 said: @andrewilley Alright, I see, thanks for the clarification. But could you please add support for 64 bit fixed point for internal sample and DSP, for better sound quality and precision? Can you point to some other audio engine, DAW, software (for use with audio) that uses 64 bit fixed instead of floating point? ...I feel like every DAW under the sun uses 64 bit floating point operations, and that's not some sort of fluke. Link to comment Share on other sites More sharing options...
romain8991 Posted January 8 Author Share Posted January 8 @Fitzian Yes, JRiver Media Center for instance. Still, I think it would be nice to at least have Float64 for internal sample, just like for DSP effects. Link to comment Share on other sites More sharing options...
andrewilley Posted January 8 Share Posted January 8 25 minutes ago, romain8991 said: JRiver Media Center for instance. I didn't know they had an Android audio player app, I thought their system was computer based? Andre Link to comment Share on other sites More sharing options...
romain8991 Posted January 8 Author Share Posted January 8 @andrewilley They still don't, I was referring to the computer version. Link to comment Share on other sites More sharing options...
andrewilley Posted January 8 Share Posted January 8 Even 32-bit float gives a theoretical dynamic range of 1,528dB. For reference, the loudest thing that ever occurred on earth was estimated to be Krakatoa erupting at around 300dB - and remember that dB is a logarithmic scale not a linear one, so these sort of numbers are basically meaningless in the real world of listening to music. Andre Link to comment Share on other sites More sharing options...
romain8991 Posted January 8 Author Share Posted January 8 (edited) @andrewilley I know that, I'm not seeking for a ridiculously high dB output. I'm actually looking for a more precise sample format conversion, with more transparent dithering, DSP with greater precision and a much better overall sound quality (more audio details and lifelike sound). It's mathematical, a conversion from a much higher internal format and its usage in DSP gives greater precision compared to floating point, especially if you compare 64 bit fixed point to Float32. Edited January 8 by romain8991 Link to comment Share on other sites More sharing options...
Fitzian Posted January 8 Share Posted January 8 This proposal isn't even used in the audio workstations that produced, mixed, and mastered the sounds Poweramp is trying to reproduce. Consider that "much better sound quality" already gone. If your output device supports >16 bit output, you do not need dither. Poweramp could benefit from sample rate auto switching (or a definable matrix of when you want oversampling done and what ratio), but that's pretty much it. Link to comment Share on other sites More sharing options...
romain8991 Posted January 8 Author Share Posted January 8 (edited) @Fitzian I disagree with you. 64 bit internal sample is indeed used in many DAW stations for DSP and the purpis to use it is to have a much more precise DSP and output of the signal, even after dithering. Edited January 8 by romain8991 Link to comment Share on other sites More sharing options...
Fitzian Posted January 8 Share Posted January 8 Them being "64 bit OS" compatible and using 64 bit floating point math, are not in dispute. Poweramp too, uses 64 bit floating point math for its DSP. Floating vs fixed, this is all discussion about where a decimal point goes. Link to comment Share on other sites More sharing options...
romain8991 Posted January 8 Author Share Posted January 8 (edited) @Fitzian I didn't say otherwise and my point about the mathematical precision of 64 bit fixed point still stands. 🤔 If you use Float64 for DSP, why not at least use it for internal sample format as well or, if you go further the logic, 64 bit fixed point for both (DSP and internal sample format)? Edited January 8 by romain8991 Link to comment Share on other sites More sharing options...
Fitzian Posted January 8 Share Posted January 8 When the cost (not including hardware to utilize it) of a DAW is at minimum, upwards of ten times to many hundred times the cost of Poweramp, must you really wonder why it's anything but a pipe dream? We are playing back a single file, here. Not adding/subtracting/multiplying/dividing many waveforms on top of one another. 64bit floating point has all the precision needed for output at 32bit integer format, if your DAC even performs that well. $3500 DACs (and some cheaper ones) get you SNR of between 125 and 135 dB. Well below 144dB of dynamic range possible to store in 24 bit integer format. Link to comment Share on other sites More sharing options...
romain8991 Posted January 8 Author Share Posted January 8 (edited) @Fitzian I already implied that I'm not looking for more headroom or loudness but a bigger calculation precision. Besides, the internal sample format is not what goes directly into the audio output and dithered before arriving there (the output sample format exist for this purpose, and the real available headroom after that is dependent, like you said, of the capacities of the DAC). Even though the final headroom is way bellow the mathematical values of 64 bit, the calculations can still be made in this format during sound processing/playing, while keeping alot of their precision, thanks to dithering. And that, in my sense, is why it has purpose and gives better quality results. So, then again, why not, instead of Float32, use 64 bit for internal sample format, and not just DSP, fixed or, at least, floating point? Edited January 8 by romain8991 Link to comment Share on other sites More sharing options...
MotleyG Posted January 9 Share Posted January 9 55 minutes ago, romain8991 said: So, then again, why not, instead of Float32, use 64 bit for internal sample format, and not just DSP, fixed or, at least, floating point? Why not? Well to start you are suggesting to try and get this performance from an Android device that for most users doesn't have nearly enough processing power. And even if the very few devices available could manage it on the hardware side, what would be the real performance benefit? Certainly any gains would have already been lost when scaling the source material that is typically 24-bit sample depth at the most. The diminishing return on the value of this feature today I would argue holds no weight against a lengthy list of other features awaiting development. i would be satisfied just to see a "no resampling" option to at least maintain the source file's sample rate. But this too has been relegated to a lower priority development to date. Link to comment Share on other sites More sharing options...
romain8991 Posted January 9 Author Share Posted January 9 (edited) @MotleyG Alright, but most Android devices currently available can handle 64 bit internal sample audio format and DSP with no issue (I can handle it with no lag whatsoever, using JRiver Media Center, even on my slow portable Acer computer, using 4 gigs of DDR3 ram and a simple 4 core low end CPU). The gain would be real, but the capacity of hearing it would depend on the audio device used (with bad quality speakers, earphones or headphones, the difference would be harder to tell, but the same goes for bypassing sample rate conversion, since SWR resample is pretty neutral and precise). Regarding development, I don't think it would be too hard to implement with libswresample (and I would dare to say that I think it would be easier than "no resampling" option), but I leave this part on the developer's hand. Edited January 9 by romain8991 Link to comment Share on other sites More sharing options...
maxmp Posted January 9 Share Posted January 9 Poweramp v1-v2 (before alpha 700) used fixed point DSP, but only because some early Android devices had no FPU or it was too slow. When doing +15dB or more amplification on low frequencies, some biquad coefficients and intermediate values may require higher (than Float32, or, e.g. Q8.24 fixed) resolution to avoid adding any noise or intermediate clipping. Other than that, "normal" float32 is enough. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now