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
Real-time octave analysis
Started by ●December 1, 2003
Reply by ●December 1, 20032003-12-01
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 >
Reply by ●December 2, 20032003-12-02
"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 frequencyones 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 myC54x> > (100 Mips, audio signal @ 48kHz). > > Althought i already implement FFT, I will do it with IIRfiltering.> > (I know the avantages of FIR decimator, but I dont think it willbe> > usefull in this particular case). The "method" is to apply aband-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 (or7> > 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 therest> > 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
Reply by ●December 2, 20032003-12-02
"Ian Buckner" <Ian_Buckner@agilent.com> a �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.
Reply by ●December 2, 20032003-12-02
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.
Reply by ●December 5, 20032003-12-05
Hello I would like to thank you for your help I success with this octave analysis !! :o) Now... trying the 1/3 octave !!
Reply by ●December 7, 20032003-12-07
"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?