summaryrefslogtreecommitdiffstats
path: root/audio-plugins
diff options
context:
space:
mode:
authorFlorian Franzmann2014-03-20 12:30:47 +0000
committerFlorian Franzmann2014-03-20 12:30:47 +0000
commit9aa82e3c8acc76088d8c1801965f2e3a095ce78e (patch)
tree2ba5f4e8b62c26cf004bcc0408d80b7c63d754f8 /audio-plugins
parent76216fc02dfbab39eb52676054d521101ac12dc5 (diff)
audio-plugins/rt-plugins: new spell, a set of LADSPA plugins for crossover and equalization in active speakers
Diffstat (limited to 'audio-plugins')
-rw-r--r--audio-plugins/rt-plugins/0001-clean-up-the-Makefile.patch81
-rw-r--r--audio-plugins/rt-plugins/0002-make-the-code-compile-with-higher-warning-levels.patch516
-rwxr-xr-xaudio-plugins/rt-plugins/BUILD1
-rwxr-xr-xaudio-plugins/rt-plugins/DEPENDS1
-rwxr-xr-xaudio-plugins/rt-plugins/DETAILS16
-rw-r--r--audio-plugins/rt-plugins/HISTORY3
-rwxr-xr-xaudio-plugins/rt-plugins/INSTALL1
-rwxr-xr-xaudio-plugins/rt-plugins/PRE_BUILD4
8 files changed, 623 insertions, 0 deletions
diff --git a/audio-plugins/rt-plugins/0001-clean-up-the-Makefile.patch b/audio-plugins/rt-plugins/0001-clean-up-the-Makefile.patch
new file mode 100644
index 0000000000..ac607289d4
--- /dev/null
+++ b/audio-plugins/rt-plugins/0001-clean-up-the-Makefile.patch
@@ -0,0 +1,81 @@
+From 2e1d779805d8baf84ab8816a24fc3964f37e4c9c Mon Sep 17 00:00:00 2001
+From: Florian Franzmann <siflfran@hawo.stw.uni-erlangen.de>
+Date: Thu, 20 Mar 2014 12:11:24 +0000
+Subject: [PATCH 1/2] clean up the Makefile
+
+- don't hardcode the installation path, make it settable from the
+ outside
+- don't hardcode $(CC) and $(LD)
+- make the %.o: %c and %.so: %.o rules less verbose
+- remove redundant rules
+- don't install all .so files, install the built libraries
+- mark install, all and clean as phony
+---
+ Makefile | 38 +++++++++++++++++---------------------
+ 1 file changed, 17 insertions(+), 21 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 9d92efb..78a76ea 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,40 +1,36 @@
+-INSTALL_PLUGINS_DIR = /usr/local/lib/ladspa/
+-
+-CC = gcc
+-LD = ld
++INSTALL_PLUGINS_DIR ?= /usr/local/lib/ladspa/
+
+ # rt 31.5.2013: got rid of sse2 stuff so we can build for ARM
+ CFLAGS = -I. -Ofast -Wall -fomit-frame-pointer -ffast-math -fstrength-reduce -funroll-loops -c -fPIC -DPIC
+ LDFLAGS = -shared
+
+ PLUGINS = RTallpass1.so \
+- RTallpass2.so \
+- RTlowpass.so \
+- RThighpass.so \
+- RThighshelf.so \
+- RTlowshelf.so \
+- RTlr4hipass.so \
+- RTlr4lowpass.so \
+- RTparaeq.so \
++ RTallpass2.so \
++ RTlowpass.so \
++ RThighpass.so \
++ RThighshelf.so \
++ RTlowshelf.so \
++ RTlr4hipass.so \
++ RTlr4lowpass.so \
++ RTparaeq.so \
+
+ all: $(PLUGINS)
+
+ %.o: %.c
+- $(CC) $(CFLAGS) -o $@ $<
++ @echo -e "(CC) $@"
++ @$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
+
+ %.so: %.o
+- $(LD) $(LDFLAGS) -o $@ $<
+-
+-install: targets
+- test -d $(INSTALL_PLUGINS_DIR) || mkdir $(INSTALL_PLUGINS_DIR)
+- cp *.so $(INSTALL_PLUGINS_DIR)
+-
+-targets: $(PLUGINS)
++ @echo -e "(LD) $@"
++ @$(LD) $(LDFLAGS) -o $@ $<
+
+-always:
++install: all
++ mkdir -p $(INSTALL_PLUGINS_DIR)
++ install -m644 $(PLUGINS) $(INSTALL_PLUGINS_DIR)
+
+ clean:
+ -rm -f `find . -name "*.so"`
+ -rm -f `find . -name "*.o"`
+ -rm -f `find . -name "*~"`
+
++.PHONY: install all clean
+--
+1.9.0
+
diff --git a/audio-plugins/rt-plugins/0002-make-the-code-compile-with-higher-warning-levels.patch b/audio-plugins/rt-plugins/0002-make-the-code-compile-with-higher-warning-levels.patch
new file mode 100644
index 0000000000..86963a879f
--- /dev/null
+++ b/audio-plugins/rt-plugins/0002-make-the-code-compile-with-higher-warning-levels.patch
@@ -0,0 +1,516 @@
+From 00e9bb011628328ecbf0b2229d5a68e5c1ec9f3e Mon Sep 17 00:00:00 2001
+From: Florian Franzmann <siflfran@hawo.stw.uni-erlangen.de>
+Date: Thu, 20 Mar 2014 12:14:37 +0000
+Subject: [PATCH 2/2] make the code compile with higher warning levels
+
+- also separate CFLAGS and CPPFLAGS
+- remove -ffast-math from CFLAGS since -Ofast already implies it
+- use CFLAGS and LDFLAGS passed in from the outside
+---
+ Makefile | 15 +++++++++++++--
+ RTallpass1.c | 12 +++++++-----
+ RTallpass2.c | 10 ++++++----
+ RThighpass.c | 10 ++++++----
+ RThighshelf.c | 10 ++++++----
+ RTlowpass.c | 10 ++++++----
+ RTlowshelf.c | 10 ++++++----
+ RTlr4hipass.c | 10 ++++++----
+ RTlr4lowpass.c | 10 ++++++----
+ RTparaeq.c | 10 ++++++----
+ util/biquad.h | 5 +++--
+ util/ladspa-util.h | 25 +++++++++++--------------
+ 12 files changed, 82 insertions(+), 55 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 78a76ea..ed93dd1 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,8 +1,19 @@
+ INSTALL_PLUGINS_DIR ?= /usr/local/lib/ladspa/
+
+ # rt 31.5.2013: got rid of sse2 stuff so we can build for ARM
+-CFLAGS = -I. -Ofast -Wall -fomit-frame-pointer -ffast-math -fstrength-reduce -funroll-loops -c -fPIC -DPIC
+-LDFLAGS = -shared
++CPPFLAGS += -D_BSD_SOURCE -DPIC -D_XOPEN_SOURCE=600 -I.
++
++CFLAGS += -Ofast -fomit-frame-pointer -fstrength-reduce -funroll-loops -fPIC -std=c11
++
++CFLAGS += -Wall -Wextra -Werror -pedantic
++CFLAGS += -Wcast-align -Wfloat-equal -Wformat-nonliteral -Wformat-security
++CFLAGS += -Winit-self -Wmissing-include-dirs
++CFLAGS += -Wno-suggest-attribute=noreturn -Wno-write-strings -Wpointer-arith -Wundef -Wpacked
++CFLAGS += -Wredundant-decls
++CFLAGS += -Wunreachable-code -Wno-unused-parameter -Wconversion -Wshadow
++CFLAGS += -Wstrict-prototypes -Wbad-function-cast -Wold-style-definition -Wmissing-prototypes -Wmissing-declarations -Wnested-externs
++
++LDFLAGS += -shared
+
+ PLUGINS = RTallpass1.so \
+ RTallpass2.so \
+diff --git a/RTallpass1.c b/RTallpass1.c
+index 71c62ac..4ea528b 100644
+--- a/RTallpass1.c
++++ b/RTallpass1.c
+@@ -140,12 +140,13 @@ static void runAllPass(LADSPA_Handle instance, unsigned long sample_count) {
+ for (pos = 0; pos < sample_count; pos++) {
+ // RT 2.9.2013: replace biquad_run with ap1_run to cut floating-
+ // point multiplications from 3 to 1:
+- buffer_write(output[pos], ap1_run(filter, input[pos]));
++ buffer_write(output[pos], (LADSPA_Data) ap1_run(filter, input[pos]));
+ }
+
+ }
+
+-void _init() {
++void _init(void);
++void _init(void) {
+ char **port_names;
+ LADSPA_PortDescriptor *port_descriptors;
+ LADSPA_PortRangeHint *port_range_hints;
+@@ -189,8 +190,8 @@ void _init() {
+ D_("Frequency (Hz)");
+ port_range_hints[ALLPASS1_FC].HintDescriptor =
+ LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_SAMPLE_RATE | LADSPA_HINT_DEFAULT_440;
+- port_range_hints[ALLPASS1_FC].LowerBound = 0;
+- port_range_hints[ALLPASS1_FC].UpperBound = 0.4;
++ port_range_hints[ALLPASS1_FC].LowerBound = 0.0;
++ port_range_hints[ALLPASS1_FC].UpperBound = (LADSPA_Data) 0.4;
+
+ /* Parameters for Input */
+ port_descriptors[ALLPASS1_INPUT] =
+@@ -222,7 +223,8 @@ void _init() {
+ }
+ }
+
+-void _fini() {
++void _fini(void);
++void _fini(void) {
+ if (allPassDescriptor) {
+ free((LADSPA_PortDescriptor *)allPassDescriptor->PortDescriptors);
+ free((char **)allPassDescriptor->PortNames);
+diff --git a/RTallpass2.c b/RTallpass2.c
+index d36dad6..a0bac58 100644
+--- a/RTallpass2.c
++++ b/RTallpass2.c
+@@ -149,12 +149,13 @@ static void runAllPass(LADSPA_Handle instance, unsigned long sample_count) {
+ for (pos = 0; pos < sample_count; pos++) {
+ // RT 2.9.2013: replace biquad_run with ap2_run to cut floating-
+ // point multiplications from 5 to 2:
+- buffer_write(output[pos], ap2_run(filter, input[pos]));
++ buffer_write(output[pos], (LADSPA_Data) ap2_run(filter, input[pos]));
+ }
+
+ }
+
+-void _init() {
++void _init(void);
++void _init(void) {
+ char **port_names;
+ LADSPA_PortDescriptor *port_descriptors;
+ LADSPA_PortRangeHint *port_range_hints;
+@@ -199,7 +200,7 @@ void _init() {
+ port_range_hints[ALLPASS_FC].HintDescriptor =
+ LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_SAMPLE_RATE | LADSPA_HINT_DEFAULT_440;
+ port_range_hints[ALLPASS_FC].LowerBound = 0;
+- port_range_hints[ALLPASS_FC].UpperBound = 0.4;
++ port_range_hints[ALLPASS_FC].UpperBound = (LADSPA_Data) 0.4;
+
+ /* Parameters for Bandwidth (octaves) */
+ port_descriptors[ALLPASS_Q] =
+@@ -241,7 +242,8 @@ void _init() {
+ }
+ }
+
+-void _fini() {
++void _fini(void);
++void _fini(void) {
+ if (allPassDescriptor) {
+ free((LADSPA_PortDescriptor *)allPassDescriptor->PortDescriptors);
+ free((char **)allPassDescriptor->PortNames);
+diff --git a/RThighpass.c b/RThighpass.c
+index c7d6a65..3376ad9 100644
+--- a/RThighpass.c
++++ b/RThighpass.c
+@@ -145,12 +145,13 @@ static void runHighPass(LADSPA_Handle instance, unsigned long sample_count) {
+ hp_set_params(filter, fc, Q, fs);
+
+ for (pos = 0; pos < sample_count; pos++) {
+- buffer_write(output[pos], biquad_run(filter, input[pos]));
++ buffer_write(output[pos], (LADSPA_Data) biquad_run(filter, input[pos]));
+ }
+
+ }
+
+-void _init() {
++void _init(void);
++void _init(void) {
+ char **port_names;
+ LADSPA_PortDescriptor *port_descriptors;
+ LADSPA_PortRangeHint *port_range_hints;
+@@ -195,7 +196,7 @@ void _init() {
+ port_range_hints[HIGHPASS_FC].HintDescriptor =
+ LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_SAMPLE_RATE | LADSPA_HINT_DEFAULT_440;
+ port_range_hints[HIGHPASS_FC].LowerBound = 0;
+- port_range_hints[HIGHPASS_FC].UpperBound = 0.4;
++ port_range_hints[HIGHPASS_FC].UpperBound = (LADSPA_Data) 0.4;
+
+ /* Parameters for Q */
+ port_descriptors[HIGHPASS_Q] =
+@@ -237,7 +238,8 @@ void _init() {
+ }
+ }
+
+-void _fini() {
++void _fini(void);
++void _fini(void) {
+ if (highPassDescriptor) {
+ free((LADSPA_PortDescriptor *)highPassDescriptor->PortDescriptors);
+ free((char **)highPassDescriptor->PortNames);
+diff --git a/RThighshelf.c b/RThighshelf.c
+index 39f0abf..9d02d45 100644
+--- a/RThighshelf.c
++++ b/RThighshelf.c
+@@ -153,12 +153,13 @@ static void runHighShelf(LADSPA_Handle instance, unsigned long sample_count) {
+ hs_set_params(filter, fc, gain, Q, fs);
+
+ for (pos = 0; pos < sample_count; pos++) {
+- buffer_write(output[pos], biquad_run(filter, input[pos]));
++ buffer_write(output[pos], (LADSPA_Data) biquad_run(filter, input[pos]));
+ }
+
+ }
+
+-void _init() {
++void _init(void);
++void _init(void) {
+ char **port_names;
+ LADSPA_PortDescriptor *port_descriptors;
+ LADSPA_PortRangeHint *port_range_hints;
+@@ -213,7 +214,7 @@ void _init() {
+ port_range_hints[HIGHSHELF_FC].HintDescriptor =
+ LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_SAMPLE_RATE | LADSPA_HINT_DEFAULT_440;
+ port_range_hints[HIGHSHELF_FC].LowerBound = 0;
+- port_range_hints[HIGHSHELF_FC].UpperBound = 0.4;
++ port_range_hints[HIGHSHELF_FC].UpperBound = (LADSPA_Data) 0.4;
+
+ /* Parameters for Quality Factor */
+ port_descriptors[HIGHSHELF_Q] =
+@@ -255,7 +256,8 @@ void _init() {
+ }
+ }
+
+-void _fini() {
++void _fini(void);
++void _fini(void) {
+ if (highShelfDescriptor) {
+ free((LADSPA_PortDescriptor *)highShelfDescriptor->PortDescriptors);
+ free((char **)highShelfDescriptor->PortNames);
+diff --git a/RTlowpass.c b/RTlowpass.c
+index 869969d..9ea377f 100644
+--- a/RTlowpass.c
++++ b/RTlowpass.c
+@@ -145,12 +145,13 @@ static void runLowPass(LADSPA_Handle instance, unsigned long sample_count) {
+ lp_set_params(filter, fc, Q, fs);
+
+ for (pos = 0; pos < sample_count; pos++) {
+- buffer_write(output[pos], biquad_run(filter, input[pos]));
++ buffer_write(output[pos], (LADSPA_Data) biquad_run(filter, input[pos]));
+ }
+
+ }
+
+-void _init() {
++void _init(void);
++void _init(void) {
+ char **port_names;
+ LADSPA_PortDescriptor *port_descriptors;
+ LADSPA_PortRangeHint *port_range_hints;
+@@ -195,7 +196,7 @@ void _init() {
+ port_range_hints[LOWPASS_FC].HintDescriptor =
+ LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_SAMPLE_RATE | LADSPA_HINT_DEFAULT_440;
+ port_range_hints[LOWPASS_FC].LowerBound = 0;
+- port_range_hints[LOWPASS_FC].UpperBound = 0.4;
++ port_range_hints[LOWPASS_FC].UpperBound = (LADSPA_Data) 0.4;
+
+ /* Parameters for Q */
+ port_descriptors[LOWPASS_Q] =
+@@ -237,7 +238,8 @@ void _init() {
+ }
+ }
+
+-void _fini() {
++void _fini(void);
++void _fini(void) {
+ if (lowPassDescriptor) {
+ free((LADSPA_PortDescriptor *)lowPassDescriptor->PortDescriptors);
+ free((char **)lowPassDescriptor->PortNames);
+diff --git a/RTlowshelf.c b/RTlowshelf.c
+index 2c3f945..12a2c7c 100644
+--- a/RTlowshelf.c
++++ b/RTlowshelf.c
+@@ -153,12 +153,13 @@ static void runLowShelf(LADSPA_Handle instance, unsigned long sample_count) {
+ ls_set_params(filter, fc, gain, Q, fs);
+
+ for (pos = 0; pos < sample_count; pos++) {
+- buffer_write(output[pos], biquad_run(filter, input[pos]));
++ buffer_write(output[pos], (LADSPA_Data) biquad_run(filter, input[pos]));
+ }
+
+ }
+
+-void _init() {
++void _init(void);
++void _init(void) {
+ char **port_names;
+ LADSPA_PortDescriptor *port_descriptors;
+ LADSPA_PortRangeHint *port_range_hints;
+@@ -213,7 +214,7 @@ void _init() {
+ port_range_hints[LOWSHELF_FC].HintDescriptor =
+ LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_SAMPLE_RATE | LADSPA_HINT_DEFAULT_440;
+ port_range_hints[LOWSHELF_FC].LowerBound = 0;
+- port_range_hints[LOWSHELF_FC].UpperBound = 0.4;
++ port_range_hints[LOWSHELF_FC].UpperBound = (LADSPA_Data) 0.4;
+
+ /* Parameters for Quality Factor */
+ port_descriptors[LOWSHELF_Q] =
+@@ -255,7 +256,8 @@ void _init() {
+ }
+ }
+
+-void _fini() {
++void _fini(void);
++void _fini(void) {
+ if (lowShelfDescriptor) {
+ free((LADSPA_PortDescriptor *)lowShelfDescriptor->PortDescriptors);
+ free((char **)lowShelfDescriptor->PortNames);
+diff --git a/RTlr4hipass.c b/RTlr4hipass.c
+index 6462b5e..15d6c49 100644
+--- a/RTlr4hipass.c
++++ b/RTlr4hipass.c
+@@ -143,12 +143,13 @@ static void runLR4HighPass(LADSPA_Handle instance, unsigned long sample_count) {
+ for (pos = 0; pos < sample_count; pos++) {
+ in = biquad_run(&filters[0], input[pos]);
+ in = biquad_run(&filters[1], in);
+- buffer_write(output[pos], in);
++ buffer_write(output[pos], (LADSPA_Data) in);
+ }
+
+ }
+
+-void _init() {
++void _init(void);
++void _init(void) {
+ char **port_names;
+ LADSPA_PortDescriptor *port_descriptors;
+ LADSPA_PortRangeHint *port_range_hints;
+@@ -193,7 +194,7 @@ void _init() {
+ port_range_hints[LR4HIGHPASS_FC].HintDescriptor =
+ LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_SAMPLE_RATE | LADSPA_HINT_DEFAULT_440;
+ port_range_hints[LR4HIGHPASS_FC].LowerBound = 0;
+- port_range_hints[LR4HIGHPASS_FC].UpperBound = 0.4;
++ port_range_hints[LR4HIGHPASS_FC].UpperBound = (LADSPA_Data) 0.4;
+
+ /* Parameters for Input */
+ port_descriptors[LR4HIGHPASS_INPUT] =
+@@ -225,7 +226,8 @@ void _init() {
+ }
+ }
+
+-void _fini() {
++void _fini(void);
++void _fini(void) {
+ if (lr4highPassDescriptor) {
+ free((LADSPA_PortDescriptor *)lr4highPassDescriptor->PortDescriptors);
+ free((char **)lr4highPassDescriptor->PortNames);
+diff --git a/RTlr4lowpass.c b/RTlr4lowpass.c
+index 2d864cc..16ad5c9 100644
+--- a/RTlr4lowpass.c
++++ b/RTlr4lowpass.c
+@@ -143,12 +143,13 @@ static void runLR4LowPass(LADSPA_Handle instance, unsigned long sample_count) {
+ for (pos = 0; pos < sample_count; pos++) {
+ in = biquad_run(&filters[0], input[pos]);
+ in = biquad_run(&filters[1], in);
+- buffer_write(output[pos], in);
++ buffer_write(output[pos], (LADSPA_Data) in);
+ }
+
+ }
+
+-void _init() {
++void _init(void);
++void _init(void) {
+ char **port_names;
+ LADSPA_PortDescriptor *port_descriptors;
+ LADSPA_PortRangeHint *port_range_hints;
+@@ -193,7 +194,7 @@ void _init() {
+ port_range_hints[LR4LOWPASS_FC].HintDescriptor =
+ LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_SAMPLE_RATE | LADSPA_HINT_DEFAULT_440;
+ port_range_hints[LR4LOWPASS_FC].LowerBound = 0;
+- port_range_hints[LR4LOWPASS_FC].UpperBound = 0.4;
++ port_range_hints[LR4LOWPASS_FC].UpperBound = (LADSPA_Data) 0.4;
+
+ /* Parameters for Input */
+ port_descriptors[LR4LOWPASS_INPUT] =
+@@ -225,7 +226,8 @@ void _init() {
+ }
+ }
+
+-void _fini() {
++void _fini(void);
++void _fini(void) {
+ if (lr4lowPassDescriptor) {
+ free((LADSPA_PortDescriptor *)lr4lowPassDescriptor->PortDescriptors);
+ free((char **)lr4lowPassDescriptor->PortNames);
+diff --git a/RTparaeq.c b/RTparaeq.c
+index f55e3c5..3e77a83 100644
+--- a/RTparaeq.c
++++ b/RTparaeq.c
+@@ -153,12 +153,13 @@ static void runSinglePara(LADSPA_Handle instance, unsigned long sample_count) {
+ eq_set_params(filter, fc, gain, Q, fs);
+
+ for (pos = 0; pos < sample_count; pos++) {
+- buffer_write(output[pos], biquad_run(filter, input[pos]));
++ buffer_write(output[pos], (LADSPA_Data) biquad_run(filter, input[pos]));
+ }
+
+ }
+
+-void _init() {
++void _init(void);
++void _init(void) {
+ char **port_names;
+ LADSPA_PortDescriptor *port_descriptors;
+ LADSPA_PortRangeHint *port_range_hints;
+@@ -213,7 +214,7 @@ void _init() {
+ port_range_hints[SINGLEPARA_FC].HintDescriptor =
+ LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_SAMPLE_RATE | LADSPA_HINT_DEFAULT_440;
+ port_range_hints[SINGLEPARA_FC].LowerBound = 0;
+- port_range_hints[SINGLEPARA_FC].UpperBound = 0.4;
++ port_range_hints[SINGLEPARA_FC].UpperBound = (LADSPA_Data) 0.4;
+
+ /* Parameters for Quality Factor */
+ port_descriptors[SINGLEPARA_Q] =
+@@ -255,7 +256,8 @@ void _init() {
+ }
+ }
+
+-void _fini() {
++void _fini(void);
++void _fini(void) {
+ if (singleParaDescriptor) {
+ free((LADSPA_PortDescriptor *)singleParaDescriptor->PortDescriptors);
+ free((char **)singleParaDescriptor->PortNames);
+diff --git a/util/biquad.h b/util/biquad.h
+index 8994e4b..49451d8 100644
+--- a/util/biquad.h
++++ b/util/biquad.h
+@@ -4,6 +4,7 @@
+ #define LN_2_2 0.34657359f // ln(2)/2
+
+ #include "ladspa-util.h"
++#include <math.h>
+
+ #ifndef LIMIT
+ #define LIMIT(v,l,u) (v<l?l:(v>u?u:v))
+@@ -96,7 +97,7 @@ static inline void ls_set_params(biquad *f, bq_t fc, bq_t gain, bq_t Q,
+ bq_t w = 2.0f * M_PI * LIMIT(fc, 1.0, fs/2.0) / fs;
+ bq_t cw = cos(w);
+ bq_t sw = sin(w);
+- bq_t A = powf(10.0f, gain * 0.025f);
++ bq_t A = powf(10.0f, (float) (gain * (bq_t) 0.025));
+
+ // rt 8.1.2013: increased slope limit from 1.0f to 5.0f:
+ // bq_t b = sqrt(((1.0f + A * A) / LIMIT(slope, 0.0001f, 5.0f)) - ((A -
+@@ -135,7 +136,7 @@ static inline void hs_set_params(biquad *f, bq_t fc, bq_t gain, bq_t Q, bq_t fs)
+ bq_t w = 2.0f * M_PI * LIMIT(fc, 1.0, fs/2.0) / fs;
+ bq_t cw = cos(w);
+ bq_t sw = sin(w);
+- bq_t A = powf(10.0f, gain * 0.025f);
++ bq_t A = powf(10.0f, (float) (gain * (bq_t) 0.025));
+ // rt 8.1.2013: increased slope limit from 1.0f to 5.0f:
+ // bq_t b = sqrt(((1.0f + A * A) / LIMIT(slope, 0.0001f, 5.0f)) - ((A -
+ // 1.0f) * (A - 1.0f)));
+diff --git a/util/ladspa-util.h b/util/ladspa-util.h
+index ef6e31b..5d3dcc9 100644
+--- a/util/ladspa-util.h
++++ b/util/ladspa-util.h
+@@ -46,9 +46,6 @@ typedef union {
+ int32_t i;
+ } ls_pcast32;
+
+-// Sometimes it doesn't get defined, even though it eists and C99 is declared
+-long int lrintf (float x);
+-
+ // 1.0 / ln(2)
+ #define LN2R 1.442695041f
+
+@@ -72,8 +69,8 @@ static inline float flush_to_zero(float f)
+
+ static inline void round_to_zero(volatile float *f)
+ {
+- *f += 1e-18;
+- *f -= 1e-18;
++ *f += 1e-18f;
++ *f -= 1e-18f;
+ }
+
+ /* A set of branchless clipping operations from Laurent de Soras */
+@@ -81,8 +78,8 @@ static inline void round_to_zero(volatile float *f)
+ static inline float f_max(float x, float a)
+ {
+ x -= a;
+- x += fabs(x);
+- x *= 0.5;
++ x += fabsf(x);
++ x *= 0.5f;
+ x += a;
+
+ return x;
+@@ -91,8 +88,8 @@ static inline float f_max(float x, float a)
+ static inline float f_min(float x, float b)
+ {
+ x = b - x;
+- x += fabs(x);
+- x *= 0.5;
++ x += fabsf(x);
++ x *= 0.5f;
+ x = b - x;
+
+ return x;
+@@ -100,12 +97,12 @@ static inline float f_min(float x, float b)
+
+ static inline float f_clamp(float x, float a, float b)
+ {
+- const float x1 = fabs(x - a);
+- const float x2 = fabs(x - b);
++ const float x1 = fabsf(x - a);
++ const float x2 = fabsf(x - b);
+
+ x = x1 + a + b;
+ x -= x2;
+- x *= 0.5;
++ x *= 0.5f;
+
+ return x;
+ }
+@@ -166,7 +163,7 @@ static inline float f_sin_sq(float angle)
+ #else
+
+ // Round float to int using IEEE int* hack
+-static inline int f_round(float f)
++static inline long int f_round(float f)
+ {
+ ls_pcast32 p;
+
+@@ -179,7 +176,7 @@ static inline int f_round(float f)
+ #endif
+
+ // Truncate float to int
+-static inline int f_trunc(float f)
++static inline long int f_trunc(float f)
+ {
+ return f_round(floorf(f));
+ }
+--
+1.9.0
+
diff --git a/audio-plugins/rt-plugins/BUILD b/audio-plugins/rt-plugins/BUILD
new file mode 100755
index 0000000000..6dfecc1f8a
--- /dev/null
+++ b/audio-plugins/rt-plugins/BUILD
@@ -0,0 +1 @@
+default_build_make
diff --git a/audio-plugins/rt-plugins/DEPENDS b/audio-plugins/rt-plugins/DEPENDS
new file mode 100755
index 0000000000..a02b2c8395
--- /dev/null
+++ b/audio-plugins/rt-plugins/DEPENDS
@@ -0,0 +1 @@
+depends ladspa
diff --git a/audio-plugins/rt-plugins/DETAILS b/audio-plugins/rt-plugins/DETAILS
new file mode 100755
index 0000000000..0c8612b20f
--- /dev/null
+++ b/audio-plugins/rt-plugins/DETAILS
@@ -0,0 +1,16 @@
+ SPELL=rt-plugins
+ VERSION=0.0.3
+ SOURCE="${SPELL}-${VERSION}.tar.gz"
+ SOURCE_URL[0]=http://faculty.tru.ca/rtaylor/${SPELL}/${SOURCE}
+ SOURCE_HASH=sha512:2f8e280c2508172e8e8569d75e96f0c6e6308e5917e7b095ff5d38ce243f9001d402e7990058d0765b8bdbde9622b23d5eec124c95576eed63cb42aee7caa058
+SOURCE_DIRECTORY="${BUILD_DIRECTORY}/${SPELL}-${VERSION}"
+ WEB_SITE="http://faculty.tru.ca/rtaylor/rt-plugins/index.html"
+ LICENSE[0]=GPL
+ ENTERED=20140320
+ SHORT="a collection of IIR digital filter plugins for crossover and equalization"
+cat << EOF
+This is a collection of IIR digital filter plugins, designed for using a
+computer to perform crossover and equalization for active loudspeakers.
+The plugins are written for LADSPA, the Linux Audio Developers Plugin API,
+so they can be used in any LADSPA-capable host.
+EOF
diff --git a/audio-plugins/rt-plugins/HISTORY b/audio-plugins/rt-plugins/HISTORY
new file mode 100644
index 0000000000..fffe977f99
--- /dev/null
+++ b/audio-plugins/rt-plugins/HISTORY
@@ -0,0 +1,3 @@
+2014-03-20 Florian Franzmann <siflfran@hawo.stw.uni-erlangen.de>
+ * DEPENDS, DETAILS: spell created
+
diff --git a/audio-plugins/rt-plugins/INSTALL b/audio-plugins/rt-plugins/INSTALL
new file mode 100755
index 0000000000..131ca30132
--- /dev/null
+++ b/audio-plugins/rt-plugins/INSTALL
@@ -0,0 +1 @@
+INSTALL_PLUGINS_DIR=${INSTALL_ROOT}/usr/lib/ladspa default_install
diff --git a/audio-plugins/rt-plugins/PRE_BUILD b/audio-plugins/rt-plugins/PRE_BUILD
new file mode 100755
index 0000000000..095c784af0
--- /dev/null
+++ b/audio-plugins/rt-plugins/PRE_BUILD
@@ -0,0 +1,4 @@
+default_pre_build &&
+cd ${SOURCE_DIRECTORY} &&
+patch -p1 < $SPELL_DIRECTORY/0001-clean-up-the-Makefile.patch &&
+patch -p1 < $SPELL_DIRECTORY/0002-make-the-code-compile-with-higher-warning-levels.patch