MY HQPLAYER SETTINGS CAN BE FOUND HERE: HQPlayer Settings - Google Drive
If you’d just like to import my settings for a particular DAC, you can grab them in a .XML file at the link above. Simply open HQPlayer, then click file->import settings.
If you’d like to know a bit more then keep reading!
I recently posted the review for the Holo Cyan 2, which you can watch here:
The Cyan 2 is a NOS or non-oversampling only DAC, and as such if you do want to do oversampling, you have to do it with an external tool. Though HQPlayer can also be used to provide extremely high performance oversampling for any other DAC, and particularly if you’re a Roon user it’s something I’d recommend running.
Some Background:
For those wondering what high performance oversampling even does, the short answer is that it allows you to better adhere to Nyquist Theorem, attaining a more accurate reconstruction of the digital data. This is because Nyquist Theorem states that you can perfectly reconstruct the original signal with a bandwidth of up to half the original sampling rate (so 22.05khz for 44.1khz music), IF you perfectly band-limit.
This is the major misconception about digital audio and Nyquist reconstruction. Nyquist Theorem does NOT state that 44.1khz audio automatically gives you the original signal under 22.05khz, you MUST reconstruct or filter out the unwanted components first, and this is exactly why almost all DACs on the market have internal oversampling.
Perfect band-limiting means instantaneous and infinite attenuation, completely eliminating anything above 22.05khz and leaving anything below that untouched. However this would require infinite computing power and is therefore not practical in the real world. DACs typically do not have much compute power, and so typical DAC oversampling filters have usually somewhere between 128 and 1024 filter coefficients, which leaves us with filters that either roll-of content under 20khz, or do not fully attenuate by the Nyquist frequency and are therefore still leaving aliased products, meaning it’s not actually a perfect reconstruction:
But, we can throw more compute power at the problem and get a better result with tools such as the Chord MScaler, HQplayer or PGGB, which use the full power of your PC to facilitate filters with millions (or sometimes billions in the case of PGGB) of coefficients, providing a near instantaneous cutoff and much more accurate reconstruction that properly adheres to Nyquist Theorem:
HQPlayer and PGGB can also provide unique benefits to NOS R2R DACs thanks to their high performance and adjustable bit-depth noise shapers. Unlike delta-sigma DACs which will always be running their own noise shaper internally and you can’t therefore ‘override’ it, NOS R2R DACs do no DSP of their own, and so by setting the noise shaping and bit depth correctly, you can actually measurably improve the linearity of the DAC beyond stock performance, in some cases quite substantially.
HQPlayer Guide:
-
First step: download HQPlayer. You can get it from this link: Downloads – Signalyst
The software itself is reasonably pricy, but there is a free trial available, with the only limit being that every 30 minutes you have to close and re-open the software to have it continue to play. -
Download the ASIO driver for your DAC if available. Normal windows WASAPI typically only supports up to 384khz, whereas ASIO supports up to 1.536Mhz PCM on certain DACs, and also then allows native DSD transfer.
-
If you are using HQPlayer standalone, you can launch the ‘HQPlayer Client’ program after launching the main ‘HQPlayer 5 Desktop’ software to get a slightly nicer UI for playing music locally or via Qobuz. You can also just drag and drop files into the main HQPlayer window. However if you are a Roon user, you can set HQPlayer as an output device thanks to Roon’s built-in support. Just go to Settings → Setup, and then click ‘Add HQPlayer’. If your roon core is running on a different machine to HQPlayer, you may need to manually input the IP address for the device which is running HQPlayer, but a recent update means it should automatically detect it. Leave it as ‘localhost’ if HQP and Roon are running on the same machine.
Then, just choose HQPlayer as your output device in the bottom right:
- Configure. Lets talk through what the various settings mean.
INPUT TAB:
This is just used if you are wanting to route a device like a microphone or capture card through HQPlayer. For anyone just using HQP for music, ignore this and leave device set to ‘none’
OUTPUT TAB:
1: Backend audio pipeline. Use ASIO if you have it (you’ll need to download the driver from your DAC manufacturer), WASAPI if your DAC does not have an ASIO driver, and you can use NetworkAudioAdapter if you are streaming HQPlayer’s output to a streamer device like the Holo RED.
2: Device, choose the DAC you want to output to
3: Channel count. Set this to 2 by default, but for more advanced usage like multi-channel room correction adjust this to however many channels your device supports.
4: SDM pack. Setting this to ‘none’ means HQP will provide native DSD to the DAC. But this is only possible via an ASIO driver. Some DACs also may not support native DSD input. If your DAC doesn’t accept native DSD or doesn’t have an ASIO driver, then set this to ‘DoP’, which will pack DSD data into PCM samples and the DAC will then unpack them.
5: Some devices like the Holo Audio DACs can support DSD at 48khz base rates. However most DACs only support DSD at 44.1khz. This is not usually listed as a feature on most spec sheets, so simply try playing 48khz DSD and playing a 48khz song/file through HQPlayer. If you experience audible glitches, or slowed-down playback, your device doesn’t support 48khz DSD and so you should uncheck this. But if your DAC does support 48khz DSD leave it enabled.
6: Adaptive rate. This controls whether HQPlayer will either upsample to output rates that are a power of 2 of the input. (so 44.1khz only to 705.6khz but not 768khz etc), or whether it can output up to the max output rate. I’d strongly recommend leaving this set to square/half-checked. As this means it will upsample to the max possible rate when the filter allows, but when using a filter that only works for 2x rates, it’ll do 2x rates. Setting this to fully checked can sometimes cause HQP not to play with certain configurations.
7: This is your maximum volume limit, which you can later adjust with the knob on the main HQP window. You should keep this set to -3.0dB or lower. Setting this higher means you can encounter intersample overs clipping, but -3dB ensures that you will not clip other than in extreme cases (where the song’s mastering is quite frankly the issue anyway).
PCM TAB:
This is where you configure settings for outputting PCM audio to the DAC.
1: Filter 1x is the filter that is applied to 44.1khz/48khz content. There are a large number of filters available, but I would strongly suggest using either Sinc-L or Sinc-Mx. Sinc-L is a 2 million coefficient non-apodizing filter, and Sinc-Mx is a 1 million coefficient (or 2 million if outputting 1.5Mhz) apodizing filter. Both of these are extremely high performance and quite a bit better than many of the other options. You can also try some of the gaussian filters like poly-sinc-gauss-halfband if desired, although I’d recommend Sinc-L for more transient heavy music and Sinc-Mx for more vocal heavy music and live recordings.
2: Filter Nx is the filter that is applied to hi-res music. This allows you to for example configure HQPlayer to have no filter for hi-res content and feed it to your DAC as is whilst still applying oversampling to 44.1khz content. But for most of the time, I’d recommend just keeping this set to whatever you have filter 1x set to so that the same oversampling is used for everything.
3: Max sample rate that HQPlayer will feed to your DAC. HQPlayer will also automatically detect what your DAC reports for its capabilities, but you can manually set it lower if desired. Some DACs like the holo may support up to 1.536Mhz PCM, but most DACs will support either 768khz (via ASIO) or 384khz if using WASAPI output. Typically just choose the highest rate your DAC supports.
4: Dithering/noise shaping can affect the dynamic range of the output. For delta-sigma DACs this is less important since they’ll be applying noise shaping of their own internally which effectively ‘overwrites’ the work done by HQPlayer’s noise shaper, but for NOS R2R DACs especially, the high performance 15th order LNS15 noise shaper is what I’d strongly recommend as this gives hundreds of dB of digital dynamic range in the audible band even at lower bit depths. Noise shaping allows you to exceed the typical dynamic range limitations of 16/24 bit formats.
5: For delta sigma DACs, set bit depth to 24 so that their internal noise shaper has the most info to work with. (I generally avoid 32 as it’s of little practical benefit over 24, and many DACs just truncate 32 bit to 24 bit internally which is not ideal.)
For R2R DACs, setting this to the correct bit depth allows you to achieve measurably better linearity and small-signal accuracy than stock performance, or if you were using normal 24 bit dithering. Unfortunately, working out the exact value sort of requires having an analyzer. BUT, you can generally get the right answer by looking at the THD+N/SINAD measurement, and dividing by 6. So a DAC with 96dB SINAD should be set to 16 bit etc. You can also check my google drive folder to see if I have a config for that particular DAC.
SDM/DSD TAB:
This is where you’ll configure settings for DSD output.
1: Oversampling 1x determines the oversampling filter used for 44.1khz/48khz content. For DSD, I basically always use Sinc-L, as I find DSD sounds subjectively a touch softer than PCM in most instances, and Sinc-L is an extremely incisive filter that reconstructs right up to 22.05khz, so I always use that for DSD.
2: Oversampling Nx is the filter used for hi-res audio. Again I’d strongly suggest using Sinc-L with DSD.
3: The modulator is the biggest factor in both the quality of the end result, and the compute intensiveness of DSD upsampling. Be aware that certain DSD configurations in HQPlayer will literally bring your RTX5090+I9 14900KS PC to their knees, so depending on your PC specs you may need to play about with different options if you find that playback is pausing often due to not being able to process fast enough. If you are outputting DSD256 or higher, you can try the ‘512+fs’ variants of the modulators, which prioritise greater dynamic range in the audible band at the expense of slightly higher ultrasonic noise. I’ve generally found that ‘ASDM7EC-Super’ and ‘ASDM7EC-Super 512+fs’ are the best sounding modulators, but they can be quite intense to run and you will need a beefy PC.
4: Here you can choose the max output rate to feed to your DAC. Whilst you can just set this to the max your DAC supports, many DACs do perform slightly better with DSD256 than DSD512 or DSD1024. Setting this to the max is not always better. And additionally, a slightly lower DSD rate with a higher performance modulator is better than a higher rate with a poorer modulator, so I’d recommend using DSD256 or 512 and experimenting with what rate/modulator combination your PC can run.
ADVANCED TAB:
The advanced tab has some additional options, but most people will only need to look at two of them.
1: Multicore DSP determines whether HQP will use multiple CPU cores for processing. Generally keep this to square/half-checked so that HQPlayer can choose the optimal setup for each of its tasks.
2: CUDA offload. If you have an NVIDIA GPU you can offload some processing to the GPU, which can be particularly helpful for making more intense DSD upsampling configurations feasible that would otherwise be impossible with solely CPU processing. Square/half-checked will do convolution on the GPU, but fully checked (recommended) will also offload the main processing where possible. Not all modulator/filter combinations can be offloaded but keeping this checked will ensure they are if it’s possible.