Hi,
There was a thread on LAD two years ago, almost exactly, pointing out
the denormal problems in TAP's EQ plugins:
http://linuxaudio.org/pipermail/linux-audio-dev/2005-August/013367.html
Unfortunately the problem was never fixed. Many people are still having
issues with 'TAP Equalizer' and 'TAP Equalizer/BW', as there are recent
posts in ardour-users regarding spiralling CPU usage for DSP.
I've been doing my best to debug and fix the problem, but now that I
actually want to reproduce the problem, I can't! I can't reproduce the
jump in CPU usage, although I suffer a loss of audio in Ardour when I
have many TAP EQ's running in a session.
So, I tried a few small changes to tap-plugins-0.7.0 which seemed to fix
the loss of audio. If anyone can reliably reproduce the jump in CPU
usage (which usually triggered by periods of silence in the middle of a
recording), then please try rebuilding the TAP plugins from source, with
and without my attached patch, and see if it helps.
Please note, if your current tap_eq.so and tap_eqbw.so are already
installed in /usr/lib/ladspa/, you may need to edit the Makefile and
remove "local/" from the .so and .rdf install paths.
I'm hopeful that this might cure denormal problems that some people have
suffered from with these plugins for years. If this works, I will test
many more plugins for the same problem and perhaps fix those, too.
Thanks!
--
Steven Chamberlain
[EMAIL PROTECTED]
diff -Nru tap-plugins-0.7.0.old/Makefile tap-plugins-0.7.0/Makefile
--- tap-plugins-0.7.0.old/Makefile 2007-08-05 02:33:41.000000000 +0100
+++ tap-plugins-0.7.0/Makefile 2007-08-05 01:51:36.000000000 +0100
@@ -156,5 +156,5 @@
clean:
-rm -f `find . -name "*.so"`
-rm -f `find . -name "*.o"`
- -rm -f `find .. -name "*~"`
+ -rm -f `find . -name "*~"`
diff -Nru tap-plugins-0.7.0.old/tap_eqbw.c tap-plugins-0.7.0/tap_eqbw.c
--- tap-plugins-0.7.0.old/tap_eqbw.c 2004-08-17 13:34:43.000000000 +0100
+++ tap-plugins-0.7.0/tap_eqbw.c 2007-08-05 02:08:24.000000000 +0100
@@ -397,7 +397,7 @@
}
for (pos = 0; pos < sample_count; pos++) {
- samp = input[pos];
+ samp = FLUSH_TO_ZERO(input[pos]);
if (ch0g != 0.0f)
samp = biquad_run(&filters[0], samp);
if (ch1g != 0.0f)
@@ -414,7 +414,7 @@
samp = biquad_run(&filters[6], samp);
if (ch7g != 0.0f)
samp = biquad_run(&filters[7], samp);
- output[pos] = samp;
+ output[pos] = FLUSH_TO_ZERO(samp);
}
}
@@ -537,7 +537,7 @@
}
for (pos = 0; pos < sample_count; pos++) {
- samp = input[pos];
+ samp = FLUSH_TO_ZERO(input[pos]);
if (ch0g != 0.0f)
samp = biquad_run(&filters[0], samp);
if (ch1g != 0.0f)
@@ -555,6 +555,7 @@
if (ch7g != 0.0f)
samp = biquad_run(&filters[7], samp);
output[pos] += ptr->run_adding_gain * samp;
+ output[pos] = FLUSH_TO_ZERO(output[pos]);
}
}
diff -Nru tap-plugins-0.7.0.old/tap_eq.c tap-plugins-0.7.0/tap_eq.c
--- tap-plugins-0.7.0.old/tap_eq.c 2004-08-17 13:34:43.000000000 +0100
+++ tap-plugins-0.7.0/tap_eq.c 2007-08-05 02:07:08.000000000 +0100
@@ -327,7 +327,7 @@
}
for (pos = 0; pos < sample_count; pos++) {
- samp = input[pos];
+ samp = FLUSH_TO_ZERO(input[pos]);
if (ch0g != 0.0f)
samp = biquad_run(&filters[0], samp);
if (ch1g != 0.0f)
@@ -344,7 +344,7 @@
samp = biquad_run(&filters[6], samp);
if (ch7g != 0.0f)
samp = biquad_run(&filters[7], samp);
- output[pos] = samp;
+ output[pos] = FLUSH_TO_ZERO(samp);
}
}
@@ -443,7 +443,7 @@
}
for (pos = 0; pos < sample_count; pos++) {
- samp = input[pos];
+ samp = FLUSH_TO_ZERO(input[pos]);
if (ch0g != 0.0f)
samp = biquad_run(&filters[0], samp);
if (ch1g != 0.0f)
@@ -461,6 +461,7 @@
if (ch7g != 0.0f)
samp = biquad_run(&filters[7], samp);
output[pos] += ptr->run_adding_gain * samp;
+ output[pos] = FLUSH_TO_ZERO(output[pos]);
}
}
_______________________________________________
Linux-audio-dev mailing list
[email protected]
http://lists.linuxaudio.org/mailman/listinfo.cgi/linux-audio-dev