diff options
author | Ryan Billing <ryjobil@gmail.com> | 2013-10-04 01:57:00 +1300 |
---|---|---|
committer | Michael Giacomelli <giac2000@hotmail.com> | 2013-12-15 22:24:08 +0100 |
commit | d0918b98fa0cfba21208a4fb5ed153687b8f02c3 (patch) | |
tree | 006ef2bb902dfd83101fbfa3fe63b07f47d9e8e6 /lib/rbcodec/dsp/compressor.h | |
parent | 5b5f0755d6d7fd9e3fdfdb479caeb7fafd0a9960 (diff) | |
download | rockbox-d0918b98fa0cfba21208a4fb5ed153687b8f02c3.tar.gz rockbox-d0918b98fa0cfba21208a4fb5ed153687b8f02c3.zip |
DSP Compressor: Sidechain, Exponential Atk/Rls
This is an improvement to the current compressor which I have added
to my own Sansa Fuze V2 build. I am submitting here in case others
find it interesting.
Features added to the existing compressor:
Attack, Look-ahead, Sidechain Filtering.
Exponential attack and release characteristic response.
Benefits from adding missing features:
Attack:
Preserve perceived "brightness" of tone by letting onset transients
come through at a higher level than the rest of the compressed program
material.
Look-ahead:
With Attack comes clipping on the leading several cycles of a transient
onset. With look-ahead function, this can be pre-emptively mitigated with
a slower gain change (less distortion). Look-ahead limiting is implemented
to prevent clipping while keeping gain change ramp to an interval near 3ms
instead of instant attack.
The existing compressor implementation distorts the leading edge of a
transient by causing instant gain change, resulting in log() distortion.
This sounds "woofy" to me.
Exponential Attack/Release:
eMore natural sounding. On attack, this is a true straight line of 10dB per
attack interval. Release is a little different, however, sounds natural as
an analog compressor.
Sidechain Filtering:
Mild high-pass filter reduces response to low frequency onsets. For example,
a hard kick drum is less likely to make the whole of the program material
appear to fade in and out. Combined with a moderate attack time, such a
transient will ride through with minimal audible artifact.
Overall these changes make dynamic music sound more "open", more natural. The
goal of a compressor is to make dyanamic music sound louder without necessarily
sounding as though it has been compressed. I believe these changes come closer to this goal.
Enjoy. If not, I am enjoying it
Change-Id: I664eace546c364b815b4dc9ed4a72849231a0eb2
Reviewed-on: http://gerrit.rockbox.org/626
Tested: Purling Nayuki <cyq.yzfl@gmail.com>
Reviewed-by: Michael Giacomelli <giac2000@hotmail.com>
Diffstat (limited to 'lib/rbcodec/dsp/compressor.h')
-rw-r--r-- | lib/rbcodec/dsp/compressor.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/lib/rbcodec/dsp/compressor.h b/lib/rbcodec/dsp/compressor.h index e41950926e..35aa0eeb65 100644 --- a/lib/rbcodec/dsp/compressor.h +++ b/lib/rbcodec/dsp/compressor.h | |||
@@ -28,6 +28,7 @@ struct compressor_settings | |||
28 | int ratio; | 28 | int ratio; |
29 | int knee; | 29 | int knee; |
30 | int release_time; | 30 | int release_time; |
31 | int attack_time; | ||
31 | }; | 32 | }; |
32 | 33 | ||
33 | void dsp_set_compressor(const struct compressor_settings *settings); | 34 | void dsp_set_compressor(const struct compressor_settings *settings); |