316 lines
10 KiB
HTML
316 lines
10 KiB
HTML
<!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>
|
|
<B> <A NAME="tex2html1893"
|
|
HREF="node4.html">Contents</A></B>
|
|
<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>
|
|
<B> <A NAME="tex2html1893"
|
|
HREF="node4.html">Contents</A></B>
|
|
<B> <A NAME="tex2html1895"
|
|
HREF="node201.html">Index</A></B>
|
|
<!--End of Navigation Panel-->
|
|
<ADDRESS>
|
|
Miller Puckette
|
|
2006-12-30
|
|
</ADDRESS>
|
|
</BODY>
|
|
</HTML>
|