Re: [Audacity-devel] [Audacity-quality] Scientific Filter graph
A free multi-track audio editor and recorder
Brought to you by:
aosiniao
From: Steve t. F. <ste...@gm...> - 2014-01-03 23:32:06
|
Forwarded from -quality As the frequency response looks pretty good for all but the 1st order low pass Butterworth filter, would it be worth making a special case for that filter (or perhaps all 1st order filters). I've been experimenting with various algorithms and the attached seems to give pretty good results. It's written in Nyquist as I'm most familiar with this language, but I've written it in OOP style so it should be easy to convert to C++. (this is not how a first order Butterworth filter would normally be written in Nyquist and it will run rather slowly. This is just for demonstration purposes). The code can be run in the Nyquist Prompt effect. Steve On 29 December 2013 23:14, Gale Andrews <ga...@au...> wrote: > > | From Steve the Fiddle <ste...@gm...> > | Sun, 29 Dec 2013 11:54:26 +0000 > | Subject: [Audacity-quality] Scientific Filter graph >> On 26 December 2013 17:56, <ga...@au...> wrote: >> > >> > Usual disclaimer for any any ignorance, but I am confused when I >> > look at http://wiki.audacityteam.org/wiki/Low_Pass_Filter >> > and see that the graph for Butterworth filter in Scientific Filter >> > does not conform to attenuation of -6 dB at double the corner >> > frequency. Or should I not expect conformance? >> > >> > In the attached image (1000 Hz first order low pass, range set to >> > +6 to -61 dB but the range makes no difference AFAICT), 1000 Hz >> > seems to be at -3 dB as expected, but 2000 Hz is at -7 dB instead >> > of -6 dB. >> > >> > Similarly with first order low pass at 250 Hz, 500 Hz appears to >> > be at -7 dB instead of - 6 dB. >> > >> > The rolloff above double the corner frequency seems to be >> > "correct" (-6 dB per octave). >> > >> > The Manual (most of it verbatim from Norm's -devel post) says >> > for Butterworth that "attenuation increases at approximately >> > 6 dB per octave times the filter order". Why "approximately", or >> > is that another way of describing what I see? >> >> The graph closely matches the actual frequency response of the filter, >> so no problem there. > > What explanation do we give for the non-conformance with > Nyquist High Pass and Low Pass (strict -6 dB rolloff)? > > We're sure to be asked what the differences are between Nyquist > High Pass and Low Pass and Scientific Filter. Is one filter "better" > than the other in any sense? > > Do we still want to ship High Pass and Low Pass if we require > Scientific Filter? > > >> I'm unsure about whether the first order filters are doing "the right >> thing" or not. Certainly the 1st order Butterworth filter does not >> match the response that is usually shown for a Butterworth filter (for >> example: http://en.wikipedia.org/wiki/Butterworth_filter ) and it does >> not match the response of the Nyquist first order Butterworth filter >> (the "hp" and "lp" functions), which do match the response as >> typically described. I don't know whether this mismatch is "a matter >> of implementation" or "a limitation" or "an error", but is so >> noticeable that users are sure to ask. I think this needs to be >> answered in the manual. > > Can you be more specific as to the mismatch (off list if you think only > I need enlightening). > > Do you mean this difference (white noise 0.8 amplitude): > > * 1000 Hz 6 dB rolloff Nyquist Low Pass > http://gaclrecords.org.uk/bugs/lowpass_1000hz_order1.png > > * 1000 Hz first order Butterworth Low Pass in ScienFilter: > http://gaclrecords.org.uk/bugs/scienfilter_lowpasss_1000hz_order1.png ? > > >> The response of the 1st order Chebyshev filters also looks rather >> "surprising" when "ripple" is set to zero. Again I don't know if it >> "should" look like that, but I think it needs to at least be >> documented. >> >> There is little on-iine documentation about first order Butterworth >> and Chebyshev filters, but the behaviour of these types in the >> Scientific Filter is not what our current manual describes. > > I see no description of first order filters in the Manual. > > The Chebyshev types in the Manual refer to "magnitude response > of the passband" and "ripple value" but these are not defined. > > I could guess what these are, but why should any one guess in a > Manual? > > >> If the effect is "correct" then I think it has to be accounted for in the >> documentation. > > Assuming you (Steve) are not offering to document the > non-conformance, could Norm or a developer enlighten us? > > It is (should be) a requirement that released effects have reasonable > documentation. > > >> The description at the top of the manual page says: >> "Scientific Filter provides 3 different types of filters which >> together emulate the vast majority of analog filters," >> If that is the intention of the effect then there should probably also >> be Bessel, Elliptic and Linkwitz-Riley filters (which are probably >> more common than Chebyshev type 2). If that is not the intention, then >> the description needs to be "toned down" by removing the second part >> of that sentence. > > I agree. I was going to say something like: > > ''Scientific Filter''''' provides three different types of > '''''[[Glossary#filter|filter]]''''' with options for > '''''[[Glossary#hp|high pass]]''''' or '''''[[Glossary#low|low pass]]''''' > operation. The two [http://en.wikipedia.org/wiki/Chebyshev_filter > Chebyshev] filters provide faster attenuation of the filtered > '''''[[Glossary#frequency|frequencies]]''''' than [[High Pass Filter]]. > > One unanswered issue is that default Chebyshev I provides > less attenuation than default Butterworth, neither do I think I > can call the default Chebyshev I "sharper" than the default > Butterworth filter (as suggested in the link above). > > > > Gale > > >> > Now if I change my Butterworth first order 1000 Hz LP filter to >> > "Chebyshev I", there is less attenuation than Butterworth >> > (at default 1 dB "Passband Ripple") - look at 5000 Hz for example. >> > As greater attenuation is expected with a Chebyshev than a >> > Butterworth filter, is 1 dB the correct default for "Passband Ripple"? >> > >> > At what points in the stopband part of a Chebyshev filter do you >> > expect a first order rolloff of -6 dB per octave? For example with >> > Chebyshev I Passband Ripple of 1 dB (or Chebyshev II Stopband >> > Ripple of 1 dB), 5000 Hz has a gain of -9 dB, but 1000 Hz has a >> > gain of what looks like -16.5 dB. >> > >> > >> > >> > Gale |