If you have a problem or need to report a bug please email : support@dsprobotics.com
There are 3 sections to this support area:
DOWNLOADS: access to product manuals, support files and drivers
HELP & INFORMATION: tutorials and example files for learning or finding pre-made modules for your projects
USER FORUMS: meet with other users and exchange ideas, you can also get help and assistance here
NEW REGISTRATIONS - please contact us if you wish to register on the forum
Users are reminded of the forum rules they sign up to which prohibits any activity that violates any laws including posting material covered by copyright
time-domain FIR filter (Convolver)
12 posts
• Page 1 of 2 • 1, 2
time-domain FIR filter (Convolver)
Oct 22, 2013 KG_is_back published a FIR filter for Sythmaker
http://www.synthmaker.co.uk/forum/viewt ... =7&t=12218
Jun 11, 2013 MyCo published a FIR filter for Flowstone
viewtopic.php?f=3&t=1487
Jul 21, 2013 martinvicanek published a FIR filter toolbox for Flowstone
viewtopic.php?f=3&t=1487&start=10
Aug 04, 2013 steph_tsf published another FIR toolbox for Flowstone (Speaker Lab), aiming at designing 2-way speaker crossovers, by specifying a target acoustic curve, by measuring the bare unfiltered speaker module and phase, and by automatically and interactively computing the FIR filter coefficients - in realtime.
viewtopic.php?f=3&t=1607
Those last weeks I've been reading about "Frequency Warped" filters that could be implemented on Flowstone, using DSP code or ASM code.
Those "Frequency Warped" filters base on the IEEE publication "Discrete Representation of Signals" by Oppenheim and Johnson, dating back from 1972.
In 1999, Paul Beckmann working for Bose, published "Frequency Warping in the Design and Implementation of Fixed-Point Audio Equalizers" at the IEEE.
In 2009, Ramos published "Cascaded warped-FIR and FIR filter structure for loudspeaker" at the AES.
In a nutshell, Warped-FIR filters borrow the topology of FIR filters, but instead of relying on delay cells, they use 1st-order all-pass phase shifters producing a time-domain smear, with a parameter (lambda) inside defining the amount of phase shift, hence the amount of "Frequency Warp". Due to the use of phase shifters inside, this is not anymore a "Finite Impulse Response" filter.
Is it possible to experiment Warped-FIR filters using Flowstone ?
What "lambda" shall we specify for a 128-tap Warped-FIR lowpass filter with Fc = 300 Hz when Fs = 44.1 kHz?
Can the highpass be complementary?
Can they exhibit a linear phase, natively, or do we need extra-filters for restoring a linear phase?
The objective is to have Speaker Lab automatically and interactively computing the Warped-FIR filter coefficients in realtime. It is expected that this way, the FIR length can be kept between 64 and 256, for materializing excellent speaker crossovers operating in the Fc = 100 Hz to 1000 Hz range, when Fs = 44.1 kHz.
Most publications remain silent about the phase. There seems to be a catch, like the Warped-FIR filter enabling a drastic filter order reduction (when Fc is very small compared to Fs), at the expense of losing the linear phase. So, if we succeed in implementing Warped-FIR filters for Flowstone, we could need specialized IIR filters for restoring a linear phase. Kind of joke! But, after all, anyway, I'd like to experiment this using Flowstone. And you?
Steph
http://www.synthmaker.co.uk/forum/viewt ... =7&t=12218
Jun 11, 2013 MyCo published a FIR filter for Flowstone
viewtopic.php?f=3&t=1487
Jul 21, 2013 martinvicanek published a FIR filter toolbox for Flowstone
viewtopic.php?f=3&t=1487&start=10
Aug 04, 2013 steph_tsf published another FIR toolbox for Flowstone (Speaker Lab), aiming at designing 2-way speaker crossovers, by specifying a target acoustic curve, by measuring the bare unfiltered speaker module and phase, and by automatically and interactively computing the FIR filter coefficients - in realtime.
viewtopic.php?f=3&t=1607
Those last weeks I've been reading about "Frequency Warped" filters that could be implemented on Flowstone, using DSP code or ASM code.
Those "Frequency Warped" filters base on the IEEE publication "Discrete Representation of Signals" by Oppenheim and Johnson, dating back from 1972.
In 1999, Paul Beckmann working for Bose, published "Frequency Warping in the Design and Implementation of Fixed-Point Audio Equalizers" at the IEEE.
In 2009, Ramos published "Cascaded warped-FIR and FIR filter structure for loudspeaker" at the AES.
In a nutshell, Warped-FIR filters borrow the topology of FIR filters, but instead of relying on delay cells, they use 1st-order all-pass phase shifters producing a time-domain smear, with a parameter (lambda) inside defining the amount of phase shift, hence the amount of "Frequency Warp". Due to the use of phase shifters inside, this is not anymore a "Finite Impulse Response" filter.
Is it possible to experiment Warped-FIR filters using Flowstone ?
What "lambda" shall we specify for a 128-tap Warped-FIR lowpass filter with Fc = 300 Hz when Fs = 44.1 kHz?
Can the highpass be complementary?
Can they exhibit a linear phase, natively, or do we need extra-filters for restoring a linear phase?
The objective is to have Speaker Lab automatically and interactively computing the Warped-FIR filter coefficients in realtime. It is expected that this way, the FIR length can be kept between 64 and 256, for materializing excellent speaker crossovers operating in the Fc = 100 Hz to 1000 Hz range, when Fs = 44.1 kHz.
Most publications remain silent about the phase. There seems to be a catch, like the Warped-FIR filter enabling a drastic filter order reduction (when Fc is very small compared to Fs), at the expense of losing the linear phase. So, if we succeed in implementing Warped-FIR filters for Flowstone, we could need specialized IIR filters for restoring a linear phase. Kind of joke! But, after all, anyway, I'd like to experiment this using Flowstone. And you?
Steph
- Attachments
-
- Warped-FIR filter (650).png (50 KiB) Viewed 27319 times
Last edited by steph_tsf on Sat May 10, 2014 6:58 am, edited 1 time in total.
- steph_tsf
- Posts: 249
- Joined: Sun Aug 15, 2010 10:26 pm
Re: time-domain FIR filter (Convolver)
Everything that is oriented towards sound quality and efficiency in DSP processing - is always welcome.
Need to take a break? I have something right for you.
Feel free to donate. Thank you for your contribution.
Feel free to donate. Thank you for your contribution.
- tester
- Posts: 1786
- Joined: Wed Jan 18, 2012 10:52 pm
- Location: Poland, internet
Re: time-domain FIR filter (Convolver)
steph_tsf wrote:Is it possible to experiment Warped-FIR filters using Flowstone ?
Yes, absolutely. For instance in the LPC project I used a warped filter although that was not a warped FIR but rather an all pole. It may be somewhat tricky to implement a long warped FIR filter in a CPU-efficient way, but then again it does not have to be very long if it is warped.
What "lambda" shall we specify for a 128-tap Warped-FIR lowpass filter with Fc = 300 Hz when Fs = 44.1 kHz?
Hard to say, it will depend on further specs like stopband rejection, transition bandwidth etc.
Can the highpass be complementary?
I suppose it can, but must admit I haven't checked that.
Can they exhibit a linear phase, natively, or do we need extra-filters for restoring a linear phase?
No, certainly not linear phase per se. For linear phase you'd need extra filters. Why is linear phase so desirable? I like minimum phase because it has no pre-ringing.
-
martinvicanek - Posts: 1328
- Joined: Sat Jun 22, 2013 8:28 pm
Re: time-domain FIR filter (Convolver)
steph_tsf wrote:What "lambda" shall we specify for a 128-tap Warped-FIR lowpass filter with Fc = 300 Hz when Fs = 44.1 kHz?
Hm, I think you would probably want to map Fc somewhere near Nyquist/2 in the warped domain, so that would suggest lambda = 0.958. Does that make sense?
-
martinvicanek - Posts: 1328
- Joined: Sat Jun 22, 2013 8:28 pm
Re: time-domain FIR filter (Convolver)
Here is a very basic warped FIR filter (32 taps) for Fc = 300 Hz. It is designed for illustration, not for efficiency. Both lowpass and highpass, which are complementary . You can see from the impulse response in the time domain that the warped filter is not linear phase, even though the unwarped (lambda=0) filter is.
- Attachments
-
- warpedFIR.fsm
- fixed
- (18.76 KiB) Downloaded 1182 times
Last edited by martinvicanek on Sat May 10, 2014 3:32 pm, edited 1 time in total.
-
martinvicanek - Posts: 1328
- Joined: Sat Jun 22, 2013 8:28 pm
Re: time-domain FIR filter (Convolver)
I defined lambda = 0.86 for getting a lowpass Fc = 1 kHz when Fs = 44.1 kHz
the lowpass selectivity look outstanding (blue curve)
the complementary highpass asymptot is 1st-order (20dB / decade) - that's quite poor
I'd like to try a lowpass prototype delivering complementary symmetric slopes, like a 3rd-order for the lowpass and a 3rd-order for the highpass - then see how it looks after the frequency warp
would be nice to have the coefficients externally defined
and yes indeed, phase is not linear
the lowpass impulse response looks tortured (green curve)
any idea how to restore a linear phase at a decent computing cost, say 16 or 32 IIR Biquads or so ?
- steph_tsf
- Posts: 249
- Joined: Sun Aug 15, 2010 10:26 pm
Re: time-domain FIR filter (Convolver)
prototype 31-tap FIR lowpass filter I'd like to warp
it's a 3rd-order lowpass having Fc = 3 kHz when Fs = 44.1 kHz
as you can see the complementary highpass exhibits the same 3rd-order slope
this is working very well, as speaker crossover :
no preshoot
no ringing
decent slopes (3rd-order)
symmetric slopes
no relative phase shift between woofer and tweeter
no phase distortion (lowpass + highpass = unity function, magnitude and phase)
ARM Cortex-M4 cores (STM32F4 168 MHz) and the newest-revised MIPS32 core (Microchip PIC32MZ 200 MHz) handle 31-tap FIR filters beautifully
Flowstone and Gigahertz-class x86 processors handle 256-tap FIR filters beautifully
the FIR coefficients are : (you may need to replace the commas with dots over there)
0
-0,000117142341436168
-0,000645842376139766
-0,0016935094978849
-0,00305633464843259
-0,00419047343784671
-0,00416759246774707
-0,00181896328942991
0,00421002458152975
0,0151069014951839
0,0317919371157238
0,0543251022525246
0,0819080370821168
0,111792163261164
0,139611334121276
0,153888712601451
0,13961087530637
0,111793061152123
0,0819067387576274
0,0543267450993716
0,031790020560657
0,0151090090376209
0,0042078171792403
-0,00181675170572841
-0,00416971205180095
-0,00418853846754454
-0,00305799987648977
-0,00169218805302173
-0,000646760217212997
-0,000116671173264689
0
I'm very curious to see what's happening after frequency-warping it, for Fc = 300 Hz instead of 3 kHz
it's a 3rd-order lowpass having Fc = 3 kHz when Fs = 44.1 kHz
as you can see the complementary highpass exhibits the same 3rd-order slope
this is working very well, as speaker crossover :
no preshoot
no ringing
decent slopes (3rd-order)
symmetric slopes
no relative phase shift between woofer and tweeter
no phase distortion (lowpass + highpass = unity function, magnitude and phase)
ARM Cortex-M4 cores (STM32F4 168 MHz) and the newest-revised MIPS32 core (Microchip PIC32MZ 200 MHz) handle 31-tap FIR filters beautifully
Flowstone and Gigahertz-class x86 processors handle 256-tap FIR filters beautifully
the FIR coefficients are : (you may need to replace the commas with dots over there)
0
-0,000117142341436168
-0,000645842376139766
-0,0016935094978849
-0,00305633464843259
-0,00419047343784671
-0,00416759246774707
-0,00181896328942991
0,00421002458152975
0,0151069014951839
0,0317919371157238
0,0543251022525246
0,0819080370821168
0,111792163261164
0,139611334121276
0,153888712601451
0,13961087530637
0,111793061152123
0,0819067387576274
0,0543267450993716
0,031790020560657
0,0151090090376209
0,0042078171792403
-0,00181675170572841
-0,00416971205180095
-0,00418853846754454
-0,00305799987648977
-0,00169218805302173
-0,000646760217212997
-0,000116671173264689
0
I'm very curious to see what's happening after frequency-warping it, for Fc = 300 Hz instead of 3 kHz
- steph_tsf
- Posts: 249
- Joined: Sun Aug 15, 2010 10:26 pm
Re: time-domain FIR filter (Convolver)
Oops, sorry, I had the coefficients wrong. Now fixed in the original post. Lowpass and highpass slopes are symmetric.steph_tsf wrote:the complementary highpass asymptot is 1st-order (20dB / decade) - that's quite poor
I think for lambda = 0.958 you'd need quite a few biquad allpass sections to restore linear phase. In that case the warped FIR filter offers no advantage over a IIR crossover in the first place.steph_tsf wrote:and yes indeed, phase is not linear
any idea how to restore a linear phase at a decent computing cost, say 16 or 32 IIR Biquads or so ?
Yep, read on...steph_tsf wrote:I'd like to try a lowpass prototype delivering complementary symmetric slopes, like a 3rd-order for the lowpass and a 3rd-order for the highpass - then see how it looks after the frequency warp
would be nice to have the coefficients externally defined
Refer to attached schematic. Warping with lambda = 0.8 brings Fc down to about 300 Hz, at the cost of losing phase linearity. Also the lowpass stopband falloff is somewhat worse but that could be fixed with some smart coefficients tweaking.steph_tsf wrote:prototype 31-tap FIR lowpass filter I'd like to warp
it's a 3rd-order lowpass having Fc = 3 kHz when Fs = 44.1 kHz
as you can see the complementary highpass exhibits the same 3rd-order slope
this is working very well, as speaker crossover :
no preshoot
no ringing
decent slopes (3rd-order)
symmetric slopes
no relative phase shift between woofer and tweeter
no phase distortion (lowpass + highpass = unity function, magnitude and phase)
the FIR coefficients are : (you may need to replace the commas with dots over there)
0
-0,000117142341436168
-0,000645842376139766
-0,0016935094978849
-0,00305633464843259
-0,00419047343784671
-0,00416759246774707
-0,00181896328942991
0,00421002458152975
0,0151069014951839
0,0317919371157238
0,0543251022525246
0,0819080370821168
0,111792163261164
0,139611334121276
0,153888712601451
0,13961087530637
0,111793061152123
0,0819067387576274
0,0543267450993716
0,031790020560657
0,0151090090376209
0,0042078171792403
-0,00181675170572841
-0,00416971205180095
-0,00418853846754454
-0,00305799987648977
-0,00169218805302173
-0,000646760217212997
-0,000116671173264689
0
I'm very curious to see what's happening after frequency-warping it, for Fc = 300 Hz instead of 3 kHz
If linear phase is your goal you might consider this bidirectional IIR filter design. Would make a nice Linkwitz-Riley crossover (one Butterworth filter in each direction), don't you think?
- Attachments
-
- warpedFIR_2.fsm
- (13.08 KiB) Downloaded 1213 times
-
martinvicanek - Posts: 1328
- Joined: Sat Jun 22, 2013 8:28 pm
Re: time-domain FIR filter (Convolver)
The coefficients inside need to be defined using dots.
Attached is the Warped FIR built on the complementary symmetrical Fc 3 kHz crossover, featuring a 3nd-order lowpass and a 3nd-order highpass.
Attached is the Warped FIR built on the complementary symmetrical Fc 3 kHz crossover, featuring a 3nd-order lowpass and a 3nd-order highpass.
- Attachments
-
- warpedFIR3.fsm
- (6.54 KiB) Downloaded 1283 times
- steph_tsf
- Posts: 249
- Joined: Sun Aug 15, 2010 10:26 pm
12 posts
• Page 1 of 2 • 1, 2
Who is online
Users browsing this forum: No registered users and 36 guests