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,994
    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:

    Last edited: Sep 5, 2021
  2. GoodEnoughGear

    GoodEnoughGear Evil Dr. Shultz‎

    Friend
    Joined:
    Oct 25, 2015
    Likes Received:
    2,994
    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 Acquaintance

    Joined:
    Jan 25, 2020
    Likes Received:
    28
    Trophy Points:
    18
    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:
    762
    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
     
  5. bilboda

    bilboda Florida boomer

    Friend
    Joined:
    Nov 20, 2016
    Likes Received:
    823
    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:
    583
    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 Acquaintance

    Joined:
    Jan 25, 2020
    Likes Received:
    28
    Trophy Points:
    18
    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:
    583
    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.
     
  9. neo_the_one

    neo_the_one Acquaintance

    Joined:
    Jan 25, 2020
    Likes Received:
    28
    Trophy Points:
    18
    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:
    583
    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 :)
     
  11. econaut

    econaut Facebook Friend

    Contributor
    Joined:
    Feb 5, 2017
    Likes Received:
    233
    Trophy Points:
    43
    Location:
    EU
    I am trying to get HQplayer to work with my setup and it seems to be utterly impossible. I have already taken my SotM bridge and Roon out of the equation and I still fail.

    Single task now: I just want to play one track with HQPlayer Desktop to a Pi2AES with Yggdrasil. NAA OS is running but I seem to fail to enter the correct settings in HQPlayer Desktop.

    When connecting Yggdrasil with USB and not AES, the DAC is shown at output device settings / device. So it seems to get detected correctly by HQPlayer and NAA OS.

    I can get HQPlayer desktop to “play” a track, but the progress bar just moves very quickly and there is no music playing. Afterwards the play function does not work anymore and when entering the settings the DAC is not shown anymore. I have to reboot the RPi in order to have the DAC show up again the HQPlayer settings.

    This is very frustrating, because it's at least my third attempt to get HQPlayer running.

    I believe output device is the DAC that is connected to the RPi, correct?

    But what is input device? Shall I leave that empty?

    https://imgur.com/a/5QHqHRc
     
    Last edited: Dec 20, 2021
  12. bilboda

    bilboda Florida boomer

    Friend
    Joined:
    Nov 20, 2016
    Likes Received:
    823
    Trophy Points:
    93
    Location:
    Miama
    no input device needed, ...your device should be naa pi2aes, it should autofill, there should be no mention of your dac, hqplayer does not connect to the dac, the pi2aes does...you may consider installing ropieeexl on your pi and then selecting naa as the connection method, it was flawless for me
    err mayne never mind, what device runs hqplayer? A pc?
     
    Last edited: Dec 20, 2021
  13. pavi

    pavi Almost "Made"

    Contributor
    Joined:
    May 17, 2017
    Likes Received:
    266
    Trophy Points:
    53
    Location:
    usa
    With the recent update to HQPlayer, the $699 M1 Mac Mini with 8gb RAM does just fine with ASDM7ECv2 & poly-sinc-ext2 (which is my current favorite) on DSD256.

    With PCM the M1 Mac Mini does 1.536M with poly-sinc-ext2 and LNS15

    I'm using a fitlet2 as an NAA for HQPlayer 4.15.1, and the Holo May KTE. The UP Gateway (ATOM x5-Z8350) and the UP Squared (which Jussi recommends) work perfectly fine as NAAs, whether using the NAA off a USB stick, or with HQPlayer embedded installed on the device, which is what I do with the fitlet2.

    HQPlayer is such a fun rabbit-hole.

    BTW — thanks for your excellent work clearing the way on HQPlayer and the Holo May, @GoldenOne — that's where I got started.
     
    Last edited: Dec 20, 2021
  14. pavi

    pavi Almost "Made"

    Contributor
    Joined:
    May 17, 2017
    Likes Received:
    266
    Trophy Points:
    53
    Location:
    usa
    i wonder if the issue might be AES. it should work fine with USB.
     
  15. econaut

    econaut Facebook Friend

    Contributor
    Joined:
    Feb 5, 2017
    Likes Received:
    233
    Trophy Points:
    43
    Location:
    EU
    Actually what I am trying is troubleshooting for a Roon and SotM setup.

    But to keep it simple and to find out what's the problem I am using RPi with NAA OS and this simple setup:

    HQPlayer Desktop (PC) → NAA OS (RPi)

    I am now trying with USB, since AES with Pi2AES is indeed not supported.

    No matter which of the two devices (see screenshot) I select I have the same problem all the time:

    HQPlayer desktop “plays” a track, but the progress bar just moves very quickly and there is no music playing. Afterwards the play function does not work anymore, so it seems something has crashed in the background. I then have to reboot the RPi in order to get to the point where I can press play again and it is "playing" again.

    https://imgur.com/a/2E1mv4k
     
  16. bilboda

    bilboda Florida boomer

    Friend
    Joined:
    Nov 20, 2016
    Likes Received:
    823
    Trophy Points:
    93
    Location:
    Miama
    the naa device is the pi and that device always auto filled for me in hqplayer. Try ropieeexl os and select the naa option. I never had a lot of confidence in jussi's naa distros, just too techy for me, ropieeexl is almost plug and play.
    It also allows you to select the pi2aes hat in the configuration and I don't see the pi2aes anywhere in your output, I'm pretty sure it needs to be there.
     
  17. pavi

    pavi Almost "Made"

    Contributor
    Joined:
    May 17, 2017
    Likes Received:
    266
    Trophy Points:
    53
    Location:
    usa
    one of my chains includes the SOtM sMS-200ultra Neo, and its built in HQPlayer NAA works just fine from Roon. i've never used the HQPlayer desktop to directly play anything, so i have no experience or understanding there. i'm very sorry you're going through this kind of frustration — i wish i knew how to help.

    what happens if you go roon → SOtM → DAC via USB?
     
  18. econaut

    econaut Facebook Friend

    Contributor
    Joined:
    Feb 5, 2017
    Likes Received:
    233
    Trophy Points:
    43
    Location:
    EU
    Ok, now this is interesting. I skip the troublesome troubleshooting and go right for the real thing. Yggdrasil is connected to Sotm via USB.

    Windows PC:
    • Roon is working with RAAT/Roon ready and my SotM sms200 ultra neo for months now.
    • I have installed HQPlayer Desktop latest version
    • I have configured HQPlayer in Roon with IP "localhost" and it's selected as audio output / zone
    • HQPlayer is running
    sotm:
    • I have disabled Roon ready and enabled NAA

    Actually I managed to play some music now, but it's not working correctly:
    • scroll bar in Roon goes through the tracks of the album very quickly (same as when starting to play music in HQplayer Desktop
    • music starts playing in correct speed - yeah!
    • no control of the music:
    I can even exit Roon and exit HQPlayer Desktop and the music is still playing (!) until I stop NAA in eunhasu settings.

    Now we have the RPi and NAA OS out of the equation, but to me it seems to be the same problem.
     
  19. econaut

    econaut Facebook Friend

    Contributor
    Joined:
    Feb 5, 2017
    Likes Received:
    233
    Trophy Points:
    43
    Location:
    EU
    It's the same with RoPieeeXL and output via AES to Yggdrasil.

    I manage to play music over Roon to HQPlayer, but I can't control it. Pause, stop, scroll bar etc. does not work in Roon and I have to reboot the RPi in order to stop the music.
     
  20. bilboda

    bilboda Florida boomer

    Friend
    Joined:
    Nov 20, 2016
    Likes Received:
    823
    Trophy Points:
    93
    Location:
    Miama
    be sure the dot is in the right place, 1 of the hqp updates moved that dot to another setting and this is when the play control from roon got screwy. took a while to get this sorted in the hqp forum
    hqp setting.JPG
     

Share This Page