miller-book/node173.html

298 lines
9.3 KiB
HTML

<!DOCTYPE html>
<!--Converted with LaTeX2HTML 2002-2-1 (1.71)
original version by: Nikos Drakos, CBLU, University of Leeds
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
* with significant contributions from:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<TITLE>Narrow-band companding</TITLE>
<META NAME="description" CONTENT="Narrow-band companding">
<META NAME="keywords" CONTENT="book">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="book.css">
<LINK REL="next" HREF="node174.html">
<LINK REL="previous" HREF="node172.html">
<LINK REL="up" HREF="node172.html">
<LINK REL="next" HREF="node174.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html3160"
HREF="node174.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="next.png"></A>
<A NAME="tex2html3154"
HREF="node172.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="up.png"></A>
<A NAME="tex2html3148"
HREF="node172.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="prev.png"></A>
<A NAME="tex2html3156"
HREF="node4.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="contents.png"></A>
<A NAME="tex2html3158"
HREF="node201.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index"
SRC="index.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html3161"
HREF="node174.html">Timbre stamping (classical vocoder)</A>
<B> Up:</B> <A NAME="tex2html3155"
HREF="node172.html">Fourier analysis and reconstruction</A>
<B> Previous:</B> <A NAME="tex2html3149"
HREF="node172.html">Fourier analysis and reconstruction</A>
&nbsp; <B> <A NAME="tex2html3157"
HREF="node4.html">Contents</A></B>
&nbsp; <B> <A NAME="tex2html3159"
HREF="node201.html">Index</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION001341000000000000000">
Narrow-band companding</A>
</H2>
<P>
<DIV ALIGN="CENTER"><A NAME="fig09.08"></A><A NAME="12579"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 9.8:</STRONG>
Block diagram for narrow-band noise suppression by companding.</CAPTION>
<TR><TD><IMG
WIDTH="270" HEIGHT="423" BORDER="0"
SRC="img1157.png"
ALT="\begin{figure}\psfig{file=figs/fig09.08.ps}\end{figure}"></TD></TR>
</TABLE>
</DIV>
<P>
A
<A NAME="12582"></A><I>compander</I>
is a tool that amplifies a signal with a variable gain, depending on the
signal's measured amplitude. The term is a contraction of "compressor" and
"expander". A compressor's gain decreases as the input level increases, so
that the
<A NAME="12584"></A><I>dynamic range</I>,
that is, the overall variation in signal level, is reduced. An expander does
the reverse, increasing the dynamic range. Frequently the gain depends not only
on the immediate signal level but on its history; for instance the rate of change
might be limited or there might be a time delay.
<P>
By using Fourier analysis and resynthesis, we can do companding individually on
narrow-band channels. If <IMG
WIDTH="38" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img1158.png"
ALT="$C[m]$"> is one such band, we apply a gain <IMG
WIDTH="34" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img1159.png"
ALT="$g[m]$"> to
it, to give <IMG
WIDTH="69" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img1160.png"
ALT="$g[m]C[m]$">. Although <IMG
WIDTH="38" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img1158.png"
ALT="$C[m]$"> is a complex number, the gain is a
non-negative real number. In general the gain could be a function not only of
<IMG
WIDTH="38" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img1158.png"
ALT="$C[m]$"> but also of any or all the previous samples in the channel: <IMG
WIDTH="66" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img1161.png"
ALT="$C[m-1]$">,
<IMG
WIDTH="66" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img1162.png"
ALT="$C[m-2]$">, and so on. Here we'll consider the simplest situation where the gain is
simply a function of the magnitude of the current sample: <IMG
WIDTH="47" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img1163.png"
ALT="$\vert C[m]\vert$">.
<P>
The patch diagrammed in Figure <A HREF="#fig09.08">9.8</A> shows one very useful
application of companding, called
a
<A NAME="12587"></A><I>noise gate</I>. Here the gain <IMG
WIDTH="34" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img1159.png"
ALT="$g[m]$"> depends on the channel amplitude
<IMG
WIDTH="38" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img1158.png"
ALT="$C[m]$"> and a noise floor which is a function <IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img112.png"
ALT="$f$"> of the channel number <IMG
WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img58.png"
ALT="$k$">.
For clarity we will apply the frequency subscript <IMG
WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img58.png"
ALT="$k$"> to the gain, now
written as <IMG
WIDTH="50" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img1164.png"
ALT="$g[m, k]$">, and to the windowed Fourier transform <!-- MATH
$S[m, k] = C[m]$
-->
<IMG
WIDTH="109" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img1165.png"
ALT="$S[m, k] = C[m]$">.
The gain is given by:
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
g[m, k] =
\left \{
\begin{array}{ll}
{1 - f[k]/|S[m, k]|} & {|S[m, k]| > f[k]} \\
0 & \mbox{otherwise}
\end{array}
\right .
\end{displaymath}
-->
<IMG
WIDTH="330" HEIGHT="45" BORDER="0"
SRC="img1166.png"
ALT="\begin{displaymath}
g[m, k] =
\left \{
\begin{array}{ll}
{1 - f[k]/\vert S[...
...]\vert &gt; f[k]} \\
0 &amp; \mbox{otherwise}
\end{array} \right .
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
Whenever the magnitude <IMG
WIDTH="52" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img64.png"
ALT="$S[m, k]$"> is less than the threshold <IMG
WIDTH="30" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img1167.png"
ALT="$f[k]$"> the
gain is zero and so the amplitude <IMG
WIDTH="52" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img64.png"
ALT="$S[m, k]$"> is replaced
by zero. Otherwise, multiplying the amplitude by <IMG
WIDTH="50" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img1164.png"
ALT="$g[m, k]$"> reduces
the the magnitude downward to <!-- MATH
$|S[m, k]|-f[k]$
-->
<IMG
WIDTH="108" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img1168.png"
ALT="$\vert S[m, k]\vert-f[k]$">. Since the gain is a
non-negative real number, the phase is preserved.
<P>
In the figure, the gain is computed as a thresholding function of the
ratio <!-- MATH
$x = |S[m, k]|/f[k]$
-->
<IMG
WIDTH="127" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img1169.png"
ALT="$x = \vert S[m, k]\vert/f[k]$"> of the signal magnitude to the noise floor; the
threshold is <IMG
WIDTH="106" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img1170.png"
ALT="$g(x) = 1-1/x$"> when <IMG
WIDTH="41" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
SRC="img1171.png"
ALT="$x&lt;1$"> and zero otherwise, although other
thresholding functions could easily be substituted.
<P>
This technique is useful for removing noise from a recorded sound. We either
measure or guess values of the noise floor <IMG
WIDTH="30" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img1167.png"
ALT="$f[k]$">. Because of the
design of the gain function <IMG
WIDTH="50" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img1164.png"
ALT="$g[m, k]$">, only amplitudes which are above the
noise floor reach the output. Since this is done on narrow frequency bands, it
is sometimes possible to remove most of the noise even while the signal itself,
in the frequency ranges where it is louder than the noise floor, is mostly
preserved.
<P>
The technique is also useful as preparation before applying a non-linear
operation, such as distortion, to a sound. It is often best to distort only
the most salient frequencies of the sound. Subtracting the noise-gated sound
from the original then gives a residual signal which can be passed through
undistorted.
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html3160"
HREF="node174.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="next.png"></A>
<A NAME="tex2html3154"
HREF="node172.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="up.png"></A>
<A NAME="tex2html3148"
HREF="node172.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="prev.png"></A>
<A NAME="tex2html3156"
HREF="node4.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="contents.png"></A>
<A NAME="tex2html3158"
HREF="node201.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index"
SRC="index.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html3161"
HREF="node174.html">Timbre stamping (classical vocoder)</A>
<B> Up:</B> <A NAME="tex2html3155"
HREF="node172.html">Fourier analysis and reconstruction</A>
<B> Previous:</B> <A NAME="tex2html3149"
HREF="node172.html">Fourier analysis and reconstruction</A>
&nbsp; <B> <A NAME="tex2html3157"
HREF="node4.html">Contents</A></B>
&nbsp; <B> <A NAME="tex2html3159"
HREF="node201.html">Index</A></B>
<!--End of Navigation Panel-->
<ADDRESS>
Miller Puckette
2006-12-30
</ADDRESS>
</BODY>
</HTML>