Sign in

username:

password:



Not a member?

Search Online Books



Search tips

Free Online Books

Sponsor

NEW! TMS320C6474: 3x the performance. 1/3 the cost. Three 1 GHz cores on 1 chip.

Chapters

Chapter Contents:

Search Introduction to Digital Filters

  

Book Index | Global Index


Would you like to be notified by email when Julius Orion Smith III publishes a new entry into his blog?

  

Why Dynamic Range Compression is Nonlinear

We can model dynamic range compression as a level-dependent gain. Multiplying a signal by a constant gain (``volume control''), on the other hand, is a linear operation. Let's check that the scaling and superposition properties of linear systems are satisfied by a constant gain: For any signals $ x_1,x_2$, and for any constants $ \alpha,\beta$, we must have

$\displaystyle g \cdot [\alpha \cdot x_1(n) + \beta \cdot x_2(n)] = \alpha \cdot [g \cdot x_1(n)]
+ \beta \cdot [g \cdot x_2(n)].
$

Since this is obviously true from the algebraic properties of real or complex numbers, both scaling and superposition have been verified. (For clarity, an explicit ``$ \cdot$'' is used to indicate multiplication.)

Dynamic range compression can also be seen as a time-varying gain factor, so one might be tempted to classify it as a linear, time-varying filter. However, this would be incorrect because the gain $ g$, which multiplies the input, depends on the input signal $ x(n)$. This happens because the compressor must estimate the current signal level in order to normalize it. Dynamic range compression can be expressed symbolically as a filter of the form

$\displaystyle y(n) = g_n(x) \cdot x(n)
$

where $ g_n(x)$ denotes a gain that depends on the ``current level'' of $ x(\cdot)$ at time $ n$. A common definition of signal level is rms level (the ``root mean square'' [84, p. 75] computed over a sliding time-window). Since many successive samples of $ x$ are needed to estimate the current level, we cannot correctly write $ g[x(n)]$ for the gain function, although we could write something like $ g[x(n-M\!:\!n)]$ (borrowing matlab syntax), where $ M$ is the number of past samples needed to estimate the current amplitude level. In general,

$\displaystyle g(x_1 + x_2)\cdot [x_1(n) + x_2(n)] \neq g(x_1) \cdot x_1(n) + g(x_2) \cdot x_2(n) .
$

That is, the compression of the sum of two signals is not generally the same as the addition of the two signals compressed individually. Therefore, the superposition condition of linearity fails. It is also clear that the scaling condition fails.

In general, any signal operation that includes a multiplication in which both multiplicands depend on the input signal can be shown to be nonlinear.


Order a Hardcopy of Introduction to Digital Filters

Previous: Nonlinear Filter Example: Dynamic Range Compression
Next: A Musical Time-Varying Filter Example

written by Julius Orion Smith III
Julius Smith's background is in electrical engineering (BS Rice 1975, PhD Stanford 1983). He is presently Professor of Music and Associate Professor (by courtesy) of Electrical Engineering at Stanford's Center for Computer Research in Music and Acoustics (CCRMA), teaching courses and pursuing research related to signal processing applied to music and audio systems. See http://ccrma.stanford.edu/~jos/ for details.


Comments


No comments yet for this page


Add a Comment
You need to login before you can post a comment (best way to prevent spam). ( Not a member? )