From: jungledmnc on
Hi,
I want to create a frequency shifter for audio. First I need to get an
analytical signal via a hilbert transformer. I started by checking out how
long the Hilbert FIR would be. Unfortunately I ended with 20ms, which seems
to be related to -3dB at 50Hz (1/0.02). Isn't there another way to do that?
I mean 20ms is a relatively long delay for realtime processing and also 800
taps would need relatively lots of CPU power.

Thanks.
From: Vladimir Vassilevsky on


jungledmnc wrote:

> Hi,
> I want to create a frequency shifter for audio. First I need to get an
> analytical signal via a hilbert transformer. I started by checking out how
> long the Hilbert FIR would be. Unfortunately I ended with 20ms, which seems
> to be related to -3dB at 50Hz (1/0.02). Isn't there another way to do that?
> I mean 20ms is a relatively long delay for realtime processing and also 800
> taps would need relatively lots of CPU power.

Don't use Hilbert FIR. Use IIR allpass filter.


Vladimir Vassilevsky
DSP and Mixed Signal Design Consultant
http://www.abvolt.com
From: jungledmnc on
Thanks. Could you please point me to some keywords to search for?

From: Tim Wescott on
On 08/06/2010 03:24 PM, jungledmnc wrote:
> Thanks. Could you please point me to some keywords to search for?

"Allpass filter" is a good start. You have two options: an allpass
network that gives a pretty good approximation to 90 degrees phase shift
in the frequency range of interest, or a pair of allpass networks that
have about 90 degrees phase shift between the two channels.

Check back here if those keywords don't help.

--

Tim Wescott
Wescott Design Services
http://www.wescottdesign.com

Do you need to implement control loops in software?
"Applied Control Theory for Embedded Systems" was written for you.
See details at http://www.wescottdesign.com/actfes/actfes.html
From: jungledmnc on
Thanks Tim. I was checking about the solution with 2 allpass networks. What
I don't understand is why do I have to use networks? I tried just for
curiosity to use 2 biquad allpasses, found some points where they were
around 90 degrees to each other, but the differences were quite big. Is
that why we have to use multiple sections? And how should I compute the
coefficients?

I read this text:
http://www.katjaas.nl/hilbert/hilbert.html

There were also "polyphase IIRs" mentioned. I quite don't understand how
they should work. First why is there some 1 sample delay on the second
channel? And again, how could I get the coefficients? There are some raw
numbers, but now explanation how to find them out.