Hi,
First, let me clarify that my main intent with this paper is not to bash
linux plugins or demerit people's work, but to see how other commercial
plugins compare to the linux ones, to be able to make the best possible
compressors as open source. I'm just presenting my results, it's a
learning experience for me, so I appreciate all comments.
Alfons Adriaensen wrote:
On Wed, Oct 04, 2006 at 10:51:08PM -0500, Andres
Cabrera wrote:
I've written a paper analyzing the
characteristics of some software
dynamic range compressors. The interesting part concerning linux, is
that all my results show jaggedness on the gain reduction curves. I did
the tests using Ardour, Audacity and Rezound with the same results,
which points to something strange in some part of the process.
Or in your measurement methods which are ill-defined, making it all but
impossible to correctly interpret some of the results.
- How do you measure gain ? By comparing single input/output samples ?
It seems so, otherwise how do you obtain a gain vs. time curve at
50 Hz with sub-millisecond resolution (Fig. 3) ?
This will be invalid in many cases, for example if the plugin includes
audio delay to achieve 'zero latency', as you suggest some of them do.
Yes, gain change was measured comparing individual samples, this
measures the exact effect of the plugin on a known signal. The csound
program compensates for any delay introduced by the plugin by not
comparing exact times, but rather by looking for the start sample for
each section. When I talk about latency in the paper, I'm not referring
to audio latency or latency introduced by the plugin from a look-ahead
method, but rather about a latency (or delay) in the start of gain
reduction by the plugin, which is probably dictated by the 'windowed' or
integration mechanism used by the plugin to calculate the envelope.
It's worth noting that the Renaissance Compressor does not introduce
this type of latency (i.e. gain reduction is applied to a signal from
the start of the first sample), but still it does not introduce any
delay in the audio signal. The first sample of the waves is exactly in
the same position for both the source signal and the processed signal.
This seems to point to a compression algorithm that relies on additional
mechanisms to follow an envelope, which can track gain from a few
samples (probably within the process buffer size, to keep the signal in
time). I'm thinking that maybe Sonar (which I used to process audio with
the RCompressor plugin) has applied some sort of delay compensation
mechanism, and maybe there is after all a delay in the plugin that is
later compensated...
- This delay is the first thing that should be
measured. Without
this information it is impossible to evaluate the results.
True, but since either the plugin produces no delay, or Sonar has
compensated the delay, this is not evident. I'll see if I can find a
simple host that can load Rcompressor and can process the file without
delay compensation, to check for plugin delay (or see if there's a way
in Sonar to turn delay compensation off).
- How on earth do can you define the level of a white
noise signal
by a peak value ?
Since the source white noise is known, it was possible to compare the
effect sample by sample. As said in the paper, there was no effect on
the phases of the sound (so each sample was still in the same place, but
its gain had changed)
- What is a square wave at 0dB FS ? Positive and
negative samples
at the maximum amplitude ? That does no correspond to a analog
square wave signal.
True, but I'm measuring the audio processed in the digital domain. I
included square waves and saw waves (saw waves used are also not
band-limited) in the test sample for completeness and to see whether
they yield significant results, but most of the conclusions are drawn
from the pure sine waves.
- How do you expect to measure distortion using square
waves ?
I don't.... Sine waves would show this better.
What I think is most significant in the paper is not the fact that the
linux plugins tested introduced 'compression latency', but that they
produced jagged gain reduction curves. This jaggedness is periodic and
independent of the processed signal. This either points to a user error
that is hard to avoid (I tried to be as thorough and careful as I
could), that might (or might not) be affecting audio quality, or to some
problem somewhere in the audio chain (maybe it's not the plugin). I'm
very interested in finding out the reason for this if only to learn I'm
doing something wrong.
Cheers,
Andrés