Here are the LADSPA plugins I use in my software DSP approach to active loudspeakers. I mostly use them within ecasound, but they should work just as well in any other LADSPA host.
You can download the source code here. Install with the usual make; make install
.
This is hardly an exhaustive collection of digital filters; it’s merely what I’ve needed myself and have bothered to write. I wrote them so I could implement the xover/eq for the Linkwitz Labs Pluto 2.1 and LX521. I’ll probably add more over time. Other plugins I use a lot are hpf
(1st-order high-pass) and delay_0.01s
(digital delay up to 10ms) from the Computer Music Toolkit collection.
Summary
Here is a brief summary of the various plugins and the parameters they take. The labels are prefaced with RT
to prevent name collisions and to help distinguish these from the many other plugins on my system.
Label | Index | Parameters | Description |
RTlowpass |
9006 |
freq [Hz], Q |
2nd-order low pass |
RThighpass |
9007 |
freq [Hz], Q |
2nd-order high pass |
RTlr4lowpass |
9020 |
freq [Hz] |
Linkwitz-Riley 4th-order low pass |
RTlr4hipass |
9021 |
freq [Hz] |
Linkwitz-Riley 4th-order high pass |
RTlowshelf |
9002 |
gain [dB], freq [Hz], Q |
low shelving; unity gain at high frequency |
RThighshelf |
9003 |
gain [dB], freq [Hz], Q |
high shelving; unity gain at low frequency |
RTparaeq |
9001 |
gain [dB], freq [Hz], Q |
parametric eq (notch/peak) |
RTallpass1 |
9010 |
freq [Hz] |
first-order all pass (non-inverting) |
RTallpass2 |
9005 |
freq [Hz], Q |
second-order all pass |
All parameters are interpreted as floating point values. The gain
parameter can be either positive or negative. The freq
parameter is the corner frequency (-6dB point) for the high- and low-pass filters, and the center of the transition band for the shelving and all-pass filters.
Each plugin is supposed to have a unique index, assigned by the ladspa.org people. I haven’t requested these yet as things are still in flux. If you have other LADSPA plugins with the same index values I don’t know what will happen.
Details
Here are magnitude and phase response measurements (made using mls techniques) that show the typical behavior of the filters. The title of each graph below gives the sequence that was used to call the filter within ecasound. For example, to apply the filter shown in the following graph one could use the command
ecasound -i:input.wav -el:RTlowpass,1000,0.71 -o:output.wav
This applies a 2nd-order low-pass filter (Q=0.71, with -6dB point at 1000Hz) to all channels of input.wav
, writing the result to output.wav
.
edit (2/9/2013): RTallpass1 is non-inverting as of v0.0.3.
edit (2/9/2013): RTallpass2 takes Q as a parameter (instead of bandwidth) as of v0.0.3.