Home > On-Demand Archives > Talks >

Introduction to Warped FIR Filters

Hilmar Lehnert - Watch Now - DSP Online Conference 2023 - Duration: 23:39

Introduction to Warped FIR Filters
Hilmar Lehnert

Warped FIR (WFIR) filters are a hybrid between FIR and IIR filters combining some of the advantages of both. Design methods are similar to FIR filters including arbitrary magnitude and phase response but in contrast to FIR filters, they offer good resolution at low frequencies at very low orders and they can be implemented efficiently. They are a particularly good fit for loudspeaker arrays as deployed in soundbars and Atmos speakers.

The talk will cover:

  1. mathematical fundamentals, 
  2. design process, 
  3. a few examples, 
  4. common real-world issues, 
  5. discussion pros and cons.

This guide was created with the help of AI, based on the presentation's transcript. Its goal is to give you useful context and background so you can get the most out of the session.

What this presentation is about and why it matters

This talk introduces warped FIR (WFIR) filters — a filter class that blends advantages of FIR and IIR designs by applying a conformal frequency warp to an FIR structure. The key payoff is much better low-frequency resolution for a given order, stable and efficient implementations, and a natural fit for multi‑driver loudspeaker arrays and other applications that require arbitrary amplitude and phase targets across frequency.

Why this matters in practice: many audio and DSP problems have non‑uniform frequency importance (for example, fine detail in bass and coarse detail at midrange). Standard FIR design on a linear frequency grid either needs very long impulse responses or fails to represent the low‑frequency detail. Typical IIR identification tools (e.g., invfreqz) become numerically unstable at high order. Warped FIR filters let you design directly on a warped frequency axis so you capture the important bands with far fewer coefficients, remain numerically robust, and implement efficiently in fixed‑point hardware.

Who will benefit the most from this presentation

  • Engineers designing audio equalizers, loudspeaker arrays (soundbars, Atmos modules), or beamforming filters.
  • DSP practitioners who need low‑frequency resolution without huge FIR lengths or risky high‑order IIRs.
  • Embedded/hardware engineers evaluating fixed‑point implementations and low‑latency filter options.
  • Students and researchers who want an intuitive view of conformal frequency mapping and practical tradeoffs between FIR and IIR.

What you need to know

The talk is approachable, but the following concepts will help you get the most out of it:

  • z‑transform and z‑plane: frequency response is read from the unit circle in the z‑plane. Poles and zeros near the unit circle strongly shape magnitude and phase.
  • FIR vs IIR: FIR filters are finite impulse response, easy to make linear phase, and stable; but achieving narrow low‑frequency features usually requires very long impulse responses. IIR filters can achieve sharp responses with low order but require pole placement and can be numerically delicate.
  • All‑pass filters: filters whose magnitude is unity for all frequencies but that change phase. A first‑order all‑pass is the basic building block used for warping.
  • Warping function (Möbius / first‑order all‑pass): the presentation uses the conformal map

    in MathJax form: \(W(z)=\frac{z+\alpha}{1+\alpha z}\),

    with warp coefficient \(\alpha\in(-1,1)\). The unit circle maps onto itself, so every frequency \(\omega\) maps to a new angle \(\omega' = \arg\big(W(e^{j\omega})\big)\).

  • Warping a delay: replacing each delay \(z^{-1}\) in an FIR by its warped version yields the WFIR structure. The warped delay becomes a first‑order all‑pass; for a scalar warp \(w\) you get

    \(A(z)=\dfrac{z^{-1}+w}{1+w z^{-1}}\).

  • Design strategy: design a prototype (or work on a warped frequency grid), solve the FIR fitting problem there, then realize it by using the all‑pass chain and a dot‑product of coefficients. You can choose uniform warping (same \(\alpha\) everywhere) or piecewise/non‑uniform warping (different \(\alpha\) per stage) to tailor resolution across bands.
  • Useful algebraic facts: warps compose simply: composing warps with \(\alpha_1\) and \(\alpha_2\) yields an equivalent warp \(\alpha_{eq}=\dfrac{\alpha_1+\alpha_2}{1+\alpha_1\alpha_2}\). The inverse warp uses \(-\alpha\).
  • Numerical issues: standard high‑order IIR identification often leads to ill‑conditioned linear systems and root‑finding for polynomials near the unit circle (unstable numerics). Warped FIR avoids root extraction and is more numerically robust; it also lends itself to fixed‑point implementations because first‑order all‑pass stages are benign.

Glossary

  • Warping: a conformal mapping of the z‑plane that relocates spectral features by reassigning angles on the unit circle.
  • Warped FIR (WFIR): an FIR‑like structure where each delay is replaced by a first‑order all‑pass (warped delay), producing IIR behavior but retaining FIR‑style coefficient fitting.
  • All‑pass filter: filter with unity magnitude for all frequencies but with frequency‑dependent phase; used as the warping element.
  • Möbius map: the first‑order rational map \(W(z)=\dfrac{z+\alpha}{1+\alpha z}\) used for warping.
  • Unit circle: set \(|z|=1\) in the z‑plane where frequency response is evaluated.
  • Poles and zeros: locations in the z‑plane that determine filter magnitude and phase; pole radii are preserved under the discussed warps.
  • Frequency mapping: the rule \(\omega\mapsto\omega' = \arg\big(W(e^{j\omega})\big)\) that shows how original frequencies are relocated.
  • Minimum phase: a spectral property used in design where zeros lie inside the unit circle; often used as a target when truncating impulse responses.
  • Ill‑conditioning: numerical sensitivity in linear systems (common when frequencies cluster closely on a linear grid), leading to unstable coefficient estimation.
  • Beamforming / array transfer: spatial filtering using multiple drivers where precise amplitude and, crucially, phase targets per driver are required.

In closing

Hilmar Lehnert's talk is a clear, practical introduction to a powerful but approachable idea: use simple conformal maps and first‑order all‑pass stages to get the low‑frequency performance of long FIRs with the efficiency and stability of IIR components. The talk balances theory, concrete equations, and real product examples (soundbar arrays), which makes it especially useful if you want immediately applicable techniques rather than only abstract math. If you work with audio filters, beamforming arrays, or embedded DSP, this presentation will likely give you a new, pragmatic tool to try — and you’ll come away with a sensible sense of when and how to use WFIRs in practice.

M↓ MARKDOWN HELP
italicssurround text with
*asterisks*
boldsurround text with
**two asterisks**
hyperlink
[hyperlink](https://example.com)
or just a bare URL
code
surround text with
`backticks`
strikethroughsurround text with
~~two tilde characters~~
quote
prefix with
>

Michael_W
Score: 0 | 1 year ago | no reply

Thank you.

Leopoldo
Score: 0 | 2 years ago | 1 reply

Hi,
could you provide us with a simple code example, either in matlab/octave or any other programming language?
I got the theory but I'm missing something in the implementation, that is preventing me from getting the desired result.

Otherwise, could anyone point me in the right direction as to why this code I wrote is not behaving like I'd hope?

close all;
clear all;
clc;

Ts_s = 0.01;            % Sampling time [s]
sample_count = 1000;    % sample amount (fft)
w = 0.5;               % warping amount

t_vect = (0:1:sample_count - 1).*Ts_s;

% Prepare variables
A_m3 = 0;
A_m2 = 0;
A_m1 = 0;
x_m1 = 0;
output_signal = zeros(sample_count, 1);

for ind = 1:length(t_vect)
  % generate impulse stimulus signal
  input_signal(ind) = 1.0*(ind == 1);
  x = input_signal(ind);

% ======== 4 taps MA WFIR filter ========
  A_m3 = (w + A_m2) / (1 + w*A_m2);
  A_m2 = (w + A_m1) / (1 + w*A_m1);
  A_m1 = (w + x_m1) / (1 + w*x_m1);
  y = (x + A_m1 + A_m2 + A_m3) / 4.0;

  x_m1 = x;
% =======================================

  % save impulse response for later
  output_signal(ind) = y;
endfor

figure();
stairs(t_vect, input_signal, 'k');
hold on;
stairs(t_vect, output_signal, 'm');
title('Impulse and response');
xlabel('Time [s]');
ylabel('Amplitude');

% Obtain Bode plot by performing FFT on the impulse response
fft_source = output_signal;

L = length(fft_source);
Y = fft(fft_source);

f = (0:(L/2)) * 1./(Ts_s*L);
f = f(2:end - 1);
P2 = abs(Y/L);
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);
P1 = P1./P1(2);
mag_dB = 20*log10(P1);
mag_dB = mag_dB(2:end - 1);

figure();
semilogx(f, mag_dB, '-or');
title("Single-Sided Amplitude Spectrum");

Thank you!

HilmarSpeaker
Score: 1 | 2 years ago | 1 reply
Leopoldo
Score: 0 | 2 years ago | no reply

Wonderful! Thank you very much!

christophe.blouet
Score: 0 | 2 years ago | 1 reply

Thank you, very interesting, any tool/function you recommend to use those filters ?

HilmarSpeaker
Score: 0 | 2 years ago | no reply

Sorry, I'm not aware of any commercial or open-source "toolbox" or "module" for Warped FIR filters. If you Google it you can find a few bits and pieces but I didn't see any comprehensive solutions

JohnP
Score: 0 | 2 years ago | 1 reply

Very interesting practical applications for warped FIRs. Yes, complexity somewhere between a FIR and a IIR revealing those artifacts which are hidden by either approach. Now I feel more confident in their use. Many thanks.

HilmarSpeaker
Score: 0 | 2 years ago | no reply

Thanks! Gald you liked it!

DanBoschen
Score: 1 | 2 years ago | 1 reply

"I hope you found this useful and another tool in my chest for filter design and implementation." ABSOLUTELY!! That was the best 24 minutes of my day, thank you Hilmar! Really well done and extremely useful. Replacing unit delays with all-pass, brilliant. Could you use this to correct for the frequency warping from a Bilinear Transform? Also is there a similar warping process that could be applied in the s domain (not necessarily to build analog filters but to prewarp prior to using mapping techniques from s to z)?

HilmarSpeaker
Score: 1 | 2 years ago | no reply

You can't use this to get around the bilinear warping, it just implements the same phenomon differently. If you warp, say, 3rd order butterworth at pi/2 to higher frequencies, you'll see the same effect. The root cause is fundamental: all the frequencies between the cutoff and infinity in the s-plane need to be mapped to the space between the cutoff and pi in the z-plane.
Warping in the s-plane is a very interesting idea. I have not tried that, so I don't know what could be done but the same geometric mapping principles apply.