miller-book/node177.html

167 lines
6.2 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>Phase bashing</TITLE>
<META NAME="description" CONTENT="Phase bashing">
<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="node178.html">
<LINK REL="previous" HREF="node175.html">
<LINK REL="up" HREF="node163.html">
<LINK REL="next" HREF="node178.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html3213"
HREF="node178.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="tex2html3207"
HREF="node163.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="tex2html3201"
HREF="node176.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="tex2html3209"
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="tex2html3211"
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="tex2html3214"
HREF="node178.html">Examples</A>
<B> Up:</B> <A NAME="tex2html3208"
HREF="node163.html">Fourier analysis and resynthesis</A>
<B> Previous:</B> <A NAME="tex2html3202"
HREF="node176.html">Phase relationships between channels</A>
&nbsp; <B> <A NAME="tex2html3210"
HREF="node4.html">Contents</A></B>
&nbsp; <B> <A NAME="tex2html3212"
HREF="node201.html">Index</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H1><A NAME="SECTION001360000000000000000"></A>
<A NAME="sect9-bash"></A>
<BR>
Phase bashing
</H1>
<P>
In Section <A HREF="node29.html#sect2.enveloping">2.3</A> on enveloped sampling we saw how to make a
periodic waveform from a recorded sound, thereby borrowing the timbre of the
original sound but playing it at a specified pitch. If the window into the
recorded sound is made to precess in time, the resulting timbre varies
in imitation of the recorded sound.
<P>
One important problem arises, which is that if we take waveforms from different
windows of a sample (or from different samples), there is no guarantee that the
phases of the two match up. If they don't the result can be ugly, since the
random phase changes are heard as frequency fluctuations. This can be
corrected using Fourier analysis and resynthesis [<A
HREF="node202.html#r-puckette05">Puc05</A>].
<P>
<DIV ALIGN="CENTER"><A NAME="fig09.13"></A><A NAME="12680"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 9.13:</STRONG>
Phase-bashing a recorded sound (here, a sinusoid with rising
frequency) to give a series of oscillator wavetables.</CAPTION>
<TR><TD><IMG
WIDTH="382" HEIGHT="401" BORDER="0"
SRC="img1212.png"
ALT="\begin{figure}\psfig{file=figs/fig09.13.ps}\end{figure}"></TD></TR>
</TABLE>
</DIV>
<P>
Figure <A HREF="#fig09.13">9.13</A> shows a simple way to use Fourier analysis to align
phases in a series of windows in a recording. We simply take the FFT of the
window and then set each phase to zero for even values of <IMG
WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img58.png"
ALT="$k$"> and
<IMG
WIDTH="13" HEIGHT="13" ALIGN="BOTTOM" BORDER="0"
SRC="img41.png"
ALT="$\pi $"> for odd ones. The phase at the center of the window is thus zero for
both even and odd values of <IMG
WIDTH="12" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
SRC="img58.png"
ALT="$k$">. To set the phases (the arguments of the
complex amplitudes in the spectrum) in the desired way, first we find the
magnitude, which can be considered a complex number with argument zero. Then
multiplying by <IMG
WIDTH="44" HEIGHT="35" ALIGN="MIDDLE" BORDER="0"
SRC="img1213.png"
ALT="$(-1)^k$"> adjusts the amplitude so that it is positive and
negative in alternation. Then we take the inverse Fourier transform, without
even bothering to window again on the way back; we will probably want to apply
a windowing envelope later anyway as was shown in Figure <A HREF="node29.html#fig02.07">2.7</A>. The
results can be combined with the modulation techniques of Chapter 6 to yield
powerful tools for vocal and other imitative synthesis.
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html3213"
HREF="node178.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="tex2html3207"
HREF="node163.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="tex2html3201"
HREF="node176.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="tex2html3209"
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="tex2html3211"
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="tex2html3214"
HREF="node178.html">Examples</A>
<B> Up:</B> <A NAME="tex2html3208"
HREF="node163.html">Fourier analysis and resynthesis</A>
<B> Previous:</B> <A NAME="tex2html3202"
HREF="node176.html">Phase relationships between channels</A>
&nbsp; <B> <A NAME="tex2html3210"
HREF="node4.html">Contents</A></B>
&nbsp; <B> <A NAME="tex2html3212"
HREF="node201.html">Index</A></B>
<!--End of Navigation Panel-->
<ADDRESS>
Miller Puckette
2006-12-30
</ADDRESS>
</BODY>
</HTML>