Real-time octave analysis

Started by Curl December 1, 2003
Hello !

I would like to perform ***real-time*** octave analysis with my C54x
(100 Mips, audio signal @ 48kHz).
Althought i already implement FFT, I will do it with IIR filtering.
(I know the avantages of FIR decimator, but I dont think it will be
usefull in this particular case). The "method" is to apply a band-pass
for the higher octave, and
decimate by 2 for the next octave.
I already designend the band-pass and the anti-aliasing low-pass
filter (each 4 biquads). I should do this way : (Hope you will see
this correctly)

sample : 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9,...
oct:
8kHz   : x , x , x , x , x , x , x , x , x , x , x
4kHz   : x , _ , x , _ , x , _ , x , _ , x , _ ,
2kHz   : _ , x , _ , _ , _ , x , _ , _ , _ , x ,
1kHz   : _ , _ , _ , x , _ , _ , _ , _ , _ , _ , _ ,  x

For 8kHz octave, I have to take into account all samples
For 4kHz octave, 1 sample every 2
For 2kHz octave, 1 sample every 4
For 1kHz octave, 1 sample every 8
...
It seem's easy, But i have problem to implement that.
From 48 kHz to 500Hz  I need to apply 7  anti-aliasing filters (or 7
times the same filter !)
I need to apply  7 bandpass filters (or 7 times the same bandpass
filter) for the octaves 125 Hz to 8 kHz.
I do not have enough cycles to do that in interrupt.
I think the trick is to perform a part during interrupt, and the rest
outside the interrupt . (or allow the codec interrupt to be
interrupted by itself).

Well, any advice , tricks , method are welcome !! :o)
Thank you

Pierre

Hello Curl,

The trick is to use FIR decimating filters, as the low frequency ones don't
get called very often and therefore use few cycles. Try looking up
quadrature mirror filters. They should do the trick for you.

Clay


"Curl" <Mr.Bilou@microsoft.fr> wrote in message
news:3fcb6547$0$2803$626a54ce@news.free.fr...
> Hello ! > > I would like to perform ***real-time*** octave analysis with my C54x > (100 Mips, audio signal @ 48kHz). > Althought i already implement FFT, I will do it with IIR filtering. > (I know the avantages of FIR decimator, but I dont think it will be > usefull in this particular case). The "method" is to apply a band-pass > for the higher octave, and > decimate by 2 for the next octave. > I already designend the band-pass and the anti-aliasing low-pass > filter (each 4 biquads). I should do this way : (Hope you will see > this correctly) > > sample : 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9,... > oct: > 8kHz : x , x , x , x , x , x , x , x , x , x , x > 4kHz : x , _ , x , _ , x , _ , x , _ , x , _ , > 2kHz : _ , x , _ , _ , _ , x , _ , _ , _ , x , > 1kHz : _ , _ , _ , x , _ , _ , _ , _ , _ , _ , _ , x > > For 8kHz octave, I have to take into account all samples > For 4kHz octave, 1 sample every 2 > For 2kHz octave, 1 sample every 4 > For 1kHz octave, 1 sample every 8 > ... > It seem's easy, But i have problem to implement that. > From 48 kHz to 500Hz I need to apply 7 anti-aliasing filters (or 7 > times the same filter !) > I need to apply 7 bandpass filters (or 7 times the same bandpass > filter) for the octaves 125 Hz to 8 kHz. > I do not have enough cycles to do that in interrupt. > I think the trick is to perform a part during interrupt, and the rest > outside the interrupt . (or allow the codec interrupt to be > interrupted by itself). > > Well, any advice , tricks , method are welcome !! :o) > Thank you > > Pierre >
"Clay S. Turner" <CSTurner@WSE.Biz> wrote in message
news:LoKyb.21941$P7.3275@bignews6.bellsouth.net...
> Hello Curl, > > The trick is to use FIR decimating filters, as the low frequency
ones don't
> get called very often and therefore use few cycles. Try looking up > quadrature mirror filters. They should do the trick for you. > > Clay > > > "Curl" <Mr.Bilou@microsoft.fr> wrote in message > news:3fcb6547$0$2803$626a54ce@news.free.fr... > > Hello ! > > > > I would like to perform ***real-time*** octave analysis with my
C54x
> > (100 Mips, audio signal @ 48kHz). > > Althought i already implement FFT, I will do it with IIR
filtering.
> > (I know the avantages of FIR decimator, but I dont think it will
be
> > usefull in this particular case). The "method" is to apply a
band-pass
> > for the higher octave, and > > decimate by 2 for the next octave. > > I already designend the band-pass and the anti-aliasing low-pass > > filter (each 4 biquads). I should do this way : (Hope you will see > > this correctly) > > > > sample : 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9,... > > oct: > > 8kHz : x , x , x , x , x , x , x , x , x , x , x > > 4kHz : x , _ , x , _ , x , _ , x , _ , x , _ , > > 2kHz : _ , x , _ , _ , _ , x , _ , _ , _ , x , > > 1kHz : _ , _ , _ , x , _ , _ , _ , _ , _ , _ , _ , x > > > > For 8kHz octave, I have to take into account all samples > > For 4kHz octave, 1 sample every 2 > > For 2kHz octave, 1 sample every 4 > > For 1kHz octave, 1 sample every 8 > > ... > > It seem's easy, But i have problem to implement that. > > From 48 kHz to 500Hz I need to apply 7 anti-aliasing filters (or
7
> > times the same filter !) > > I need to apply 7 bandpass filters (or 7 times the same bandpass > > filter) for the octaves 125 Hz to 8 kHz. > > I do not have enough cycles to do that in interrupt. > > I think the trick is to perform a part during interrupt, and the
rest
> > outside the interrupt . (or allow the codec interrupt to be > > interrupted by itself). > > > > Well, any advice , tricks , method are welcome !! :o) > > Thank you > > > > Pierre > > > >
There was a Bruel & Kjaer application note many years ago describing exactly how this works, for their real time 1/3 octave audio analyzer. I thought I had a copy, but I can't find it. Basically, as long as you have double the processing power needed to deal with the top band, you have enough to do all the lower bands by decimating and interleaving. The other trick is to design N filters to cover the top octave, then simply reuse them after successive decimation to cover all the lower octaves. Regards Ian
"Ian Buckner" <Ian_Buckner@agilent.com> a &#2013265929;crit dans le message de
news:
| There was a Bruel & Kjaer application note many years ago describing
| exactly how this works, for their real time 1/3 octave audio
analyzer.
| I thought I had a copy, but I can't find it. Basically, as long as
you
| have
| double the processing power needed to deal with the top band, you
have
| enough
| to do all the lower bands by decimating and interleaving. The other
| trick
| is to design N filters to cover the top octave, then simply reuse
them
| after successive decimation to cover all the lower octaves.

I read a previous post about it. http://minilien.com/?4p8FasgfBk

I understand that the number of operations does not exceed twice the
number needed for the top  octave. But I do not find how to rearrange
decimating and bandpass filtering stages.
The problem is in the real-time implementation.

Maybe a solution would be to decimate by four (not by two) . I'm
searching in this way.

Thanks for your answer.

On Tue, 2 Dec 2003 09:54:18 -0000, "Ian Buckner"
<Ian_Buckner@agilent.com> wrote:

[snip]
>There was a Bruel & Kjaer application note many years ago describing >exactly how this works, for their real time 1/3 octave audio analyzer. >I thought I had a copy, but I can't find it. Basically, as long as you >have >double the processing power needed to deal with the top band, you have >enough >to do all the lower bands by decimating and interleaving. The other >trick >is to design N filters to cover the top octave, then simply reuse them >after successive decimation to cover all the lower octaves.
Be careful with the accuracy - the input for the lowest octave has been through the decimation filter N-1 times for N octaves. The filter needs to have a very small passband ripple. Regards, Allan.
Hello
I would like to thank you  for your help
I success with this octave analysis !! :o)
Now... trying the 1/3 octave !!


"Allan Herriman" <allan.herriman.hates.spam@ctam.com.au.invalid> wrote in
message news:aqbqsvsjgam9ql4oslcg718fmtajfe0lt3@4ax.com...
> On Tue, 2 Dec 2003 09:54:18 -0000, "Ian Buckner" > <Ian_Buckner@agilent.com> wrote: > > Be careful with the accuracy - the input for the lowest octave has > been through the decimation filter N-1 times for N octaves. The > filter needs to have a very small passband ripple. > > Regards, > Allan.
I am wondering what the phase response of the system would look like. Possibly unimportant if not intended for hi-fi. Anyone have any experience with soundstage imaging issues?