Hello for this newbie question! I'm on developing a simple audio-sequencer application. So, if I want to play a 44100Hz samplesound with a default note at D4 like a drum at lower notes like C4,F3,E3,etc., I have to decimate to the according sampling-rate. But of course, to prevent aliasing, there must be a lowpass filter before decimation. The best way to to this very efficient is an FIR-Filter, so much is clear so far. But for this filter, I need for every target-frequence an array of coefficients with good balanced tap-size. An array for 128 target-frequencies and e.g. 21 taps would look like this: float coeff[128][21]; a entry in this field could be (64 is C-5 or similar) [64][21]={0.2342324f, 0.2463424f,....,0.53223423f} So, if I have to play a soundsample at C-5, I have to look in my table at the correspond index (here 64) and use the FIR-Filter with the coefficients I found here. Seems to be easy... but where I can get these coefficients for exactly this application? These freeware or commercial trial FIR design tools I have seen, can only output some coefficients for one target-frequency... but I need about 128 filters, so that would be really hard work. But there are so much audio-sequencers and similar applications on market and so there should be something like an optimal "downsampling FIR-coefficient table", that's good for realtime processing... Or is something like this not available? Or how can I calculate such a coefficient-table, without bother myself with long days in filter design? Thanks for any help, Robin Siegemund
Best FIR Coefficients for multirate app
Started by ●April 2, 2004
Reply by ●April 2, 20042004-04-02
"Robin Siegemund" <Robbson@gmx.de> wrote in message news:4e5c9d28.0404020611.2bb5febd@posting.google.com...> Hello for this newbie question! > > I'm on developing a simple audio-sequencer application. > So, if I want to play a 44100Hz samplesound with a default note at D4 > like a drum at lower notes like C4,F3,E3,etc., I have to decimate to the > according sampling-rate.Robin, Maybe I'm not thinking clearly here or don't understand what an audio sequencer is ... but I don't understand how decimation is going to do anything for you. It won't frequency shift one tone down to another. I'm assuming that the input and the output has to be sampled still at 44100Hz - for consistency with the "system". Let's call the sample interval T=1/44100. So, to reduce the frequency of a tone by 2 means you have to: - start with its samples at rate 1/T = 44100. - interpolate those samples by a factor of 2 to get 88200. - play these samples back at 44100 to reduce the frequency by 2. There have to be more samples, not fewer, in order to reduce the frequency for any given sample rate. Next, I have to wonder how you're going to extract these tones in the first place if they are a component part of the audio. They would have to be - detected - extracted then processed...... Fred
Reply by ●April 4, 20042004-04-04
Hey, Matlab is a good tool for something like this. You can write a matlab program to call matlab's built in filter design functions in a loop, changing the cutoff frequencies on each loop iteration, and output the results to a text file for later import into a C file. I actually did something similar to generate a text file that was later read in by another program on initialization. Changing the cutoffs/number of frequencies/number of coeffs/ was then easily adjustable within the matlab program... Cheers, Chris "Robin Siegemund" <Robbson@gmx.de> wrote in message news:4e5c9d28.0404020611.2bb5febd@posting.google.com...> Hello for this newbie question! > > I'm on developing a simple audio-sequencer application. > So, if I want to play a 44100Hz samplesound with a default note at D4 > like a drum at lower notes like C4,F3,E3,etc., I have to decimate to the > according sampling-rate. > But of course, to prevent aliasing, there must be a lowpass filter before > decimation. > The best way to to this very efficient is an FIR-Filter, so much is clearso> far. > > But for this filter, I need for every target-frequence an array of > coefficients with good balanced tap-size. > > An array for 128 target-frequencies and e.g. 21 taps would look like this: > > float coeff[128][21]; > > a entry in this field could be (64 is C-5 or similar) > > [64][21]={0.2342324f, 0.2463424f,....,0.53223423f} > > So, if I have to play a soundsample at C-5, I have to look in my table > at the correspond index (here 64) and use the FIR-Filter with > the coefficients I found here. > > Seems to be easy... but where I can get these coefficients for exactlythis> application? > These freeware or commercial trial FIR design tools I have seen, can only > output > some coefficients for one target-frequency... but I need about 128filters,> so > that would be really hard work. > > But there are so much audio-sequencers and similar applications on market > and so there should be something like an optimal "downsampling > FIR-coefficient table", > that's good for realtime processing... Or is something like this not > available? > > Or how can I calculate such a coefficient-table, without bother myself > with long days in filter design? > > Thanks for any help, > > Robin Siegemund
Reply by ●April 5, 20042004-04-05
try this freeware http://winfilter.20m.com Robin Siegemund wrote:> Hello for this newbie question! > > I'm on developing a simple audio-sequencer application. > So, if I want to play a 44100Hz samplesound with a default note at D4 > like a drum at lower notes like C4,F3,E3,etc., I have to decimate to the > according sampling-rate. > But of course, to prevent aliasing, there must be a lowpass filter before > decimation. > The best way to to this very efficient is an FIR-Filter, so much is clear so > far. > > But for this filter, I need for every target-frequence an array of > coefficients with good balanced tap-size. > > An array for 128 target-frequencies and e.g. 21 taps would look like this: > > float coeff[128][21]; > > a entry in this field could be (64 is C-5 or similar) > > [64][21]={0.2342324f, 0.2463424f,....,0.53223423f} > > So, if I have to play a soundsample at C-5, I have to look in my table > at the correspond index (here 64) and use the FIR-Filter with > the coefficients I found here. > > Seems to be easy... but where I can get these coefficients for exactly this > application? > These freeware or commercial trial FIR design tools I have seen, can only > output > some coefficients for one target-frequency... but I need about 128 filters, > so > that would be really hard work. > > But there are so much audio-sequencers and similar applications on market > and so there should be something like an optimal "downsampling > FIR-coefficient table", > that's good for realtime processing... Or is something like this not > available? > > Or how can I calculate such a coefficient-table, without bother myself > with long days in filter design? > > Thanks for any help, > > Robin Siegemund