miller-book/node90.html

316 lines
10 KiB
HTML
Raw Normal View History

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!--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>
<TITLE>Carrier/modulator model</TITLE>
<META NAME="description" CONTENT="Carrier/modulator model">
<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="node91.html">
<LINK REL="previous" HREF="node89.html">
<LINK REL="up" HREF="node89.html">
<LINK REL="next" HREF="node91.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1896"
HREF="node91.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/local/share/lib/latex2html/icons/next.png"></A>
<A NAME="tex2html1890"
HREF="node89.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/local/share/lib/latex2html/icons/up.png"></A>
<A NAME="tex2html1884"
HREF="node89.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/local/share/lib/latex2html/icons/prev.png"></A>
<A NAME="tex2html1892"
HREF="node4.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/local/share/lib/latex2html/icons/contents.png"></A>
<A NAME="tex2html1894"
HREF="node201.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index"
SRC="file:/usr/local/share/lib/latex2html/icons/index.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1897"
HREF="node91.html">Pulse trains</A>
<B> Up:</B> <A NAME="tex2html1891"
HREF="node89.html">Designer spectra</A>
<B> Previous:</B> <A NAME="tex2html1885"
HREF="node89.html">Designer spectra</A>
&nbsp; <B> <A NAME="tex2html1893"
HREF="node4.html">Contents</A></B>
&nbsp; <B> <A NAME="tex2html1895"
HREF="node201.html">Index</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H1><A NAME="SECTION001010000000000000000"></A>
<A NAME="sect6.model"></A>
<BR>
Carrier/modulator model
</H1>
<P>
Earlier we saw how to
use ring modulation
to modify the spectrum of a periodic signal, placing spectral peaks in
specified locations (see Figure
<A HREF="node77.html#fig05.04">5.4</A>, Page <A HREF="node77.html#fig05.04"><IMG ALIGN="BOTTOM" BORDER="1" ALT="[*]"
SRC="file:/usr/local/share/lib/latex2html/icons/crossref.png"></A>). To do
so we need to be able to generate periodic signals whose spectra have maxima
at DC and fall off monotonically with increasing frequency.
If we can make a signal with a formant at frequency zero--and no other
formants besides that one--we can use ring modulation to displace the formant
to any desired harmonic. If we use waveshaping to generate the initial formant,
the ring modulation product will be of the form
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
x[n] = \cos(\omega_c n) f (a \cos(\omega_m n))
\end{displaymath}
-->
<IMG
WIDTH="204" HEIGHT="28" BORDER="0"
SRC="img552.png"
ALT="\begin{displaymath}
x[n] = \cos(\omega_c n) f (a \cos(\omega_m n))
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
where <IMG
WIDTH="19" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
SRC="img464.png"
ALT="$\omega_c$"> (the
<A NAME="6813"></A><I>carrier frequency</I>) is set to the formant center frequency and
<!-- MATH
$f (a \cdot \cos(\omega_m n))$
-->
<IMG
WIDTH="110" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
SRC="img553.png"
ALT="$f (a \cdot \cos(\omega_m n))$"> is a signal with fundamental frequency
determined by
<IMG
WIDTH="25" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
SRC="img463.png"
ALT="$\omega_m$">,
produced using a waveshaping function <IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img112.png"
ALT="$f$"> and index <IMG
WIDTH="11" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img4.png"
ALT="$a$">.
This second term is the signal we wish to give a formant at DC with a
controllable bandwidth. A block diagram for synthesizing this signal is
shown in Figure <A HREF="#fig06.02">6.2</A>.
<P>
<DIV ALIGN="CENTER"><A NAME="fig06.02"></A><A NAME="6818"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 6.2:</STRONG>
Ring modulated waveshaping for formant generation</CAPTION>
<TR><TD><IMG
WIDTH="251" HEIGHT="382" BORDER="0"
SRC="img554.png"
ALT="\begin{figure}\psfig{file=figs/fig06.02.ps}\end{figure}"></TD></TR>
</TABLE>
</DIV>
<P>
Much earlier in Section <A HREF="node30.html#sect2.stretching">2.4</A> we introduced the
technique of
<A NAME="6822"></A><I>timbre stretching</I>,
as part of the discussion of wavetable synthesis. This technique, which is
capable of generating complex, variable timbres, can be fit into the
same framework. The enveloped wavetable output for one cycle is:
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
x(\phi) = T (c \phi) * W (a \phi),
\end{displaymath}
-->
<IMG
WIDTH="158" HEIGHT="28" BORDER="0"
SRC="img555.png"
ALT="\begin{displaymath}
x(\phi) = T (c \phi) * W (a \phi),
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
where <IMG
WIDTH="13" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img77.png"
ALT="$\phi$">, the phase, satisfies <!-- MATH
$-\pi \le \phi \le \pi$
-->
<IMG
WIDTH="87" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img556.png"
ALT="$-\pi \le \phi \le \pi$">. Here
<IMG
WIDTH="15" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img557.png"
ALT="$T$"> is a function stored in a wavetable, <IMG
WIDTH="20" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img31.png"
ALT="$W$"> is a windowing function,
and <IMG
WIDTH="10" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img293.png"
ALT="$c$"> and <IMG
WIDTH="11" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img4.png"
ALT="$a$"> are the wavetable stretching and a modulation index for
the windowing function. Figure <A HREF="#fig06.03">6.3</A> shows how to realize
this in block
diagram form. Comparing this to Figure <A HREF="node29.html#fig02.07">2.7</A>, we see that the
only significant new feature is the addition of the index <IMG
WIDTH="11" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img4.png"
ALT="$a$">.
<P>
In this setup, as in the previous one, the first term specifies the placement of
energy in the spectrum--in this case, with the parameter <IMG
WIDTH="10" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img293.png"
ALT="$c$"> acting to stretch
out the wavetable spectrum. This is the role that was previously carried out
by the choice of ring modulation carrier frequency <IMG
WIDTH="19" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
SRC="img464.png"
ALT="$\omega_c$">.
<P>
<DIV ALIGN="CENTER"><A NAME="fig06.03"></A><A NAME="6828"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 6.3:</STRONG>
Wavetable synthesis generalized as a variable spectrum generator.</CAPTION>
<TR><TD><IMG
WIDTH="325" HEIGHT="396" BORDER="0"
SRC="img558.png"
ALT="\begin{figure}\psfig{file=figs/fig06.03.ps}\end{figure}"></TD></TR>
</TABLE>
</DIV>
<P>
Both of these (ring modulated waveshaping and stretched wavetable synthesis)
can be considered as particular cases of a more general approach
which is to compute functions of the form,
<BR><P></P>
<DIV ALIGN="CENTER">
<!-- MATH
\begin{displaymath}
x[n] = c(\omega n) {m_a}(\omega n)
\end{displaymath}
-->
<IMG
WIDTH="140" HEIGHT="28" BORDER="0"
SRC="img559.png"
ALT="\begin{displaymath}
x[n] = c(\omega n) {m_a}(\omega n)
\end{displaymath}">
</DIV>
<BR CLEAR="ALL">
<P></P>
where <IMG
WIDTH="10" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img293.png"
ALT="$c$"> is a periodic function describing the carrier signal, and <IMG
WIDTH="25" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
SRC="img560.png"
ALT="${m_a}$">
is a periodic modulator function which
depends on an index <IMG
WIDTH="11" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img4.png"
ALT="$a$">.
The modulation functions we're interested in will
usually take the form of pulse trains, and the index <IMG
WIDTH="11" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img4.png"
ALT="$a$"> will control the
width of the pulse; higher values of <IMG
WIDTH="11" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img4.png"
ALT="$a$"> will give narrower pulses.
In the wavetable case, the modulation function must
reach zero at phase wraparound points to suppress any discontinuities in the
carrier function when the phase wraps around. The carrier signal will give
rise to a single spectral peak (a formant) in the ring modulated waveshaping
case; for wavetables, it may have a more complicated spectrum.
<P>
In the next section we will further develop the two forms of modulating
signal we've introduced here, and in the following one we'll
look more closely at the carrier signal.
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html1896"
HREF="node91.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/local/share/lib/latex2html/icons/next.png"></A>
<A NAME="tex2html1890"
HREF="node89.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/local/share/lib/latex2html/icons/up.png"></A>
<A NAME="tex2html1884"
HREF="node89.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/local/share/lib/latex2html/icons/prev.png"></A>
<A NAME="tex2html1892"
HREF="node4.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/local/share/lib/latex2html/icons/contents.png"></A>
<A NAME="tex2html1894"
HREF="node201.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index"
SRC="file:/usr/local/share/lib/latex2html/icons/index.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1897"
HREF="node91.html">Pulse trains</A>
<B> Up:</B> <A NAME="tex2html1891"
HREF="node89.html">Designer spectra</A>
<B> Previous:</B> <A NAME="tex2html1885"
HREF="node89.html">Designer spectra</A>
&nbsp; <B> <A NAME="tex2html1893"
HREF="node4.html">Contents</A></B>
&nbsp; <B> <A NAME="tex2html1895"
HREF="node201.html">Index</A></B>
<!--End of Navigation Panel-->
<ADDRESS>
Miller Puckette
2006-12-30
</ADDRESS>
</BODY>
</HTML>