contributing an easy-to-use IIR audio filter via LADSPA ACDf plugin
Submitted by Charlie Laub
Link to original bug (#794774)
Description
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
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.
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.
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,
Charlie Laub