Jump to content
IGNORED

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


Recommended Posts

2 hours ago, Geoffrey Armstrong said:

Actually, I have tested my sw in the past with embedded and it did work. I just need to point out though that in the most recent version of HQPlayer, Jussi has introduced an encryption feature for communication between HQPlayer and other apps. This is a great feature, which I asked for myself. Unfortunately though, I have not had time to update any of my apps to take advantage of it yet. Because of that, if anyone's trying to use newer versions of HQPlayer with this feature, they probably won't work with HQAV. Perhaps @miska you could just post here from which version HQPlayer incorporates the encryption feature? My sw will only work with versions prior to that.

 

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.

 

Signalyst - Developer of HQPlayer

Pulse & Fidelity - Software Defined Amplifiers

Link to comment
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

 

Signalyst - Developer of HQPlayer

Pulse & Fidelity - Software Defined Amplifiers

Link to comment
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...

Link to comment
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 

 

Stefano

 

My audio system

Link to comment
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).

 

Signalyst - Developer of HQPlayer

Pulse & Fidelity - Software Defined Amplifiers

Link to comment
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? 

Link to comment
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.

 

Signalyst - Developer of HQPlayer

Pulse & Fidelity - Software Defined Amplifiers

Link to comment
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?

Link to comment
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?

 

Stefano

 

My audio system

Link to comment
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.

 

Signalyst - Developer of HQPlayer

Pulse & Fidelity - Software Defined Amplifiers

Link to comment

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...

 

Signalyst - Developer of HQPlayer

Pulse & Fidelity - Software Defined Amplifiers

Link to comment
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. 

 

We are far more united and have far more in common with each other than things that divide us.

-- Jo Cox

Link to comment
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.

 

Signalyst - Developer of HQPlayer

Pulse & Fidelity - Software Defined Amplifiers

Link to comment
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 …

Stefano

 

My audio system

Link to comment
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.

 

Signalyst - Developer of HQPlayer

Pulse & Fidelity - Software Defined Amplifiers

Link to comment

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...