Hi @mitchco I have a question about zero latency.
I was talking to the DEQX guys yesterday and they asked me what my latency was. I said it is normal FIR filter latency, which is (N-1)/2Fs (N = number of taps, Fs = sampling rate). So for me it is 700ms. They said they have a patent for a low latency FIR, they get 10ms. I asked how it was possible, because I thought the latency was unavoidable. The impulse is in the middle of the tap length, so you have to wait half the tap length to pass through the filter before the impulse. They said "it's fancy maths, look up our patent and it will tell you how to do it". So I managed to find the patent - here. DEQX came from Lake Audio, and they mentioned it was invented by David McGrath who works with them.
On my way home, I remembered that Hang Loose is a zero latency convolver. When I was testing it, I noticed that when I switched from one filter bank to another, the music would switch over immediately without so much as an audible gap. In fact it was so seamless that if two filters were similar, the switch was inaudible and you would not know that another filter was being used.
I was under the impression that zero latency meant that you were spending CPU cycles to process another filter bank at the same time so that you could switch seamlessly because I was not aware that there was such a thing as low latency FIR. So can I ask you - does zero latency mean that there is no FIR filter latency at all, and you have come up with an alternative FIR algorithm?
Hi Keith,
HLC is a zero latency, uniform partition convolver that performs convolution of an input signal in the frequency domain using FFT. The convolution engine itself does not introduce any processing latency.
Note that FIR filters can be linear phase, minimum phase, or anything in-betweeen (i.e. mixed phase). So, your linear phase FIR filter contains both a minimum phase and excess phase corrections (plus the digital XO’s and any time alignment delays). In this specific case, the “delay” is introduced by the excess phase correction as the excess phase correction is the time reversed measured excess phase. In your case that is about 700ms. While the “peak” of a linear phase FIR filter is typically at midpoint, there still is correction ahead of the peak, which is your time reversed excess phase. You may want to reach out to Uli to show you how to display that in Acourate.
FIR filters can also be minimum phase (including minphase digital XO’s) with no excess correction. Therefore, the delay of the FIR filter is 0ms. Even if the minphase FIR filter is 262,144 taps long, using a zero latency convolver like HLC, will not add latency as demonstrated here.
For music listening, I use linear phase FIR filters (with time alignment and linear phase XO’s). For movie watching I use minimum phase FIR filters (and miphase digital XO’s) that are still high tap count filters, but no latency is introduced, other than the usual buffers in the audio chain. For video, I use virtual audio loopback drivers that are also zero latency, like BlackHole on Mac and LoopBeAudio on Windows. Therefore, no lipsync issues. Even when processing 7.1.4 Dolby Atmos movies. <--translate to English.
HLC will display the latency of the loaded FIR filter in the bottom right-hand corner of the UI so you can see for your self the latency introduced by the filter. Yes, HLC will switch filters seamlessly regardless if minphase or linphase.
Don’t know what DEQX is doing, but certainly not processing linear phase FIR filters with low frequency excess phase correction ;-) However, one can still have fantastic bass control using high tap (e.g. 65,536 tap or greater) minphase FIR filters with no lipsync issues for movie watching, assuming zero latency convolution.
Does it mean the switch is done likeYes, HLC will switch filters seamlessly regardless if minphase or linphase.
It's seamless as the individual filters are running in parallel. The filter with the longest delay dictate the delay for all the other filters.Does it mean the switch is done like
Activate filter bank
Feed input to new filter in parallel to existing live stream
Once X ms (x being driven by the inherent latency of the filter) has passed them switch the output feed to the new filter bank
ie it's audibly seamless but with a lag driven by the filter?
So it's constantly processing all filters all the time? I was thinking of something like a switch to activate that mode (or keeping something alive for n seconds once you switch on the basis that you would switch back and forth and that's when you need zero latency) to avoid the overhead of constantly processingIt's seamless as the individual filters are running in parallel. The filter with the longest delay dictate the delay for all the other filters.
Looks great! Possible to access Master Trim from the web UI? I don't see it in screenshotNew software update:
HLC Web Application and HLC Embedded are two new additions to the Hang Loose DSP Software Suite, which is a growing suite of audio DSP applications and plugins.
HLC Web Application and Embedded can run on Mac, Windows, Linux, and Raspberry Pi. HLC Web App can run with a native UI or run headless.
HLC Web App gives the user the ability to compare level matched DRC filters and/or headphone filters in real time using a web browser on a phone or tablet from the comfort of one's listening chair.
HLC Embedded gives music application developers the ability to easily embed convolution into their application and communicate with it using a simple REST API.
Documentation: Hang Loose DSP Suite Operations Guide
How to use HLC Web Application and Web API:
Mitch, Thanks for keepin us updated and in the loop!New software update:
HLC Web Application and HLC Embedded are two new additions to the Hang Loose DSP Software Suite, which is a growing suite of audio DSP applications and plugins.
Mitch, hats off for your work!New software update:
HLC Web Application and HLC Embedded are two new additions to the Hang Loose DSP Software Suite, which is a growing suite of audio DSP applications and plugins.
HLC Web Application and Embedded can run on Mac, Windows, Linux, and Raspberry Pi. HLC Web App can run with a native UI or run headless.
HLC Web App gives the user the ability to compare level matched DRC filters and/or headphone filters in real time using a web browser on a phone or tablet from the comfort of one's listening chair.
HLC Embedded gives music application developers the ability to easily embed convolution into their application and communicate with it using a simple REST API.
Documentation: Hang Loose DSP Suite Operations Guide
How to use HLC Web Application and Web API:
Hi @AudioJester I have a couple of VB-Audio Matrix setups with Roon-Matrix-HLHost-Matrix-ASIO with Motu mk5 in a triamp setup and a Topping E30 for a stereo setup. One plays in the background most of the day and have not had any dropouts/static. But through customer feedback, some setups seem more sensitive than others wrt intermittent crackling sounds, most likely due to clock drift.
What device are you using as a master clock in Matrix? Which Okto DAC?
After some tests and evaluations on Windows 11 Pro 25H2 PC at my upstairs office, I finally updated VB-AUDIO MATRIX to the newest ver.1.0.2.5 in my multichannel multi-amplifier audio rig having DSP "EKIO" and 8-Ch DAC OKTO DAC8PRO; I usually use JRiver MC, now MC35, as my music (and video) player.Hi @AudioJester I have a couple of VB-Audio Matrix setups with Roon-Matrix-HLHost-Matrix-ASIO with Motu mk5 in a triamp setup and a Topping E30 for a stereo setup. One plays in the background most of the day and have not had any dropouts/static. But through customer feedback, some setups seem more sensitive than others wrt intermittent crackling sounds, most likely due to clock drift.
What device are you using as a master clock in Matrix? Which Okto DAC?