Technical discussions related to Audio Signal Processing (digital effects, acoustics, noise reduction, musical signal processing, etc).
Hi everyone, My previous post was not submitted, so I decided to write it again. I'm supposed to design a bandpass filter bank (octave and 1/3-octave) for audio measurements (noise or sound level) and afterwards implement it on TMS320C25 or TMS320C6211 (my tutor is very ambitious and won't let me go the easy way and prepare the whole thing in Simulink). The thing is I don't know much about DSPs or programming and I need some good advice on how to make it all work. Now something closer about the filter bank itself: 1) bandpass IIR filters (supposedly Butterworth order 8 or 10) [I'm not sure about this one, because I've never done that before; though I think Butterworth may be the best one for my purpose - correct me if I'm wrong]; 2) normalised center frequencies (below) for octave (o) and 1/3 octave filterbanks (only audible spectrum; in case anybody needed the ISO 1260): 25, 31.5(o), 40, 50, 63(o), 80, 100, 125(o), 160, 200, 250(o), 315, 400, 500(o), 630, 800, 1 000(o), 1 250, 1 600, 2 000(o), 2 500, 3 150, 4 000(o), 5 000, 6 300, 8 000(o), 10 000, 12 500, 16 000(o), 20 000; 3) I can design (get the coefficients from any IIR filter design program) only the first filter and proove that with a slight change of the coefficients I can implement the next stages; I can also design the whole filterbank and implement it as a whole. If any of you could, please, help me prepare a flow-chart for the filter bank and tell me whether my way of thinking is correct or not, I'd be more than grateful. Thank you in advance, Hanna
Hello Hanna: I'm working on a very similar project of implementing various filters/ audio equalizers on a TI processor. I found TI's recommended document which might be helpful to you. Apart from this, TI has a DSPLIB (DSP Library), on their website, that has standard functions for implementing IIR filters and more. > > 1) bandpass IIR filters (supposedly Butterworth order 8 or 10) [I'm > not sure about this one, because I've never done that before; though I > think Butterworth may be the best one for my purpose - correct me if > I'm wrong]; From this document and from other reading I have done, I can say that all higher order filters (order > 2) must be implemented as cascaded 2nd-order biquad filter sections. > > 3) I can design (get the coefficients from any IIR filter design > program) only the first filter and proove that with a slight change of > the coefficients I can implement the next stages; I can also design > the whole filterbank and implement it as a whole. > You can get your filter coefficients from any standard code. But, you would need to break it down to multiple 2nd-order filter coefficients and then implement the whole filter bank. > If any of you could, please, help me prepare a flow-chart for the > filter bank and tell me whether my way of thinking is correct or not, > I'd be more than grateful. The steps in my flowchart included: 1. Choosing filter parameters 2. Design of filter, i.e. obtain filter coefficients 3. If filter order >2, obtain filter coefficients for cascaded 2nd order filter sections 4. Process each input sample through each filter section Hope this helps. I would definitely like to discuss more as I am currently working on this project too. Please let me know how it goes, Meenakshi.
All rigthy then... I got a little mixed up with the problem of breaking an IIR filter down to 2nd order filters cascade. If anybody could give me a hand on that problem (even some links to guides or manuals) I'd be more than grateful. The second problem is WHERE CAN I GET IIR CODE FOR TMS320C25??? My tutor sais it's so easy to find but I can't seem to be that lucky... I've got some extracts from Chassaing's "Digital Signal Processing with TMS320C25" but it's still magic to me as I know very little about DSPs at all. The third and (I guess) the last problem is testing the designed filter (or the whole filter bank). This part can be performed using Matlab but I'm affraid I'm not too familiar with all the components of the Matlab package. Sorry for my amateur questions and problems but I have noone to help me with all that. Hanna.
Hello, At the web site below you can find various IIR and FIR filter design on-line tools to allow you to freely design a wide variety of filters. For example, I used it to come up with the coefficients for a 6th order elliptic LPF. Verifying the coefficients in Matlab, the coded filter running on a Mot 56L311 gave excellent matching. Here's the URL http://www.nauticom.net/www/jdtaft/ As for code for the TI part, I think a good search of TI's web site or a Google search would find you code examples of IIR sections. Good luck. On Sun, 17 Apr 2005 01:09:21 +0200, Hanna ?wikła wrote: All rigthy then... I got a little mixed up with the problem of breaking an IIR filter down to 2nd order filters cascade. If anybody could give me a hand on that problem (even some links to guides or manuals) I'd be more than grateful. The second problem is WHERE CAN I GET IIR CODE FOR TMS320C25??? My tutor sais it's so easy to find but I can't seem to be that lucky... I've got some extracts from Chassaing's "Digital Signal Processing with TMS320C25" but it's still magic to me as I know very little about DSPs at all. The third and (I guess) the last problem is testing the designed filter (or the whole filter bank). This part can be performed using Matlab but I'm affraid I'm not too familiar with all the components of the Matlab package. Sorry for my amateur questions and problems but I have noone to help me with all that. Hanna. ----------------------------------------------------------------------- Seven Woods Audio, Inc. Christopher Moore Concepts, Products, Circuits for Audio Analog/Digital moore@moor... http://www.SevenWoodsAudio.com
From: "Hanna Ćwikła" <hanka@hank...> > I got a little mixed up with the problem of breaking > an IIR filter down to 2nd order filters cascade. You need to factor the numerator and denominator polynomials and group the factors into quadratics -- and another linear factor for odd degree --, whose product is then equal to the original polynomial. Complex conjugate roots go together (if your factorizer split them in the first place) so that the filter sections will have real coefficients. I think the Matlab function is called roots. Don't forget about the scalar gain, though; it's the ratio of th numerator and denominator's leading coefficient. There are various ways to combine the zeros and poles into sections and to choose the sections' compute ordering. Common advice is to pair each pole with the closest zero in the z-plane. This is to keep the feedback state magnitudes as small as possible, avoiding unnecessary precision loss. I remember seeing the ordering issue mentioned in the comp.dsp newsgroup but can't seem to find those posts now. I've seen Randy Yates refer to two books for this stuff, however: Digital Signal Processing - Oppenheim and Schafer; Introduction to Digital Signal Processing - Proakis, Manolakis. Martin
All right... I've got the filter design problem sorted out - I got a little program with which I can design the filters and generate asm for them. Now the problems are: 1. How the devil do I put 15 (for 1/1 octave) or 45 (for 1/3 octave) filter codes in one asm program (I'm kind of "green" in the filed of asm coding)? 2. How to filter the input signal? I think the easiest way for me would be serial filtering of the same sample, one filter after another and multiplexing the filtered values. Correct me if I'm wrong (and if so tell me how to program it). I guess that I have to filter a single sample (16 bits - word length in C25)... then the effects of the whole filtering process would be correct. 3. How to design the whole filtering process in Matlab's Simulink to show that the filterbank works (I need to input a signal, filter it and measure the RMS - only then it can really be successful)? What blocks should I use? Thanks for all your help and sorry for stupid questions... I'm really a beginner but I still have to prepare the project for June 13th :-( Best regards, Hanna Martin Eisenberg napisał(a): >From: "Hanna Ćwikła" <hanka@hank...> > > > >>I got a little mixed up with the problem of breaking >>an IIR filter down to 2nd order filters cascade. >> >> > >You need to factor the numerator and denominator polynomials and >group the factors into quadratics -- and another linear factor >for odd degree --, whose product is then equal to the original >polynomial. Complex conjugate roots go together (if your >factorizer split them in the first place) so that the filter >sections will have real coefficients. I think the Matlab function >is called roots. Don't forget about the scalar gain, though; it's >the ratio of th numerator and denominator's leading coefficient. > >There are various ways to combine the zeros and poles into >sections and to choose the sections' compute ordering. Common >advice is to pair each pole with the closest zero in the z-plane. >This is to keep the feedback state magnitudes as small as >possible, avoiding unnecessary precision loss. I remember seeing >the ordering issue mentioned in the comp.dsp newsgroup but can't >seem to find those posts now. I've seen Randy Yates refer to two >books for this stuff, however: > >Digital Signal Processing - Oppenheim and Schafer; >Introduction to Digital Signal Processing - Proakis, Manolakis. > > >Martin > > >