There are 7 messages in this thread.
You are currently looking at messages 0 to 7.
Hi all, I am working on implementing a 3D audio system where a need to change filter coefficients at real time. I know that when updating filter coefficients can produce audible artifacts such as clicks. I've been doing some google research on time-varying filters, elimination of transients, etc .... So far I have found some articles but all regarded time-varying recursive filters. My application uses FIR filters and the main problem to cover is avoid artifacts when switching from one filter to another. regards, Pablo.
1. Could you arrange your software such that one coefficient only was changed for each execution of the associated MAC instructions, and change progressively from one end? Or, 2. Arrange that the transition occurs over 8, 16 (or your favourite binary number) executions of the MAC and change every coefficient 1/n th of the difference between the two sets? (Watch out for dividing by zero if no change is required!) "Pablo F. Hoffmann" <p...@acoustics.aau.dk> wrote in message news:c0sk5e$cgg$1...@sunsite.dk... > I am working on implementing a 3D audio system where a need to change > filter coefficients at real time. I know that when updating filter > coefficients can produce audible artifacts such as clicks.
Pablo F. Hoffmann wrote: > Hi all, > > I am working on implementing a 3D audio system where a need to change > filter coefficients at real time. I know that when updating filter > coefficients can produce audible artifacts such as clicks. I've been > doing some google research on time-varying filters, elimination of > transients, etc .... So far I have found some articles but all regarded > time-varying recursive filters. My application uses FIR filters and the > main problem to cover is avoid artifacts when switching from one filter > to another. > > regards, > > Pablo. Search for previous threads on this. A glitch-free transition can be had by using two transversal FIR filters of the same length (so delay is unchanged) and fading the output from one to the other. Only two filters need to be in memory at one time. Jerry -- Engineering is the art of making what you want from things you can get. ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ
A brute force approach is to run 2 filters in parallel and crossfade between them. Since this often doubles your computational load, it may not always be feasible. But if you have the computing power to deal with it, then that's probably your best bet. "Pablo F. Hoffmann" <p...@acoustics.aau.dk> wrote in message news:c0sk5e$cgg$1...@sunsite.dk... > Hi all, > > I am working on implementing a 3D audio system where a need to change > filter coefficients at real time. I know that when updating filter > coefficients can produce audible artifacts such as clicks. I've been > doing some google research on time-varying filters, elimination of > transients, etc .... So far I have found some articles but all regarded > time-varying recursive filters. My application uses FIR filters and the > main problem to cover is avoid artifacts when switching from one filter > to another. > > regards, > > Pablo.
Using two filters and crossfading between them will work if you have time for two filters. An approach that works with FIR filters is to crossfade the coeffecients between the current filter and the filter you want using, say, linear interpolation. With IIR filters, this can (frequently) lead to problems but not with FIR filters. FIR filters are inherently stable. In article <c0sk5e$cgg$1...@sunsite.dk>, "Pablo F. Hoffmann" <p...@acoustics.aau.dk> wrote: >Hi all, > >I am working on implementing a 3D audio system where a need to change >filter coefficients at real time. I know that when updating filter >coefficients can produce audible artifacts such as clicks. I've been >doing some google research on time-varying filters, elimination of >transients, etc .... So far I have found some articles but all regarded >time-varying recursive filters. My application uses FIR filters and the >main problem to cover is avoid artifacts when switching from one filter >to another. > >regards, > >Pablo.
Actually, it tends to work quite well with IIR filters as well. I think I remember hearing about a proof somewhere that if the beginning and end coefficients are both stable, then the interpolated coefficients are stable as well. With IIR filters, the filter topology (Direct Form, Lattice, etc.) also makes a substantial difference in the ability to interpolate and "sound good". As you might expect, the more complex forms tend to be the best for interpolation. "George Bush" <g...@whitehouse.com> wrote in message news:Tdq0c.1652$Z...@twister.socal.rr.com... > Using two filters and crossfading between them will work if you have time for > two filters. An approach that works with FIR filters is to crossfade the > coeffecients between the current filter and the filter you want using, > say, linear interpolation. With IIR filters, this can (frequently) lead to > problems but not with FIR filters. FIR filters are inherently stable. > > In article <c0sk5e$cgg$1...@sunsite.dk>, "Pablo F. Hoffmann" > <p...@acoustics.aau.dk> wrote: > >Hi all, > > > >I am working on implementing a 3D audio system where a need to change > >filter coefficients at real time. I know that when updating filter > >coefficients can produce audible artifacts such as clicks. I've been > >doing some google research on time-varying filters, elimination of > >transients, etc .... So far I have found some articles but all regarded > >time-varying recursive filters. My application uses FIR filters and the > >main problem to cover is avoid artifacts when switching from one filter > >to another. > > > >regards, > > > >Pablo.
Jon Harris wrote: > Actually, it tends to work quite well with IIR filters as well. > I think I remember hearing about a proof somewhere that if the > beginning and end coefficients are both stable, then the > interpolated coefficients are stable as well. Last year on music-dsp, Sampo Syreeni explained that each intermediate coefficient set corresponds to a stable LTI system, but the time-varying IIR may still be unstable since the state is influenced by the previous sets. I believe toplogies were also discussed somewhere in that thread. http://aulos.calarts.edu/pipermail/music-dsp/2003- December/025580.html Martin -- Quidquid latine dictum sit, altum viditur.