The HQPlayer thread

Discussion in 'Computer Audiophile: Software, Configs, Tools' started by GoodEnoughGear, Sep 3, 2021.

  1. GoodEnoughGear

    GoodEnoughGear Evil Dr. Shultz‎

    Friend
    Joined:
    Oct 25, 2015
    Likes Received:
    2,803
    Trophy Points:
    113
    Location:
    Cape Town, South Africa
    HQPlayer has popped up in a few rather specific threads recently, and I've been doing quite a bit of work with it recently so I thought I'd start a dedicated general HQPlayer thread rather than start another specific one.

    For starters I'm going to provide a tutorial on how to integrate Jriver Media Center, Foobar2000 or basically any other player that can use a WASAPI interface on Windows with HQPlayer in a fairly seamless fashion for PCM-based streams (you can upsample the fuck out of it in HQPlayer to DSD if you want). I'll go over the software required, the configurations and their tradeoffs, and finally a set of batch commands to control HQPlayer using the command-line which makes it really easy to test out filters, shapers, and source URIs.

    Integrating WASAPI Players on Windows with HQPlayer for PCM
    The Software

    • Any player supporting WASAPI on Windows, such as JRiver Media Center or Foobar2000.
    • Virtual Audio Cable: https://vac.muzychenko.net/en/. I'm using Virtual Audio Cable because I got some popping with VB Audio early on and gave up on it. Also I'm a geek so I like the diagnostic ability that VAC gives you with its graceless but detailed UI. And one-man-band awesome Russian companies. To my mind it's worth the $30, especially since it liberates you from the tragic experience of playing audio through HQPlayer itself. NOTE the free Lite version maxxes out at 48k, so it's useless for our purposes if you have any Hi-Res content. You can try the VB Audio HiFiCable and ASIO Bridge - that should work as well in theory.
    • HQPlayer, of course.

    Virtual Audio Cable


    Once installed you get a detailed control panel like so:
    VACMain.jpg

    Configuration
    You only need one virtual cable, as the cable can carry up to 8 channels.

    You can keep the Driver defaults.

    For the Cable config in the Format Range for SR (sample rate) you want to set the range to the full range (or more) of what you might expect as input. That is, whatever the sample rate of your stuff is. Note that the dropdown stops at 192k for the upper limit, you'll need to type a higher value in manually if you want a higher value. I'm using 384k just for shits and giggles.

    *Important Set the BPS (Bits per sample) to 32 or HQPlayer will try to use some janky 22-bit connection in certain cases.

    You can leave the 1 to 2 config for NC (Number of channels) or fix it at 2 for stereo like I have.

    ***Very Important Set the Stream fmt to "Cable range". What this does is give you some flexibility for HQPlayer to play at mismatched bitrates without freezing up. "Cable format" will lock the cable characteristics to the characteristics of the first connected device, which causes the freezing. "None" will allow VAC to do its own terrible, non-dithered format conversion which is garbage.

    Seeing what's what
    Double-click the blue-highlighted cable or click the "Cable info" button to bring up the cable details pane. Here it is with no connected devices:
    Cable1Empty.jpg

    Here it is with JRiver and HQPlayer connected. Render is JRiver and Capture is HQPlayer. Note that the Format matches perfectly - this is what you want for a bit-perfect transfer. However you do want the flexibility to have rates mismatched or HQPlayer falls over if your source rate changes - more on this later.
    Cable1Loaded.jpg

    The Music Player
    Here's the config for JRiver. Select VAC as your output device via WASAPI and force the bit depth to 32 bit integer to match the VAC config. I'm choosing 32 bit somewhat arbitrarily, as this is the automatic default for JRiver. I imagine you could happily choose 24 bit as well - just make sure it matches VAC.

    JRMCConfig.jpg

    Play something and you should see the VAC Render thread appear in the Cable 1 detail window.

    Note you can obviously run whatever DSP you want in the player. In my case I run a few VST plugins so I set JRiver's volume to -6dB to provide VST headroom, and headroom for HQPlayer upsampling later. We'll revisit this.

    HQPlayer
    Now we'll set HQPlayer up to receive the stream:
    HQPConfig.jpg

    Configure your DAC in the output device settings. In my case I am using WASAPI, as DAC2541's ASIO driver operates in shared mode and doesn't give an exclusive lock for some reason. So I use WASAPI.

    Configure the Input Device Settings to use WASAPI as well. Note HQPlayer will barf up an error message saying your input and output can't be the same, and it will do this a few times. Click OK until it goes away - this is because it's just checking the mechanism and not the specific device, and it will allow you to select VAC here as shown. HQPlayer is rough and tactless but it does work when you get it set up right.

    Set your preference for output modes, filters and shapers etc. I leave Vol Max at 0, but if you want to provide headroom for intersample overs in HQPlayer as opposed to your music player software as I do in JRiver, you may want to drop this 3 bits or more.

    Select "Adaptive output rate" as this provide flexibility for rate changes and adapts the upscaling rate to a correct multiple of the incoming rate.

    I am upsampling to PCM as I have a DAC2541 which doesn't do native DSD and converts it to PCM anyway so DSD shenanigans are pointless. I'll talk more about DAC2541 and upsampling in a subsequent post. These are my preferred settings if you want a decent place to start. Of course to can upsample to DSD if you wish (and have one of those lovely Holo dacs and a shit-hot CPU).

    Pulling it all together

    Save your config and you have HQPlayer's beautifully unintuitive interface confronting you:
    HQPMain.jpg

    If you're lucky, you will have a list of entries in the "Content Source URI dropdown box:
    HQPURI.jpg

    You want to select the entry corresponding to the sample rate you have incoming on the Virtual Audio Cable for a bit-perfect transfer. Often, however, you won't have entries in the dropdown. In that case you need to type it out. Don't worry, we will make this slightly less janky forthwith. Press Enter to activate the connection and it will appear in the playlist. Press Play or click the entry once to start playback. If all is well, you will see the Capture thread appear in the VAC Line 1 info screen and HQPlayer will play the stream. Voila!

    Now anything you play in your Media Player gets shunted to HQPlayer.

    Troubleshooting
    Sometimes HQPlayer just won't play. Or freeze. This is often if you have selected an upsample rate that is not a multiple of the base rate, omade some misconfiguration. Every now and then, however, it seems to become disconnected from VAC after a restart. Go into the Settings, select another input device and then reselect the Virtual Audio Cable you are using - this seems to fix it. It's not something that happens frequently, but with lots of messing around I have seen it more than once.

    Important sample Rate Conversion stuff
    Important to note, is that HQPlayer does NOT automatically adjust to the incoming stream's sample rate. If you do not have VAC configured to do sample rate conversion and you change the incoming rate (for example moving to a hi-res track in your playlist) HQPlayer will just freeze or barf up an error. Of course what this means is that if you have a mix of sample rates incoming you need to manually match these in HQPlayer or you will have the extra crappy VAC conversion forking up your Audiophile nervosa. But it's better than freezing and barfing up errors. OR you can resample in your player, say to 44.1 if the majority of your music is 44.1 and take the hit on downsampling the Hi-Res.

    The ultimate solution would be to have (in my case) JRiver switch the sample rate in HQPlayer for you, which looks like it may be possible using an Interface plugin, and I am playing with this but dusting off those decade old coding skills and navigating a just-as-old COM interface will take me some time.

    In the interim, there is a command line control application for HQPlayer which makes all this much easier. If you can find any documentation on the damn syntax, which I eventually figured out enough of by looking at the C ++ source code to get working.

    Here are a set of batch files which will help changing the Transport (Content Source URI) for different rates, and various other things. Just double-click to change to the named config element. MUCH easier than messing with the UI, and makes A/B testing easier. See attached files on this post for HQPBats.zip

    Feedback and help
    This is quite a bit of writing. I may well have left something out, or not been clear or screwed something up. Let me know via PM preferably rather than stinking the thread up and I'll update the post and see how I can help via PM.
     

    Attached Files:

    • Like / Agree Like / Agree x 3
    • List
    Last edited: Sep 5, 2021
  2. GoodEnoughGear

    GoodEnoughGear Evil Dr. Shultz‎

    Friend
    Joined:
    Oct 25, 2015
    Likes Received:
    2,803
    Trophy Points:
    113
    Location:
    Cape Town, South Africa
    ****IMPORTANT***
    Sorted out, batch files updated.
     
    Last edited: Sep 5, 2021
  3. neo_the_one

    neo_the_one Rando

    Joined:
    Jan 25, 2020
    Likes Received:
    19
    Trophy Points:
    8
    Location:
    Seattle
    If we want to use the computer to upsample with HQPlayer and do filtering (like Chord MScaler). What is the best computer configuration to do it?I would really like to play around with HQPlayer with Holo May in NOS mode. I have read that the new M1 chip in Mac mini is able to push HQPlayer to pretty high upsampling (above 1Mhz). Given a NOS dac like Holo May or Wavedream with good USB implementation, could feeding these days directly from Mac mini USB would be ok?
     
  4. GoldenOne

    GoldenOne Friend

    Friend
    Joined:
    Jul 17, 2020
    Likes Received:
    582
    Trophy Points:
    93
    Location:
    England
    MacOS cannot do 1.536mhz output so keep that in mind.

    For PCM upsampling (which imo is ideal for the may, and wavedream does not convert DSD anyway) you don't need a particularly powerful PC and even a decent NUC will be fine.

    It's the DSD upsampling which is super difficult. But the M1 cannot do ASDM7EC x256 in all configs, whereas a good GPU and a 3950x can so I assume recent other AMD chips and i5/i7 stuff will. Cuda acceleration helps a lot
     
    • Like / Agree Like / Agree x 1
    • List
  5. bilboda

    bilboda Florida boomer

    Friend
    Joined:
    Nov 20, 2016
    Likes Received:
    791
    Trophy Points:
    93
    Location:
    Miama
    my I7-6700 handles pcm 1.536 easily. It used to handle dsd 256 ec7 easily but now pauses for a sec regularly. Not sure what the issue is. I'll sort it out, may be driver related.
     
  6. toddrhodes

    toddrhodes Friend

    Friend
    Joined:
    Sep 13, 2017
    Likes Received:
    574
    Trophy Points:
    93
    Location:
    South Bend, IN
    I'm listening to an i9900kf (I think that's the designation - it's unlocked with no integrated GPU) at 4.4 GHz and it does DSD256, ASDM7EC, sinc-Mx or poly_sinc_gauss_long without issue. I also use an nVidia GPU at the lower end. I think it's a 1660? It's nothing crazy, either way.

    I feed that to a Zen Stream in NAA mode and then out to a Holo May KTE.

    I used this same setup into a DF Venus II. I used both DACs in NOS mode (though it's "NOS mode" for the DF DAC)

    It's killer. Zen Stream severely limits me for PCM rates (PCM 384 is its max) so I don't really think that's a fair comparison to 7EC DSD256.

    Just for grins, I've got a Zen Dac V2 Sig coming on Tuesday. It's literally a gnat taking on a Pterodactyl (with the May KTE being the latter) but I'm really curious just HOW different these two will be at the same output format. Should be fun, either way.

    And while I don't use it any longer since I took my subs out of the room, I really did appreciate HQ Player's Convolution engine when I used it after taking some readings with REW and following a guide to save those files off. It really focused and tamed the bass in the room with a couple of subs.

    Anyway, I'm rambling now. But I do recall some folks were able to do 256/7EC with the M1 Macs, but they may have been also trying to use Sinc L or Sinc M which was killing them.

    IME, DSD256 and ASDM7EC require a lot of single or at most two-core performance and clocks, or a very efficient processory. In fact, my 3950 in my Roon PC, which granted is multitasking, does not do 256/7EC very well. That's why I stuck with Intel. But CUDA can help with convolution and the more complex filters like Sinc M and L, or the non-2s poly sincs.
     
  7. neo_the_one

    neo_the_one Rando

    Joined:
    Jan 25, 2020
    Likes Received:
    19
    Trophy Points:
    8
    Location:
    Seattle
    Could you give me specs of your PC.
    I have also been wondering of all the reclockers. Most of the reclockers I have seen only do PCM signal output. Till now I have not really seen any re-clocker to do DSD output. Which is a real shame.

    In your case what happens if you remove Zen Stream, is the signal from PC too crappy?
     
  8. toddrhodes

    toddrhodes Friend

    Friend
    Joined:
    Sep 13, 2017
    Likes Received:
    574
    Trophy Points:
    93
    Location:
    South Bend, IN
    Sure -
    Core i9 9900KF CPU @ 4.8GHz (sorry, was off by a few earlier)
    16G RAM
    Win 10
    GeForce GTX1650
    I went through and disabled all services and apps that weren't really necessary
    Asus Z390 motherboard

    I did try to go direct from that PC to my older DAC (Venus II) via USB and "it worked" but yes, to me - I wouldn't say it was crappy but it honestly just sounds noisy. You just kinda know it when you hear it. It's as if fine detail and room cues and harmonic details just fall flat. A basic Pi4 with Jussi's NAA image on it sounds better IMO. Also makes the setup much easier to place in a system.

    I used a Hermes DDC as well as an Ian Canada DIY DDC consisting of an Amanero Combo384 USB interface, ReceiverPi, FiFoPi (the real DDC in the setup), and an i2S output module called HDMIPi.

    It sounded pretty good. It could do PCM384 or DSD256. On that setup, to me, PCM384 sounded best.

    But with Zen Stream, unquestionably, DSD256 works best and sounds better than PCM384 and DSD256 with the same modulator and filter as what I was using on the DDCs I tried.

    So in short, to me, Zen Stream negated the need for a DDC. It's just as quiet, seems to be temporally as accurate, and it has this same quality to the midrange that I only seemed to pull out with good settings and a good DDC. But now I'm hearing it with just Zen Stream fed by the PC outlined above, USB into May KTE.

    And all the above DDCs, Pis, etc... were all fed very clean, battery power. Zen just needs the iPower wall wart.
     
    • Like / Agree Like / Agree x 1
    • List
  9. neo_the_one

    neo_the_one Rando

    Joined:
    Jan 25, 2020
    Likes Received:
    19
    Trophy Points:
    8
    Location:
    Seattle
    Awesome system!

    how do you connect your pc and zen streamer? USB or LAN wire? Any special driver needed for dsd output?
    And zen stream and dac do you use usb?
    Do you feel 16gb of RAM is enough?
     
  10. toddrhodes

    toddrhodes Friend

    Friend
    Joined:
    Sep 13, 2017
    Likes Received:
    574
    Trophy Points:
    93
    Location:
    South Bend, IN
    Just a basic home network, though I have an optical network converter as well from another project, so I use that. So basically I just go from a wired switch (nothing special here aside from an iFi iPower wall wart powering it) to an optical converter, optical ethernet to the second converter box, then just an off the shelf Cat6 cable from that converter to Zen Stream.

    No driver needed. I then use a Ghent Audio dual head USB cable between Zen Stream and my DAC, yep! Nothing crazy, but it's a nice cable. Was $50 or so I think.

    And yea, 16Gb RAM is enough for this application on my end because all that PC does is HQ Player stuff. I've never really monitored RAM usage but can't recall having any issues. This was mostly a spare parts PC I put together, and bought the 9900KF due to its very high base clock rate and how that benefits the EC modulators :)
     

Share This Page