After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 698927 - LADSPA improved port to gstreamer 1.0
LADSPA improved port to gstreamer 1.0
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-bad
git master
Other Linux
: Normal enhancement
: 1.1.1
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2013-04-26 09:22 UTC by Deleted Account
Modified: 2013-05-03 10:57 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
LADSPA improved port to gstreamer 1.0 (138.10 KB, patch)
2013-04-26 09:22 UTC, Deleted Account
reviewed Details | Review
make consistency of strdown everywhere (elements) (6.83 KB, patch)
2013-04-27 13:29 UTC, Deleted Account
none Details | Review
_get_type problems and corrrect derivation (40.08 KB, patch)
2013-04-30 00:52 UTC, Deleted Account
none Details | Review
myutils merge and register static (25.29 KB, patch)
2013-04-30 14:21 UTC, Deleted Account
none Details | Review
polishing (26.48 KB, patch)
2013-05-02 12:19 UTC, Deleted Account
none Details | Review
ladspa improved port to gstreamer 1.0 (single patch) (119.42 KB, patch)
2013-05-02 12:24 UTC, Deleted Account
none Details | Review
ladspa improved port to gstreamer 1.0 (single, polished) (119.01 KB, patch)
2013-05-02 14:53 UTC, Deleted Account
reviewed Details | Review
final touches (9.29 KB, patch)
2013-05-03 09:33 UTC, Deleted Account
none Details | Review
ladspa improved port to gstreamer 1.0 (single) (117.62 KB, patch)
2013-05-03 09:37 UTC, Deleted Account
committed Details | Review

Description Deleted Account 2013-04-26 09:22:35 UTC
Created attachment 242525 [details] [review]
LADSPA improved port to gstreamer 1.0

LADSPA improved port to gstreamer 1.0
---------------------------


Hi, i just wanted to share my LADSPA plugin for gstreamer 1.0. Perhaps the old implementation was just poorly documented, and just by that the implementation rendered not very usable, perhaps it was not really channel capable, i don't know, anyway it was not ported to 1.0 so i assume a big patch was expected. Still like a 50% of code is reused mainly for plugin detection, description LRDF tagging, gobject, and very basic LADSPA usage, that code was really nice, the other part is really big change, since it was basing in GstSignalProcessor, which i were told by ensonic to be broken, and better rebase the work on BaseSrc, BaseTransform and BaseSink. As special, the GstLADSPAModule is used because of the dynamic nature of this plugin of plugins and takes care of proper class finalization. At the usual elements level, the GstLADSPASrc is heavily based on audiotestsrc with carefull attention to what can be reused and what not, so is the GstLADSPASink heavily based on fakesink, GstLADSPAFilter is derived from AudioFilter and inspired in audioecho.  All authors are keeping some credit in some way or another in the source files and the elements metadata.

 The patch itself is 139K, unreviewable, but as an apply result it looks good to review.  Consider strongly, that almost 90% of the code is a copy of other accepted code.  It is, it would be easier to just see the old, (discard, mainly as broken and not ported) and see the new implementation.

Enjoy!


---------------------------


IRC talk with ensonic starting the left of GstSignalProcessor in favour of BaseSource, BaseTransform and BaseSink:

[21:11] <ensonic> juanmabc, whats up?
[21:12] <ensonic> juanmabc, don't use the GstSignalprocessor baseclass in bad, it does not work well
[21:12] <juanmabc> yeah, trying to port ladspa
[21:13] <juanmabc> ensonic: alternatives ?
[21:13] <ensonic> juanmabc, okay, I'll try to sumarize
[21:14] <ensonic> juanmabc, gst signal processor is a single class subclassing basetransform, but also driving sources, that does not work well
[21:14] <ensonic> juanmabc, we need separate baseclasses for sources, transforms/filters and sinks
[21:15] <ensonic> this would basically replicat basesrc, basetransform and basesink, the reason we can't use the existing ones is, that some of the ladspa elements have multiple ports
[21:16] <ensonic> now in many cases where they have multiple ports, those are e.g. stereo pairs (which is not query-able on the api)
[21:17] <ensonic> so one (pragmatic) idea would be to actually use basesrc, basetransform and basesink and ignore elemnets that have multiple ports
[21:18] <juanmabc> yeah
[21:18] <ensonic> 2nd step would be to have a list of know port-pairs (e.g. that for ladspa plugin XYZ "in-left" and "in-right" actually form a stereo pair)
[21:18] <ensonic> with this list we can support probably 90% of them
[21:19] <ensonic> I think a list would work as ladspa is sort of superseeded with lv2 and in lv2 we can query channel groups
[21:19] <juanmabc> could i get an stereo input and pass internally each channel to In_R and In_L?
[21:19] <ensonic> I don't expect lots of new ladspa plugins
[21:19] <ensonic> juanmabc, yes
[21:19] <juanmabc> outputing Out_R Out_L again to a stereo output
[21:19] <ensonic> juanmabc, in 1.0 we support non-interleaved audio
[21:19] <juanmabc> that's something
[21:20] <juanmabc> still you can switch the channels in ports, but perhaps on the pipeline?
[21:20] <juanmabc> can't
[21:20] <ensonic> what do you mean by that?
[21:21] <juanmabc> if you want ladspa In_R to Out_L
[21:21] <juanmabc> you do In_R to Out_R internally then some ! swap channels
[21:21] <ensonic> btw. I am leaving in about 10 min, but I am online most of the time otherwise
[21:21] <juanmabc> i thing that basesrc/trns/sink and that could do it
[21:21] <juanmabc> thanks
[21:22] <ensonic> juanmabc, I think the channel swapping could be done with a custom element, but I'd say for most elements we'd like to use the ports as advertised
[21:24] <ensonic> cu
[21:25] <juanmabc> bye, thanks

I could have some issues because i do not really understand what ensonic was meaning with the channel multiport mapping, though it is said on the relevant file with a FIXME and assumed a LADSPA in -> out. The tests i've been running either are lucky or work really great.  If all goes well, lv2 plugins could also take profit of this implementation.


---------------------------


Documentation explaining some basics (i could not test the tagging):

 * SECTION:element-ladspa
 * @short_description: bridge for LADSPA (Linux Audio Developer's Simple Plugin API)
 * @see_also: #GstAudioConvert #GstAudioResample, #GstAudioTestSrc, #GstAutoAudioSink
 * 
 * The LADSPA (Linux Audio Developer's Simple Plugin API) plugin is a bridge
 * for plugins using the <ulink url="http://www.ladspa.org/">LADSPA</ulink> API.
 * It scans all installed LADSPA plugins and registers them as gstreamer
 * elements. If available it can also parse LRDF files and use the metadata for
 * element classification. The functionality you get depends on the LADSPA plugins
 * you have installed.
 * 
 * First off all you can apply not live LADSPA filters without this plugin:
 * 
 * <refsect2>
 * <title>Example LADSPA line without this plugins</title>
 * |[
 * (padsp) listplugins
 * (padsp) analyseplugin cmt.so amp_mono
 * gst-launch -e filesrc location="$myfile" ! decodebin ! audioconvert ! audioresample ! "audio/x-raw,format=S16LE,rate=48000,channels=1" ! wavenc ! filesink location="testin.wav"
 * (padsp) applyplugin testin.wav testout.wav cmt.so amp_mono 2 
 * gst-launch playbin uri=file://"$PWD"/testout.wav
 * ]| Decode any audio file into wav with the format expected for the specific ladspa plugin to be applied, apply the ladspa filter and play it.
 * </refsect2>
 *
 * Now with this plugin:
 *
 * <refsect2>
 * <title>Example LADSPA line with this plugins</title>
 * |[
 * gst-launch autoaudiosrc ! ladspa-cmt-so-amp-mono gain=2 ! ladspa-caps-so-Plate ! ladspa-tap-echo-so-tap-stereo-echo l-delay=500 r-haas-delay=500 ! tee name=myT myT. ! queue ! autoaudiosink myT. ! queue ! audioconvert ! goom ! videoconvert ! xvimagesink pixel-aspect-ratio=3/4
 * ]| Get audio input, filter it through CAPS Plate and TAP Stereo Echo, play it and show a visualization (recommended hearphones).
 * </refsect2>
 *
 * In case you wonder the plugin naming scheme, quoting ladspa.h:
 *   "Plugin types should be identified by file and label rather than by
 *   index or plugin name, which may be changed in new plugin versions."
 * This is really the best way then, and so it is less prone to conflicts.
 *
 * Also it is worth noting that LADSPA provides a control in and out interface,
 * on top of the audio in and out one, so some parameters are readable too.
 *
 * You can see the listing of plugins available with:
 * <refsect2>
 * <title>Inspecting the plugins list</title>
 * |[
 * gst-inspect ladspa
 * ]| List available LADSPA plugins on gstreamer.
 * </refsect2>
 *
 * You can see the parameters of any plugin with:
 * <refsect2>
 * <title>Inspecting the plugins</title>
 * |[
 * gst-inspect ladspa-retro-flange-1208-so-retroFlange
 * ]| List details of the plugin, parameters, range and defaults included.
 * </refsect2>
 *
 * The elements categorize in: 
 * <itemizedlist>
 * <listitem><para>Filter/Effect/Audio/LADSPA:</para>
 * <refsect2>
 * <title>Example Filter/Effect/Audio/LADSPA line with this plugins</title>
 * |[
 * gst-launch filesrc location="$myfile" ! decodebin ! audioconvert ! audioresample ! ladspa-calf-so-Reverb decay-time=15 high-frq-damp=20000 room-size=5 diffusion=1 wet-amount=2 dry-amount=2 pre-delay=50 bass-cut=20000 treble-cut=20000 ! ladspa-tap-echo-so-tap-stereo-echo l-delay=500 r-haas-delay=500 ! autoaudiosink
 * ]| Decode any audio file, filter it through Calf Reverb LADSPA then TAP Stereo Echo, and play it.
 * </refsect2>
 * <refsect2>
 * </listitem>
 * <listitem><para>Source/Audio/LADSPA:</para> 
 * <refsect2>
 * <title>Example Source/Audio/LADSPA line with this plugins</title>
 * |[
 * gst-launch -e ladspasrc-sine-so-sine-fcac frequency=220 amplitude=100 ! audioconvert ! "audio/x-raw,rate=22050" ! autoaudiosink
 * ]| Generate a sine wave with Sine Oscillator (Freq:control, Amp:control), convert it to 22050 Hz and play it.
 * </refsect2>
 * <refsect2>
 * <title>Example Source/Audio/LADSPA line with this plugins</title>
 * |[
 * gst-launch -e ladspasrc-caps-so-Click bpm=240 volume=1 ! autoaudiosink
 * ]| Generate clicks with CAPS Click - Metronome at 240 beats per minute and play it.
 * </refsect2>
 * <refsect2>
 * <title>Example Source/Audio/LADSPA line with this plugins</title>
 * |[
 * gst-launch -e ladspasrc-random-1661-so-random-fcsc-oa ! ladspa-cmt-so-amp-mono gain=1.5 ! ladspa-caps-so-Plate ! tee name=myT myT. ! queue ! autoaudiosink myT. ! queue ! audioconvert ! wavescope ! videoconvert ! autovideosink
 * ]| Generate random wave, filter it trhough Mono Amplifier and Versatile Plate Reverb, and play, while showing, it.
 * </refsect2>
 * </listitem>
 * <listitem><para>Sink/Audio/LADSPA:</para>
 * <refsect2>
 * <title>Example Sink/Audio/LADSPA line with this plugins</title>
 * |[
 * gst-launch -e autoaudiosrc ! ladspa-cmt-so-amp-mono gain=2 ! ladspa-caps-so-Plate ! ladspa-tap-echo-so-tap-stereo-echo l-delay=500 r-haas-delay=500 ! tee name=myT myT. ! audioconvert ! audioresample ! queue ! ladspasink-cmt-so-null-ai dump=true myT. ! audioconvert ! audioresample ! queue ! goom ! videoconvert ! xvimagesink pixel-aspect-ratio=3/4
 * ]| Get audio input, filter it trhough Mono Amplifier, CAPS Plate LADSPA and TAP Stereo Echo, explicitily anulate audio with Null (Audio Input) dumping contents, and play a visualization (recommended hearphones).
 * </refsect2>
 * </listitem>
 * </itemizedlist>
 */


I use also for testing something huge like:

export myfile="some.avi"

GST_PLUGIN_PATH="." gst-launch-1.0 filesrc location="$myfile" ! decodebin ! audioconvert ! audioresample ! ladspa-caps-so-Plate bandwidth=0.999 tail=0.749 damping=1 blend=0.5 ! ladspa-tap-echo-so-tap-stereo-echo ! audioconvert ! ladspa-cmt-so-amp-mono gain=5 ! ladspa-cmt-so-delay-5s delay=3 ! ladspa-cmt-so-amp-mono gain=2 ! autoaudiosink # this is a super pipeline

GST_PLUGIN_PATH="." gst-launch-1.0 ladspasrc-caps-so-Click bpm=60 volume=1 ! tee name=myT myT. ! queue ! autoaudiosink myT. ! queue ! audioconvert ! wavescope ! videoconvert ! xvimagesink pixel-aspect-ratio=3/4

GST_PLUGIN_PATH="." gst-launch-1.0 ladspasrc-random-1661-so-random-fcsc-oa ! "audio/x-raw,rate=48000" ! ladspa-cmt-so-amp-mono gain=2 ! ladspa-caps-so-Plate ! ladspa-tap-echo-so-tap-stereo-echo l-delay=500 r-haas-delay=500 ! tee name=myT myT. ! queue ! autoaudiosink myT. ! queue ! audioconvert ! goom ! videoconvert ! xvimagesink pixel-aspect-ratio=3/4

GST_PLUGIN_PATH="." gst-launch-1.0 ladspasrc-cmt-so-pink-full-frequency ! ladspa-cmt-so-amp-mono gain=2 ! ladspa-caps-so-Plate ! ladspa-tap-echo-so-tap-stereo-echo l-delay=500 r-haas-delay=500 ! tee name=myT myT. ! queue ! autoaudiosink myT. ! queue ! audioconvert ! goom ! videoconvert ! xvimagesink pixel-aspect-ratio=3/4


---------------------------


The naming scheme was really needed since conflicts where happening on the background:

$ gst-inspect-0.10 ladspa
...
344 elements

$ gst-inspect-1.0 ladspa
...
357 elements

note that now, this is in line with:

$ padsp listplugins |grep -vE '\.so'|wc -l
357

The parameter beautification was also needed since it was not really near the user (yes, 0.10 required that ---- in the parameter name, and the description was missing stuff, happening more than one could expect):

$ gst-inspect-0.10 ladspa-tap-stereo-echo
...
R-Haas-Feedback---- : R-Haas-Feedback----
                      flags: readable, writable, controllable
                      Float. Range:               0 -             100 Default:               0
...

$ gst-inspect-1.0 ladspa-tap-echo-so-tap-stereo-echo
...
r-haas-feedback     : R/Haas Feedback [%]
                      flags: readable, writable, controllable
                      Float. Range:               0 -             100 Default:               0 
...


The element naming, ladspa-stuff ladspasrc-stuff and ladspasink-stuff is inspired in the GStreamer tendency (audiotestsrc, autoaudiosink, audioecho).


---------------------------

Here is the listing on my computer for reference:

$ gst-inspect-1.0 ladspa

Plugin Details:
  Name:			ladspa
  Description:		LADSPA plugin
  Filename:		./.libs/libgstladspa.so
  Version:		1.0.6
  License:		LGPL
  Source module:	gst-plugins-bad
  Source release date:	2013-03-22
  Binary package:	GStreamer Bad Plug-ins source release
  Origin URL:		Unknown package origin

  ladspa-tape-delay-1211-so-tapeDelay: Tape Delay Simulation
  ladspa-guitarix-amp-so-guitarix-amp: guitarix_amp
  ladspa-retro-flange-1208-so-retroFlange: Retro Flanger
  ladspa-amp-1654-so-amp-gaia-oa: Amplifier (GAIA)
  ladspa-amp-1654-so-amp-gcia-oa: Amplifier (GCIA)
  ladspa-mvclpf24-so-Mvclpf-1: Mvclpf-1   Digital implementation of the VC filter invented by R.A.Moog
  ladspa-mvclpf24-so-Mvclpf-2: Mvclpf-2   Digital implementation of the VC filter invented by R.A.Moog
  ladspa-mvclpf24-so-Mvclpf-3: Mvclpf-3   Digital implementation of the VC filter invented by R.A.Moog
  ladspa-mvclpf24-so-Mvclpf-4: Mvclpf-4   Digital implementation of the VC filter invented by R.A.Moog
  ladspa-square-1643-so-square-fa-oa: Bandlimited Square Oscillator (FA)
  ladspasrc-square-1643-so-square-fc-oa: Bandlimited Square Oscillator (FC)
  ladspa-lcr-delay-1436-so-lcrDelay: L/C/R Delay
  ladspa-gong-beater-1439-so-gongBeater: Gong beater
  ladspa-filters-so-Parametric1: 4-band parametric filter
  ladspa-amp-so-amp-mono: Mono Amplifier
  ladspa-amp-so-amp-stereo: Stereo Amplifier
  ladspa-tap-reverb-so-tap-reverb: TAP Reverberator
  ladspa-wave-terrain-1412-so-waveTerrain: Wave Terrain Oscillator
  ladspa-harmonic-gen-1220-so-harmonicGen: Harmonic generator
  ladspa-se4-1883-so-se4: SE4
  ladspa-guitarix-distortion-so-guitarix-distortion: guitarix_distortion
  ladspasrc-impulse-1885-so-impulse-fc: Nonbandlimited single-sample impulses (Frequency: Control)
  ladspa-cs-chorus-so-Chorus1: Chorus1 - Based on CSound orchestra by Sean Costello
  ladspa-cs-chorus-so-Chorus2: Chorus2 - Based on CSound orchestra by Sean Costello
  ladspa-cs-chorus-so-TripleChorus: Triple chorus
  ladspa-sequencer64-1675-so-sequencer64: Analogue Style 64 Step Sequencer
  ladspa-chebstortion-1430-so-chebstortion: Chebyshev distortion
  ladspa-vco-sawpulse-so-Pulse-VCO: Pulse-VCO  --  Anti-aliased oscillator
  ladspa-vco-sawpulse-so-Saw-VCO: Saw-VCO  --  Anti-aliased oscillator
  ladspa-vco-sawpulse-so-Rec-VCO: Rec-VCO  --  Anti-aliased oscillator
  ladspa-hermes-filter-1200-so-hermesFilter: Hermes Filter
  ladspa-pitch-scale-1193-so-pitchScale: Pitch Scaler
  ladspa-pulse-1645-so-pulse-fapa-oa: Bandlimited Variable Width Pulse Oscillator (FAPA)
  ladspa-pulse-1645-so-pulse-fapc-oa: Bandlimited Variable Width Pulse Oscillator (FAPC)
  ladspa-pulse-1645-so-pulse-fcpa-oa: Bandlimited Variable Width Pulse Oscillator (FCPA)
  ladspasrc-pulse-1645-so-pulse-fcpc-oa: Bandlimited Variable Width Pulse Oscillator (FCPC)
  ladspa-quantiser20-2027-so-quantiser20: Quantiser (20 Steps)
  ladspa-tap-deesser-so-tap-deesser: TAP DeEsser
  ladspa-tap-pitch-so-tap-pitch: TAP Pitch Shifter
  ladspa-dj-eq-1901-so-dj-eq-mono: DJ EQ (mono)
  ladspa-dj-eq-1901-so-dj-eq: DJ EQ
  ladspa-mod-delay-1419-so-modDelay: Modulatable delay
  ladspa-sinus-wavewrapper-1198-so-sinusWavewrapper: Sinus wavewrapper
  ladspa-inv-1429-so-inv: Inverter
  ladspa-tap-vibrato-so-tap-vibrato: TAP Vibrato
  ladspa-bandpass-a-iir-1893-so-bandpass-a-iir: Glame Bandpass Analog Filter
  ladspa-foverdrive-1196-so-foverdrive: Fast overdrive
  ladspa-svf-1214-so-svf: State Variable Filter
  ladspa-freq-tracker-1418-so-freqTracker: Frequency tracker
  ladspa-dj-flanger-1438-so-djFlanger: DJ flanger
  ladspa-autotalent-so-autotalent: Autotalent
  ladspa-delay-1898-so-delay-n: Simple delay line, noninterpolating
  ladspa-delay-1898-so-delay-l: Simple delay line, linear interpolation
  ladspa-delay-1898-so-delay-c: Simple delay line, cubic spline interpolation
  ladspa-giant-flange-1437-so-giantFlange: Giant flange
  ladspa-comb-1887-so-comb-n: Comb delay line, noninterpolating
  ladspa-comb-1887-so-comb-l: Comb delay line, linear interpolation
  ladspa-comb-1887-so-comb-c: Comb delay line, cubic spline interpolation
  ladspa-sum-1665-so-sum-iaia-oa: Signal Sum (IAIA)
  ladspa-sum-1665-so-sum-iaic-oa: Signal Sum (IAIC)
  ladspasrc-sum-1665-so-sum-icic-oc: Signal Sum (ICIC)
  ladspa-adsr-1680-so-adsr-g+t: ADSR Envelope with Gate and Trigger
  ladspa-highpass-iir-1890-so-highpass-iir: Glame Highpass Filter
  ladspa-crossover-dist-1404-so-crossoverDist: Crossover distortion
  ladspa-libwasp-xshaper-so-XShaperM: X-Shaper (mono)
  ladspa-libwasp-xshaper-so-XShaperS: X-Shaper (stereo)
  ladspa-alias-1407-so-alias: Aliasing
  ladspa-valve-1209-so-valve: Valve saturation
  ladspa-tap-reflector-so-tap-reflector: TAP Reflector
  ladspa-latency-1914-so-artificialLatency: Artificial latency
  ladspa-dc-remove-1207-so-dcRemove: DC Offset Remover
  ladspa-comb-1190-so-comb: Comb Filter
  ladspa-sync-pulse-2023-so-syncpulse-fapaga-oa: Clock Pulse Oscillator with Gate (FAPAGA)
  ladspa-sync-pulse-2023-so-syncpulse-fcpcga-oa: Clock Pulse Oscillator with Gate (FCPCGA)
  ladspa-tap-dynamics-st-so-tap-dynamics-st: TAP Dynamics (St)
  ladspa-flanger-1191-so-flanger: Flanger
  ladspa-lowpass-iir-1891-so-lowpass-iir: Glame Lowpass Filter
  ladspasrc-noise-so-noise-white: White Noise Source
  ladspa-ambisonic3-so-Ambisonics-31-panner: AMB order 3,1 panner
  ladspa-ambisonic3-so-Ambisonics-31-rotator: AMB order 3,1 rotator
  ladspa-ambisonic3-so-Ambisonics-33-panner: AMB order 3,3 panner
  ladspa-ambisonic3-so-Ambisonics-33-rotator: AMB order 3,3 rotator
  ladspa-quantiser50-2028-so-quantiser50: Quantiser (50 Steps)
  ladspa-notch-iir-1894-so-notch-iir: Mag's Notch Filter
  ladspasrc-analogue-osc-1416-so-analogueOsc: Analogue Oscillator
  ladspa-zm1-1428-so-zm1: z-1
  ladspa-sc4-1882-so-sc4: SC4
  ladspa-step-muxer-1212-so-stepMuxer: Step Demuxer
  ladspa-quantiser100-2029-so-quantiser100: Quantiser (100 Steps)
  ladspa-adsr-1653-so-adsr: ADSR Envelope
  ladspa-caps-so-Eq: C* Eq - 10-band equalizer
  ladspa-caps-so-Eq2x2: C* Eq2x2 - stereo 10-band equalizer
  ladspa-caps-so-Compress: C* Compress - Mono compressor
  ladspa-caps-so-Pan: C* Pan - Pan and width
  ladspa-caps-so-PreampIII: C* PreampIII - Tube preamp emulation
  ladspa-caps-so-PreampIV: C* PreampIV - Tube preamp emulation + tone controls
  ladspa-caps-so-ToneStack: C* ToneStack - Tone stack emulation
  ladspa-caps-so-ToneStackLT: C* ToneStackLT - Tone stack emulation, lattice filter 44.1
  ladspa-caps-so-AmpIII: C* AmpIII - Tube amp
  ladspa-caps-so-AmpIV: C* AmpIV - Tube amp + tone controls
  ladspa-caps-so-AmpV: C* AmpV - Tube amp
  ladspa-caps-so-AmpVTS: C* AmpVTS - Tube amp + Tone stack
  ladspa-caps-so-CabinetI: C* CabinetI - Loudspeaker cabinet emulation
  ladspa-caps-so-CabinetII: C* CabinetII - Refined loudspeaker cabinet emulation
  ladspa-caps-so-Clip: C* Clip - Hard clipper, 8x oversampled
  ladspa-caps-so-ChorusI: C* ChorusI - Mono chorus/flanger
  ladspa-caps-so-StereoChorusI: C* StereoChorusI - Stereo chorus/flanger
  ladspa-caps-so-ChorusII: C* ChorusII - Mono chorus/flanger modulated by a fractal
  ladspa-caps-so-StereoChorusII: C* StereoChorusII - Stereo chorus/flanger modulated by a fractal
  ladspa-caps-so-PhaserI: C* PhaserI - Mono phaser
  ladspa-caps-so-PhaserII: C* PhaserII - Mono phaser modulated by a Lorenz fractal
  ladspa-caps-so-SweepVFI: C* SweepVFI - Resonant filter swept by a Lorenz fractal
  ladspa-caps-so-SweepVFII: C* SweepVFII - Resonant filter, f and Q swept by a Lorenz fractal
  ladspa-caps-so-AutoWah: C* AutoWah - Resonant envelope-following filter
  ladspa-caps-so-Scape: C* Scape - Stereo delay + Filters
  ladspasrc-caps-so-VCOs: C* VCOs - Virtual 'analogue' oscillator
  ladspasrc-caps-so-VCOd: C* VCOd - Double VCO with detune and hard sync options
  ladspasrc-caps-so-CEO: C* CEO - Chief Executive Oscillator
  ladspasrc-caps-so-Sin: C* Sin - Sine wave generator
  ladspasrc-caps-so-White: C* White - White noise generator
  ladspasrc-caps-so-Lorenz: C* Lorenz - The sound of a Lorenz attractor
  ladspasrc-caps-so-Roessler: C* Roessler - The sound of a Roessler attractor
  ladspa-caps-so-JVRev: C* JVRev - Stanford-style reverb from STK
  ladspa-caps-so-Plate: C* Plate - Versatile plate reverb
  ladspa-caps-so-Plate2x2: C* Plate2x2 - Versatile plate reverb, stereo inputs
  ladspasrc-caps-so-Click: C* Click - Metronome
  ladspasrc-caps-so-Dirac: C* Dirac - One-sample impulse generator
  ladspa-caps-so-HRTF: C* HRTF - Head-related transfer function at elevation 0
  ladspa-karaoke-1409-so-karaoke: Karaoke
  ladspa-sequencer16-1677-so-sequencer16: Analogue Style 16 Step Sequencer
  ladspa-diode-1185-so-diode: Diode Processor
  ladspa-xfade-1915-so-xfade: Crossfade
  ladspa-xfade-1915-so-xfade4: Crossfade (4 outs)
  ladspa-fast-lookahead-limiter-1913-so-fastLookaheadLimiter: Fast Lookahead limiter
  ladspa-tap-tremolo-so-tap-tremolo: TAP Tremolo
  ladspa-delayorama-1402-so-delayorama: Delayorama
  ladspa-shaper-1187-so-shaper: Wave shaper
  ladspa-tap-doubler-so-tap-doubler: TAP Fractal Doubler
  ladspa-const-1909-so-const: Constant Signal Generator
  ladspa-hard-limiter-1413-so-hardLimiter: Hard Limiter
  ladspa-matrix-ms-st-1421-so-matrixMSSt: Matrix: MS to Stereo
  ladspa-ls-filter-1908-so-lsFilter: LS Filter
  ladspa-gverb-1216-so-gverb: GVerb
  ladspa-am-pitchshift-1433-so-amPitchshift: AM pitchshifter
  ladspa-sifter-1210-so-sifter: Signal sifter
  ladspa-gsm-1215-so-gsm: GSM simulator
  ladspa-ambisonic2-so-Ambisonics-21-panner: AMB order 2,1 panner
  ladspa-ambisonic2-so-Ambisonics-21-rotator: AMB order 2,1 rotator
  ladspa-ambisonic2-so-Ambisonics-22-panner: AMB order 2,2 panner
  ladspa-ambisonic2-so-Ambisonics-22-rotator: AMB order 2,2 rotator
  ladspa-matrix-st-ms-1420-so-matrixStMS: Matrix: Stereo to MS
  ladspa-foldover-1213-so-foldover: Foldover distortion
  ladspa-satan-maximiser-1408-so-satanMaximiser: Barry's Satan Maximiser
  ladspa-tap-eq-so-tap-equalizer: TAP Equalizer
  ladspa-ambisonic1-so-Ambisonics-11-mono-panner: AMB order 1,1 mono panner
  ladspa-ambisonic1-so-Ambisonics-11-stereo-panner: AMB order 1,1 stereo panner
  ladspa-ambisonic1-so-Ambisonics-11-rotator: AMB order 1,1 rotator
  ladspa-ambisonic1-so-Ambisonics-11-square-decoder: AMB order 1,1 square decoder
  ladspa-ambisonic1-so-Ambisonics-11-hexagon-decoder: AMB order 1,1 hexagon decoder
  ladspa-ambisonic1-so-Ambisonics-11-cube-decoder: AMB order 1,1 cube decoder
  ladspa-guitarix-IR-so-guitarix-IR: guitarix_IR
  ladspa-g2reverb-so-G2reverb: Stereo reverb
  ladspa-bode-shifter-1431-so-bodeShifter: Bode frequency shifter
  ladspa-comb-splitter-1411-so-combSplitter: Comb Splitter
  ladspa-matrix-spatialiser-1422-so-matrixSpatialiser: Matrix Spatialiser
  ladspa-sync-square-1678-so-syncsquare-faga-oa: Clock Oscillator with Gate (FAGA)
  ladspa-sync-square-1678-so-syncsquare-fcga-oa: Clock Oscillator with Gate (FCGA)
  ladspa-pointer-cast-1910-so-pointerCastDistortion: Pointer cast distortion
  ladspa-fad-delay-1192-so-fadDelay: Fractionally Addressed Delay Line
  ladspa-tap-pinknoise-so-tap-pinknoise: TAP Pink/Fractal Noise
  ladspa-tap-dynamics-m-so-tap-dynamics-m: TAP Dynamics (M)
  ladspa-triple-para-1204-so-triplePara: Triple band parametric with shelves
  ladspa-tap-autopan-so-tap-autopan: TAP AutoPanner
  ladspa-decay-1886-so-decay: Exponential signal decay
  ladspa-tap-eqbw-so-tap-equalizer-bw: TAP Equalizer/BW
  ladspa-dyson-compress-1403-so-dysonCompress: Dyson compressor
  ladspa-tap-rotspeak-so-tap-rotspeak: TAP Rotary Speaker
  ladspa-delay-so-delay-5s: Simple Delay Line
  ladspa-guitarix-freeverb-so-guitarix-freeverb: guitarix_freeverb
  ladspa-sequencer32-1676-so-sequencer32: Analogue Style 32 Step Sequencer
  ladspa-gong-1424-so-gong: Gong model
  ladspa-revdelay-1605-so-revdelay: Reverse Delay (5s max)
  ladspa-declip-1195-so-declip: Declipper
  ladspa-dahdsr-2021-so-dahdsr-g+t-audio: DAHDSR Envelope with Gate and Trigger (Audio-Rate Inputs)
  ladspa-dahdsr-2021-so-dahdsr-g+t-control: DAHDSR Envelope with Gate and Trigger (Control Inputs)
  ladspasrc-dahdsr-2021-so-dahdsr-cg+t-control: DAHDSR Envelope with Control Gate and Trigger (Control Inputs)
  ladspa-cs-phaser-so-Phaser1: Phaser1 - Similar to CSound's phaser1 by Sean Costello
  ladspa-cs-phaser-so-Phaser1+LFO: Phaser1 with LFO
  ladspa-rate-shifter-1417-so-rateShifter: Rate shifter
  ladspa-guitarix-so-Simulators: guitarix
  ladspa-phasers-1217-so-lfoPhaser: LFO Phaser
  ladspa-phasers-1217-so-fourByFourPole: 4 x 4 pole allpass
  ladspa-phasers-1217-so-autoPhaser: Auto phaser
  ladspa-pitch-scale-1194-so-pitchScaleHQ: Higher Quality Pitch Scaler
  ladspa-difference-2030-so-difference-iama-oa: Signal Difference (IAMA)
  ladspa-difference-2030-so-difference-iamc-oa: Signal Difference (IAMC)
  ladspa-difference-2030-so-difference-icma-oa: Signal Difference (ICMA)
  ladspasrc-difference-2030-so-difference-icmc-oc: Signal Difference (ICMC)
  ladspa-cmt-so-bf2cube: Ambisonic Decoder (B-Format to Cube)
  ladspa-cmt-so-bf2quad: Ambisonic Decoder (B-Format to Quad)
  ladspa-cmt-so-bf2stereo: Ambisonic Decoder (B-Format to Stereo)
  ladspa-cmt-so-fmh2oct: Ambisonic Decoder (FMH-Format to Octagon)
  ladspa-cmt-so-encode-bformat: Ambisonic Encoder (B-Format)
  ladspa-cmt-so-encode-fmh: Ambisonic Encoder (FMH-Format)
  ladspa-cmt-so-bf-rotate-z: Ambisonic Rotation (B-Format, Horizontal)
  ladspa-cmt-so-fmh-rotate-z: Ambisonic Rotation (FMH-Format, Horizontal)
  ladspa-cmt-so-amp-mono: Amplifier (Mono)
  ladspa-cmt-so-amp-stereo: Amplifier (Stereo)
  ladspa-cmt-so-am: Amplitude Modulator
  ladspasrc-cmt-so-analogue: Analogue Voice
  ladspa-cmt-so-canyon-delay: Canyon Delay
  ladspa-cmt-so-disintegrator: Disintegrator
  ladspa-cmt-so-sledgehammer: Dynamic Sledgehammer
  ladspa-cmt-so-delay-0-01s: Echo Delay Line (Maximum Delay 0.01s)
  ladspa-cmt-so-delay-0-1s: Echo Delay Line (Maximum Delay 0.1s)
  ladspa-cmt-so-delay-1s: Echo Delay Line (Maximum Delay 1s)
  ladspa-cmt-so-delay-5s: Echo Delay Line (Maximum Delay 5s)
  ladspa-cmt-so-delay-60s: Echo Delay Line (Maximum Delay 60s)
  ladspasink-cmt-so-track-max-peak: Envelope Tracker (Maximum Peak)
  ladspasink-cmt-so-track-max-rms: Envelope Tracker (Maximum RMS)
  ladspasink-cmt-so-track-peak: Envelope Tracker (Peak)
  ladspasink-cmt-so-track-rms: Envelope Tracker (RMS)
  ladspa-cmt-so-fmh2bf: FMH-Format to B-Format (Discards RSTUV Channels)
  ladspa-cmt-so-fbdelay-0-01s: Feedback Delay Line (Maximum Delay 0.01s)
  ladspa-cmt-so-fbdelay-0-1s: Feedback Delay Line (Maximum Delay 0.1s)
  ladspa-cmt-so-fbdelay-1s: Feedback Delay Line (Maximum Delay 1s)
  ladspa-cmt-so-fbdelay-5s: Feedback Delay Line (Maximum Delay 5s)
  ladspa-cmt-so-fbdelay-60s: Feedback Delay Line (Maximum Delay 60s)
  ladspa-cmt-so-freeverb3: Freeverb (Version 3)
  ladspa-cmt-so-grain-scatter: Granular Scatter Processor
  ladspa-cmt-so-hard-gate: Hard Gate
  ladspa-cmt-so-hpf: High Pass Filter (One Pole)
  ladspa-cmt-so-identity-audio: Identity (Audio)
  ladspasrc-cmt-so-identity-control: Identity (Control)
  ladspa-cmt-so-lofi: Lo Fi
  ladspasrc-cmt-so-logistic: Logistic Map Control Generator
  ladspa-cmt-so-lpf: Low Pass Filter (One Pole)
  ladspa-cmt-so-mixer: Mixer (Stereo to Mono)
  ladspasrc-cmt-so-noise-source-white: Noise Source (White)
  ladspasink-cmt-so-null-ai: Null (Audio Input)
  ladspasrc-cmt-so-null-ao: Null (Audio Output)
  ladspasrc-cmt-so-null-ci: Null (Control Input)
  ladspasrc-cmt-so-null-co: Null (Control Output)
  ladspasrc-cmt-so-organ: Organ
  ladspasink-cmt-so-peak: Peak Monitor
  ladspasrc-cmt-so-phasemod: Phase Modulated Voice
  ladspasrc-cmt-so-pink-interpolated-audio: Pink Noise (Interpolated)
  ladspasrc-cmt-so-pink-full-frequency: Pink Noise (full frequency range)
  ladspasrc-cmt-so-pink-sh: Pink Noise (sample and hold)
  ladspa-cmt-so-compress-peak: Simple Compressor (Peak Envelope Tracking)
  ladspa-cmt-so-compress-rms: Simple Compressor (RMS Envelope Tracking)
  ladspa-cmt-so-expand-peak: Simple Expander (Peak Envelope Tracking)
  ladspa-cmt-so-expand-rms: Simple Expander (RMS Envelope Tracking)
  ladspa-cmt-so-limit-peak: Simple Limiter (Peak Envelope Tracking)
  ladspa-cmt-so-limit-rms: Simple Limiter (RMS Envelope Tracking)
  ladspa-cmt-so-sine-faaa: Sine Oscillator (Freq:audio, Amp:audio)
  ladspa-cmt-so-sine-faac: Sine Oscillator (Freq:audio, Amp:control)
  ladspa-cmt-so-sine-fcaa: Sine Oscillator (Freq:control, Amp:audio)
  ladspasrc-cmt-so-sine-fcac: Sine Oscillator (Freq:control, Amp:control)
  ladspasrc-cmt-so-syndrum: Syn Drum
  ladspa-cmt-so-vcf303: VCF 303
  ladspa-cmt-so-wshape-sine: Wave Shaper (Sine-Based)
  ladspa-tap-limiter-so-tap-limiter: TAP Scaling Limiter
  ladspa-surround-encoder-1401-so-surroundEncoder: Surround matrix encoder
  ladspa-sc2-1426-so-sc2: SC2
  ladspa-mvchpf24-so-Mvchpf-1: Mvchpf-1   Digital implementation of the VC HP filter invented by R.A. Moog
  ladspa-gate-1410-so-gate: Gate
  ladspa-bandpass-iir-1892-so-bandpass-iir: Glame Bandpass Filter
  ladspa-sc4m-1916-so-sc4m: SC4 mono
  ladspa-ladspa-guitarix-so-guitarix-amp: Guitarix Amp
  ladspa-ladspa-guitarix-so-guitarix-fx: Guitarix Stereo Fx
  ladspa-guitarix-echo-so-guitarix-echo: guitarix_echo
  ladspasrc-interpolator-1660-so-interpolator: Control to Audio Interpolator
  ladspa-ratio-2034-so-ratio-nada-oa: Signal Ratio (NADA)
  ladspa-ratio-2034-so-ratio-nadc-oa: Signal Ratio (NADC)
  ladspa-ratio-2034-so-ratio-ncda-oa: Signal Ratio (NCDA)
  ladspasrc-ratio-2034-so-ratio-ncdc-oc: Signal Ratio (NCDC)
  ladspa-filter-so-lpf: Simple Low Pass Filter
  ladspa-filter-so-hpf: Simple High Pass Filter
  ladspa-butterworth-1902-so-bwxover-iir: Glame Butterworth X-over Filter
  ladspa-butterworth-1902-so-buttlow-iir: GLAME Butterworth Lowpass
  ladspa-butterworth-1902-so-butthigh-iir: GLAME Butterworth Highpass
  ladspa-tracker-2025-so-tracker-gaaadaia-oa: Signal Tracker (Audio Rates)
  ladspa-tracker-2025-so-tracker-gaacdcia-oa: Signal Tracker (Control Rates)
  ladspa-mbeq-1197-so-mbeq: Multiband EQ
  ladspa-blvco-so-Pulse-VCO: Pulse-VCO  --  Anti-aliased oscillator
  ladspa-blvco-so-Saw-VCO: Saw-VCO  --  Anti-aliased oscillator
  ladspa-blvco-so-Rec-VCO: Rec-VCO  --  Anti-aliased oscillator
  ladspa-tap-chorusflanger-so-tap-chorusflanger: TAP Chorus/Flanger
  ladspa-transient-1206-so-transient: Transient mangler
  ladspa-sine-so-sine-faaa: Sine Oscillator (Freq:audio, Amp:audio)
  ladspa-sine-so-sine-faac: Sine Oscillator (Freq:audio, Amp:control)
  ladspa-sine-so-sine-fcaa: Sine Oscillator (Freq:control, Amp:audio)
  ladspasrc-sine-so-sine-fcac: Sine Oscillator (Freq:control, Amp:control)
  ladspa-vynil-1905-so-vynil: VyNil (Vinyl Effect)
  ladspa-lp4pole-1671-so-lp4pole-faraia-oa: 4 Pole Low-Pass Filter with Resonance (FARAIA)
  ladspa-lp4pole-1671-so-lp4pole-fcrcia-oa: 4 Pole Low-Pass Filter with Resonance (FCRCIA)
  ladspa-ringmod-1188-so-ringmod-2i1o: Ringmod with two inputs
  ladspa-ringmod-1188-so-ringmod-1i1o1l: Ringmod with LFO
  ladspa-random-1661-so-random-fasa-oa: Random Wave Generator (FASA)
  ladspa-random-1661-so-random-fasc-oa: Random Wave Generator (FASC)
  ladspa-random-1661-so-random-fcsa-oa: Random Wave Generator (FCSA)
  ladspasrc-random-1661-so-random-fcsc-oa: Random Wave Generator (FCSC)
  ladspa-libwasp-noisifier-so-NoisifierM: Noisifier (mono)
  ladspa-libwasp-noisifier-so-NoisifierS: Noisifier (stereo)
  ladspa-multivoice-chorus-1201-so-multivoiceChorus: Multivoice Chorus
  ladspasrc-sin-cos-1881-so-sinCos: Sine + cosine oscillator
  ladspa-sawtooth-1641-so-sawtooth-fa-oa: Bandlimited Sawtooth Oscillator (FA)
  ladspasrc-sawtooth-1641-so-sawtooth-fc-oa: Bandlimited Sawtooth Oscillator (FC)
  ladspa-sc1-1425-so-sc1: SC1
  ladspa-split-1406-so-split: Mono to Stereo splitter
  ladspa-tap-sigmoid-so-tap-sigmoid: TAP Sigmoid Booster
  ladspa-fmod-1656-so-fmod-fama-oa: Frequency Modulator (FAMA)
  ladspa-fmod-1656-so-fmod-famc-oa: Frequency Modulator (FAMC)
  ladspa-fmod-1656-so-fmod-fcma-oa: Frequency Modulator (FCMA)
  ladspasrc-fmod-1656-so-fmod-fcmc-oc: Frequency Modulator (FCMC)
  ladspa-hilbert-1440-so-hilbert: Hilbert transformer
  ladspa-bode-shifter-cv-1432-so-bodeShifterCV: Bode frequency shifter (CV)
  ladspa-sc3-1427-so-sc3: SC3
  ladspa-branch-1673-so-branch-ia-oaoa: Signal Branch (IA)
  ladspasrc-branch-1673-so-branch-ic-ococ: Signal Branch (IC)
  ladspa-ambisonic0-so-Tricardioid-to-AMB: Three cardioids to AMB matrix
  ladspa-ambisonic0-so-Virtualmic: Virtual stereo microphone
  ladspa-triangle-1649-so-triangle-fasa-oa: Bandlimited Variable Slope Triangle Oscillator (FASA)
  ladspa-triangle-1649-so-triangle-fasc-oa: Bandlimited Variable Slope Triangle Oscillator (FASC)
  ladspa-triangle-1649-so-triangle-fcsa-oa: Bandlimited Variable Slope Triangle Oscillator (FCSA)
  ladspasrc-triangle-1649-so-triangle-fcsc-oa: Bandlimited Variable Slope Triangle Oscillator (FCSC)
  ladspa-valve-rect-1405-so-valveRect: Valve rectifier
  ladspa-tap-echo-so-tap-stereo-echo: TAP Stereo Echo
  ladspa-plate-1423-so-plate: Plate reverb
  ladspa-guitarix-compressor-so-guitarix-compressor: guitarix_compressor
  ladspa-product-1668-so-product-iaia-oa: Signal Product (IAIA)
  ladspa-product-1668-so-product-iaic-oa: Signal Product (IAIC)
  ladspasrc-product-1668-so-product-icic-oc: Signal Product (ICIC)
  ladspa-tap-tubewarmth-so-tap-tubewarmth: TAP TubeWarmth
  ladspa-calf-so-Filter: Calf Filter LADSPA
  ladspa-calf-so-Filterclavier: Calf Filterclavier LADSPA
  ladspa-calf-so-Flanger: Calf Flanger LADSPA
  ladspa-calf-so-Reverb: Calf Reverb LADSPA
  ladspa-calf-so-VintageDelay: Calf Vintage Delay LADSPA
  ladspa-calf-so-RotarySpeaker: Calf Rotary Speaker LADSPA
  ladspa-calf-so-Phaser: Calf Phaser LADSPA
  ladspa-calf-so-MultiChorus: Calf MultiChorus LADSPA
  ladspa-calf-so-Compressor: Calf Compressor LADSPA
  ladspa-single-para-1203-so-singlePara: Single band parametric
  ladspa-smooth-decimate-1414-so-smoothDecimate: Smooth Decimator
  ladspa-fm-osc-1415-so-fmOsc: FM Oscillator
  ladspa-divider-1186-so-divider: Audio Divider (Suboctave Generator)
  ladspa-decimator-1202-so-decimator: Decimator
  ladspa-imp-1199-so-imp: Impulse convolver
  ladspa-amp-1181-so-amp: Simple amplifier
  ladspa-libwasp-booster-so-BoosterM: Clipping Booster (mono)
  ladspa-libwasp-booster-so-BoosterS: Clipping Booster (stereo)
  ladspa-guitarix-crybaby-so-guitarix-crybaby: guitarix_crybaby
  ladspa-allpass-1895-so-allpass-n: Allpass delay line, noninterpolating
  ladspa-allpass-1895-so-allpass-l: Allpass delay line, linear interpolation
  ladspa-allpass-1895-so-allpass-c: Allpass delay line, cubic spline interpolation

  357 features:
  +-- 357 elements

Here is the listing of one filter for reference too, this one is even special cause does a mono to stereo, and not just keeps the channels and filters, it works great:

$ gst-inspect-1.0 ladspa-caps-so-Plate
Factory Details:
  Rank:         none (0)
  Long-name:            C* Plate - Versatile plate reverb
  Klass:                Filter/Effect/Audio/LADSPA
  Description:          C* Plate - Versatile plate reverb
  Author:               Tim Goetze <tim@quitte.de>, Juan Manuel Borges Caño <juanmabcmail@gmail.com>, Andy Wingo <wingo at pobox.com>, Steve Baker <stevebaker_org@yahoo.co.uk>, Erik Walthinsen <omega@cse.ogi.edu>, Stefan Kost <ensonic@users.sf.net> (audiotestsrc), Wim Taymans <wim@fluendo.com> (fakesink)

Plugin Details:
  Name:                 ladspa
  Description:          LADSPA plugin
  Filename:             ./.libs/libgstladspa.so
  Version:              1.0.6
  License:              LGPL
  Source module:        gst-plugins-bad
  Source release date:  2013-03-22
  Binary package:       GStreamer Bad Plug-ins source release
  Origin URL:           Unknown package origin

GObject
 +----GInitiallyUnowned
       +----GstObject
             +----GstElement
                   +----GstBaseTransform
                         +----GstAudioFilter
                               +----ladspa-caps-so-Plate

Pad Templates:
  SRC template: 'src'
    Availability: Always
    Capabilities:
      audio/x-raw
                 format: F32LE
               channels: 2
                   rate: [ 1, 2147483647 ]
                 layout: interleaved

  SINK template: 'sink'
    Availability: Always
    Capabilities:
      audio/x-raw
                 format: F32LE
               channels: 1
                   rate: [ 1, 2147483647 ]
                 layout: interleaved


Element Flags:
  no flags set

Element Implementation:
  Has change_state() function: gst_audio_filter_change_state

Element has no clocking capabilities.
Element has no indexing capabilities.
Element has no URI handling capabilities.

Pads:
  SINK: 'sink'
    Implementation:
      Has chainfunc(): gst_base_transform_chain
      Has custom eventfunc(): gst_base_transform_sink_event
      Has custom queryfunc(): gst_base_transform_query
      Has custom iterintlinkfunc(): gst_pad_iterate_internal_links_default
    Pad Template: 'sink'
  SRC: 'src'
    Implementation:
      Has getrangefunc(): gst_base_transform_getrange
      Has custom eventfunc(): gst_base_transform_src_event
      Has custom queryfunc(): gst_base_transform_query
      Has custom iterintlinkfunc(): gst_pad_iterate_internal_links_default
    Pad Template: 'src'

Element Properties:
  name                : The name of the object
                        flags: readable, writable
                        String. Default: "ladspa-caps-so-plate0"
  parent              : The parent of the object
                        flags: readable, writable
                        Object of type "GstObject"
  qos                 : Handle Quality-of-Service events
                        flags: readable, writable
                        Boolean. Default: false
  bandwidth           : bandwidth
                        flags: readable, writable, controllable
                        Float. Range:           0.005 -           0.999 Default:           0.502 
  tail                : tail
                        flags: readable, writable, controllable
                        Float. Range:               0 -           0.749 Default:          0.3745 
  damping             : damping
                        flags: readable, writable, controllable
                        Float. Range:          0.0005 -               1 Default:        0.250375 
  blend               : blend
                        flags: readable, writable, controllable
                        Float. Range:               0 -               1 Default:            0.25 


---------------------------


I don't know if you should take the time to review it, which could take long, assuming you are also not idle, so perhaps this and the openal port that i submitted recenlty proves that i could deserve git access and so keep working fluidly. The openal port is gonna really be enforced with what i learned with this plugin, src, transforms and sinks all of them + dynamic (hopefully), though i could for sure learn better yet. I will be glad anyway too. As so, to hear your corrections.  As a final remark if accepted, consider too moving to -good.

Thanks, hoping people enjoy as much as i enjoyed programming it.

juanmabc


---------------------------
Comment 1 Deleted Account 2013-04-27 13:29:10 UTC
Created attachment 242657 [details] [review]
make consistency of strdown everywhere (elements)

This unneeded, small and clean, purely consistency fix, on top of the first patch, makes all the elements lowercase, in line with the parameters, that were allready lower-case. This makes the element determination more intuitive and less random, and makes the work with ladspa elements more expected. Keeps the premise of no collisions (357 elements here yet), and ends any incompatible access break, freezed, for keeping the users sane.

I could have waited for review and commit, yet since so small, consider yourself. I determine it both as one compound patch.

Thanks.
Comment 2 Deleted Account 2013-04-27 13:32:35 UTC
Consistency fixed output:

$ gst-inspect-1.0 ladspa:

Plugin Details:
  Name:			ladspa
  Description:		LADSPA plugin
  Filename:		./.libs/libgstladspa.so
  Version:		1.0.6
  License:		LGPL
  Source module:	gst-plugins-bad
  Source release date:	2013-03-22
  Binary package:	GStreamer Bad Plug-ins source release
  Origin URL:		Unknown package origin

  ladspa-tape-delay-1211-so-tapedelay: Tape Delay Simulation
  ladspa-guitarix-amp-so-guitarix-amp: guitarix_amp
  ladspa-retro-flange-1208-so-retroflange: Retro Flanger
  ladspa-amp-1654-so-amp-gaia-oa: Amplifier (GAIA)
  ladspa-amp-1654-so-amp-gcia-oa: Amplifier (GCIA)
  ladspa-mvclpf24-so-mvclpf-1: Mvclpf-1   Digital implementation of the VC filter invented by R.A.Moog
  ladspa-mvclpf24-so-mvclpf-2: Mvclpf-2   Digital implementation of the VC filter invented by R.A.Moog
  ladspa-mvclpf24-so-mvclpf-3: Mvclpf-3   Digital implementation of the VC filter invented by R.A.Moog
  ladspa-mvclpf24-so-mvclpf-4: Mvclpf-4   Digital implementation of the VC filter invented by R.A.Moog
  ladspa-square-1643-so-square-fa-oa: Bandlimited Square Oscillator (FA)
  ladspasrc-square-1643-so-square-fc-oa: Bandlimited Square Oscillator (FC)
  ladspa-lcr-delay-1436-so-lcrdelay: L/C/R Delay
  ladspa-gong-beater-1439-so-gongbeater: Gong beater
  ladspa-filters-so-parametric1: 4-band parametric filter
  ladspa-amp-so-amp-mono: Mono Amplifier
  ladspa-amp-so-amp-stereo: Stereo Amplifier
  ladspa-tap-reverb-so-tap-reverb: TAP Reverberator
  ladspa-wave-terrain-1412-so-waveterrain: Wave Terrain Oscillator
  ladspa-harmonic-gen-1220-so-harmonicgen: Harmonic generator
  ladspa-se4-1883-so-se4: SE4
  ladspa-guitarix-distortion-so-guitarix-distortion: guitarix_distortion
  ladspasrc-impulse-1885-so-impulse-fc: Nonbandlimited single-sample impulses (Frequency: Control)
  ladspa-cs-chorus-so-chorus1: Chorus1 - Based on CSound orchestra by Sean Costello
  ladspa-cs-chorus-so-chorus2: Chorus2 - Based on CSound orchestra by Sean Costello
  ladspa-cs-chorus-so-triplechorus: Triple chorus
  ladspa-sequencer64-1675-so-sequencer64: Analogue Style 64 Step Sequencer
  ladspa-chebstortion-1430-so-chebstortion: Chebyshev distortion
  ladspa-vco-sawpulse-so-pulse-vco: Pulse-VCO  --  Anti-aliased oscillator
  ladspa-vco-sawpulse-so-saw-vco: Saw-VCO  --  Anti-aliased oscillator
  ladspa-vco-sawpulse-so-rec-vco: Rec-VCO  --  Anti-aliased oscillator
  ladspa-hermes-filter-1200-so-hermesfilter: Hermes Filter
  ladspa-pitch-scale-1193-so-pitchscale: Pitch Scaler
  ladspa-pulse-1645-so-pulse-fapa-oa: Bandlimited Variable Width Pulse Oscillator (FAPA)
  ladspa-pulse-1645-so-pulse-fapc-oa: Bandlimited Variable Width Pulse Oscillator (FAPC)
  ladspa-pulse-1645-so-pulse-fcpa-oa: Bandlimited Variable Width Pulse Oscillator (FCPA)
  ladspasrc-pulse-1645-so-pulse-fcpc-oa: Bandlimited Variable Width Pulse Oscillator (FCPC)
  ladspa-quantiser20-2027-so-quantiser20: Quantiser (20 Steps)
  ladspa-tap-deesser-so-tap-deesser: TAP DeEsser
  ladspa-tap-pitch-so-tap-pitch: TAP Pitch Shifter
  ladspa-dj-eq-1901-so-dj-eq-mono: DJ EQ (mono)
  ladspa-dj-eq-1901-so-dj-eq: DJ EQ
  ladspa-mod-delay-1419-so-moddelay: Modulatable delay
  ladspa-sinus-wavewrapper-1198-so-sinuswavewrapper: Sinus wavewrapper
  ladspa-inv-1429-so-inv: Inverter
  ladspa-tap-vibrato-so-tap-vibrato: TAP Vibrato
  ladspa-bandpass-a-iir-1893-so-bandpass-a-iir: Glame Bandpass Analog Filter
  ladspa-foverdrive-1196-so-foverdrive: Fast overdrive
  ladspa-svf-1214-so-svf: State Variable Filter
  ladspa-freq-tracker-1418-so-freqtracker: Frequency tracker
  ladspa-dj-flanger-1438-so-djflanger: DJ flanger
  ladspa-autotalent-so-autotalent: Autotalent
  ladspa-delay-1898-so-delay-n: Simple delay line, noninterpolating
  ladspa-delay-1898-so-delay-l: Simple delay line, linear interpolation
  ladspa-delay-1898-so-delay-c: Simple delay line, cubic spline interpolation
  ladspa-giant-flange-1437-so-giantflange: Giant flange
  ladspa-comb-1887-so-comb-n: Comb delay line, noninterpolating
  ladspa-comb-1887-so-comb-l: Comb delay line, linear interpolation
  ladspa-comb-1887-so-comb-c: Comb delay line, cubic spline interpolation
  ladspa-sum-1665-so-sum-iaia-oa: Signal Sum (IAIA)
  ladspa-sum-1665-so-sum-iaic-oa: Signal Sum (IAIC)
  ladspasrc-sum-1665-so-sum-icic-oc: Signal Sum (ICIC)
  ladspa-adsr-1680-so-adsr-g+t: ADSR Envelope with Gate and Trigger
  ladspa-highpass-iir-1890-so-highpass-iir: Glame Highpass Filter
  ladspa-crossover-dist-1404-so-crossoverdist: Crossover distortion
  ladspa-libwasp-xshaper-so-xshaperm: X-Shaper (mono)
  ladspa-libwasp-xshaper-so-xshapers: X-Shaper (stereo)
  ladspa-alias-1407-so-alias: Aliasing
  ladspa-valve-1209-so-valve: Valve saturation
  ladspa-tap-reflector-so-tap-reflector: TAP Reflector
  ladspa-latency-1914-so-artificiallatency: Artificial latency
  ladspa-dc-remove-1207-so-dcremove: DC Offset Remover
  ladspa-comb-1190-so-comb: Comb Filter
  ladspa-sync-pulse-2023-so-syncpulse-fapaga-oa: Clock Pulse Oscillator with Gate (FAPAGA)
  ladspa-sync-pulse-2023-so-syncpulse-fcpcga-oa: Clock Pulse Oscillator with Gate (FCPCGA)
  ladspa-tap-dynamics-st-so-tap-dynamics-st: TAP Dynamics (St)
  ladspa-flanger-1191-so-flanger: Flanger
  ladspa-lowpass-iir-1891-so-lowpass-iir: Glame Lowpass Filter
  ladspasrc-noise-so-noise-white: White Noise Source
  ladspa-ambisonic3-so-ambisonics-31-panner: AMB order 3,1 panner
  ladspa-ambisonic3-so-ambisonics-31-rotator: AMB order 3,1 rotator
  ladspa-ambisonic3-so-ambisonics-33-panner: AMB order 3,3 panner
  ladspa-ambisonic3-so-ambisonics-33-rotator: AMB order 3,3 rotator
  ladspa-quantiser50-2028-so-quantiser50: Quantiser (50 Steps)
  ladspa-notch-iir-1894-so-notch-iir: Mag's Notch Filter
  ladspasrc-analogue-osc-1416-so-analogueosc: Analogue Oscillator
  ladspa-zm1-1428-so-zm1: z-1
  ladspa-sc4-1882-so-sc4: SC4
  ladspa-step-muxer-1212-so-stepmuxer: Step Demuxer
  ladspa-quantiser100-2029-so-quantiser100: Quantiser (100 Steps)
  ladspa-adsr-1653-so-adsr: ADSR Envelope
  ladspa-caps-so-eq: C* Eq - 10-band equalizer
  ladspa-caps-so-eq2x2: C* Eq2x2 - stereo 10-band equalizer
  ladspa-caps-so-compress: C* Compress - Mono compressor
  ladspa-caps-so-pan: C* Pan - Pan and width
  ladspa-caps-so-preampiii: C* PreampIII - Tube preamp emulation
  ladspa-caps-so-preampiv: C* PreampIV - Tube preamp emulation + tone controls
  ladspa-caps-so-tonestack: C* ToneStack - Tone stack emulation
  ladspa-caps-so-tonestacklt: C* ToneStackLT - Tone stack emulation, lattice filter 44.1
  ladspa-caps-so-ampiii: C* AmpIII - Tube amp
  ladspa-caps-so-ampiv: C* AmpIV - Tube amp + tone controls
  ladspa-caps-so-ampv: C* AmpV - Tube amp
  ladspa-caps-so-ampvts: C* AmpVTS - Tube amp + Tone stack
  ladspa-caps-so-cabineti: C* CabinetI - Loudspeaker cabinet emulation
  ladspa-caps-so-cabinetii: C* CabinetII - Refined loudspeaker cabinet emulation
  ladspa-caps-so-clip: C* Clip - Hard clipper, 8x oversampled
  ladspa-caps-so-chorusi: C* ChorusI - Mono chorus/flanger
  ladspa-caps-so-stereochorusi: C* StereoChorusI - Stereo chorus/flanger
  ladspa-caps-so-chorusii: C* ChorusII - Mono chorus/flanger modulated by a fractal
  ladspa-caps-so-stereochorusii: C* StereoChorusII - Stereo chorus/flanger modulated by a fractal
  ladspa-caps-so-phaseri: C* PhaserI - Mono phaser
  ladspa-caps-so-phaserii: C* PhaserII - Mono phaser modulated by a Lorenz fractal
  ladspa-caps-so-sweepvfi: C* SweepVFI - Resonant filter swept by a Lorenz fractal
  ladspa-caps-so-sweepvfii: C* SweepVFII - Resonant filter, f and Q swept by a Lorenz fractal
  ladspa-caps-so-autowah: C* AutoWah - Resonant envelope-following filter
  ladspa-caps-so-scape: C* Scape - Stereo delay + Filters
  ladspasrc-caps-so-vcos: C* VCOs - Virtual 'analogue' oscillator
  ladspasrc-caps-so-vcod: C* VCOd - Double VCO with detune and hard sync options
  ladspasrc-caps-so-ceo: C* CEO - Chief Executive Oscillator
  ladspasrc-caps-so-sin: C* Sin - Sine wave generator
  ladspasrc-caps-so-white: C* White - White noise generator
  ladspasrc-caps-so-lorenz: C* Lorenz - The sound of a Lorenz attractor
  ladspasrc-caps-so-roessler: C* Roessler - The sound of a Roessler attractor
  ladspa-caps-so-jvrev: C* JVRev - Stanford-style reverb from STK
  ladspa-caps-so-plate: C* Plate - Versatile plate reverb
  ladspa-caps-so-plate2x2: C* Plate2x2 - Versatile plate reverb, stereo inputs
  ladspasrc-caps-so-click: C* Click - Metronome
  ladspasrc-caps-so-dirac: C* Dirac - One-sample impulse generator
  ladspa-caps-so-hrtf: C* HRTF - Head-related transfer function at elevation 0
  ladspa-karaoke-1409-so-karaoke: Karaoke
  ladspa-sequencer16-1677-so-sequencer16: Analogue Style 16 Step Sequencer
  ladspa-diode-1185-so-diode: Diode Processor
  ladspa-xfade-1915-so-xfade: Crossfade
  ladspa-xfade-1915-so-xfade4: Crossfade (4 outs)
  ladspa-fast-lookahead-limiter-1913-so-fastlookaheadlimiter: Fast Lookahead limiter
  ladspa-tap-tremolo-so-tap-tremolo: TAP Tremolo
  ladspa-delayorama-1402-so-delayorama: Delayorama
  ladspa-shaper-1187-so-shaper: Wave shaper
  ladspa-tap-doubler-so-tap-doubler: TAP Fractal Doubler
  ladspa-const-1909-so-const: Constant Signal Generator
  ladspa-hard-limiter-1413-so-hardlimiter: Hard Limiter
  ladspa-matrix-ms-st-1421-so-matrixmsst: Matrix: MS to Stereo
  ladspa-ls-filter-1908-so-lsfilter: LS Filter
  ladspa-gverb-1216-so-gverb: GVerb
  ladspa-am-pitchshift-1433-so-ampitchshift: AM pitchshifter
  ladspa-sifter-1210-so-sifter: Signal sifter
  ladspa-gsm-1215-so-gsm: GSM simulator
  ladspa-ambisonic2-so-ambisonics-21-panner: AMB order 2,1 panner
  ladspa-ambisonic2-so-ambisonics-21-rotator: AMB order 2,1 rotator
  ladspa-ambisonic2-so-ambisonics-22-panner: AMB order 2,2 panner
  ladspa-ambisonic2-so-ambisonics-22-rotator: AMB order 2,2 rotator
  ladspa-matrix-st-ms-1420-so-matrixstms: Matrix: Stereo to MS
  ladspa-foldover-1213-so-foldover: Foldover distortion
  ladspa-satan-maximiser-1408-so-satanmaximiser: Barry's Satan Maximiser
  ladspa-tap-eq-so-tap-equalizer: TAP Equalizer
  ladspa-ambisonic1-so-ambisonics-11-mono-panner: AMB order 1,1 mono panner
  ladspa-ambisonic1-so-ambisonics-11-stereo-panner: AMB order 1,1 stereo panner
  ladspa-ambisonic1-so-ambisonics-11-rotator: AMB order 1,1 rotator
  ladspa-ambisonic1-so-ambisonics-11-square-decoder: AMB order 1,1 square decoder
  ladspa-ambisonic1-so-ambisonics-11-hexagon-decoder: AMB order 1,1 hexagon decoder
  ladspa-ambisonic1-so-ambisonics-11-cube-decoder: AMB order 1,1 cube decoder
  ladspa-guitarix-ir-so-guitarix-ir: guitarix_IR
  ladspa-g2reverb-so-g2reverb: Stereo reverb
  ladspa-bode-shifter-1431-so-bodeshifter: Bode frequency shifter
  ladspa-comb-splitter-1411-so-combsplitter: Comb Splitter
  ladspa-matrix-spatialiser-1422-so-matrixspatialiser: Matrix Spatialiser
  ladspa-sync-square-1678-so-syncsquare-faga-oa: Clock Oscillator with Gate (FAGA)
  ladspa-sync-square-1678-so-syncsquare-fcga-oa: Clock Oscillator with Gate (FCGA)
  ladspa-pointer-cast-1910-so-pointercastdistortion: Pointer cast distortion
  ladspa-fad-delay-1192-so-faddelay: Fractionally Addressed Delay Line
  ladspa-tap-pinknoise-so-tap-pinknoise: TAP Pink/Fractal Noise
  ladspa-tap-dynamics-m-so-tap-dynamics-m: TAP Dynamics (M)
  ladspa-triple-para-1204-so-triplepara: Triple band parametric with shelves
  ladspa-tap-autopan-so-tap-autopan: TAP AutoPanner
  ladspa-decay-1886-so-decay: Exponential signal decay
  ladspa-tap-eqbw-so-tap-equalizer-bw: TAP Equalizer/BW
  ladspa-dyson-compress-1403-so-dysoncompress: Dyson compressor
  ladspa-tap-rotspeak-so-tap-rotspeak: TAP Rotary Speaker
  ladspa-delay-so-delay-5s: Simple Delay Line
  ladspa-guitarix-freeverb-so-guitarix-freeverb: guitarix_freeverb
  ladspa-sequencer32-1676-so-sequencer32: Analogue Style 32 Step Sequencer
  ladspa-gong-1424-so-gong: Gong model
  ladspa-revdelay-1605-so-revdelay: Reverse Delay (5s max)
  ladspa-declip-1195-so-declip: Declipper
  ladspa-dahdsr-2021-so-dahdsr-g+t-audio: DAHDSR Envelope with Gate and Trigger (Audio-Rate Inputs)
  ladspa-dahdsr-2021-so-dahdsr-g+t-control: DAHDSR Envelope with Gate and Trigger (Control Inputs)
  ladspasrc-dahdsr-2021-so-dahdsr-cg+t-control: DAHDSR Envelope with Control Gate and Trigger (Control Inputs)
  ladspa-cs-phaser-so-phaser1: Phaser1 - Similar to CSound's phaser1 by Sean Costello
  ladspa-cs-phaser-so-phaser1+lfo: Phaser1 with LFO
  ladspa-rate-shifter-1417-so-rateshifter: Rate shifter
  ladspa-guitarix-so-simulators: guitarix
  ladspa-phasers-1217-so-lfophaser: LFO Phaser
  ladspa-phasers-1217-so-fourbyfourpole: 4 x 4 pole allpass
  ladspa-phasers-1217-so-autophaser: Auto phaser
  ladspa-pitch-scale-1194-so-pitchscalehq: Higher Quality Pitch Scaler
  ladspa-difference-2030-so-difference-iama-oa: Signal Difference (IAMA)
  ladspa-difference-2030-so-difference-iamc-oa: Signal Difference (IAMC)
  ladspa-difference-2030-so-difference-icma-oa: Signal Difference (ICMA)
  ladspasrc-difference-2030-so-difference-icmc-oc: Signal Difference (ICMC)
  ladspa-cmt-so-bf2cube: Ambisonic Decoder (B-Format to Cube)
  ladspa-cmt-so-bf2quad: Ambisonic Decoder (B-Format to Quad)
  ladspa-cmt-so-bf2stereo: Ambisonic Decoder (B-Format to Stereo)
  ladspa-cmt-so-fmh2oct: Ambisonic Decoder (FMH-Format to Octagon)
  ladspa-cmt-so-encode-bformat: Ambisonic Encoder (B-Format)
  ladspa-cmt-so-encode-fmh: Ambisonic Encoder (FMH-Format)
  ladspa-cmt-so-bf-rotate-z: Ambisonic Rotation (B-Format, Horizontal)
  ladspa-cmt-so-fmh-rotate-z: Ambisonic Rotation (FMH-Format, Horizontal)
  ladspa-cmt-so-amp-mono: Amplifier (Mono)
  ladspa-cmt-so-amp-stereo: Amplifier (Stereo)
  ladspa-cmt-so-am: Amplitude Modulator
  ladspasrc-cmt-so-analogue: Analogue Voice
  ladspa-cmt-so-canyon-delay: Canyon Delay
  ladspa-cmt-so-disintegrator: Disintegrator
  ladspa-cmt-so-sledgehammer: Dynamic Sledgehammer
  ladspa-cmt-so-delay-0-01s: Echo Delay Line (Maximum Delay 0.01s)
  ladspa-cmt-so-delay-0-1s: Echo Delay Line (Maximum Delay 0.1s)
  ladspa-cmt-so-delay-1s: Echo Delay Line (Maximum Delay 1s)
  ladspa-cmt-so-delay-5s: Echo Delay Line (Maximum Delay 5s)
  ladspa-cmt-so-delay-60s: Echo Delay Line (Maximum Delay 60s)
  ladspasink-cmt-so-track-max-peak: Envelope Tracker (Maximum Peak)
  ladspasink-cmt-so-track-max-rms: Envelope Tracker (Maximum RMS)
  ladspasink-cmt-so-track-peak: Envelope Tracker (Peak)
  ladspasink-cmt-so-track-rms: Envelope Tracker (RMS)
  ladspa-cmt-so-fmh2bf: FMH-Format to B-Format (Discards RSTUV Channels)
  ladspa-cmt-so-fbdelay-0-01s: Feedback Delay Line (Maximum Delay 0.01s)
  ladspa-cmt-so-fbdelay-0-1s: Feedback Delay Line (Maximum Delay 0.1s)
  ladspa-cmt-so-fbdelay-1s: Feedback Delay Line (Maximum Delay 1s)
  ladspa-cmt-so-fbdelay-5s: Feedback Delay Line (Maximum Delay 5s)
  ladspa-cmt-so-fbdelay-60s: Feedback Delay Line (Maximum Delay 60s)
  ladspa-cmt-so-freeverb3: Freeverb (Version 3)
  ladspa-cmt-so-grain-scatter: Granular Scatter Processor
  ladspa-cmt-so-hard-gate: Hard Gate
  ladspa-cmt-so-hpf: High Pass Filter (One Pole)
  ladspa-cmt-so-identity-audio: Identity (Audio)
  ladspasrc-cmt-so-identity-control: Identity (Control)
  ladspa-cmt-so-lofi: Lo Fi
  ladspasrc-cmt-so-logistic: Logistic Map Control Generator
  ladspa-cmt-so-lpf: Low Pass Filter (One Pole)
  ladspa-cmt-so-mixer: Mixer (Stereo to Mono)
  ladspasrc-cmt-so-noise-source-white: Noise Source (White)
  ladspasink-cmt-so-null-ai: Null (Audio Input)
  ladspasrc-cmt-so-null-ao: Null (Audio Output)
  ladspasrc-cmt-so-null-ci: Null (Control Input)
  ladspasrc-cmt-so-null-co: Null (Control Output)
  ladspasrc-cmt-so-organ: Organ
  ladspasink-cmt-so-peak: Peak Monitor
  ladspasrc-cmt-so-phasemod: Phase Modulated Voice
  ladspasrc-cmt-so-pink-interpolated-audio: Pink Noise (Interpolated)
  ladspasrc-cmt-so-pink-full-frequency: Pink Noise (full frequency range)
  ladspasrc-cmt-so-pink-sh: Pink Noise (sample and hold)
  ladspa-cmt-so-compress-peak: Simple Compressor (Peak Envelope Tracking)
  ladspa-cmt-so-compress-rms: Simple Compressor (RMS Envelope Tracking)
  ladspa-cmt-so-expand-peak: Simple Expander (Peak Envelope Tracking)
  ladspa-cmt-so-expand-rms: Simple Expander (RMS Envelope Tracking)
  ladspa-cmt-so-limit-peak: Simple Limiter (Peak Envelope Tracking)
  ladspa-cmt-so-limit-rms: Simple Limiter (RMS Envelope Tracking)
  ladspa-cmt-so-sine-faaa: Sine Oscillator (Freq:audio, Amp:audio)
  ladspa-cmt-so-sine-faac: Sine Oscillator (Freq:audio, Amp:control)
  ladspa-cmt-so-sine-fcaa: Sine Oscillator (Freq:control, Amp:audio)
  ladspasrc-cmt-so-sine-fcac: Sine Oscillator (Freq:control, Amp:control)
  ladspasrc-cmt-so-syndrum: Syn Drum
  ladspa-cmt-so-vcf303: VCF 303
  ladspa-cmt-so-wshape-sine: Wave Shaper (Sine-Based)
  ladspa-tap-limiter-so-tap-limiter: TAP Scaling Limiter
  ladspa-surround-encoder-1401-so-surroundencoder: Surround matrix encoder
  ladspa-sc2-1426-so-sc2: SC2
  ladspa-mvchpf24-so-mvchpf-1: Mvchpf-1   Digital implementation of the VC HP filter invented by R.A. Moog
  ladspa-gate-1410-so-gate: Gate
  ladspa-bandpass-iir-1892-so-bandpass-iir: Glame Bandpass Filter
  ladspa-sc4m-1916-so-sc4m: SC4 mono
  ladspa-ladspa-guitarix-so-guitarix-amp: Guitarix Amp
  ladspa-ladspa-guitarix-so-guitarix-fx: Guitarix Stereo Fx
  ladspa-guitarix-echo-so-guitarix-echo: guitarix_echo
  ladspasrc-interpolator-1660-so-interpolator: Control to Audio Interpolator
  ladspa-ratio-2034-so-ratio-nada-oa: Signal Ratio (NADA)
  ladspa-ratio-2034-so-ratio-nadc-oa: Signal Ratio (NADC)
  ladspa-ratio-2034-so-ratio-ncda-oa: Signal Ratio (NCDA)
  ladspasrc-ratio-2034-so-ratio-ncdc-oc: Signal Ratio (NCDC)
  ladspa-filter-so-lpf: Simple Low Pass Filter
  ladspa-filter-so-hpf: Simple High Pass Filter
  ladspa-butterworth-1902-so-bwxover-iir: Glame Butterworth X-over Filter
  ladspa-butterworth-1902-so-buttlow-iir: GLAME Butterworth Lowpass
  ladspa-butterworth-1902-so-butthigh-iir: GLAME Butterworth Highpass
  ladspa-tracker-2025-so-tracker-gaaadaia-oa: Signal Tracker (Audio Rates)
  ladspa-tracker-2025-so-tracker-gaacdcia-oa: Signal Tracker (Control Rates)
  ladspa-mbeq-1197-so-mbeq: Multiband EQ
  ladspa-blvco-so-pulse-vco: Pulse-VCO  --  Anti-aliased oscillator
  ladspa-blvco-so-saw-vco: Saw-VCO  --  Anti-aliased oscillator
  ladspa-blvco-so-rec-vco: Rec-VCO  --  Anti-aliased oscillator
  ladspa-tap-chorusflanger-so-tap-chorusflanger: TAP Chorus/Flanger
  ladspa-transient-1206-so-transient: Transient mangler
  ladspa-sine-so-sine-faaa: Sine Oscillator (Freq:audio, Amp:audio)
  ladspa-sine-so-sine-faac: Sine Oscillator (Freq:audio, Amp:control)
  ladspa-sine-so-sine-fcaa: Sine Oscillator (Freq:control, Amp:audio)
  ladspasrc-sine-so-sine-fcac: Sine Oscillator (Freq:control, Amp:control)
  ladspa-vynil-1905-so-vynil: VyNil (Vinyl Effect)
  ladspa-lp4pole-1671-so-lp4pole-faraia-oa: 4 Pole Low-Pass Filter with Resonance (FARAIA)
  ladspa-lp4pole-1671-so-lp4pole-fcrcia-oa: 4 Pole Low-Pass Filter with Resonance (FCRCIA)
  ladspa-ringmod-1188-so-ringmod-2i1o: Ringmod with two inputs
  ladspa-ringmod-1188-so-ringmod-1i1o1l: Ringmod with LFO
  ladspa-random-1661-so-random-fasa-oa: Random Wave Generator (FASA)
  ladspa-random-1661-so-random-fasc-oa: Random Wave Generator (FASC)
  ladspa-random-1661-so-random-fcsa-oa: Random Wave Generator (FCSA)
  ladspasrc-random-1661-so-random-fcsc-oa: Random Wave Generator (FCSC)
  ladspa-libwasp-noisifier-so-noisifierm: Noisifier (mono)
  ladspa-libwasp-noisifier-so-noisifiers: Noisifier (stereo)
  ladspa-multivoice-chorus-1201-so-multivoicechorus: Multivoice Chorus
  ladspasrc-sin-cos-1881-so-sincos: Sine + cosine oscillator
  ladspa-sawtooth-1641-so-sawtooth-fa-oa: Bandlimited Sawtooth Oscillator (FA)
  ladspasrc-sawtooth-1641-so-sawtooth-fc-oa: Bandlimited Sawtooth Oscillator (FC)
  ladspa-sc1-1425-so-sc1: SC1
  ladspa-split-1406-so-split: Mono to Stereo splitter
  ladspa-tap-sigmoid-so-tap-sigmoid: TAP Sigmoid Booster
  ladspa-fmod-1656-so-fmod-fama-oa: Frequency Modulator (FAMA)
  ladspa-fmod-1656-so-fmod-famc-oa: Frequency Modulator (FAMC)
  ladspa-fmod-1656-so-fmod-fcma-oa: Frequency Modulator (FCMA)
  ladspasrc-fmod-1656-so-fmod-fcmc-oc: Frequency Modulator (FCMC)
  ladspa-hilbert-1440-so-hilbert: Hilbert transformer
  ladspa-bode-shifter-cv-1432-so-bodeshiftercv: Bode frequency shifter (CV)
  ladspa-sc3-1427-so-sc3: SC3
  ladspa-branch-1673-so-branch-ia-oaoa: Signal Branch (IA)
  ladspasrc-branch-1673-so-branch-ic-ococ: Signal Branch (IC)
  ladspa-ambisonic0-so-tricardioid-to-amb: Three cardioids to AMB matrix
  ladspa-ambisonic0-so-virtualmic: Virtual stereo microphone
  ladspa-triangle-1649-so-triangle-fasa-oa: Bandlimited Variable Slope Triangle Oscillator (FASA)
  ladspa-triangle-1649-so-triangle-fasc-oa: Bandlimited Variable Slope Triangle Oscillator (FASC)
  ladspa-triangle-1649-so-triangle-fcsa-oa: Bandlimited Variable Slope Triangle Oscillator (FCSA)
  ladspasrc-triangle-1649-so-triangle-fcsc-oa: Bandlimited Variable Slope Triangle Oscillator (FCSC)
  ladspa-valve-rect-1405-so-valverect: Valve rectifier
  ladspa-tap-echo-so-tap-stereo-echo: TAP Stereo Echo
  ladspa-plate-1423-so-plate: Plate reverb
  ladspa-guitarix-compressor-so-guitarix-compressor: guitarix_compressor
  ladspa-product-1668-so-product-iaia-oa: Signal Product (IAIA)
  ladspa-product-1668-so-product-iaic-oa: Signal Product (IAIC)
  ladspasrc-product-1668-so-product-icic-oc: Signal Product (ICIC)
  ladspa-tap-tubewarmth-so-tap-tubewarmth: TAP TubeWarmth
  ladspa-calf-so-filter: Calf Filter LADSPA
  ladspa-calf-so-filterclavier: Calf Filterclavier LADSPA
  ladspa-calf-so-flanger: Calf Flanger LADSPA
  ladspa-calf-so-reverb: Calf Reverb LADSPA
  ladspa-calf-so-vintagedelay: Calf Vintage Delay LADSPA
  ladspa-calf-so-rotaryspeaker: Calf Rotary Speaker LADSPA
  ladspa-calf-so-phaser: Calf Phaser LADSPA
  ladspa-calf-so-multichorus: Calf MultiChorus LADSPA
  ladspa-calf-so-compressor: Calf Compressor LADSPA
  ladspa-single-para-1203-so-singlepara: Single band parametric
  ladspa-smooth-decimate-1414-so-smoothdecimate: Smooth Decimator
  ladspa-fm-osc-1415-so-fmosc: FM Oscillator
  ladspa-divider-1186-so-divider: Audio Divider (Suboctave Generator)
  ladspa-decimator-1202-so-decimator: Decimator
  ladspa-imp-1199-so-imp: Impulse convolver
  ladspa-amp-1181-so-amp: Simple amplifier
  ladspa-libwasp-booster-so-boosterm: Clipping Booster (mono)
  ladspa-libwasp-booster-so-boosters: Clipping Booster (stereo)
  ladspa-guitarix-crybaby-so-guitarix-crybaby: guitarix_crybaby
  ladspa-allpass-1895-so-allpass-n: Allpass delay line, noninterpolating
  ladspa-allpass-1895-so-allpass-l: Allpass delay line, linear interpolation
  ladspa-allpass-1895-so-allpass-c: Allpass delay line, cubic spline interpolation

  357 features:
  +-- 357 elements
Comment 3 Stefan Sauer (gstreamer, gtkdoc dev) 2013-04-29 20:51:49 UTC
Could you move the function from:
 ext/ladspa/gstmyutils.c      |   93 ++++
 ext/ladspa/gstmyutils.h      |   46 ++
to
 ext/ladspa/gstladspautils.c  |  847 +++++++++++++++++++++++++++++++++++++++++++
 ext/ladspa/gstladspautils.h  |  194 +++++++++
to spare the extra two files.

Also I can't yet test it for my self. I get:
(gst-plugin-scanner:25055): GStreamer-WARNING **: Failed to load plugin '/usr/lib/gstreamer-1.0/libgstladspa.so': /usr/lib/gstreamer-1.0/libgstladspa.so: undefined symbol: gst_ladspa_source_get_type

gst_ladspa_source_get_type() is indeed not defined. Same for the filter and sink types.

I wonder why you use a typemodule? In gstreamer we never unload plugins (and therefore types). Could you elaborate? The ladspamodule is he only component accessing the gst_ladspa_{source,filter,sink}_get_type() functions.
Comment 4 Deleted Account 2013-04-30 00:52:27 UTC
Created attachment 242875 [details] [review]
_get_type problems and corrrect derivation

First of all, the patch is very trivial despite the quantity of lines modified, like 3 batch substitutions for rename collision, real, like 9 line modifications. Anyway, still better to look at the result that at the patch. Hoping it works, btw.

Weird, cause here this was not giving it, i indeed find it weird anyway that the _get_type was not needed, so reported my tests, some theory indicates that they should be provided, i don't know what kind of cache issue (even on reboot?) or thing is going on to work here in my 1.0.6 build tests. Anyway as soon as i tried to derive more theorethically correctly from the GstLADSPA* classes and not hook directly, your error was exactly happening. While trying to G_DEFINE_ABSTRACT, a name collision is happening, hence this _instance_ fix everywhere, also the clean of the interface exposed since is never needed, and allows now to G_DEFINE_ABSTRACT_TYPE with it's corresponding _get_type. Here is a picture of the new, i think better, graph:

GObject
 +----GInitiallyUnowned
       +----GstObject
             +----GstElement
                   +----GstBaseSrc
                         +----GstLADSPASource
                               +----ladspasrc-caps-so-click

I've been said that if the class itself does not have an implementation, it could be an interface, i would have to research about that, but i would like to notice it for future (FIXME potential). I still does not control interfaces but having data et all is perhaps not good candidate for interface, and the current approach is then the better and good in my opinion.

The move of gstmyutils to gstladspautils is not in my opinion really good, if you take a look at gstladspautils, *all* the functions take a GtsLADSPA or GtsLADSPAClass as parameter, this is so that a gstlv2utils would mimic this behaviour, the gstmyutils would remain intact. In fact, gstmyutils is a suggestion to gstreamer base api itself, as it is direclty interfacing with basesrc, audiofilter and basesink, and are so generic, perhaps makes sense to move them there. Anyway, this could move if it causes such a trouble  (which doesn't to me).

I use/require the type module because the classes *does allocate (and need currently to) some stuff*, that stuff needs to be deallocated, i noticed that class_finalize though correctly defined never was getting called, hence i moved to a typemodule. I fail to understand how when you say gstreamer never unload plugins memory would remain in good state in this case. Else we could go to the register_static old style, though i never faced a malloc's, without free's approach. Here you are the knowledgeable.
Comment 5 Stefan Sauer (gstreamer, gtkdoc dev) 2013-04-30 06:31:01 UTC
_get_type() function are normally needed if you instantiate GObjects through a know GType (e.g. g_object_new(GST_LADSPA_SOURCE, ...); ). This is not the case in GStreamer. All the plugins register elements into a name:gtype map. Later elements can be created from the GstElementFactory by name. In the ladspa case, we would need a new get_type() function for each element that we wrap. This does not scale. Thus in ladspa_describe_source_plugin() we create a new gtype and register it. This we can repeat for many <name,gtype> pairs.

Regarding gstmyutils:
It contains 3 functions. Please move them to gstladspa{source,filter,sink}.c as static helpers respectively.

Regarding the module:
It is okay for plugins to 'leak' a one-time allocation. This will be freed when the application exits. When the plugins are scanned for the first time, this is done from a separate process to not impose the memory overhead on the calling application (among other reasons). Please remove the use of the type module. You can add a comment to such allocations and tell that it is a one time allocation that is not freed. We do have this in other wrapper plugins too.
Comment 6 Deleted Account 2013-04-30 14:21:59 UTC
Created attachment 242919 [details] [review]
myutils merge and register static

Regarding gstmyutils: The 3 functions were moved to gstladspa{source,filter,sink}.c respectively, there they make some sense. Hence gstmyutils.{hc} are unneeded, the files are dropped.

Regarding the module: then there is enough to g_type_register_static. Hence  gstladspamodule.{hc} are unneeded, the files are dropped.

To summarize, now there is only:
* gstladspautils
* gstladspafilter
* gstladspasource
* gstladspasink
* gstladspa
Comment 7 Stefan Sauer (gstreamer, gtkdoc dev) 2013-04-30 19:50:12 UTC
Much better! I noticed that you name the src/sink ladspasrc and ladspasink. Can we just all name them ladpsa. The names itself are unique already and this will keep compatibility with the gst-0.10 names.

Also could you squash the patches and add this as a new patch here.
Comment 8 Deleted Account 2013-04-30 22:25:21 UTC
I'm not a fan of such a go back, though. The list of elements is pretty huge, to find something could take time, that was made with two intentions, one differentiate the kind of element (in 0.10 i was crazy), and second be consistent with audiotestsrc,pulsesrc,... (ends in src), audioecho,audiodelay,... (filter, no special ending), and audiosink,pulsesink,... (ends in sink). This is perhaps one of the only moments to make such an uncompatible user change (as you correctly say) since gstreamer is moving from 0.10 to 1.0. Just my point is, i used it all the time in my tests, to find a src to test, or a sink, else i would have to read the whole list(?).

I'll expect your thought opinion with what i said (to include or not), and squash the 1 patch either way.

Thanks.
Comment 9 Stefan Sauer (gstreamer, gtkdoc dev) 2013-05-02 06:41:46 UTC
Review of attachment 242525 [details] [review]:

Okay, lets keep the "src", "sink" names.

::: ext/ladspa/gstladspautils.c
@@ +26,3 @@
+ *
+ * FIXME:
+ * Assigning channel orders could be tricky since LADSPA seems to not

LADSPA has no channel order. All we could do is to parse the port names for "(Left)/(Right)", "-L/-R" or ":l/:r" - these are the 3 patterns I see most of the time.

@@ +28,3 @@
+ * Assigning channel orders could be tricky since LADSPA seems to not
+ * specify order of channels in a really nice computer parseable way,
+ * stereo is probably wrong, more than stereo is crazy. By now, it justs

typo: s/justs/just

@@ +32,3 @@
+ * channel-masks and/or channel positions correctly, if this is needed
+ * and expected, users will tell (this affects mainly interleaving).
+ *

I think, you could mention, that right now, you just interleave all input port and output ports. This is the right thing in 90% of the cases, but will e.g. create a 4 channel out for a plugin that has 2 stereo 'pairs'.

@@ +47,3 @@
+#define GST_CAT_DEFAULT ladspa_debug
+
+/* 

FYI: GStreamer-1.0 also supports not-interleaved audio, where you just memcpy each channel after each other: c1...c1c2....c2 and so on.
Comment 10 Stefan Sauer (gstreamer, gtkdoc dev) 2013-05-02 06:42:03 UTC
Review of attachment 242525 [details] [review]:

Okay, lets keep the "src", "sink" names.

::: ext/ladspa/gstladspautils.c
@@ +26,3 @@
+ *
+ * FIXME:
+ * Assigning channel orders could be tricky since LADSPA seems to not

LADSPA has no channel order. All we could do is to parse the port names for "(Left)/(Right)", "-L/-R" or ":l/:r" - these are the 3 patterns I see most of the time.

@@ +28,3 @@
+ * Assigning channel orders could be tricky since LADSPA seems to not
+ * specify order of channels in a really nice computer parseable way,
+ * stereo is probably wrong, more than stereo is crazy. By now, it justs

typo: s/justs/just

@@ +32,3 @@
+ * channel-masks and/or channel positions correctly, if this is needed
+ * and expected, users will tell (this affects mainly interleaving).
+ *

I think, you could mention, that right now, you just interleave all input port and output ports. This is the right thing in 90% of the cases, but will e.g. create a 4 channel out for a plugin that has 2 stereo 'pairs'.

@@ +47,3 @@
+#define GST_CAT_DEFAULT ladspa_debug
+
+/* 

FYI: GStreamer-1.0 also supports not-interleaved audio, where you just memcpy each channel after each other: c1...c1c2....c2 and so on.
Comment 11 Stefan Sauer (gstreamer, gtkdoc dev) 2013-05-02 06:44:20 UTC
- gst_ladspa_source_instance_class_init
  leak comment, but I can't see the alloc?

- ladspa_describe_source_plugin
There is common code in all 3 base classes for the type name creating. This could be move to another util func (which also check for the already regsitered and ev. warns).
  
- ladspa_sink
  - fakesink was maybe not the ideal base for picking the code from
  - drop the handoff and preroll-handoff signals, fakesink uses them for
    debugging, normal sink don't need them
  - drop the "state-error", "last-error", "signal-handoff", "silent", "dump"
    properties
Comment 12 Deleted Account 2013-05-02 12:19:05 UTC
Created attachment 243033 [details] [review]
polishing

* Notes: fixed from comments #9 (& #10).

* Common code: register_plugin in all 3 base classes rebased.

* Sink dropped signals handoff and preroll-handoff, cleaned of properties state-error, last-message, signal-handoff, silent & dump.

* Leaks: might happen because most surely base_finalize does not get called as well. (GObject recommends external alloc/dealloc in base_).

Single patch is coming.
Comment 13 Deleted Account 2013-05-02 12:24:17 UTC
Created attachment 243035 [details] [review]
ladspa improved port to gstreamer 1.0 (single patch)

Last current state of the patch, obsoleting/merging 5 previous ones, for convenience.
Comment 14 Deleted Account 2013-05-02 14:53:40 UTC
Created attachment 243063 [details] [review]
ladspa improved port to gstreamer 1.0 (single, polished)

Moves the leak comment to near base_init/_finalize, applying to class_init/_finalize too. This should make much clear what is going on with that.

Resolves the collision of names with _type_ instead of the quick, not really well thought, _instance_, this is pure cosmetic, yet makes more sense and does not hurt the eyes. Type instance (?) type, let's leave instance for objects.

Keeps the comments of gstladspautils.c more grammatically correct.
Comment 15 Stefan Sauer (gstreamer, gtkdoc dev) 2013-05-03 07:46:39 UTC
Review of attachment 243063 [details] [review]:

I think this is the last review and then we can commit it. Thanks for all the work!
Please check all the functions in gstladspautils. If you only call them from gstladspautils, please make those static and remove from the gstladspautils.h to keep them private.

::: ext/ladspa/Makefile.am
@@ +3,3 @@
+libgstladspa_la_SOURCES = gstladspautils.c gstladspafilter.c gstladspasource.c gstladspasink.c gstladspa.c
+libgstladspa_la_CFLAGS = -I$(top_srcdir)/gst-libs $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(LRDF_CFLAGS) $(GST_PLUGINS_BAD_CFLAGS)
+libgstladspa_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) -lgstaudio-$(GST_API_VERSION) $(GST_BASE_LIBS) $(GST_LIBS) $(LIBM) $(LRDF_LIBS) $(GST_LIBS) 

Please rewrap CFLAGS and LIBADD to avoid super long lines.

::: ext/ladspa/gstladspautils.c
@@ +73,3 @@
+    for (j = 0; j < samples; j++)
+      outdata[i * samples + j] =
+          ((LADSPA_Data *) indata)[j * ladspa->klass->count.audio.in + i];

I would move ladspa->klass->count.audio.in and ladspa->klass->count.audio.in into two local vars. This allows the compiler to know that they won't change during the nested loops. Also in the next function.

@@ +125,3 @@
+
+/*
+ * Do it.

:) Maybe write "Process a block of audio with the ladspa plugin".

@@ +142,3 @@
+  LADSPA_Data *in, *out;
+
+  //GST_DEBUG ("LADSPA transform for %i samples, %i->%i channels", samples, ladspa->klass->count.audio.in, ladspa->klass->count.audio.out);

no // comments. Either uncomment or remove. You can use GST_LOG to lower the prio.

@@ +337,3 @@
+}
+
+GParamSpec *

If you only call this from here make it static and make sure there is no prototype in the .h file.

@@ +553,3 @@
+    longname = g_strdup ("no LADSPA description available");
+
+  //FIXME: no plugin author field different from element author field

please use /* */ style comments

@@ +836,3 @@
+}
+
+void

static ?
Comment 16 Deleted Account 2013-05-03 09:33:19 UTC
Created attachment 243156 [details] [review]
final touches

Makes all that fixes, plus a very little author clean for the user.
Comment 17 Deleted Account 2013-05-03 09:37:55 UTC
Created attachment 243158 [details] [review]
ladspa improved port to gstreamer 1.0 (single)

Last state, :)
Comment 18 Stefan Sauer (gstreamer, gtkdoc dev) 2013-05-03 10:42:02 UTC
Awesome! Committing now. If you are interested in some followup work, in the buzzmachine wrapper (a plugin similiar to this one) I use the registry_cache to avoid rescanning all the plugin whe plugin_init is called:
https://github.com/Buzztrax/gst-buzztrax/blob/master/src/bml/plugin.c#L563

The ideas is to store all the ladspa descriptors in a GstStructure and store that in the registry. When calling plugin_init:
1) you check for that cached structure and if it is not there, you scan the plugins and build the structure.
2) Then you register the elements from the structure.
Comment 19 Tim-Philipp Müller 2013-05-03 10:57:20 UTC
Bug #678207 might also be of interest btw :)