Jump to content
  • The Computer Audiophile
    The Computer Audiophile

    Streaming & Local Content Through HQPlayer - A Nice Alternative With The sonicTransporter

     

     

    Many of us have enjoyed HQPlayer's digital signal processing over the years, but have been less than satisfied with the remote control options. Fairly recent remote options named HQPDcontrol v4 and HQPWV (HQPlayer Web Viewer) have made and continue to make great strides. I use both of these options frequently and love to see the developers interacting with the Audiophile Style community to make each product even better. Perhaps some day they'll charge for their apps, and we can all show our appreciation by throwing some money their way. 

     

    Audiophiles who only play local content from a hard drive can certainly use the aforementioned apps and call it a day. HQPlayer will scan their libraries and the remote apps will enable really nice library browsing and song selection. However, many of us also stream from Qobuz and Tidal. To date, there is no way to add a streaming service to HQPlayer or one of the remote applications. What's an audiophile to do? The answer lies in a combination of UPnP/DLNA and HQPLayer Embedded.

     

    Note: Some people will undoubtedly suggest, "just use Roon." Well, that's one option but it presumes that everyone wants to use Roon. That's an incorrect presumption, as no single product offers a solution for every listener. 

     


    Options

     

    There are many ways to accomplish almost everything in HiFi. I tried several potential solutions when researching this article and settled on one that is the easiest, offers support for any issues that may arise, and is a solution I'd actually use every day. I'll attempt to detail both the recommended solution and some of the stuff I tried over the last several weeks. This will enable readers to make their own decisions and understand why I recommend what I recommend and if they wish to tackle some of the hands-on issues with the other solutions. 

     

    Goals

    1. Streaming content from Qobuz, Tidal, and local files from NAS or hard drive through HQPlayer. 
    2. A nice looking and very usable interface for remote control.
    3. Simplicity in setup and daily use. 

     


    Recommended Solution

     

    Playing local content through HQPlayer is a simple task, but to route Qobuz and Tidal through HQP requires a little different setup. Trust me it's very easy and doesn't require jumping though unsupported hoops. The first requirement is using HQPlayer embedded because it can receive audio via UPnP/DLNA as an input. HQPlayer Desktop doesn't have this option and will not work. In order to send audio via UPnP/DLNA to HQPlayer Embedded we need a UPnP/DLNA server and a UPnP/DLNA control point. 

     

    The Small Green Computer sonicTransporter is my recommended solution because it accomplishes the above goals by combining both HQPlayer Embedded and MinimServer as the UPnP/DLNA server into a single component. Rounding out my recommendations is the forthcoming UPnP/DLNA control point application JPLAY for iOS. 

     

    The SGC sonicTransporter starts at $999 and gets reasonably more expensive as one increases processing horsepower, network isolation, and solid state storage. The specific version I used for this article is the $3,499 sonicTransporter i9 Optical with a 4TB SSD. When the Transporter arrived I and installed HQPlayer Embedded and MinimServer with a couple clicks of the mouse. Both are options, among several others, accessed via the web interface. I also copied a few terabytes of music to the internal Transporter SSD, then proceeded to setup HQPlayer and direct MinimServer to the local SSD to scan the music. 

     

     

    sonicTransporter.jpg

     

     

     

    Outputting audio to my DAC was done two different ways. I connected a USB DAC directly to the USB output of the Transporter as a test, to make sure it worked for those who wish to go this route. It worked perfectly. Most of my testing was done using the Sonore signatureRendu SE optical as an HQPlayer NAA endpoint. I connected both the Rendu and Transporter to my network switch via fiber optic cables. I'm not a fan of connecting the Rendu directly to the Transporter via fiber cable because of potential multi-homed network issues, but I know many audiophiles who set it up via direct connection and love it. No judgement here, I just prefer one way over the other. 

     

    Other than the standard HQPlayer setup, selecting filters and an output device, nothing needs to be done with respect to selecting an input. HQPlayer Embedded automatically advertises itself as a UPnP/DLNA renderer and accepts audio via UPnP/DLNA whenever it's sent. The only thing to do once HQPe and MinimServer are setup is to select a UPnP/DLNA control point. 

     

    JPLAY for iOS is easily the best control point app I've used to date. JPLAY for iOS combines Qobuz, Tidal, and local content in a single interface in addition to offering excellent features such as album info and artist bios, links within the app to other content from each artist, record label filters (think displaying only ECM content etc...), among many others I've yet to discover on my own. Searching each streaming service and local content can be done individually or combined into a single search. The user interface is beautiful and very easy to use. One of the extremely audiophile features in this app is the ability to adjust what's called polling time. This can be set to a maximum level, so once albums/tracks are selected for playback, the app is completely silent. It doesn't send any network traffic to the server or renderer. 

     

    JPLAY iOS App 01.jpg

     

    JPLAY iOS App 02.jpg JPLAY iOS App 04.jpg JPLAY iOS App 06.jpg

     

    JPLAY iOS App 07.jpg JPLAY iOS App 03.jpg JPLAY iOS App 05.jpg

     

     

     

    This combination of HQPlayer Embedded & MinimServer on the sonicTransporter and JPLAY for iOS on my iPad Pro is fantastic. There are certainly some issues to be worked out in the JPLAY control point app, but it's still in closed beta. Using the JPLAY app on iOS to send audio to other renderers in my system was flawless. For example, I set an opticalRendu into DLNA mode and used the same MinimServer install on the sonicTransporter with great success. I think the little issues revolve around HQPlayer Embedded's use of Rygel as the UPnP/DLNA rendering software and its interaction with the JPLAY for iOS app. 

     

    As a temporary solution, until JPLAY for iOS is released, listeners can use the mconnect app as a control point. I don't wish this on my worst enemy, but many people use it and are OK with it. Some people use one of the HQP apps such as HQPDcontrol v4 or HQPWV for local content, then switch to mconnect for streaming audio only. This is an option, but it seems so primitive. Like something we'd do in 1998 :~)

     


    Possible Showstopper

     

    One issue that may be a showstopper for people is inconsistency of gapless playback. No matter what people say about gapless playback and the control point being what determines whether or not gapless audio works, my research definitively indicates gapless playback depends on the interaction between the control point, server, and renderer. All three matter. This gapless issue isn't unfixable though. Simon from MinimServer asked me to send him some logs because he has an idea about hat may be causing this issue. Hopefully this can be resolved. 

     


    Bits and Bytes I Tried

     

    The gapless issue mentioned above is what caused me the most headaches. Not because I listen to a ton of music that requires gapless playback, but because I wanted to find a solution to the issue. Here are some of the solutions I tried and what I found. 

     

    I installed Ubuntu 20.04 on my CAPS Twenty computer, then installed HQPlayer Embedded and MinimSever manually. This enabled me to connect to the server and test many things via command line. No matter what I did, I couldn't get gapless working with HQPe and MinimServer on this install either. I also put HQP OS on this machine and Minim on my NAS, but the results were the same. 

     

    One benefit of running Ubuntu 20.04, with a manual install of the apps, is that I could install the NVIDIA drivers for CUDA offload within HQP. 

     

    On my Ubuntu 20.04 installation I also tried Asset UPnP and MiniDLNA as UPnP/DLNA servers. I couldn't connect to Asset via the JPLAY iOS app, but was able to get with mconnect. Gapless didn't work with Asset and HQPe whether on the same machine or split with Asset running on my NAS. Surprisingly, MiniDLNA worked every time. Yes gapless audio from MiniDLNA (version 1.3 with DSD enabled), sending the audio to HQPe and JPLAY as the control point worked great. However, MiniDLNA server was terrible on all other respects such as speed, album art, search, etc... I suggest this solution only to the most hardcore gapless fans. 

     

    Another interesting solution was using the built-in QNAP DLNA server. This surprised me even more than MiniDLNA because it was also gapless. Using JPLAY on iOS to select audio on my QNAP NAS running the built-in Multimedia Console and streaming add-on, and sending it to HQPe, worked every time. Unfortunately, I don't even recommend this as a solution for gapless freaks. The usability with any control app I tried was horrific. 

     

    Attempting to outsmart myself, I installed BubbleUPnP on the sonicTransporter (it's one of the easily installable options), because Bubble makes a UPnP/DLNA renderer into an OpenHome renderer. I thought this may be the solution to my gapless issue and be an awesome all-in-one (HQPe, MinimSever, BubbleUPnP all on the sonicTransporter). Nope. No gapless in this configuration either. One nice part about this was that I could test the Lumin and Linn Kazoo apps for control, but neither of them gave me gapless either. 

     


    Wrap Up

    Running both streaming and local content through HQPlayer using UPnP/DNA as an alternative to Roon is definitely doable. I've been doing it for weeks and really like it. The easiest and best way to do this for most audiophiles is to use a Small Green Computer sonicTransporter. The Transporter can house both MinimServer and HQPlayer Embedded on a single box, and SGC can provide support if people run into issues along the way. I've known SCG's founder Andrew Gillis for many years and can attest to his knowledge, skills, and customer service. He knows what he is doing and works hard to make sure his customers are satisfied. 

     

    I'll send back the sonicTransporter i9 Optical in the next day or so because the last thing I need around here is another server. If I didn't have CAPS Twenty, I'd buy the transporter in a heartbeat. The i9 ran HQPlayer upsampling to DSD256 using poly sync short MP filters, the ASDM7EC modulator, and 65,000 tap convolution filters without a hiccup. This little machine is much more powerful than it appears and it looks much better in person than in photos. 

     

    Given that I have CPS Twenty, I am running HQP OS on the NVMe drive, MinimServer 2 on my QNAP NAS, and the JPLAY iOS control point on my iPad Pro. This is a slick solution. I can update HQP OS by booting from the other NVMe into Windows, and using Balena Etcher to write the latest version of HQP OS to the HQP OS NVMe drive. Then I reboot and I'm all good. 

     

    I highly recommend the sonicTransporter for everyone who has no interest in installing an operating system or writing an image to a USB/SSD drive.  The transporter is just so simple and works so well. It's a no-brainer. 


     

     

     

    More info:

    sonicTransporter

    HQPlayer

    MinimServer

    JPLAY

     

     

     




    User Feedback

    Recommended Comments



    15 hours ago, Miska said:

    Technically, it would only need adding a configuration option(s). But on the other hand it is band-aid for something that should work without. I'm just always concerned about number of configuration options, I already get so much complaints about configuration being too complex. At the moment there are three internal parameters that control this behavior.

     

    I've added environment variable options to override default buffering values. This way it won't pollute regular settings. It will come out in next release. Three values (no need to set all):

    1. HQPLAYER_BUFFER_TIME to set amount of buffer (in ms, must be multiple of 100 ms)
    2. HQPLAYER_IDLE_MARGIN to set how much margin there is left before feed is needed (in ms, must be multiple of 100 ms)
    3. HQPLAYER_IDLE_TIME to set how long to run idle before stopping

     

    You can set these in /etc/default/hqplayerd

     

    Share this comment


    Link to comment
    Share on other sites

    6 minutes ago, Miska said:

    I've added environment variable options to override default buffering values. This will come out in next release

    Wow! This is really interesting! ... I look forward to the next release with curiosity …. and anxiety … 🤞

    Share this comment


    Link to comment
    Share on other sites

    1 hour ago, Miska said:

     

    It shouldn't break existing control applications, so it is kind of optional, for now. But recent HQPlayer Client for example requires it to operate.

     

    That’s great to know, thanks.

    Share this comment


    Link to comment
    Share on other sites

    9 hours ago, Miska said:

     

    I've added environment variable options to override default buffering values. This way it won't pollute regular settings. It will come out in next release. Three values (no need to set all):

    1. HQPLAYER_BUFFER_TIME to set amount of buffer (in ms, must be multiple of 100 ms)
    2. HQPLAYER_IDLE_MARGIN to set how much margin there is left before feed is needed (in ms, must be multiple of 100 ms)
    3. HQPLAYER_IDLE_TIME to set how long to run idle before stopping

     

    You can set these in /etc/default/hqplayerd

     

    Can you please give us some indications on how to modify them - how they relate to each other, what is default value, etc...

    Share this comment


    Link to comment
    Share on other sites

    1 hour ago, The Computer Audiophile said:

    24/192 gapless right now with the new version. This is lovely. 

    Please, give us some details. Did you work on the variables? How? What controller did you use?

    Share this comment


    Link to comment
    Share on other sites

    21 hours ago, Miska said:

    /etc/default/hqplayerd

    … is that right?

     

    Preliminary feedback :

    Setup

    Lumin app - Bubbleupnpserver - Minimserver (transcoding flac and alac to wav without changing resolution nor bit depth) - NAA/raspberry pi4/RoPieee XL

    • PCM to DSD: gapless finally works! Wonderful! I could try from 16/44.1 to 24/192 as input and SDM as output mode and gapless is working flawlessly.
    • DSD as Direct SDM and SDM output mode checked (then bit perfect): gapless not working. DSD files served by Minimserver without any transcoding.

    I would have liked to modify the additional control variables (to try if it could solve the Direct SDM  DSD issue) but I cannot find 

    /etc/default/hqplayerd 

     

    Share this comment


    Link to comment
    Share on other sites

    2 hours ago, stefano_mbp said:
    • DSD as Direct SDM and SDM output mode checked (then bit perfect): gapless not working. DSD files served by Minimserver without any transcoding.

     

    This is one area where you would win by using HQPlayer to play your album in album mode instead of playlist mode.

     

    When you play through UPnP, HQPlayer doesn't know if subsequent tracks belong together or if they are separate items, so they are assumed to be separate unrelated items.

     

    There's a "state reset" processing for unrelated DSD tracks in HQPlayer to reduce amount of pop/click you get when transitioning between tracks. I have now uploaded updated build where you can disable this by setting HQPLAYER_RESET_SDM=0 in /etc/default/hqplayerd. Now you get gapless playback for related DSD tracks, but louder pop/click when transitioning between unrelated tracks. Only solution to this is to play natively from HQPlayer's library.

     

    2 hours ago, stefano_mbp said:

    I would have liked to modify the additional control variables (to try if it could solve the Direct SDM  DSD issue) but I cannot find 

    /etc/default/hqplayerd 

     

    That file doesn't exist by default since it would be empty, so you can just create it. systemd will read it on next restart (just reboot your server).

     

    Share this comment


    Link to comment
    Share on other sites

    9 hours ago, Miska said:

    This is one area where you would win by using HQPlayer to play your album in album mode instead of playlist mode.

     

    When you play through UPnP, HQPlayer doesn't know if subsequent tracks belong together or if they are separate items, so they are assumed to be separate unrelated items.

     

    There's a "state reset" processing for unrelated DSD tracks in HQPlayer to reduce amount of pop/click you get when transitioning between tracks. I have now uploaded updated build where you can disable this by setting HQPLAYER_RESET_SDM=0 in /etc/default/hqplayerd. Now you get gapless playback for related DSD tracks, but louder pop/click when transitioning between unrelated tracks. Only solution to this is to play natively from HQPlayer's library.

    Would it be possible for the server to send the information in album mode, if that feature was added to the server side? Can album mode be understood by the UPnP chain? 

    Share this comment


    Link to comment
    Share on other sites

    1 hour ago, bibo01 said:

    Would it be possible for the server to send the information in album mode, if that feature was added to the server side? Can album mode be understood by the UPnP chain? 

     

    No, it is not part of UPnP specification. But you can naturally switch over from UPnP protocol to HQPlayer's control protocol and then you don't have such limitations. Then you have also OpenHome style capabilities with server-side playlists and much much more.

     

    Share this comment


    Link to comment
    Share on other sites

    1 hour ago, Miska said:

    No, it is not part of UPnP specification. But you can naturally switch over from UPnP protocol to HQPlayer's control protocol and then you don't have such limitations. Then you have also OpenHome style capabilities with server-side playlists and much much more.

    Trying to understand.... Are you saying that it can only be achieved using HQPlayer's control protocol (like Roon) which "mimics" OpenHome style capabilities? Can album mode be achieved with an OpenHome media server like BubbleUPnP server? And is Embedded compatible as OpenHome renderer?

    Share this comment


    Link to comment
    Share on other sites

    16 hours ago, Miska said:

    I have now uploaded updated build where you can disable this by setting HQPLAYER_RESET_SDM=0 in /etc/default/hqplayerd. Now you get gapless playback for related DSD tracks

    … I tried it but it doesn’t make any difference, I suppose this is due to “related tracks” that cannot be understood using UPNP.

    I am tempted to try to change the other environment variables but I fear they may have a negative impact on the functioning of the gapless for PCM files which is now perfect. What do you think?

     

    Share this comment


    Link to comment
    Share on other sites

    4 hours ago, bibo01 said:

    Trying to understand.... Are you saying that it can only be achieved using HQPlayer's control protocol (like Roon) which "mimics" OpenHome style capabilities?

     

    No, Roon isn't doing that since Roon isn't using HQPlayer's library. Roon operates in a different way with HQPlayer (using HQPlayer's control protocol though).

     

    4 hours ago, bibo01 said:

    Can album mode be achieved with an OpenHome media server like BubbleUPnP server? And is Embedded compatible as OpenHome renderer?

     

    No, it cannot. And no it is not compatible with OpenHome.

     

    By design UPnP is split into three parts, media server, control point and renderer. Media server holds the content directory and would understand content relationships. Control point tells renderer what track URLs to play from media server, when it is time to play those. But already control point is lost on the real content relationships, instead it sees abstraction created by the media server. Renderer only sees one meaningless URL at a time.

     

    Share this comment


    Link to comment
    Share on other sites

    27 minutes ago, stefano_mbp said:

    I am tempted to try to change the other environment variables but I fear they may have a negative impact on the functioning of the gapless for PCM files which is now perfect. What do you think?

     

    Likely it won't help at all on this matter.

     

    Share this comment


    Link to comment
    Share on other sites

    OTOH, the way native HQPlayer works is that HQPlayer holds the library. And the player engine. Then control client (HQPlayer Client, HQPDcontrol, HQPWV, etc) can tell HQPlayer to load and play a specific album from the library. Not some list of tracks, but album (album mode). Or alternatively some arbitrary set of tracks from the library (playlist mode). You can also ask HQPlayer to play from alternative sources, such as CD disc, internet streams, analog or digital inputs, USB input...

     

    Share this comment


    Link to comment
    Share on other sites

    On 10/22/2021 at 10:02 PM, Miska said:

    Technically, it would only need adding a configuration option(s). But on the other hand it is band-aid for something that should work without. I'm just always concerned about number of configuration options, I already get so much complaints about configuration being too complex. At the moment there are three internal parameters that control this behavior.

     

    Looks like this kid is already admiring his band-aid 😀:

    On 10/24/2021 at 2:08 AM, The Computer Audiophile said:

    24/192 gapless right now with the new version. This is lovely. 

     

    Share this comment


    Link to comment
    Share on other sites

    9 hours ago, stefano_mbp said:

    … I tried it but it doesn’t make any difference, I suppose this is due to “related tracks” that cannot be understood using UPNP.

    I am tempted to try to change the other environment variables but I fear they may have a negative impact on the functioning of the gapless for PCM files which is now perfect. What do you think?

     

    I just uploaded updated images of 4.26.2 with a fix for one regression, and /etc/default/hqplayerd wasn't enabled in the systemd service-file, so the setting didn't have effect. Please download the updated image and see if it now works.

     

    Share this comment


    Link to comment
    Share on other sites

    1 hour ago, Miska said:

    Please download the updated image

    …. Done

     

    playing from local library (usb stick) a DSD album 

    • w/o setting the HQPLAYER_RESET_SDM variable there is a very short delay between tracks, sometimes a very soft click can be heard 
    • setting HQPLAYER_RESET_SDM=0 gapless is there, no delay nor clicks

    playing through UPNP “chain” nothing changes (with or w/o setting HQPLAYER_RESET_SDM=0) , there is a very long delay between tracks, variable from 5 up to 9 seconds …

    Share this comment


    Link to comment
    Share on other sites

    1 hour ago, stefano_mbp said:

    playing through UPNP “chain” nothing changes (with or w/o setting HQPLAYER_RESET_SDM=0) , there is a very long delay between tracks, variable from 5 up to 9 seconds …

     

    That is strange, sounds like there is something happening on the path, at the media server side maybe?

     

    You could also try setting HQPLAYER_STREAM_FREEWHEEL=1 which will fetch the entire track as quickly as possible. Not great if you are on a limited internet connection, but in local network should be less of an issue, if the network supports QoS properly. Otherwise it may cause drop-outs on NAA.

     

    Share this comment


    Link to comment
    Share on other sites

    I've run into some playback stoppages, but I don't have anything definitive for troubleshooting or even know if it's something strange going on here. 

    Share this comment


    Link to comment
    Share on other sites

    11 minutes ago, The Computer Audiophile said:

    I've run into some playback stoppages, but I don't have anything definitive for troubleshooting or even know if it's something strange going on here. 

     

    4.26.2 I released today fixes those

    Share this comment


    Link to comment
    Share on other sites




    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now




×
×
  • Create New...