This post is a wiki! If you’re good with HQPlayer, feel free to edit it, especially since I won’t know the configuration for everyone’s use case!
I spent some time learning how to do the HQPlayer thing recently, so I thought I’d start a community guide! If you’ve been thinking about getting into HQPlayer, but you’ve been confused by all the filter choices and whatnot, I hope this helps!
I’ve also included sections on enabling the built-in oversampling in Roon and Audirvana. If you’ve never played with external oversampling before, I would recommend starting there before you go all the way to HQPlayer:
Oversampling in Roon
Under the volume button, there’s an option for “DSP”:
In this menu, there’s an option called “Sample Rate Conversion.” For the first option, I recommend Max PCM rate (power of 2) or Custom.
The second option provides four filter options: “linear” and “minimum” phase; and “precise” and “smooth.” In an ideal world, you’d be able to customize these based on the source sample rate, but in lieu of that, my recommendation is to choose a precise filter if you mostly listen to 44.1/48kHz music and to choose a smooth filter if you listen to lots of higher sample rate music.
As for “linear” vs. “minimum,” Roon’s docs have some explanation as to why you might choose one over the other, but in short, digital filters aren’t free: “linear” has pre-ringing and “minimum” has phase smearing, so either is a tradeoff. I personally prefer linear.
It’s also generally recommended to turn on “Headroom management” and set it to -3db since it’s possible for oversampling to introduce clipping.
If you don’t hear any sound, it’s possible that you might be oversampling to a sample rate that your DAC can’t handle. Make sure that your device setup has the correct “Max sample rate (PCM)”, which is under the advanced settings.
Oversampling in Audirvana Studio
PLACEHOLDER - EDIT ME!
Upsampling Recommendations:
- Forced upsampling type: Power of Two or Custom
- Algorithm: r8Brain
Introduction to HQPlayer
According to their website, HQPlayer is a multichannel audio player for Windows, MAC, and Linux. It is an extremely powerful, flexible, audio player that can do much (MUCH) more than oversample / upsample digital audio files. But for the sake of clarity, here we will just focus on using it as a tool for oversampling.
The HQPlayer “architecture” is very similar to the Roon architecture, in that it has 3 pieces to it: Desktop (similar to Roon Core), Control (similar to Roon Remote), and NAA (similar to Roon Endpoint).
This is a bit of an oversimplification, because each of these three pieces in HQPlayer have different features and capabilities than Roon, but conceptually they perform similar functions within the flow and processing of digital audio files:
-
HQPlayer Desktop - Desktop is the heart of the system. It can actually be used standalone (similar to how Roon Core can be used standalone). The computer that HQPlayer Desktop is running on handles playback and processing of audio files. It supports both local / networked file playback, as well as integration with internet streaming services (such as Qobuz). For upsampling, the Desktop is where you configure the upsampling algorithm, noise shapers, bit depth, sampling frequency, etc. The computer (Mac, PC, Linux) running Desktop needs to have sufficient resources (CPU, GPU, Memory) to handle the processing options selected, otherwise playback will be “janky” (or non-existent).
-
HQPlayer Control - The Control application is a separate program that “controls” HQPlayer Desktop playback. HQPlayer provides its own application (creatively) named “HQPlayer Client”. For the most basic use cases, it is much easier to directly control HQPlayer Desktop from the HQPlayer Desktop application, not using a separate Control application. But if you use HQPlayer in conjunction with Roon, Roon can be used as the HQPlayer Control application. This allows you to control HQPlayer music playback from Roon the same way you control playback for any other Roon endpoint. It takes a little bit of effort to set this up, but once it’s running, the Roon integration of HQPlayer is nice to use.
-
HQPlayer NAA - NAA stands for Network Audio Adapter. This is the endpoint for network streaming. It plays a similar role in network audio playback as the Roon endpoint. From HQPlayer Desktop you select the endpoint you want to play music through. After upsampling / processing is done in the Desktop program, the resulting data is streamed over your network to the NAA, where it is output to the DAC / Amp for playback.
While this looks somewhat complex, the most basic setup (which is HIGHLY recommended for trialing / demoing HQPlayer) can be done on a single computer:
And when running in this “single computer” setup, all you need is a single application: HQPlayer Desktop. From here you can have a lot of fun experimenting with various processing options. And the best part is you can do so with the free demo version, making the real cost to trying HQPlayer just your time.
Recommended Hardware for HQPlayer Desktop
You can trial HQPlayer on almost any modern computer hardware, but depending on your hardware (CPU, GPU, memory) you will be limited in the PCM upsampling rates and DSD modulators you can use. If you are just trying out HQPlayer to see if it’s something you will like, then almost any modern computer will do the trick. I’ve found the best “bang for your buck” option for HQPlayer is the M1 Mac Mini. Even the most basic 8GB RAM version is capable of running all but the highest rate DSD modulators. The 16GB version is certainly recommended. HQPlayer has a native arm64 version, that allows the M1 to run VERY efficiently. And if you are a Roon user, you can use the M1 Mac Mini to run both your Roon Core and HQPlayer.
Downloading HQPlayer
If you’re running HQPlayer on a computer or laptop, you’ll go to this page, scroll down to the bottom, and click the download link for your platform. If you’re using a newer M1 or M2 Mac, choose “arm64,” otherwise choose “x64” for older Intel Macs.
If you’re using a dedicated music server such as a sonicTransporter, check if your manufacturer has specific instructions for setting up an embedded version of HQPlayer (such as MySonicorbiter).
Installing and Opening HQPlayer
When you install HQPlayer, the program you want is called “HQPlayer4Desktop.” (You can also install “HQPlayer4Client” if you really want to, but I don’t recommend it.) You’ll probably also want to copy the PDF manual.
The first time you open “HQPlayer4Desktop,” you should see a popup that looks something like this:
This is because you’re running a free trial version of HQPlayer, which means that the program will automatically close after 30 minutes. If HQPlayer randomly closes itself, don’t worry, that’s normal. Just click OK.
This is the main HQPlayer interface. You won’t use this screen much, but if you’re running HQPlayer on a different computer than the computer you’re using to run Roon/Audirvana/whatever music software you’re using, then you’ll need to click this icon to make HQPlayer visible on your network:
Mac:
Windows:
Setup for Mac/Windows over USB
PLACEHOLDER - EDIT ME!
For Mac, you’ll set your “Backend” to CoreAudio, then set the “Device” to your USB device. My understanding is that Windows users should set their “Backend” to ASIO, or if that’s not available, they should choose WASAPI.
If you have a NOS R2R DAC, it’s recommended to set “DAC bits” to the actual bit resolution of your DAC (if you don’t know, 19 is a reasonable guess). If your DAC is going to do further processing of the digital signal or if you have a delta-sigma DAC, then set “DAC bits” to the highest bit value that your DAC will accept (likely 24 over S/PDIF and AES/EBU, or 32 over USB).
Setup for Sonore/SotM Streamers and Roon
If you’re using a Sonore streamer or an SotM streamer, select “HQPlayer NAA”:
Then open HQPlayer’s settings screen:
Set your “Backend” to either Network Audio Adapter or Network Audio Adapter IPv6, then set the “Device” to your streamer.
If you have a NOS R2R DAC, it’s recommended to set “DAC bits” to the actual bit resolution of your DAC (if you don’t know, 19 is a reasonable guess). If your DAC is going to do further processing of the digital signal or if you have a delta-sigma DAC, then set “DAC bits” to the highest bit value that your DAC will accept (likely 24 over S/PDIF and AES/EBU, or 32 over USB).
Next, you’ll go into Roon, select “Settings”, then select “Setup”. One of the options listed there should be to add a zone for HQPlayer. If your Roon core and HQPlayer are both running on the same machine, keep it at the default of localhost. If HQPlayer is running on a different machine from your Roon core, then you’ll need to enter the IP address of the machine that’s running HQPlayer.
And now you should have a zone in Roon that will stream music to HQPlayer.
HQPlayer Settings: PCM vs. DSD
PLACEHOLDER - EDIT ME!
The “Default Output Mode” setting gives you options to always convert to PCM, always convert to DSD, or to keep files in the same format that they start in. As a general guideline, converting to PCM should be better for R2R DACs and converting to DSD should be better for delta-sigma DACs.
I’m currently using HQPlayer with a NOS R2R DAC and I can really only provide recommendations for PCM oversampling. However, my understanding is that converting tracks from PCM to DSD requires a significant amount of computer processing, so using DSD might make it harder to run some of the heavier filters.
HQPlayer Settings: Filters and Dither/Noise-Shaping
HQPlayer has a ton of filters and a lot of the fun is playing around with which different ones you like, but I recommend these ones to get you started:
- poly-sinc-gauss family (gauss-xla, gauss-long, gauss-hires-lp)
- sinc family (sinc-Mx, sinc-S)
- poly-sinc-ext family (ext3, ext2)
- poly-sinc-short-mp (specifically for maximizing transients)
There are two different places to choose filters in the settings: one called “Filter 1x” and another called “Filter Nx.” The setting for “Filter 1x” only applies to 44.1kHz and 48kHz source sample rates, while the setting for “Filter Nx” applies to all higher sample rates.
According to the creator of HQPlayer, gauss-xla and ext3 are particularly steep filters that may be only well-suited to 44.1/48 content, so if you’re using those two filters, you may want to consider setting your “Filter Nx” to less steep filters in the same family (such as gauss-long, gauss-hires-lp, and ext2).
The recommendations for dither/noise-shaping will depend on the sample rate that you’re oversampling to. Specifically, some standard recommendations are:
- For 96 kHz, use TPDF or Gauss1
- For 192 kHz, use NS9, TPDF, or Gauss1
- For 384 kHz, use NS5
- For 768 kHz and higher, use LNS15
(NOTE: TPDF and Gauss1 are also reasonable choices for any sample rate if noise-shaping doesn’t make sense for any reason.)
I haven’t actually played with these settings too much, so your mileage may vary. Also, for starting out, I recommend using the highest sample rate that your chain will support.
For volume min and max, I recommend setting these both to the same value. The general recommendation is to set these to -3db because oversampling can introduce clipping.
Now the rest of the checkboxes: “Multicore DSP” should be set to auto (filled-in grey box) and “Adaptive output rate” should be checked. “Log file” is up to you, but having a log file can be good when you’re reporting bugs and asking for help and such.
HQPlayer Network Streaming - NAA Endpoints
→ add info about network streaming to NAA endpoints such as RPi and iFi Zen Stream
Beware the Network Traffic
It’s worth thinking a little bit about just how much bandwidth HQPlayer requires when upsampling to the highest PCM and DSD frequencies. We’ve gotten used to music streaming being so far below the available network bandwidth, that it’s just not an issue. But with HQPlayer you can easily exceed the bandwidth required to stream 4k UHD movies over your home network.
So let’s do a little math:
For 44.1kHz 16bit FLAC files, the required bandwidth is
(44,100 samples / second) x (16 bits / sample) x 2 (for stereo) = 1,411,200 bits per second (1.4Mbps)
This is well within most peoples home WiFi bandwidth, even in bad corners of the house, making it very feasible to stream FLAC files over WiFi.
If you set HQPlayer to do 16x upsampling (705.6kHz) and 32 bits / sample, you get the following:
(44,100 samples / second) x (16x upsampling) x (32 bits / sample) x 2 (for stereo) = 45,158,400 bits per second (45Mbps).
Now we are doing some real data! Streaming 4k UHD movies requires between 15Mbps and 25Mbps of bandwidth. So we are now running 2x - 3x the bandwidth required for a 4k UHD movie.
If we really want to have some fun, and if your DAC supports it, run at 32x upsampling (1,411.2 kHz):
(44,100 samples / second) x (32x upsampling) x (32 bits / sample) x 2 (for stereo) = 90,316,800 bits per second (90Mbps).
It is very easy in the 45Mbps to 90Mbps to get into the realm of unreliability for WiFi. Especially if there is any other traffic on the WiFi besides your HQPlayer upsampled stream. It’s very easy for any WiFi network traffic, for example someone turning on a Netflix stream in your house, to cause playback to glitch.
What can make matters much worse (and quite frankly unfeasible) is if your PC running HQPlayer is also connected to the network via WiFi. Then you have >45Mbps of traffic being streamed wirelessly from your PC to the wireless access point, and then streamed wirelessly to your HQPlayer NAA endpoint. Essentially doubling the WiFi traffic, and easily bringing most home WiFi networks to their knees. Any non audio related traffic will almost certainly result in a playback glitch.
For this reason, if you plan to upsample to 16x or 32x, it is highly recommended to run HQPlayer on a PC that is hardline ethernet connected to your network. And if at all possible, run the NAA endpoint on a hardline ethernet connection as well. You might get away with the NAA endpoint being wireless, but I can almost guarantee you won’t get away with both being wireless.
The compromise that worked well for me is mesh wifi. I hardline connected my HQPlayer PC and NAA endpoint into mesh nodes. Then all of the HQPlayer traffic was wireless routed over the mesh backhaul connection, which had sufficient bandwidth to be >95% reliable / glitch free. Ultimately, switching to full hardline ethernet connections has given me 100% reliable playback.
My current setup uses a Denafrips Pontus II DAC, which can support 32x PCM via the USB connection. The DAC is only 24bit, and realistically 18-19bit linear. So no need to take the bit depth up to 32bit. For this DAC I run the following:
(44.1kHz) x (32x) x (24bit) x (2 channels) = 67.7Mbps
If limit the bits to the “linear range” of the DAC, this can be reduced down to
(44.1kHz) x (32x) x (18bit) x (2 channels) = 50.8Mbps
The same math can be done for 48kHz based files, increasing the final bandwidth by ~10%
Bonus: Comparing with Hardware (Chord Hugo M Scaler, etc.)
According to the creator of HQPlayer, the sinc-L family of filters are the most similar to the filters you would hear from a Chord product. Specifically, here are some rough equivalents:
- sinc-Ls = Chord Mojo/Hugo
- sinc-Lm = Chord Dave
- sinc-Ll = Chord M Scaler
- sinc-L = 2x Chord M Scaler
Also, Schiit has occasionally described their filter as a “closed-form” filter, so you might be interested in trying the closed-form family of filters when comparing with Schiit products.
Bonus: Only 44.1/48kHz -> 88.2/96kHz
If you’re so inclined, I experimented with only oversampling 44.1/48kHz content to 88.2/96kHz and passing through all other higher sample rate content as a split-the-difference kind of setting. Essentially, the idea is to set “Filter Nx” to none, as described in this quote from an earlier post:
Bonus: Not all DACs are Created Equal
→ add info about how DACs utilize upsampled data differently. PCM and DSD formats are also handled very differently by different DACs.