[Bug 794774] contributing an easy-to-use IIR audio filter via LADSPA ACDf plugin

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Wed Mar 28 18:13:37 UTC 2018


https://bugzilla.gnome.org/show_bug.cgi?id=794774

Nicolas Dufresne (stormer) <nicolas at ndufresne.ca> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |nicolas at ndufresne.ca

--- Comment #1 from Nicolas Dufresne (stormer) <nicolas at ndufresne.ca> ---
(In reply to Charlie Laub from comment #0)
> I am the developer of a LADSPA plugin known as "ACDf". It can implement all
> of the following filter types via 7 named parameters:
> 
> ACDf filter types and their required parameters:
> TYPE   DESCRIPTION                 REQUIRED PARAMETERS
>  0     gain block                  dB_gain, polarity 
>  1     1st order LP                dB_gain, polarity, Fp
>  2     1st order HP                dB_gain, polarity, Fp
>  3     1st order AP                polarity, Fp
>  4     1st low shelf               Fp, dB_gain
>  5     1st high shelf              Fp, dB_gain
> 21     2nd order LP                dB_gain, polarity, Fp, Qp, 
> 22     2nd order HP                dB_gain, polarity, Fp, Qp
> 23     2nd order AP                polarity, Fp, Qp
> 24     2nd order low shelf         dB_gain, polarity, Fp, Qp
> 25     2nd order high shelf        dB_gain, polarity, Fp, Qp
> 26     parametric EQ, digital form dB_gain, Fp, Qp
> 27     2nd order notch             dB_gain, polarity, Fp, Qp, Fz
> 28     biquadratic filter          dB_gain, polarity, Fp, Qp, Fz, Qz
> 
> The ACDf LADSPA plugin is available under a GPL3 license and is becoming
> quite popular in the DIY audio community. It can be downloaded with its
> supporting documentation, bundled with a couple other plugins I wrote, from
> this web page:
> http://audio.claub.net/LADSPA-plugins.html

GPLv3 (and LGPLv3) is a bit problematic for the GStreamer Project. If it's a
LADPSA (or lv2) plugin, it's not our problem, but when its in our code base, it
is. We only accept contribution under LGPLv2 or looser licence.

> 
> I am currently implementing ACDf via gstreamer's LADSPA plugin capabilities,
> however, I think that it would make IIR filtering must easier for users if
> it was incorporated into gstreamer itself as a gstreamer element. The
> current IIR filtering plugin, audioiirfilter, requires arrays of the
> transfer coefficients as parameters. This is not easy for most users to
> calculate and these cannot be supplied via gst-launch. 

That specific aspect can likely be solved now that GstValueList can be used
from properties. But it does not solve the complexity problem.

> 
> ACDf has 7 named parameters, e.g.:
> 
> PARAMETER     WHAT IT DOES
> filter_type:  indicates which filter type to implement (see below)
> dB_gain:      passband gain for the filter in dB
> polarity:     -1 reverses polarity. polarity is unchanged for any other
> number
> Fop:          sets the frequency of the filter pole in Hz 
> Qp:           sets the Q factor of the filter pole 
> Foz:          sets the frequency of the filter zero in Hz 
> Qz:           sets the Q factor of the filter zero
> 
> As described above, not all parameters are required for every filter type.
> Using these parameters to describing a filter will be more familiar to
> users, and easier to implement, compared to transfer coefficients. 

Even though I'm not expert, I agree that it looks much more manageable then
what we have.

> 
> I would like to contribute the code from ACDf (written in C++) to the
> gstreamer project. It's available at the link provided above. I have no
> experience creating plugins for gstreamer or working on gstreamer code, so I
> can't create a patch or commit myself. I would be happy to work with someone
> who can, and perhaps it is not difficult under the existing LADSPA interface
> in gstreamer. 
> 
> If this is of interest, please post a follow up or contact me. Thanks,

Importing code from ACDf, as it's GPLv3 is just not possible without written
approval to relicence from the original authors.

A second venue, if the existing IIR implementation is suitable of course, would
be to introduce these proporties into the existing audioiirfilter, plus one
property that let user choose between the matrix and these properties. Then you
can do internally the transformation.

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list