Which HQP Filter are you using? [2015-2023]

9 posts were split to a new topic: HQPlayer, Ethernet Regen and

@jussi_laako what is the difference between new sinc-S and sinc-M filter?

I blatantly copy my response to the same question on another forum:
It is basically same filter as sinc-M, but variable length like most other filters. Length is 4096 x conversion ratio. So it becomes 1M taps at x256 ratio (for example RedBook to DSD256). At DSD512 it is 2M taps and DSD1024 it is 4M taps. It is also much more convenient at PCM rate conversion especially when converting to rates like 352.8/384k and lower because it doesnā€™t have excessive delay. It is still very steep.

Screenshot_2020-05-09_16-59-41
Screenshot_2020-05-09_17-12-06

1 Like

So, upsampling pcm 44.1 > 705.6 gets sinc 2M taps?

No, 4k * 16 = 64k taps

I think I might need someone to explain a few things so I know whats really going on with regards to filters.

Apologies if these are a bit basic

1 - High Attenuation. Is that good or bad?
2 - Slow or faster roll offs. What are the positive and negatives between the two?
3 - Cut Offs. Steep/Extreme?

Thank you

Good, in a way it describes how precise the reconstruction is.

In a typical DAC digital filter it is at most 120 dB or less, meaning about 20-bit accuracy. And then due to use of S/H, linear interpolation or such, at higher frequencies it can be just 50 dB meaning about 8-bit accuracy.

Most HQPlayer filters are at least 192 dB meaning about 32-bit accuracy (enough for up to 32-bit PCM output) and the high attenuation ones are at least 240 dB meaning about 40-bit accuracy. HQPlayer never uses S/H, linear interpolation or other such cheap methods for going to high sample rates.

This involves time domain, steeper (faster, longer) roll off makes the filter ā€œringā€ longer in time domain. On the other hand it allows somewhat faster rise times too. Steeper (faster, longer) filter also makes more abrupt change to the frequency response. Because time and frequency are inversely connected to each other, it is always a decision where between the extremes one wants to be. It depends on the filter design algorithm how short, steep and high attenuation properties you can bake in to the same filter, better the algorithm, closer to the impossible you can get.

On the market, examples of two extremes are MQA and Chord. MQA is extremely short (slow) filter and they talk about the filter length ā€œringā€ as ā€œblurā€ factor due to how longer filters spread edge events in time. While Chord is extremely long (fast) filter and they talk about about how shorter filters slower rise times.

In a way they are both right and wrong, while conveniently ignoring the other aspect. And of course there are many other factors in play too than just this. Neither of them talk about the attenuation or other such things, only filter length.

HQPlayer is not sticking to either extreme, but offer wide variety between these two extremes.

Same as (2).

6 Likes

4 posts were split to a new topic: HQPlayer and HAF Room Shaper

Jussi your post is great explaining complex conversion in a fast and ā€œaccessibleā€ form, but the best is what I just quoted above, very nice thank you

Thank you for your explanation

Iā€™ve updated to the latest version to try the new Sinc-S filter, but HQPlayer does not start any more. It freezes. Iā€™m talking about the Mac version.

It did start eventually. After 5 minutesā€¦

  2020/05/12 17:55:30 Starting...
  2020/05/12 17:55:30 Signalyst HQPlayer 4 Desktop v4.5.0
  2020/05/12 17:55:30 Engine selected: 
  2020/05/12 17:55:34 Restore GUI state
  2020/05/12 17:55:35 libDSP version 21.8.1
  2020/05/12 17:55:35 HQPlayer Engine version 4.28.0
  2020/05/12 17:55:35 Number of processor cores: 4
  2020/05/12 17:55:35 Core mask: 0000000000000000000000000000000000000000000000000000000000001111
  2020/05/12 17:55:35 CPU brand name: GenuineIntel
  2020/05/12 17:55:35 Core pinning enabled
  2020/05/12 17:55:35 Initial parallel threads: 4
  2020/05/12 17:55:35 Number of logical cores: 4
  2020/05/12 17:55:35 DSP thread pools enabled (1)
  2020/05/12 17:55:35 DSP pipelines enabled
  2020/05/12 17:55:35 Pipelined DSP engine enabled
  2020/05/12 17:55:35 DirectSDM disabled
  2020/05/12 17:55:35 Audio engine: network6
  2020/05/12 17:55:35 Output set channels: 2 (2)
  2020/05/12 17:55:35 Output SDM packing: 1
  2020/05/12 17:55:35 Output supports DSD with any base rate
  2020/05/12 17:55:35 Output set channels: 2 (2)
  2020/05/12 17:55:35 Volume max: -3
  2020/05/12 17:55:35 NAA output network Audio IPv6 support enabled
  2020/05/12 17:55:35 Volume min: -60
  2020/05/12 17:55:35 Set volume: -60
  2020/05/12 17:55:35 NAA output discovery from 0.0.0.0
  2020/05/12 17:55:35 Automatic rate family disabled
& 2020/05/12 17:55:35 NAA output discovered network audio: name='28beta' version='Signalyst Network Audio Daemon 4.1.1'  @192.168.1.202:43210
& 2020/05/12 17:55:35 NAA output discovered network audio: name='28beta' version='Signalyst Network Audio Daemon 4.1.1'  @192.168.1.202:43210
  2020/05/12 17:55:36 NAA output network interfaces:
  2020/05/12 17:55:36 	if[en1] ipv4=192.168.1.10 ipv6=fe80::10e5:98d2:edad:63e3%en1 idx=6
  2020/05/12 17:55:36 	if[lo0] ipv4=127.0.0.1 ipv6=::1 idx=1
  2020/05/12 17:55:36 NAA output discovery from en1
& 2020/05/12 17:55:36 NAA output discovered network audio: name='28beta' version='Signalyst Network Audio Daemon 4.1.1'  @[fe80::d263:b4ff:fe02:34ed%en1]:43210
& 2020/05/12 17:55:36 NAA output discovered network audio: name='28beta' version='Signalyst Network Audio Daemon 4.1.1'  @[fe80::d263:b4ff:fe02:34ed%en1]:43210
  2020/05/12 17:55:37 NAA output connect to [fe80::d263:b4ff:fe02:34ed%en1]:43210 [ipv6]
  2020/05/12 17:55:37 NAA output network endpoint: Qutest: USB Audio (hw:CARD=Qutest,DEV=0)
  2020/05/12 17:55:37 NAA output discovered 1 Network Audio Adapters
+ 2020/05/12 17:55:37 NAA output connect to [fe80::d263:b4ff:fe02:34ed%en1]:43210 [ipv6]
? 2020/05/12 17:55:37 NAA output network QoS functionality not available
  2020/05/12 17:55:37 NAA output network format: 32000/32/2 [pcm] 
  2020/05/12 17:55:37 NAA output network format: 44100/32/2 [pcm] 
  2020/05/12 17:55:37 NAA output network format: 48000/32/2 [pcm] 
  2020/05/12 17:55:37 NAA output network format: 88200/32/2 [pcm] 
  2020/05/12 17:55:37 NAA output network format: 96000/32/2 [pcm] 
  2020/05/12 17:55:37 NAA output network format: 176400/32/2 [pcm] 
  2020/05/12 17:55:37 NAA output network format: 192000/32/2 [pcm] 
  2020/05/12 17:55:37 NAA output network format: 352800/32/2 [pcm] 
  2020/05/12 17:55:37 NAA output network format: 384000/32/2 [pcm] 
  2020/05/12 17:55:37 NAA output network format: 705600/32/2 [pcm] 
  2020/05/12 17:55:37 NAA output network format: 768000/32/2 [pcm] 
  2020/05/12 17:58:15 SDM conversion parameters (9, 0)
  2020/05/12 17:58:15 DSD 6 dB gain enabled
  2020/05/12 17:58:15 Control active volume range: -60 - -3 dB
  2020/05/12 17:58:15 Audio transport: rate=0 channels=0 format=auto buffer=0
  2020/05/12 17:58:15 Output set channels: 2 (2)
  2020/05/12 17:58:15 Output SDM packing: 1
  2020/05/12 17:58:15 CoreAudio input engine initializing...
  2020/05/12 17:58:15 CoreAudio input default device id: 189
  2020/05/12 17:58:15 CoreAudio input devices: 4
  2020/05/12 17:58:15 CoreAudio input device: Built-in Microphone (189) - Apple Inc. 
  2020/05/12 17:58:15 CoreAudio input device: Built-in Output (195) - Apple Inc. 
  2020/05/12 17:58:15 CoreAudio input device: Soundflower (2ch) (43) - ma++ ingalls for Cycling '74 
  2020/05/12 17:58:15 CoreAudio input device: Soundflower (64ch) (54) - ma++ ingalls for Cycling '74 
  2020/05/12 17:58:15 CoreAudio input device id changed, trying to find device by name: 28beta: Qutest: USB Audio
  2020/05/12 17:58:15 CoreAudio input selected device: 189
! 2020/05/12 17:58:15 CoreAudio input clCoreAudioEngine::SaveDevState(): AudioObjectSetPropertyData(kAudioStreamPropertyVirtualFormat)
! 2020/05/12 17:58:15 CoreAudio input clCoreAudioEngine::SaveDevState(): AudioObjectSetPropertyData(kAudioStreamPropertyPhysicalFormat)
  2020/05/12 17:58:15 CoreAudio input nominal rate: 32000 - 32000
  2020/05/12 17:58:15 CoreAudio input nominal rate: 44100 - 44100
  2020/05/12 17:58:15 CoreAudio input nominal rate: 48000 - 48000
  2020/05/12 17:58:15 CoreAudio input nominal rate: 88200 - 88200
  2020/05/12 17:58:15 CoreAudio input nominal rate: 96000 - 96000
  2020/05/12 17:58:15 CoreAudio input number of streams: 1
  2020/05/12 17:58:15 CoreAudio input available streams:
  2020/05/12 17:58:15 	input: 44100/32/2
  2020/05/12 17:58:15 CoreAudio input found suitable stream: 190
  2020/05/12 17:58:15 CoreAudio input number of wanted streams: 1
  2020/05/12 17:58:15 CoreAudio input virtual formats:
  2020/05/12 17:58:15 	96000/32/2 [ Float ]
  2020/05/12 17:58:15 	88200/32/2 [ Float ]
  2020/05/12 17:58:15 	48000/32/2 [ Float ]
  2020/05/12 17:58:15 	44100/32/2 [ Float ]
  2020/05/12 17:58:15 	32000/32/2 [ Float ]
  2020/05/12 17:58:15 CoreAudio input physical formats:
  2020/05/12 17:58:15 	96000/24/2 [ SignedInteger ]
  2020/05/12 17:58:15 	88200/24/2 [ SignedInteger ]
  2020/05/12 17:58:15 	48000/24/2 [ SignedInteger ]
  2020/05/12 17:58:15 	44100/24/2 [ SignedInteger ]
  2020/05/12 17:58:15 	32000/24/2 [ SignedInteger ]
  2020/05/12 17:58:15 	96000/20/2 [ SignedInteger ]
  2020/05/12 17:58:15 	88200/20/2 [ SignedInteger ]
  2020/05/12 17:58:15 	48000/20/2 [ SignedInteger ]
  2020/05/12 17:58:15 	44100/20/2 [ SignedInteger ]
  2020/05/12 17:58:15 	32000/20/2 [ SignedInteger ]
  2020/05/12 17:58:15 	96000/16/2 [ SignedInteger ]
  2020/05/12 17:58:15 	88200/16/2 [ SignedInteger ]
  2020/05/12 17:58:15 	48000/16/2 [ SignedInteger ]
  2020/05/12 17:58:15 	44100/16/2 [ SignedInteger ]
  2020/05/12 17:58:15 	32000/16/2 [ SignedInteger ]
  2020/05/12 17:58:15 	96000/32/2 [ Float ]
  2020/05/12 17:58:15 	88200/32/2 [ Float ]
  2020/05/12 17:58:15 	48000/32/2 [ Float ]
  2020/05/12 17:58:15 	44100/32/2 [ Float ]
  2020/05/12 17:58:15 	32000/32/2 [ Float ]
  2020/05/12 17:58:15 CoreAudio input device bits: 20
  2020/05/12 17:58:15 CoreAudio input engine initialized
  2020/05/12 17:58:15 Audio transport: rate=0 channels=0 format=auto buffer=0
  2020/05/12 17:58:15 CoreAudio input set sampling rate: 0 (0)
  2020/05/12 17:58:16 CoreAudio input engine uninitialized
  2020/05/12 17:58:16 CoreAudio input engine uninitialized
  2020/05/12 17:58:16 Network interfaces:
  2020/05/12 17:58:16 	if[en1] ipv4=192.168.1.10 ipv6=fe80::10e5:98d2:edad:63e3%en1 idx=6
  2020/05/12 17:58:16 	if[lo0] ipv4=127.0.0.1 ipv6=::1 idx=1
  2020/05/12 17:58:16 Listen discovery on en1
# 2020/05/12 17:58:16 clControlServerThread::Start(): clSocket::SetOption(): setsockopt(..., 41,12, ...): Can't assign requested address
  2020/05/12 17:58:16 IPv6 support disabled due to failure
  2020/05/12 17:58:16 Audio transport: rate=0 channels=0 format=auto buffer=0
  2020/05/12 17:58:16 Input set channels: 2 (2)
  2020/05/12 17:58:16 Input SDM packing: 1
  2020/05/12 17:58:16 CoreAudio input engine initializing...
  2020/05/12 17:58:16 CoreAudio input default device id: 189
  2020/05/12 17:58:16 CoreAudio input devices: 4
  2020/05/12 17:58:16 CoreAudio input device: Built-in Microphone (189) - Apple Inc. 
  2020/05/12 17:58:16 CoreAudio input device: Built-in Output (195) - Apple Inc. 
  2020/05/12 17:58:16 CoreAudio input device: Soundflower (2ch) (43) - ma++ ingalls for Cycling '74 
  2020/05/12 17:58:16 CoreAudio input device: Soundflower (64ch) (54) - ma++ ingalls for Cycling '74 
  2020/05/12 17:58:16 CoreAudio input device id changed, trying to find device by name: 28beta: Qutest: USB Audio
  2020/05/12 17:58:16 CoreAudio input selected device: 189
! 2020/05/12 17:58:16 CoreAudio input clCoreAudioEngine::SaveDevState(): AudioObjectSetPropertyData(kAudioStreamPropertyVirtualFormat)
! 2020/05/12 17:58:16 CoreAudio input clCoreAudioEngine::SaveDevState(): AudioObjectSetPropertyData(kAudioStreamPropertyPhysicalFormat)
  2020/05/12 17:58:16 CoreAudio input nominal rate: 32000 - 32000
  2020/05/12 17:58:16 CoreAudio input nominal rate: 44100 - 44100
  2020/05/12 17:58:16 CoreAudio input nominal rate: 48000 - 48000
  2020/05/12 17:58:16 CoreAudio input nominal rate: 88200 - 88200
  2020/05/12 17:58:16 CoreAudio input nominal rate: 96000 - 96000
  2020/05/12 17:58:16 CoreAudio input number of streams: 1
  2020/05/12 17:58:16 CoreAudio input available streams:
  2020/05/12 17:58:16 	input: 44100/32/2
  2020/05/12 17:58:16 CoreAudio input found suitable stream: 190
  2020/05/12 17:58:16 CoreAudio input number of wanted streams: 1
  2020/05/12 17:58:16 CoreAudio input virtual formats:
  2020/05/12 17:58:16 	96000/32/2 [ Float ]
  2020/05/12 17:58:16 	88200/32/2 [ Float ]
  2020/05/12 17:58:16 	48000/32/2 [ Float ]
  2020/05/12 17:58:16 	44100/32/2 [ Float ]
  2020/05/12 17:58:16 	32000/32/2 [ Float ]
  2020/05/12 17:58:16 CoreAudio input physical formats:
  2020/05/12 17:58:16 	96000/24/2 [ SignedInteger ]
  2020/05/12 17:58:16 	88200/24/2 [ SignedInteger ]
  2020/05/12 17:58:16 	48000/24/2 [ SignedInteger ]
  2020/05/12 17:58:16 	44100/24/2 [ SignedInteger ]
  2020/05/12 17:58:16 	32000/24/2 [ SignedInteger ]
  2020/05/12 17:58:16 	96000/20/2 [ SignedInteger ]
  2020/05/12 17:58:16 	88200/20/2 [ SignedInteger ]
  2020/05/12 17:58:16 	48000/20/2 [ SignedInteger ]
  2020/05/12 17:58:16 	44100/20/2 [ SignedInteger ]
  2020/05/12 17:58:16 	32000/20/2 [ SignedInteger ]
  2020/05/12 17:58:16 	96000/16/2 [ SignedInteger ]
  2020/05/12 17:58:16 	88200/16/2 [ SignedInteger ]
  2020/05/12 17:58:16 	48000/16/2 [ SignedInteger ]
  2020/05/12 17:58:16 	44100/16/2 [ SignedInteger ]
  2020/05/12 17:58:16 	32000/16/2 [ SignedInteger ]
  2020/05/12 17:58:16 	96000/32/2 [ Float ]
  2020/05/12 17:58:16 	88200/32/2 [ Float ]
  2020/05/12 17:58:16 	48000/32/2 [ Float ]
  2020/05/12 17:58:16 	44100/32/2 [ Float ]
  2020/05/12 17:58:16 	32000/32/2 [ Float ]
  2020/05/12 17:58:16 CoreAudio input device bits: 20
  2020/05/12 17:58:16 CoreAudio input engine initialized
  2020/05/12 17:58:16 Audio transport: rate=0 channels=0 format=auto buffer=0
  2020/05/12 17:58:16 CoreAudio input set sampling rate: 0 (0)
  2020/05/12 17:58:17 CoreAudio input engine uninitialized
  2020/05/12 17:58:17 CoreAudio input engine uninitialized
  2020/05/12 17:58:17 Set filter: 23 / 23
  2020/05/12 17:58:17 Set oversampling: 22 / 22
  2020/05/12 17:58:17 Set dither: 9
  2020/05/12 17:58:17 Set modulator: 9
  2020/05/12 17:58:17 AutoSDM disabled
  2020/05/12 17:58:17 Audio engine is normal
  2020/05/12 18:00:59 SDM conversion parameters (9, 0)
  2020/05/12 18:00:59 DSD 6 dB gain enabled
  2020/05/12 18:00:59 Audio engine PCM mode enabled
  2020/05/12 18:00:59 Requested output rate: 705600
  2020/05/12 18:00:59 NAA output set sampling rate: 705600 (705600)
  2020/05/12 18:00:59 Set volume: -5
* 2020/05/12 18:00:59 Control server allow remote control

I also updated the other day (to Mac v4.4.0) and I donā€™t even SEE the Sinc-S option - do I have the right version; i.e., is there a later version available Iā€™m just not seeing?

4.5.0 is latest, if you are seeing older version on the product page, please refresh the page.

1 Like

I am running the latest version (4.5.0) and itā€™s woking perfectly, except for the very long time needed to start. Prior to this version, there was no delay when starting the app.

Looks like thereā€™s some lag before ā€œSDM conversion parametersā€ where ā€œ9ā€ is pointing to sinc-M. If you change PCM conversion algorithm in DSD Sources to poly-ext2 or sinc-S for example likely startup gets faster.

I donā€™t know why this would be any different in terms of speed to previous version. There are no code changes on this front.

Iā€™m trying it now, but quitting the app also causes it to freeze. Somethingā€™s not working as it should.

LE: This is happening when I start HQPlayer. I understand that it shouldnā€™t, but it does.

Should I roll back to the previous version?

@jussi_laako

Many thanks for sinc-s! One of the differences between sinc-s and sinc-m is that with S, music starts on play, rather than a few seconds delay with M (on lower sample rates eg 384khz).

I donā€™t know why and since Iā€™m not able to produce it with either of my Macs (running 10.14 and 10.15) it is hard to do anything about it.

Maybe thatā€™s the best option.

I can confirm that the 4.3.1 version starts and quits with no lag. So something must have changed. Otherwise, both of the apps would start and quit in the same manner. I really hope you can figure it out because, otherwise, Iā€™m stuck with the 4.3.1 version, not being able to upgrade anymoreā€¦