Elliptic filters?

All your LV2 and LADSPA goodness and more.

Moderators: MattKingUSA, khz

Post Reply
User avatar
unfa
Established Member
Posts: 129
Joined: Tue May 17, 2011 10:43 am
Location: Warsaw, Poland
Has thanked: 1 time
Been thanked: 19 times
Contact:

Elliptic filters?

Post by unfa »

I've stumbled upon these while trying to understand how Optimod works.

The seem to have the steepest possible transition from the pass and to the stopband. Could sound pretty cutting edge I guess ;)

Do we have any implentations of these on the Linux audio world? I'm pretty sure SoX has something, but I never managed to use it.

Http://en.m.wikipedia.org/wiki/Elliptic_filter
Http://groups.google.com/forum/m/#!topic/rec.ham-radio
CrocoDuck
Established Member
Posts: 1133
Joined: Sat May 05, 2012 6:12 pm
Been thanked: 17 times

Re: Elliptic filters?

Post by CrocoDuck »

They are one of the most used basic filters, acting as a building block of many EQ and utility filters. Not sure whether you can find a basic implementation. It should be easy to cook your own with Faust.

https://github.com/grame-cncm/faust

(Yep, there are library functions: https://github.com/grame-cncm/faustlibr ... ilters.lib).
CrocoDuck
Established Member
Posts: 1133
Joined: Sat May 05, 2012 6:12 pm
Been thanked: 17 times

Re: Elliptic filters?

Post by CrocoDuck »

I just had a little fun with it. Here a 6th order lowpass:

Code: Select all

declare name "ellipticExample";
declare author "CrocoDuck o'Ducks";
declare copyright "CrocoDuck o'Ducks";
declare version "1.00";
declare license "LGPL";

fi = library("filters.lib");
ma = library("math.lib");


lPassFilter_GUI = fi.lowpass6e(fc)
with {
    fc  = hslider("[0]Cutoff Frequeny [style:knob][unit:Hz]", 2000, 20, 20000, 0.5);
};

process = lPassFilter_GUI;
You can compile it to a standalone JACK program with GTK gui by issuing:

Code: Select all

faust2jack ellipticExample.dsp 
Assuming that you copy the code into a file called ellipticExample.dsp.

You can also compile to many different targets, including LV2:

Code: Select all

faust2alqt               faust2caqtios            faust2ios                faust2mathdoc            faust2paqt               faust2sc                 faust2w32max6
faust2alsa               faust2csound             faust2jack               faust2mathviewer         faust2pdf                faust2sig                faust2w32msp
faust2alsaconsole        faust2dssi               faust2jackconsole        faust2max6               faust2plot               faust2sigviewer          faust2w32puredata
faust2android            faust2dummy              faust2jackinternal       faust2md                 faust2png                faust2smartkeyb          faust2w32vst
faust2androidunity       faust2dummymem           faust2jackrust           faust2msp                faust2pure               faust2sndfile            faust2wasm
faust2api                faust2eps                faust2jackserver         faust2netjackconsole     faust2puredata           faust2supercollider      faust2webaudio
faust2asmjs              faust2faustvst           faust2jaqt               faust2netjackqt          faust2raqt               faust2svg                faust2webaudioasm
faust2atomsnippets       faust2firefox            faust2juce               faust2nodejs             faust2ros                faust2unity              faust2webaudiowasm
faust2au                 faust2gen                faust2ladspa             faust2octave             faust2rosgtk             faust2unitywin           faust2webaudiowast
faust2bela               faust2graph              faust2linuxunity         faust2osxiosunity        faust2rpialsaconsole     faust2vst                
faust2caqt               faust2graphviewer        faust2lv2                faust2owl                faust2rpinetjackconsole  faust2vsti 
User avatar
sadko4u
Established Member
Posts: 986
Joined: Mon Sep 28, 2015 9:03 pm
Has thanked: 2 times
Been thanked: 359 times

Re: Elliptic filters?

Post by sadko4u »

For what purpose do you need elliptic filters?
They nave non-linear amplitude in the frequency passing range and very high phase distortion.
It's not a huge problem to implement them in LSP but... Do you really need them?
FYI, elliptic filter is the same to the Butterworth-chebyshev filter but has additional zeros in the rejecting range, so you can emulate them by using Butterworth-chebyshev filter and adding some notch filters at the end.
LSP (Linux Studio Plugins) Developer and Maintainer.
User avatar
unfa
Established Member
Posts: 129
Joined: Tue May 17, 2011 10:43 am
Location: Warsaw, Poland
Has thanked: 1 time
Been thanked: 19 times
Contact:

Re: Elliptic filters?

Post by unfa »

Whoa! Maybe I can start coding my own plugins with Faust?

I was curious what an elliptic filter would sound like for sound synthesis.

Thank you CrocoDuck for the information!
CrocoDuck
Established Member
Posts: 1133
Joined: Sat May 05, 2012 6:12 pm
Been thanked: 17 times

Re: Elliptic filters?

Post by CrocoDuck »

unfa wrote:Whoa! Maybe I can start coding my own plugins with Faust?
Faust is pretty hot. Guitarix makes extensive use of Faust. I think it is pretty easy to pick up once you realize what a functional programming language is. I have the feeling that Faust is the most convenient way to create audio programs that you can represent as block diagrams. Pretty much, Faust allows you to write the diagram down as text, believe it or not.

If you are interested into it, check out Romain Michon workshops. This one is very good:

https://ccrma.stanford.edu/~rmichon/fau ... ourse2015/

It uses an older version of the language though, which means that functions are spitted in different libraries that are included in a slightly different way. It is very good though, as it contains also basic exposition of important topics in acoustics and DSP. There are more recent ones too:

https://ccrma.stanford.edu/~rmichon/faustTutorials/
https://ccrma.stanford.edu/~rmichon/fau ... hops/2016/
https://ccrma.stanford.edu/~rmichon/faustDay2017/

There also is official documentation and the Faust mailing list.

I think that a basic understanding of physical acoustics and DSP can get you a long way with Faust. And if you need a simple plugin for a particular application (just like in this case), you can cook one in minutes with Faust, as you seen.
Post Reply