Do music player programs (Foobar, Winamp, Dopamine, etc.) affect the quality of digital music file playback? Or do they just spit out digital information to the DAC? Or sound quality changes due to prebuilt internal EQ from the player (software)? I am wondering if some programs fail to send complete digital information of a FLAC file to the DAC? Maybe it’s placebo thing; Potplayer (I use it to watch video files) makes the music much noisier than VLC to my ears.

If no difference, are there some better programs (for Windows) to playback digital music files (ie FLAC)? No commercial, no privacy theft, etc.

Thanks!

  • companyja@alien.topB
    link
    fedilink
    English
    arrow-up
    1
    ·
    10 months ago

    Okay I might get a little technical cause I’m bored but it might be nice and comprehensive for you in the future!

    Firstly to answer your concerns, no program should fail to send digital information. If it did, you would hear it very obviously - it will cut out and sound like digital artifacting, it’s quite obvious. It won’t make the music just noisier. If some players’ audio levels aren’t matching, they’re probably using different scales for volume adjustment.

    Music players by default will send the audio to the windows mixer, that is what’s going to happen in 99% of cases. In situations like this it really does not matter in the slightest which player you use.

    What happens then is that windows recieves the audio stream, it will check the sample rate of the audio and the sample rate set in windows match, it will go to the next step. If they don’t match, windows will resample the content to the sample rate set in windows. A lot of people seem scared about this but since a few years ago, Windows 10 and up have had very competent resamplers that leave artifacts very far below audible levels (-130dB or so iirc). You will not hear this step.

    Next, it will upconvert the stream to 32bit float for mixing purposes. This process is extremely trivial for your CPU and is lossless. This serves two functions - it improves the accuracy of the summing of the stream with any other windows audio playing at the same time (if you recieve a notification, or if you’re playing a video at the same time, for example). It also preserves the bit depth when lowering the audio level in windows - if it didn’t do this and you were playing a 16bit file at 5% volume, you would hear it all digitized and crackly (if you’ve used Windows XP and didn’t have a dedicated soundcard with its own drivers that handle resampling, you might have experienced this). This also means that windows can sum two signals that might exceed 0dB RMS (max theoretical digital signal) and preserve the audio stream instead of clipping it before lowering the overall volume according to the level you set in Windows.

    Now, if you set the audio in Windows at 100%, then playing multiple audio streams would obviously clip the audio. Windows has a component called CAudioLimiter that monitors the level of the sum of all audio playing at any given time; if the audio exceeds -0.2dB RMS, it will engage and duck the audio level momentarily, introducing a spray of distortion in the process since it’s made to be very quick instead of very accurate, so that there’d be no noticable latency (delay) of audio going through the windows mixer. This will also engage every time a single audio stream peaks over -0.2dB RMS, which will happen with pretty much every modern release. Thankfully nobody can usually hear this since it engages so quickly and goes away as soon as the audio level goes down. If you wish to fully avoid this, keep the audio in windows at 97% or below, or install something like EqualizerAPO and apply a negative preamp of at least -0.2dB. This will ensure the audio level of at least a single stream never exceeds -0.2dB RMS.

    After this is done, Windows will either pass the fully resampled and mixed 32bit signal to your DAC (if you set the bit depth at 32bit in windows) or it will downconvert to the bit depth set in Windows, usually 24bit (this process is also very easy to do and practically lossless) and then send it to your DAC. At that point your DAC recieves the singal and most likely does its own upsampling before processing the signal. This is part of the reason why it’s not really necessary to use a high default sample rate in WIndows, it will resample the signal for no real reason. Thankfully all of this is super easy to do for a modern CPU.

    Okay, well I said 99% of the time it works like this, but if you have a player that sends audio through ASIO or as a WASAPI exclusive element, then it will not pass the audio to the Windows mixer at all. It will instead mute every other audio stream on the PC and skip the mixer entirely, passing the audio through to your DAC directly. The DAC is expected to know what bit depth and sample rate you are sending it, and ASIO/WASAPI drivers are expected to make sure the DAC is ready for the exact type of signal you’re sending. This obviously eliminates all concerns about resampling and limiting. What you lose is the ability to play any audio outside of this (unless you use shared ASIO/WASAPI mode which go through the mixer anyway). You also cannot use a program like EQ APO to do equalization on your PC if you use exclusive asio/wasapi, since it hooks onto the Windows Audio pipeline as an APO (Audio Processing Unit).

    Some players like foobar will also allow you to use other internal resamplers instead of relying on the resampler in windows. It will use the resampler of your choice to prepare the sample rate before sending it to the windows mixer; if the mixer sees the same sample rate it will not resample the audio needlessly. This might give you a little more piece of mind if you’re still apprehensive about the stuff Microsoft uses to resample.

    My personal TL;DR and recommendation is to just set the audio at 97% or use a ~-0.5dB preamp and not worry in the slightest. You will not hear the conversion at all.

    This is as extensive as I could make it, hope it helps!

    • Jason_Peterson@alien.topB
      link
      fedilink
      English
      arrow-up
      1
      ·
      10 months ago

      I prefer to use ASIO drivers to bypass Windows handling of sound. The software that comes with a sound card can handle it more directly, and any tweaks can be easily adjusted in one place. Over the years, Microsoft has been integrating a lot of additional DSP functions into their OS. On Windows 7 I experienced the Windows limiter being very slow to recover after an over. In WinXP mixing was 24-bit if the sampling rate was kept at 48000. Before that, sound was always handled entirely in the VxD drivers and the DSP chip. Programs and hardware supporting ASIO was OS-agnostic, and continued working the same after an upgrade from XP to 7/2008.