commit 517b7a4b1f706deeee40c7ad1cf2c067f8763586 Author: Lucas Cordiviola Date: Tue Apr 12 21:54:18 2022 -0300 add files from http://msp.ucsd.edu/techniques/latest/book-html.tgz diff --git a/WARNINGS b/WARNINGS new file mode 100644 index 0000000..2cd2d8c --- /dev/null +++ b/WARNINGS @@ -0,0 +1,12 @@ + +? brace missing for \newedcommand + +? brace missing for \textbf +couldn't convert character Tdot into available encodings + + ...set $ACCENT_IMAGES to get an image + +No number for "PulsewidthmodulationusingthevonHannwindowfunction:(a)thefunction$W(phi)=(1+cos(phi))/2$;(b)thefunctionasawaveform,repeatedatadutycycleof100%(modulationindex);(c)thewaveformata50%dutycycle()." +couldn't convert character ~tilde into available encodings + +No number for "FourieranalysisinPd:(a)the$mathrm{fft}sim$object;(b)usingasubwindowtocontrolblocksizeoftheFouriertransform;(c)thesubwindow,usingarealFouriertransform(thefft~object)andtheHannwindowingfunction." diff --git a/book.css b/book.css new file mode 100644 index 0000000..d1824af --- /dev/null +++ b/book.css @@ -0,0 +1,30 @@ +/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ +.MATH { font-family: "Century Schoolbook", serif; } +.MATH I { font-family: "Century Schoolbook", serif; font-style: italic } +.BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } + +/* implement both fixed-size and relative sizes */ +SMALL.XTINY { font-size : xx-small } +SMALL.TINY { font-size : x-small } +SMALL.SCRIPTSIZE { font-size : smaller } +SMALL.FOOTNOTESIZE { font-size : small } +SMALL.SMALL { } +BIG.LARGE { } +BIG.XLARGE { font-size : large } +BIG.XXLARGE { font-size : x-large } +BIG.HUGE { font-size : larger } +BIG.XHUGE { font-size : xx-large } + +/* heading styles */ +H1 { } +H2 { } +H3 { } +H4 { } +H5 { } + +/* mathematics styles */ +DIV.displaymath { } /* math displays */ +TD.eqno { } /* equation-number cells */ + + +/* document-specific styles come next */ diff --git a/book.html b/book.html new file mode 100644 index 0000000..4aea402 --- /dev/null +++ b/book.html @@ -0,0 +1,560 @@ + + + + + +book + + + + + + + + + + + + + + + + +next +up +previous + +contents + +index +
+ Next: #1 +   Contents +   Index +
+
+ + +1] +

+ + + + + +

+
+Miller Puckette +2006-12-30 +
+ + diff --git a/images.aux b/images.aux new file mode 100644 index 0000000..f23e546 --- /dev/null +++ b/images.aux @@ -0,0 +1 @@ +\relax diff --git a/images.bbl b/images.bbl new file mode 100644 index 0000000..e20f4d7 --- /dev/null +++ b/images.bbl @@ -0,0 +1,161 @@ +\begin{thebibliography}{RMW02} + +\bibitem[Bal03]{r-ballora03} +Mark Ballora. +\newblock {\em Essentials of Music Technology}. +\newblock Prentice Hall, Upper Saddle River, New Jersey, 2003. + +\bibitem[Ble01]{r-blesser01} +Barry Blesser. +\newblock An interdisciplinary synthesis of reverberation viewpoints. +\newblock {\em Journal of the Audio Engineering Society}, 49(10):867--903, + 2001. + +\bibitem[Bou00]{r-boulanger00} +Richard Boulanger, editor. +\newblock {\em The Csound book}. +\newblock MIT Press, Cambridge, Massachusetts, 2000. + +\bibitem[Cha80]{r-chamberlin80} +Hal Chamberlin. +\newblock {\em Musical applications of microprocessors}. +\newblock Hayden, Rochelle Park, N.J., 1980. + +\bibitem[Cho73]{r-chowning73} +John Chowning. +\newblock The synthesis of complex audio spectra by means of frequency + modulation. +\newblock {\em Journal of the Audio Engineering Society}, 21(7):526--534, 1973. + +\bibitem[Cho89]{r-chowning89} +John Chowning. +\newblock Frequency modulation synthesis of the singing voice. +\newblock In Max~V. Mathews and John~R. Pierce, editors, {\em Current + Directions in Computer Music Research}, pages 57--64. MIT Press, Cambridge, + 1989. + +\bibitem[DJ85]{r-dodge85} +Charles Dodge and Thomas~A. Jerse. +\newblock {\em Computer music : synthesis, composition, and performance}. +\newblock Schirmer, New York, 1985. + +\bibitem[DL97]{r-dolson97} +Mark Dolson and Jean Laroche. +\newblock About this phasiness business. +\newblock In {\em Proceedings of the International Computer Music Conference}, + pages 55--58, Ann Arbor, 1997. International Computer Music Association. + +\bibitem[GM77]{r-grey77} +John~M. Grey and James~A. Moorer. +\newblock Perceptual evaluations of synthesized musical instrument tones. +\newblock {\em Journal of the Acoustical Society of America}, 62:454--462, + 1977. + +\bibitem[Har87]{r-hartmann87} +William~M. Hartmann. +\newblock Digital waveform generation by fractional addressing. +\newblock {\em Journal of the Acoustical Society of America}, 82:1883--1891, + 1987. + +\bibitem[KS83]{r-karplus83} +Kevin Karplus and Alex Strong. +\newblock Digital synthesis of plucked-string and drum timbres. +\newblock {\em Computer Music Journal}, 7(2):43--55, 1983. + +\bibitem[Leb77]{r-lebrun77} +Marc Lebrun. +\newblock A derivation of the spectrum of {FM} with a complex modulating wave. +\newblock {\em Computer Music Journal}, 1(4):51--52, 1977. + +\bibitem[Leb79]{r-lebrun79} +Marc Lebrun. +\newblock Digital waveshaping synthesis. +\newblock {\em Journal of the Audio Engineering Society}, 27(4):250--266, 1979. + +\bibitem[Mat69]{r-mathews69} +Max~V. Mathews. +\newblock {\em The Technology of Computer Music}. +\newblock MIT Press, Cambridge, Massachusetts, 1969. + +\bibitem[Moo90]{r-moore90} +F.~Richard Moore. +\newblock {\em Elements of Computer Music}. +\newblock Prentice Hall, Englewood Cliffs, second edition, 1990. + +\bibitem[PB87]{r-parks87} +T.~W. Parks and C.S. Burrus. +\newblock {\em Digital filter design}. +\newblock Wiley, New York, 1987. + +\bibitem[Puc95a]{r-puckette95a} +Miller~S. Puckette. +\newblock Formant-based audio synthesis using nonlinear distortion. +\newblock {\em Journal of the Audio Engineering Society}, 43(1):224--227, 1995. + +\bibitem[Puc95b]{r-puckette95b} +Miller~S. Puckette. +\newblock Phase-locked vocoder. +\newblock In {\em IEEE ASSP Workshop on Applications of Signal Processing to + Audio and Acoustics}, 1995. + +\bibitem[Puc01]{r-puckette01a} +Miller~S. Puckette. +\newblock Synthesizing sounds with specified, time-varying spectra. +\newblock In {\em Proceedings of the International Computer Music Conference}, + pages 361--364, Ann Arbor, 2001. International Computer Music Association. + +\bibitem[Puc05]{r-puckette05} +Miller~S. Puckette. +\newblock Phase bashing for sample-based formant synthesis. +\newblock In {\em Proceedings of the International Computer Music Conference}, + pages 733--736, Ann Arbor, 2005. International Computer Music Association. + +\bibitem[Reg93]{r-mitra93} +Phillip~A. Regalia. +\newblock Special filter design. +\newblock In Sanjit~K. Mitra and James~F. Kaiser, editors, {\em Handbook for + digital signal processing}, pages 907--978. Wiley, New York, 1993. + +\bibitem[RM69]{r-risset69} +Jean-Claude Risset and Max~V. Mathews. +\newblock Analysis of musical instrument tones. +\newblock {\em Physics Today}, 22:23--40, 1969. + +\bibitem[RMW02]{r-rossing02} +Thomas~D. Rossing, F.~Richard Moore, and Paul~A. Wheeler. +\newblock {\em The Science of Sound}. +\newblock Addison Wesley, San Francisco, third edition, 2002. + +\bibitem[Roa01]{r-roads01} +Curtis Roads. +\newblock {\em Microsound}. +\newblock MIT Press, Cambridge, Massachusetts, 2001. + +\bibitem[Sch77]{r-schottstaedt87} +Bill Schottstaedt. +\newblock Simulation of natural instrument tones using frequency modulation + with a complex modulating wave. +\newblock {\em Computer Music Journal}, 1(4):46--50, 1977. + +\bibitem[SI03]{r-smith03} +Julius~Orion Smith~III. +\newblock {\em Mathematics of the Discrete Fourier Transform (DFT), with Music + and Audio Applications}. +\newblock W3K Publishing, Menlo Park, California, 2003. + +\bibitem[Ste96]{r-steiglitz96} +Kenneth Steiglitz. +\newblock {\em A Digital Signal Processing Primer}. +\newblock Addison-Wesley, Menlo Park, California, 1996. + +\bibitem[Str85]{r-strawn85} +John Strawn, editor. +\newblock {\em Digital Audio Signal Processing}. +\newblock William Kaufmann, Los Altos, California, 1985. + +\bibitem[Str95]{r-strange72} +Allen Strange. +\newblock {\em Electronic music: systems, techniques, and controls}. +\newblock W. C. Brown, Dubuque, Iowa, 1995. + +\end{thebibliography} diff --git a/images.idx b/images.idx new file mode 100644 index 0000000..e69de29 diff --git a/images.log b/images.log new file mode 100644 index 0000000..e5303b9 --- /dev/null +++ b/images.log @@ -0,0 +1,8391 @@ +This is TeX, Version 3.14159 (Web2C 7.4.5) (format=latex 2004.3.25) 30 DEC 2006 00:19 +**./images.tex +(./images.tex +LaTeX2e <2001/06/01> +Babel and hyphenation patterns for american, french, german, ngerman, n +ohyphenation, loaded. + +(/usr/share/texmf/tex/generic/misc/psfig.sty +\@unused=\write3 +\ps@stream=\read1 +\p@intvaluex=\dimen102 +\p@intvaluey=\dimen103 +psfig/tex 1.10-dvips +) (/usr/share/texmf/tex/latex/base/book.cls +Document Class: book 2001/04/21 v1.4e Standard LaTeX document class +(/usr/share/texmf/tex/latex/base/bk10.clo +File: bk10.clo 2001/04/21 v1.4e Standard LaTeX file (size option) +) +\c@part=\count79 +\c@chapter=\count80 +\c@section=\count81 +\c@subsection=\count82 +\c@subsubsection=\count83 +\c@paragraph=\count84 +\c@subparagraph=\count85 +\c@figure=\count86 +\c@table=\count87 +\abovecaptionskip=\skip41 +\belowcaptionskip=\skip42 +\bibindent=\dimen104 +) (/usr/share/texmf/tex/latex/base/ifthen.sty +Package: ifthen 2001/05/26 v1.1c Standard LaTeX ifthen package (DPC) +) (/usr/share/texmf/tex/latex/html/html.sty +Package: html 1999/07/19 v1.38 hypertext commands for latex2html (nd, hws, rrm) + +\c@lpart=\count88 +\c@lchapter=\count89 +\c@lsection=\count90 +\c@lsubsection=\count91 +\c@lsubsubsection=\count92 +\c@lparagraph=\count93 +\c@lsubparagraph=\count94 +\c@lsubsubparagraph=\count95 +\ptrfile=\write4 +) (/usr/share/texmf/tex/latex/base/makeidx.sty +Package: makeidx 2000/03/29 v1.0m Standard LaTeX package +) +\@indexfile=\write5 +\openout5 = `images.idx'. + +Writing index file images.idx +(/usr/share/texmf/tex/latex/graphics/color.sty +Package: color 1999/02/16 v1.0i Standard LaTeX Color (DPC) +(/usr/share/texmf/tex/latex/config/color.cfg +File: color.cfg 2001/08/31 v1.1 color configuration of teTeX/TeXLive +) +Package color Info: Driver file: dvips.def on input line 125. +(/usr/share/texmf/tex/latex/graphics/dvips.def +File: dvips.def 1999/02/16 v3.0i Driver-dependant file (DPC,SPQR) +) (/usr/share/texmf/tex/latex/graphics/dvipsnam.def +File: dvipsnam.def 1999/02/16 v3.0i Driver-dependant file (DPC,SPQR) +)) (/usr/share/texmf/tex/latex/base/inputenc.sty +Package: inputenc 2001/07/10 v0.99a Input encoding file +(/usr/share/texmf/tex/latex/base/latin1.def +File: latin1.def 2001/07/10 v0.99a Input encoding file +)) +\sizebox=\box26 +\lthtmlwrite=\write6 +(./images.aux + +LaTeX Warning: Label `fig06.11' multiply defined. + +) +\openout1 = `images.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 123. +LaTeX Font Info: ... okay on input line 123. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 123. +LaTeX Font Info: ... okay on input line 123. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 123. +LaTeX Font Info: ... okay on input line 123. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 123. +LaTeX Font Info: ... okay on input line 123. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 123. +LaTeX Font Info: ... okay on input line 123. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 123. +LaTeX Font Info: ... okay on input line 123. +(/home/msp/papers/book/book.aux + +LaTeX Warning: Label `eq-realsinusoid' multiply defined. + + +LaTeX Warning: Label `fig01.01' multiply defined. + + +LaTeX Warning: Label `sect1.amplitude' multiply defined. + + +LaTeX Warning: Label `fig01.02' multiply defined. + + +LaTeX Warning: Label `fig01.03' multiply defined. + + +LaTeX Warning: Label `fig01.04' multiply defined. + + +LaTeX Warning: Label `eq-pitchmidi' multiply defined. + + +LaTeX Warning: Label `fig01.05' multiply defined. + + +LaTeX Warning: Label `sect1.synth' multiply defined. + + +LaTeX Warning: Label `fig01.06' multiply defined. + + +LaTeX Warning: Label `sect1.combine' multiply defined. + + +LaTeX Warning: Label `fig01.07' multiply defined. + + +LaTeX Warning: Label `eq-meanpowersum' multiply defined. + + +LaTeX Warning: Label `sect1.fourier' multiply defined. + + +LaTeX Warning: Label `eq-fourierseries' multiply defined. + + +LaTeX Warning: Label `r-intervals' multiply defined. + + +LaTeX Warning: Label `fig01.08' multiply defined. + + +LaTeX Warning: Label `fig01.09' multiply defined. + + +LaTeX Warning: Label `fig01.10' multiply defined. + + +LaTeX Warning: Label `sect1.examples' multiply defined. + + +LaTeX Warning: Label `fig01.11' multiply defined. + + +LaTeX Warning: Label `fig01.12' multiply defined. + + +LaTeX Warning: Label `sect1.ex.3' multiply defined. + + +LaTeX Warning: Label `sec1.triad' multiply defined. + + +LaTeX Warning: Label `fig01.13' multiply defined. + + +LaTeX Warning: Label `fig01.14' multiply defined. + + +LaTeX Warning: Label `fig01.15' multiply defined. + + +LaTeX Warning: Label `chapter-wavetable' multiply defined. + + +LaTeX Warning: Label `fig02.01' multiply defined. + + +LaTeX Warning: Label `sect2.oscillator' multiply defined. + + +LaTeX Warning: Label `fig02.02' multiply defined. + + +LaTeX Warning: Label `fig02.03' multiply defined. + + +LaTeX Warning: Label `fig02.04' multiply defined. + + +LaTeX Warning: Label `sect2.sampling' multiply defined. + + +LaTeX Warning: Label `sect2.transpositionformula' multiply defined. + + +LaTeX Warning: Label `sect2.momentaryformula' multiply defined. + + +LaTeX Warning: Label `fig02.05' multiply defined. + + +LaTeX Warning: Label `sect2.enveloping' multiply defined. + + +LaTeX Warning: Label `fig02.06' multiply defined. + + +LaTeX Warning: Label `sect2.stretching' multiply defined. + + +LaTeX Warning: Label `fig02.07' multiply defined. + + +LaTeX Warning: Label `fig02.08' multiply defined. + + +LaTeX Warning: Label `fig02.09' multiply defined. + + +LaTeX Warning: Label `fig02.10' multiply defined. + + +LaTeX Warning: Label `sect2.interpolation' multiply defined. + + +LaTeX Warning: Label `fig02.11' multiply defined. + + +LaTeX Warning: Label `tab02.1' multiply defined. + + +LaTeX Warning: Label `fig02.12' multiply defined. + + +LaTeX Warning: Label `fig02.13' multiply defined. + + +LaTeX Warning: Label `pdpack' multiply defined. + + +LaTeX Warning: Label `fig02.14' multiply defined. + + +LaTeX Warning: Label `sect2.example.loop' multiply defined. + + +LaTeX Warning: Label `fig02.15' multiply defined. + + +LaTeX Warning: Label `sect2.example.overlap' multiply defined. + + +LaTeX Warning: Label `fig02.16' multiply defined. + + +LaTeX Warning: Label `sect3.sampling' multiply defined. + + +LaTeX Warning: Label `fig03.01' multiply defined. + + +LaTeX Warning: Label `sect3.control' multiply defined. + + +LaTeX Warning: Label `fig03.02' multiply defined. + + +LaTeX Warning: Label `fig03.03' multiply defined. + + +LaTeX Warning: Label `sect3.controlstreams' multiply defined. + + +LaTeX Warning: Label `fig03.04' multiply defined. + + +LaTeX Warning: Label `fig03.05' multiply defined. + + +LaTeX Warning: Label `fig03.06' multiply defined. + + +LaTeX Warning: Label `fig03.07' multiply defined. + + +LaTeX Warning: Label `sect3.analog' multiply defined. + + +LaTeX Warning: Label `fig03.08' multiply defined. + + +LaTeX Warning: Label `fig03.09' multiply defined. + + +LaTeX Warning: Label `fig03.10' multiply defined. + + +LaTeX Warning: Label `fig03.11' multiply defined. + + +LaTeX Warning: Label `fig03.12' multiply defined. + + +LaTeX Warning: Label `fig03.13' multiply defined. + + +LaTeX Warning: Label `fig03.14' multiply defined. + + +LaTeX Warning: Label `sect3.noloopsampler' multiply defined. + + +LaTeX Warning: Label `fig03.15' multiply defined. + + +LaTeX Warning: Label `fig03.16' multiply defined. + + +LaTeX Warning: Label `sect4.adsr' multiply defined. + + +LaTeX Warning: Label `fig04.01' multiply defined. + + +LaTeX Warning: Label `fig04.02' multiply defined. + + +LaTeX Warning: Label `sect4.curved' multiply defined. + + +LaTeX Warning: Label `fig04.03' multiply defined. + + +LaTeX Warning: Label `fig04.04' multiply defined. + + +LaTeX Warning: Label `sect4.declick' multiply defined. + + +LaTeX Warning: Label `fig04.05' multiply defined. + + +LaTeX Warning: Label `sect4.muting' multiply defined. + + +LaTeX Warning: Label `fig04.06' multiply defined. + + +LaTeX Warning: Label `fig04.07' multiply defined. + + +LaTeX Warning: Label `sect4.polyphony' multiply defined. + + +LaTeX Warning: Label `sect4.voicealloc' multiply defined. + + +LaTeX Warning: Label `fig04.08' multiply defined. + + +LaTeX Warning: Label `sect4.tags' multiply defined. + + +LaTeX Warning: Label `fig04.09' multiply defined. + + +LaTeX Warning: Label `fig04.10' multiply defined. + + +LaTeX Warning: Label `sect4.encapsulation' multiply defined. + + +LaTeX Warning: Label `fig04.11' multiply defined. + + +LaTeX Warning: Label `fig04.12' multiply defined. + + +LaTeX Warning: Label `fig04.13' multiply defined. + + +LaTeX Warning: Label `fig04.14' multiply defined. + + +LaTeX Warning: Label `fig04.15' multiply defined. + + +LaTeX Warning: Label `fig04.16' multiply defined. + + +LaTeX Warning: Label `fig04.17' multiply defined. + + +LaTeX Warning: Label `fig04.18' multiply defined. + + +LaTeX Warning: Label `fig04.19' multiply defined. + + +LaTeX Warning: Label `fig04.20' multiply defined. + + +LaTeX Warning: Label `fig04.21' multiply defined. + + +LaTeX Warning: Label `chapter-modulation' multiply defined. + + +LaTeX Warning: Label `sect5-spectra' multiply defined. + + +LaTeX Warning: Label `fig05.01' multiply defined. + + +LaTeX Warning: Label `sect5.ringmod' multiply defined. + + +LaTeX Warning: Label `eq-cosinemultiplication' multiply defined. + + +LaTeX Warning: Label `fig05.02' multiply defined. + + +LaTeX Warning: Label `fig05.03' multiply defined. + + +LaTeX Warning: Label `fig05.04' multiply defined. + + +LaTeX Warning: Label `sect5.waveshaping' multiply defined. + + +LaTeX Warning: Label `fig05.05' multiply defined. + + +LaTeX Warning: Label `fig05.06' multiply defined. + + +LaTeX Warning: Label `fig05.07' multiply defined. + + +LaTeX Warning: Label `eq-waveshaping' multiply defined. + + +LaTeX Warning: Label `sect5.FM' multiply defined. + + +LaTeX Warning: Label `fig05.08' multiply defined. + + +LaTeX Warning: Label `sect5.octave' multiply defined. + + +LaTeX Warning: Label `fig05.09' multiply defined. + + +LaTeX Warning: Label `fig05.10' multiply defined. + + +LaTeX Warning: Label `fig05.11' multiply defined. + + +LaTeX Warning: Label `fig05.12' multiply defined. + + +LaTeX Warning: Label `sect5.chebychev' multiply defined. + + +LaTeX Warning: Label `sect5.example.expon' multiply defined. + + +LaTeX Warning: Label `sect5.bessel' multiply defined. + + +LaTeX Warning: Label `sect5.example.fm' multiply defined. + + +LaTeX Warning: Label `fig05.13' multiply defined. + + +LaTeX Warning: Label `fig05.14' multiply defined. + + +LaTeX Warning: Label `fig05.15' multiply defined. + + +LaTeX Warning: Label `fig05.16' multiply defined. + + +LaTeX Warning: Label `chapter-paf' multiply defined. + + +LaTeX Warning: Label `fig06.01' multiply defined. + + +LaTeX Warning: Label `sect6.model' multiply defined. + + +LaTeX Warning: Label `fig06.02' multiply defined. + + +LaTeX Warning: Label `fig06.03' multiply defined. + + +LaTeX Warning: Label `sect6.pulse' multiply defined. + + +LaTeX Warning: Label `fig06.04' multiply defined. + + +LaTeX Warning: Label `fig06.05' multiply defined. + + +LaTeX Warning: Label `fig06.06' multiply defined. + + +LaTeX Warning: Label `sect6.carrier' multiply defined. + + +LaTeX Warning: Label `fig06.07' multiply defined. + + +LaTeX Warning: Label `sect6.paf' multiply defined. + + +LaTeX Warning: Label `fig06.08' multiply defined. + + +LaTeX Warning: Label `fig06.09' multiply defined. + + +LaTeX Warning: Label `fig06.10' multiply defined. + + +LaTeX Warning: Label `fig06.11' multiply defined. + + +LaTeX Warning: Label `fig06.11' multiply defined. + + +LaTeX Warning: Label `fig06.12' multiply defined. + + +LaTeX Warning: Label `fig06.13' multiply defined. + + +LaTeX Warning: Label `fig06.14' multiply defined. + + +LaTeX Warning: Label `fig06.15' multiply defined. + + +LaTeX Warning: Label `fig06.16' multiply defined. + + +LaTeX Warning: Label `fig06.17' multiply defined. + + +LaTeX Warning: Label `fig06.18' multiply defined. + + +LaTeX Warning: Label `chapter-delay' multiply defined. + + +LaTeX Warning: Label `fig07.01' multiply defined. + + +LaTeX Warning: Label `sect7.complex' multiply defined. + + +LaTeX Warning: Label `fig07.02' multiply defined. + + +LaTeX Warning: Label `sect7.phase' multiply defined. + + +LaTeX Warning: Label `sect7.network' multiply defined. + + +LaTeX Warning: Label `fig07.03' multiply defined. + + +LaTeX Warning: Label `fig07.04' multiply defined. + + +LaTeX Warning: Label `fig07.05' multiply defined. + + +LaTeX Warning: Label `fig07.06' multiply defined. + + +LaTeX Warning: Label `sect7.recirculatingcomb' multiply defined. + + +LaTeX Warning: Label `fig07.07' multiply defined. + + +LaTeX Warning: Label `fig07.08' multiply defined. + + +LaTeX Warning: Label `fig07.09' multiply defined. + + +LaTeX Warning: Label `fig07.10' multiply defined. + + +LaTeX Warning: Label `fig07.11' multiply defined. + + +LaTeX Warning: Label `fig07.12' multiply defined. + + +LaTeX Warning: Label `fig07.13' multiply defined. + + +LaTeX Warning: Label `fig07.14' multiply defined. + + +LaTeX Warning: Label `fig07.15' multiply defined. + + +LaTeX Warning: Label `sect7-fractional' multiply defined. + + +LaTeX Warning: Label `fig07.16' multiply defined. + + +LaTeX Warning: Label `fig07.17' multiply defined. + + +LaTeX Warning: Label `eq.momentarydel' multiply defined. + + +LaTeX Warning: Label `fig07.18' multiply defined. + + +LaTeX Warning: Label `sect7.pitchshift' multiply defined. + + +LaTeX Warning: Label `fig07.19' multiply defined. + + +LaTeX Warning: Label `fig07.20' multiply defined. + + +LaTeX Warning: Label `fig07.21' multiply defined. + + +LaTeX Warning: Label `sect7.psformula' multiply defined. + + +LaTeX Warning: Label `fig07.22' multiply defined. + + +LaTeX Warning: Label `fig07.23' multiply defined. + + +LaTeX Warning: Label `fig07.24' multiply defined. + + +LaTeX Warning: Label `fig07.25' multiply defined. + + +LaTeX Warning: Label `fig07.26' multiply defined. + + +LaTeX Warning: Label `fig07.27' multiply defined. + + +LaTeX Warning: Label `fig07.28' multiply defined. + + +LaTeX Warning: Label `fig07.29' multiply defined. + + +LaTeX Warning: Label `fig07.30' multiply defined. + + +LaTeX Warning: Label `fig07.31' multiply defined. + + +LaTeX Warning: Label `fig07.32' multiply defined. + + +LaTeX Warning: Label `fig07.33' multiply defined. + + +LaTeX Warning: Label `chapter-filter' multiply defined. + + +LaTeX Warning: Label `fig08.01' multiply defined. + + +LaTeX Warning: Label `fig08.02' multiply defined. + + +LaTeX Warning: Label `fig08.03' multiply defined. + + +LaTeX Warning: Label `sect8.bandpassdef' multiply defined. + + +LaTeX Warning: Label `fig08.04' multiply defined. + + +LaTeX Warning: Label `sect8.equalizing' multiply defined. + + +LaTeX Warning: Label `fig08.05' multiply defined. + + +LaTeX Warning: Label `fig08.06' multiply defined. + + +LaTeX Warning: Label `fig08.07' multiply defined. + + +LaTeX Warning: Label `sect8.nonrecirculating' multiply defined. + + +LaTeX Warning: Label `fig08.08' multiply defined. + + +LaTeX Warning: Label `fig08.09' multiply defined. + + +LaTeX Warning: Label `sect8.secondform' multiply defined. + + +LaTeX Warning: Label `fig08.10' multiply defined. + + +LaTeX Warning: Label `sect8.recirculating' multiply defined. + + +LaTeX Warning: Label `fig08.11' multiply defined. + + +LaTeX Warning: Label `fig08.12' multiply defined. + + +LaTeX Warning: Label `sect08.low-pass' multiply defined. + + +LaTeX Warning: Label `fig08.13' multiply defined. + + +LaTeX Warning: Label `sect08.highpass' multiply defined. + + +LaTeX Warning: Label `fig08.14' multiply defined. + + +LaTeX Warning: Label `sect8.shelving' multiply defined. + + +LaTeX Warning: Label `fig08.15' multiply defined. + + +LaTeX Warning: Label `sect8.twopolebandpass' multiply defined. + + +LaTeX Warning: Label `fig08.16' multiply defined. + + +LaTeX Warning: Label `sect8.peaking' multiply defined. + + +LaTeX Warning: Label `fig08.17' multiply defined. + + +LaTeX Warning: Label `fig08.18' multiply defined. + + +LaTeX Warning: Label `fig08.19' multiply defined. + + +LaTeX Warning: Label `sect8.timevarying' multiply defined. + + +LaTeX Warning: Label `fig08.20' multiply defined. + + +LaTeX Warning: Label `fig08.21' multiply defined. + + +LaTeX Warning: Label `fig08.22' multiply defined. + + +LaTeX Warning: Label `fig08.23' multiply defined. + + +LaTeX Warning: Label `sect08.subtractive' multiply defined. + + +LaTeX Warning: Label `fig08.24' multiply defined. + + +LaTeX Warning: Label `fig08.25' multiply defined. + + +LaTeX Warning: Label `sect8.envelopefollower' multiply defined. + + +LaTeX Warning: Label `fig08.26' multiply defined. + + +LaTeX Warning: Label `fig08.27' multiply defined. + + +LaTeX Warning: Label `sect8.singlesideband' multiply defined. + + +LaTeX Warning: Label `fig08.28' multiply defined. + + +LaTeX Warning: Label `fig08.29' multiply defined. + + +LaTeX Warning: Label `sect8.heterodyning' multiply defined. + + +LaTeX Warning: Label `fig08.30' multiply defined. + + +LaTeX Warning: Label `fig08.31' multiply defined. + + +LaTeX Warning: Label `fig08.32' multiply defined. + + +LaTeX Warning: Label `fig08.33' multiply defined. + + +LaTeX Warning: Label `chapter-fourier' multiply defined. + + +LaTeX Warning: Label `chapter-fft' multiply defined. + + +LaTeX Warning: Label `sect9-IFT' multiply defined. + + +LaTeX Warning: Label `fig09.01' multiply defined. + + +LaTeX Warning: Label `sect9.shift' multiply defined. + + +LaTeX Warning: Label `fig09.02' multiply defined. + + +LaTeX Warning: Label `fig09.03' multiply defined. + + +LaTeX Warning: Label `fig09.04' multiply defined. + + +LaTeX Warning: Label `fig09.05' multiply defined. + + +LaTeX Warning: Label `fig09.06' multiply defined. + + +LaTeX Warning: Label `fig09.07' multiply defined. + + +LaTeX Warning: Label `fig09.08' multiply defined. + + +LaTeX Warning: Label `fig09.09' multiply defined. + + +LaTeX Warning: Label `sect9.phase' multiply defined. + + +LaTeX Warning: Label `fig09.10' multiply defined. + + +LaTeX Warning: Label `fig09.11' multiply defined. + + +LaTeX Warning: Label `fig09.12' multiply defined. + + +LaTeX Warning: Label `sect9.phaserelationship' multiply defined. + + +LaTeX Warning: Label `sect9-bash' multiply defined. + + +LaTeX Warning: Label `fig09.13' multiply defined. + + +LaTeX Warning: Label `fig09.14' multiply defined. + + +LaTeX Warning: Label `fig09.15' multiply defined. + + +LaTeX Warning: Label `fig09.16' multiply defined. + + +LaTeX Warning: Label `fig09.17' multiply defined. + + +LaTeX Warning: Label `fig09.18' multiply defined. + + +LaTeX Warning: Label `chapter-waveforms' multiply defined. + + +LaTeX Warning: Label `fig10.01' multiply defined. + + +LaTeX Warning: Label `fig10.02' multiply defined. + + +LaTeX Warning: Label `fig10.03' multiply defined. + + +LaTeX Warning: Label `fig10.04' multiply defined. + + +LaTeX Warning: Label `fig10.05' multiply defined. + + +LaTeX Warning: Label `sect10.spectra' multiply defined. + + +LaTeX Warning: Label `fig10.06' multiply defined. + + +LaTeX Warning: Label `fig10.07' multiply defined. + + +LaTeX Warning: Label `sect10.gentriangle' multiply defined. + + +LaTeX Warning: Label `fig10.08' multiply defined. + + +LaTeX Warning: Label `fig10.09' multiply defined. + + +LaTeX Warning: Label `fig10.10' multiply defined. + + +LaTeX Warning: Label `fig10.11' multiply defined. + + +LaTeX Warning: Label `fig10.12' multiply defined. + + +LaTeX Warning: Label `fig10.13' multiply defined. + + +LaTeX Warning: Label `fig10.14' multiply defined. + + +LaTeX Warning: Label `r-ballora03' multiply defined. + + +LaTeX Warning: Label `r-blesser01' multiply defined. + + +LaTeX Warning: Label `r-boulanger00' multiply defined. + + +LaTeX Warning: Label `r-chamberlin80' multiply defined. + + +LaTeX Warning: Label `r-chowning73' multiply defined. + + +LaTeX Warning: Label `r-chowning89' multiply defined. + + +LaTeX Warning: Label `r-dodge85' multiply defined. + + +LaTeX Warning: Label `r-dolson97' multiply defined. + + +LaTeX Warning: Label `r-grey77' multiply defined. + + +LaTeX Warning: Label `r-hartmann87' multiply defined. + + +LaTeX Warning: Label `r-karplus83' multiply defined. + + +LaTeX Warning: Label `r-lebrun77' multiply defined. + + +LaTeX Warning: Label `r-lebrun79' multiply defined. + + +LaTeX Warning: Label `r-mathews69' multiply defined. + + +LaTeX Warning: Label `r-moore90' multiply defined. + + +LaTeX Warning: Label `r-parks87' multiply defined. + + +LaTeX Warning: Label `r-puckette95a' multiply defined. + + +LaTeX Warning: Label `r-puckette95b' multiply defined. + + +LaTeX Warning: Label `r-puckette01a' multiply defined. + + +LaTeX Warning: Label `r-puckette05' multiply defined. + + +LaTeX Warning: Label `r-mitra93' multiply defined. + + +LaTeX Warning: Label `r-risset69' multiply defined. + + +LaTeX Warning: Label `r-rossing02' multiply defined. + + +LaTeX Warning: Label `r-roads01' multiply defined. + + +LaTeX Warning: Label `r-schottstaedt87' multiply defined. + + +LaTeX Warning: Label `r-smith03' multiply defined. + + +LaTeX Warning: Label `r-steiglitz96' multiply defined. + + +LaTeX Warning: Label `r-strawn85' multiply defined. + + +LaTeX Warning: Label `r-strange72' multiply defined. + +) + +latex2htmlLength hsize=349.0pt + +latex2htmlLength vsize=627.36243pt + +latex2htmlLength hoffset=0.0pt + +latex2htmlLength voffset=0.0pt + +latex2htmlLength topmargin=0.0pt + +latex2htmlLength topskip=0.00003pt + +latex2htmlLength headheight=0.0pt + +latex2htmlLength headsep=0.0pt + +latex2htmlLength parskip=0.0pt plus 1.0pt + +latex2htmlLength oddsidemargin=35.0pt + +latex2htmlLength evensidemargin=89.0pt + +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <7> on input line 147. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <5> on input line 147. +l2hSize :tex2html_wrap_inline19209:9.57217pt::9.57217pt::13.8334pt. +[1 + + + +] +l2hSize :tex2html_wrap_inline19212:8.0pt::8.0pt::17.31955pt. +[2 + + +] +l2hSize :tex2html_wrap_inline19215:6.83331pt::0.0pt::9.625pt. +[3 + + +] +l2hSize :tex2html_wrap_inline19218:6.45831pt::0.0pt::5.78592pt. +[4 + + +] +l2hSize :tex2html_wrap_inline19221:8.0pt::8.0pt::16.55911pt. +[5 + + +] +l2hSize :tex2html_wrap_inline19223:8.0pt::8.0pt::21.55913pt. +[6 + + +] +l2hSize :tex2html_wrap_inline19227:6.45831pt::0.0pt::6.93407pt. +[7 + + +] +l2hSize :tex2html_wrap_inline19229:7.44444pt::7.44444pt::6.68405pt. +[8 + + +] +l2hSize :tex2html_wrap_inline19231:7.44444pt::7.44444pt::44.78455pt. +[9 + + +] +l2hSize :tex2html_wrap_inline19233:7.44444pt::7.44444pt::26.45131pt. +[10 + + +] +l2hSize :tex2html_wrap_inline19235:7.44444pt::7.44444pt::24.80553pt. +[11 + + +] +l2hSize :tex2html_wrap_inline19237:7.44444pt::7.44444pt::26.45131pt. +[12 + + +] +l2hSize :tex2html_wrap_inline19239:6.45831pt::0.0pt::25.2673pt. +[13 + + +] +l2hSize :tex2html_wrap_inline19248:8.0pt::8.0pt::14.25009pt. +[14 + + +] +l2hSize :tex2html_wrap_inline19251:8.64003pt::8.64003pt::43.49998pt. +[15 + + +] +l2hSize :tex2html_wrap_inline19254:6.45831pt::0.0pt::11.5591pt. +[16 + + +] +l2hSize :tex2html_wrap_inline19257:8.0pt::8.0pt::100.52777pt. +[17 + + +] +l2hSize :tex2html_wrap_inline19259:6.45831pt::0.0pt::24.11916pt. +[18 + + +] +l2hSize :tex2html_wrap_inline19261:6.45831pt::0.0pt::24.11916pt. +[19 + + +] +l2hSize :tex2html_wrap_inline19269:6.83331pt::0.0pt::8.0417pt. +[20 + + +] +l2hSize :tex2html_wrap_inline19273:6.94444pt::0.0pt::4.79169pt. +[21 + + +] +l2hSize :tex2html_wrap_inline19280:8.0pt::8.0pt::31.93051pt. +[22 + + +] +l2hSize :tex2html_wrap_inline19282:6.83331pt::0.0pt::8.00005pt. +[23 + + +] +l2hSize :tex2html_wrap_inline19289:7.96227pt::0.0pt::19.99658pt. +[24 + + +] +l2hSize :tex2html_wrap_inline19291:6.83331pt::0.0pt::9.625pt. +[25 + + +] +l2hSize :tex2html_wrap_inline19295:8.0pt::8.0pt::15.70493pt. +[26 + + +] +l2hSize :tex2html_wrap_inline19302:6.45831pt::0.0pt::7.08334pt. +[27 + + +] +l2hSize :tex2html_wrap_inline19305:6.94444pt::0.0pt::5.7049pt. +[28 + + +] +l2hSize :tex2html_wrap_inline19307:6.95831pt::6.95831pt::5.6285pt. +[29 + + +] +l2hSize :tex2html_wrap_inline19311:8.0pt::8.0pt::15.18057pt. +[30 + + +] +l2hSize :tex2html_wrap_inline19313:6.83331pt::0.0pt::11.33337pt. +[31 + + +] +l2hSize :tex2html_wrap_inline19323:6.95831pt::6.95831pt::31.73953pt. +[32 + + +] +l2hSize :tex2html_wrap_inline19325:8.0pt::8.0pt::40.62848pt. +[33 + + +] +l2hSize :tex2html_wrap_inline19329:8.0pt::8.0pt::34.86456pt. +[34 + + +] +l2hSize :tex2html_wrap_inline19331:9.85pt::9.85pt::163.06349pt. +[35 + + +] +l2hSize :tex2html_wrap_inline19335:6.83331pt::0.0pt::8.17018pt. +[36 + + +] +l2hSize :tex2html_wrap_inline19338:6.95831pt::6.95831pt::8.59727pt. +[37 + + +] +l2hSize :tex2html_wrap_inline19340:6.95831pt::6.95831pt::8.59727pt. +[38 + + +] +l2hSize :tex2html_wrap_inline19342:6.95831pt::6.95831pt::8.59727pt. +[39 + + +] +l2hSize :tex2html_wrap_inline19347:6.83331pt::0.0pt::9.05698pt. +[40 + + +] +l2hSize :tex2html_wrap_inline19350:6.45831pt::0.0pt::6.55908pt. +[41 + + +] +l2hSize :tex2html_wrap_inline19353:7.33331pt::7.33331pt::8.40558pt. +[42 + + +] +l2hSize :tex2html_wrap_inline19355:7.33331pt::7.33331pt::34.51662pt. +[43 + + +] +l2hSize :tex2html_wrap_inline19367:8.0pt::8.0pt::32.08374pt. +[44 + + +] +l2hSize :tex2html_wrap_inline19371:6.45831pt::0.0pt::31.40044pt. +[45 + + +] +l2hSize :tex2html_wrap_inline19374:8.0pt::8.0pt::36.07635pt. +[46 + + +] +l2hSize :tex2html_wrap_inline19376:7.44444pt::7.44444pt::26.07632pt. +[47 + + +] +l2hSize :tex2html_wrap_inline19378:8.0pt::8.0pt::46.07639pt. +[48 + + +] +l2hSize :tex2html_wrap_inline19380:8.0pt::8.0pt::46.07639pt. +[49 + + +] +l2hSize :tex2html_wrap_inline19382:7.44444pt::7.44444pt::25.01729pt. +[50 + + +] +l2hSize :tex2html_wrap_inline19389:8.64003pt::8.64003pt::56.62848pt. +[51 + + +] +l2hSize :tex2html_wrap_inline19395:8.0pt::8.0pt::16.55911pt. +[52 + + +] +l2hSize :tex2html_wrap_inline19398:6.83331pt::0.0pt::34.4201pt. +[53 + + +] +l2hSize :tex2html_wrap_inline19400:6.83331pt::0.0pt::34.4201pt. +[54 + + +] +l2hSize :tex2html_wrap_inline19402:8.0pt::8.0pt::39.97568pt. +[55 + + +] +l2hSize :tex2html_wrap_inline19404:8.0pt::8.0pt::26.55914pt. +[56 + + +] +l2hSize :tex2html_wrap_inline19410:6.95831pt::6.95831pt::5.53128pt. +[57 + + +] +l2hSize :tex2html_wrap_inline19413:6.94444pt::0.0pt::6.02087pt. +[58 + + +] +l2hSize :tex2html_wrap_inline19421:6.45831pt::0.0pt::12.08336pt. +[59 + + +] +l2hSize :tex2html_wrap_inline19423:6.45831pt::0.0pt::19.86116pt. +[60 + + +] +l2hSize :tex2html_wrap_inline19428:8.0pt::8.0pt::77.59013pt. +[61 + + +] +l2hSize :tex2html_wrap_inline19437:7.33331pt::7.33331pt::16.36392pt. +[62 + + +] +l2hSize :tex2html_wrap_inline19439:6.83331pt::0.0pt::37.95827pt. +[63 + + +] +l2hSize :tex2html_wrap_inline19443:8.0pt::8.0pt::31.50931pt. +[64 + + +] +! You can't use `\spacefactor' in math mode. +\@->\spacefactor + \@m +l.531 $\@ + mathrm {fft}\sim $% +Sorry, but I'm not programmed to handle this case; +I'll just pretend that you didn't ask for it. +If you're in the wrong mode, you might be able to +return to the right one by typing `I}' or `I$' or `I\par'. + +Missing character: There is no ^^e8 in font cmex10! +l2hSize :tex2html_wrap_inline19446:7.44444pt::7.44444pt::63.6194pt. +[65 + + +] +l2hSize :tex2html_wrap_inline19449:8.0pt::8.0pt::27.2859pt. +[66 + + +] +l2hSize :tex2html_wrap_inline19451:8.0pt::8.0pt::22.72227pt. +[67 + + +] +l2hSize :tex2html_wrap_inline19453:8.0pt::8.0pt::43.79172pt. +[68 + + +] +l2hSize :tex2html_wrap_inline19458:8.0pt::8.0pt::27.95836pt. +[69 + + +] +l2hSize :tex2html_wrap_inline19460:8.0pt::8.0pt::57.08327pt. +[70 + + +] +l2hSize :tex2html_wrap_inline19464:8.0pt::8.0pt::55.41661pt. +[71 + + +] +l2hSize :tex2html_wrap_inline19466:8.0pt::8.0pt::16.0209pt. +[72 + + +] +l2hSize :tex2html_wrap_inline19468:8.64003pt::8.64003pt::20.50703pt. +[73 + + +] +l2hSize :displaymath1490:14.5pt::0.0pt::349.0pt. +[74 + + +] +l2hSize :tex2html_wrap_inline1530:6.45831pt::0.0pt::6.50238pt. +[75 + + +] +l2hSize :displaymath1491:14.5pt::0.0pt::349.0pt. +[76 + + +] +l2hSize :tex2html_wrap_inline1536:7.44444pt::7.44444pt::6.45837pt. +[77 + + +] +l2hSize :tex2html_wrap_inline1540:7.44444pt::7.44444pt::31.26617pt. +[78 + + +] +l2hSize :tex2html_wrap_inline1542:6.45831pt::0.0pt::24.83562pt. +[79 + + +] +l2hSize :tex2html_wrap_inline1546:8.0pt::8.0pt::17.77322pt. +[80 + + +] +psfig: searching figs/fig01.01.ps for bounding box +psfig: including figs/fig01.01.ps +l2hSize :figure1026:226.84749pt::0.0pt::294.09875pt. +[81 + + +] +l2hSize :tex2html_wrap_inline1550:6.45831pt::0.0pt::4.11115pt. +[82 + + +] +l2hSize :tex2html_wrap_inline1554:6.83331pt::0.0pt::31.11687pt. +[83 + + +] +l2hSize :tex2html_wrap_inline1556:8.0pt::8.0pt::36.11688pt. +[84 + + +] +l2hSize :displaymath1492:21.4579pt::0.0pt::349.0pt. +[85 + + +] +l2hSize :tex2html_wrap_inline1566:6.83331pt::0.0pt::11.29169pt. +[86 + + +] +l2hSize :displaymath1493:14.5pt::0.0pt::349.0pt. +[87 + + +] +l2hSize :displaymath1494:14.86108pt::0.0pt::349.0pt. +[88 + + +] +l2hSize :displaymath1495:14.56187pt::0.0pt::349.0pt. +[89 + + +] +l2hSize :tex2html_wrap_inline1572:8.0pt::8.0pt::35.58229pt. +[90 + + +] +l2hSize :displaymath1496:21.06903pt::0.0pt::349.0pt. +[91 + + +] +l2hSize :tex2html_wrap_inline1576:9.7666pt::9.7666pt::27.95839pt. +[92 + + +] +psfig: searching figs/fig01.02.ps for bounding box +psfig: including figs/fig01.02.ps +l2hSize :figure1057:221.82875pt::0.0pt::254.9525pt. +[93 + + +] +l2hSize :tex2html_wrap_inline1582:9.57217pt::9.57217pt::24.11931pt. +[94 + + +] +l2hSize :displaymath1497:14.5pt::0.0pt::349.0pt. +[95 + + +] +l2hSize :tex2html_wrap_inline1588:6.95831pt::6.95831pt::10.27205pt. +[96 + + +] +l2hSize :tex2html_wrap_inline1590:9.57217pt::9.57217pt::18.83342pt. +[97 + + +] +l2hSize :tex2html_wrap_inline1592:8.0pt::8.0pt::15.50008pt. +[98 + + +] +psfig: searching figs/fig01.03.ps for bounding box +psfig: including figs/fig01.03.ps +l2hSize :figure1073:195.73125pt::0.0pt::302.12875pt. +[99 + + +] +l2hSize :tex2html_wrap_inline1598:8.0pt::8.0pt::25.2721pt. +[100 + + +] +l2hSize :tex2html_wrap_inline1600:8.0pt::8.0pt::30.27211pt. +[101 + + +] +l2hSize :tex2html_wrap_inline1602:6.95831pt::6.95831pt::18.27785pt. +[102 + + +] +l2hSize :displaymath1498:13.49998pt::0.0pt::349.0pt. +[103 + + +] +psfig: searching figs/fig01.04.ps for bounding box +psfig: including figs/fig01.04.ps +l2hSize :figure1088:198.74251pt::0.0pt::303.1325pt. +[104 + + +] +l2hSize :tex2html_wrap_inline1608:6.95831pt::6.95831pt::24.09486pt. +[105 + + +] +l2hSize :tex2html_wrap_inline1610:6.95831pt::6.95831pt::5.76163pt. +[106 + + +] +l2hSize :tex2html_wrap_inline1612:8.0pt::8.0pt::30.25694pt. +[107 + + +] +l2hSize :tex2html_wrap_inline1622:8.0pt::8.0pt::41.81487pt. +[108 + + +] +l2hSize :tex2html_wrap_inline1626:7.33331pt::7.33331pt::49.86095pt. +[109 + + +] +l2hSize :tex2html_wrap_inline1638:8.87892pt::0.0pt::22.05566pt. +[110 + + +] +l2hSize :tex2html_wrap_inline1640:6.45831pt::0.0pt::9.28017pt. +[111 + + +] +l2hSize :tex2html_wrap_inline1642:7.44444pt::7.44444pt::6.47229pt. +[112 + + +] +l2hSize :displaymath1499:14.5pt::0.0pt::349.0pt. +[113 + + +] +l2hSize :displaymath1500:13.94444pt::0.0pt::349.0pt. +[114 + + +] +l2hSize :tex2html_wrap_inline1644:6.45831pt::0.0pt::32.61342pt. +[115 + + +] +l2hSize :tex2html_wrap_inline1646:7.44444pt::7.44444pt::52.58339pt. +[116 + + +] +psfig: searching figs/fig01.05.ps for bounding box +psfig: including figs/fig01.05.ps +l2hSize :figure1121:195.73125pt::0.0pt::283.0575pt. +[117 + + +] +psfig: searching figs/fig01.06.ps for bounding box +psfig: including figs/fig01.06.ps +l2hSize :figure1127:389.455pt::0.0pt::329.23001pt. +[118 + + +] +l2hSize :displaymath1501:21.4579pt::0.0pt::349.0pt. +[119 + + +] +l2hSize :tex2html_wrap_inline1674:6.94444pt::0.0pt::23.4108pt. +[120 + + +] +psfig: searching figs/fig01.07.ps for bounding box +psfig: including figs/fig01.07.ps +l2hSize :figure1146:176.65999pt::0.0pt::236.88501pt. +[121 + + +] +l2hSize :tex2html_wrap_inline1680:8.0pt::8.0pt::30.51619pt. +[122 + + +] +l2hSize :tex2html_wrap_inline1682:7.44444pt::7.44444pt::24.35411pt. +[123 + + +] +l2hSize :tex2html_wrap_inline1684:6.94444pt::0.0pt::13.52089pt. +[124 + + +] +l2hSize :tex2html_wrap_inline1686:8.14003pt::0.0pt::10.507pt. +[125 + + +] +l2hSize :displaymath1502:14.86108pt::0.0pt::349.0pt. +[126 + + +] +l2hSize :displaymath1503:14.5pt::0.0pt::349.0pt. +[127 + + +] +l2hSize :tex2html_wrap_inline1694:7.33331pt::7.33331pt::49.86095pt. +[128 + + +] +l2hSize :displaymath1504:14.5pt::0.0pt::349.0pt. +[129 + + +] +l2hSize :displaymath1505:22.12459pt::0.0pt::349.0pt. +[130 + + +] +l2hSize :displaymath1506:14.5pt::0.0pt::349.0pt. +[131 + + +] +l2hSize :displaymath1507:14.5pt::0.0pt::349.0pt. +[132 + + +] +l2hSize :tex2html_wrap_inline1698:9.57217pt::9.57217pt::19.1193pt. +[133 + + +] +l2hSize :tex2html_wrap_inline1700:6.45831pt::0.0pt::10.78593pt. +[134 + + +] +l2hSize :tex2html_wrap_inline1704:6.45831pt::0.0pt::6.00351pt. +[135 + + +] +l2hSize :displaymath1508:14.5pt::0.0pt::349.0pt. +[136 + + +] +l2hSize :tex2html_wrap_inline1708:6.45831pt::0.0pt::11.00352pt. +[137 + + +] +l2hSize :tex2html_wrap_inline1716:8.0pt::8.0pt::23.14243pt. +[138 + + +] +l2hSize :tex2html_wrap_inline1720:8.0pt::8.0pt::28.66327pt. +[139 + + +] +l2hSize :displaymath1509:14.86108pt::0.0pt::349.0pt. +[140 + + +] +l2hSize :tex2html_wrap_inline1730:6.95831pt::6.95831pt::39.2221pt. +[141 + + +] +psfig: searching figs/fig01.08.ps for bounding box +psfig: including figs/fig01.08.ps +l2hSize :figure1194:258.96751pt::0.0pt::306.14374pt. +[142 + + +] +psfig: searching figs/fig01.09.ps for bounding box +psfig: including figs/fig01.09.ps +l2hSize :figure1200:273.02pt::0.0pt::343.2825pt. +[143 + + +] +psfig: searching figs/fig01.10.ps for bounding box +psfig: including figs/fig01.10.ps +l2hSize :figure1236:157.58876pt::0.0pt::353.32pt. +[144 + + +] +psfig: searching figs/fig01.11.ps for bounding box +psfig: including figs/fig01.11.ps +l2hSize :figure1254:421.575pt::0.0pt::387.44751pt. +[145 + + +] +l2hSize :tex2html_wrap_inline1994:8.20554pt::8.20554pt::34.57776pt. +[146 + + +] +l2hSize :tex2html_wrap_inline2000:8.55278pt::8.55278pt::29.5222pt. +[147 + + +] +l2hSize :tex2html_wrap_inline2006:10.84444pt::10.84444pt::36.18889pt. +[148 + + +] +psfig: searching figs/fig01.12.ps for bounding box +psfig: including figs/fig01.12.ps +l2hSize :figure1271:238.8925pt::0.0pt::364.36124pt. +[149 + + +] +l2hSize :tex2html_wrap_inline2026:10.84444pt::10.84444pt::46.82788pt. +[150 + + +] +l2hSize :tex2html_wrap_inline2028:10.84444pt::10.84444pt::57.38339pt. +[151 + + +] +l2hSize :tex2html_wrap_inline2040:10.84444pt::10.84444pt::36.74445pt. +[152 + + +] +psfig: searching figs/fig01.13.ps for bounding box +psfig: including figs/fig01.13.ps +l2hSize :figure1294:135.50624pt::0.0pt::381.42499pt. +[153 + + +] +l2hSize :tex2html_wrap_inline2070:10.84444pt::10.84444pt::31.4112pt. +[154 + + +] +l2hSize :tex2html_wrap_inline2072:10.84444pt::10.84444pt::30.9112pt. +[155 + + +] +l2hSize :tex2html_wrap_inline2080:10.57858pt::10.57858pt::40.10559pt. +[156 + + +] +l2hSize :tex2html_wrap_inline2082:8.20554pt::8.20554pt::14.55002pt. +[157 + + +] +l2hSize :tex2html_wrap_inline2090:10.84444pt::10.84444pt::30.13338pt. +[158 + + +] +l2hSize :tex2html_wrap_inline2092:8.20554pt::8.20554pt::17.91112pt. +[159 + + +] +psfig: searching figs/fig01.14.ps for bounding box +psfig: including figs/fig01.14.ps +l2hSize :figure1320:210.78749pt::0.0pt::316.18124pt. +[160 + + +] +psfig: searching figs/fig01.15.ps for bounding box +psfig: including figs/fig01.15.ps +l2hSize :figure1328:140.52501pt::0.0pt::280.04625pt. +[161 + + +] +l2hSize :tex2html_wrap_inline1776:7.44444pt::7.44444pt::24.79161pt. +[162 + + +] +l2hSize :tex2html_wrap_inline1778:8.0pt::8.0pt::41.47566pt. +[163 + + +] +l2hSize :tex2html_wrap_inline1780:6.45831pt::0.0pt::29.83563pt. +[164 + + +] +l2hSize :tex2html_wrap_inline1782:8.0pt::8.0pt::90.12253pt. +[165 + + +] +l2hSize :tex2html_wrap_inline2726:7.33331pt::7.33331pt::68.40492pt. +[166 + + +] +l2hSize :tex2html_wrap_inline2734:8.0pt::8.0pt::17.14825pt. +[167 + + +] +l2hSize :displaymath2656:14.5pt::0.0pt::349.0pt. +[168 + + +] +psfig: searching figs/fig02.01.ps for bounding box +psfig: including figs/fig02.01.ps +l2hSize :figure2154:140.52501pt::0.0pt::249.93375pt. +[169 + + +] +l2hSize :tex2html_wrap_inline2740:7.33331pt::7.33331pt::49.06935pt. +[170 + + +] +l2hSize :tex2html_wrap_inline2746:7.33331pt::7.33331pt::26.84715pt. +[171 + + +] +l2hSize :displaymath2657:37.00037pt::0.0pt::349.0pt. +[172 + + +] +l2hSize :tex2html_wrap_inline2754:8.0pt::8.0pt::26.20844pt. +[173 + + +] +l2hSize :tex2html_wrap_inline2758:8.0pt::8.0pt::16.31721pt. +[174 + + +] +l2hSize :tex2html_wrap_inline2760:8.0pt::8.0pt::16.14592pt. +[175 + + +] +l2hSize :tex2html_wrap_inline2762:8.0pt::8.0pt::16.31721pt. +[176 + + +] +l2hSize :tex2html_wrap_inline2764:8.0pt::8.0pt::16.14592pt. +[177 + + +] +l2hSize :tex2html_wrap_inline2768:8.0pt::8.0pt::58.11098pt. +[178 + + +] +l2hSize :tex2html_wrap_inline2774:6.45831pt::0.0pt::5.50005pt. +[179 + + +] +l2hSize :tex2html_wrap_inline2776:6.45831pt::0.0pt::10.50006pt. +[180 + + +] +l2hSize :tex2html_wrap_inline2778:8.0pt::8.0pt::23.17023pt. +[181 + + +] +psfig: searching figs/fig02.02.ps for bounding box +psfig: including figs/fig02.02.ps +l2hSize :figure2174:494.84874pt::0.0pt::318.18875pt. +[182 + + +] +psfig: searching figs/fig02.03.ps for bounding box +psfig: including figs/fig02.03.ps +l2hSize :figure2188:232.87001pt::0.0pt::299.1175pt. +[183 + + +] +l2hSize :tex2html_wrap_inline2802:8.0pt::8.0pt::25.12852pt. +[184 + + +] +l2hSize :tex2html_wrap_inline2804:8.0pt::8.0pt::54.4397pt. +[185 + + +] +l2hSize :tex2html_wrap_inline2806:8.0pt::8.0pt::36.10646pt. +[186 + + +] +l2hSize :tex2html_wrap_inline2808:8.0pt::8.0pt::36.10646pt. +[187 + + +] +l2hSize :displaymath2658:14.5pt::0.0pt::349.0pt. +[188 + + +] +l2hSize :displaymath2659:14.5pt::0.0pt::349.0pt. +[189 + + +] +psfig: searching figs/fig02.04.ps for bounding box +psfig: including figs/fig02.04.ps +l2hSize :figure2196:243.91124pt::0.0pt::253.94876pt. +[190 + + +] +l2hSize :tex2html_wrap_inline2826:8.0pt::8.0pt::24.02777pt. +[191 + + +] +l2hSize :tex2html_wrap_inline2828:8.0pt::8.0pt::28.26743pt. +[192 + + +] +l2hSize :tex2html_wrap_inline2834:8.0pt::8.0pt::32.44441pt. +[193 + + +] +l2hSize :tex2html_wrap_inline2836:6.94444pt::0.0pt::6.26161pt. +[194 + + +] +l2hSize :displaymath2660:14.5pt::0.0pt::349.0pt. +[195 + + +] +l2hSize :displaymath2661:25.00023pt::0.0pt::349.0pt. +[196 + + +] +l2hSize :displaymath2662:23.50351pt::0.0pt::349.0pt. +[197 + + +] +l2hSize :displaymath2663:25.44795pt::0.0pt::349.0pt. +[198 + + +] +l2hSize :tex2html_wrap_inline2844:8.0pt::8.0pt::14.92831pt. +[199 + + +] +l2hSize :displaymath2664:14.5pt::0.0pt::349.0pt. +[200 + + +] +l2hSize :displaymath2665:14.5pt::0.0pt::349.0pt. +[201 + + +] +l2hSize :tex2html_wrap_inline2850:8.0pt::8.0pt::3.27782pt. +[202 + + +] +l2hSize :tex2html_wrap_inline2852:8.0pt::8.0pt::36.65512pt. +[203 + + +] +l2hSize :tex2html_wrap_inline2854:8.0pt::8.0pt::47.75467pt. +[204 + + +] +l2hSize :displaymath2666:14.5pt::0.0pt::349.0pt. +[205 + + +] +l2hSize :tex2html_wrap_inline2856:8.0pt::8.0pt::41.65514pt. +[206 + + +] +l2hSize :displaymath2667:14.5pt::0.0pt::349.0pt. +[207 + + +] +l2hSize :tex2html_wrap_inline2872:6.45831pt::0.0pt::5.18753pt. +[208 + + +] +l2hSize :tex2html_wrap_inline2874:8.0pt::8.0pt::40.77429pt. +[209 + + +] +l2hSize :tex2html_wrap_inline2880:6.94444pt::0.0pt::3.6806pt. +[210 + + +] +l2hSize :tex2html_wrap_inline2894:7.44444pt::7.44444pt::20.59024pt. +[211 + + +] +l2hSize :tex2html_wrap_inline2898:8.0pt::8.0pt::23.27788pt. +[212 + + +] +l2hSize :tex2html_wrap_inline2904:8.0pt::8.0pt::22.96536pt. +[213 + + +] +l2hSize :tex2html_wrap_inline2906:8.0pt::8.0pt::15.18756pt. +[214 + + +] +l2hSize :tex2html_wrap_inline2910:8.0pt::8.0pt::30.59027pt. +[215 + + +] +l2hSize :tex2html_wrap_inline2912:8.0pt::8.0pt::30.59027pt. +[216 + + +] +psfig: searching figs/fig02.05.ps for bounding box +psfig: including figs/fig02.05.ps +l2hSize :figure2230:277.03499pt::0.0pt::244.91501pt. +[217 + + +] +psfig: searching figs/fig02.06.ps for bounding box +psfig: including figs/fig02.06.ps +l2hSize :figure2241:214.8025pt::0.0pt::322.20375pt. +[218 + + +] +psfig: searching figs/fig02.07.ps for bounding box +psfig: including figs/fig02.07.ps +l2hSize :figure2247:306.14375pt::0.0pt::232.87pt. +[219 + + +] +psfig: searching figs/fig02.08.ps for bounding box +psfig: including figs/fig02.08.ps +l2hSize :figure2254:273.02pt::0.0pt::398.48874pt. +[220 + + +] +psfig: searching figs/fig02.09.ps for bounding box +psfig: including figs/fig02.09.ps +l2hSize :figure2269:222.8325pt::0.0pt::392.46625pt. +[221 + + +] +l2hSize :displaymath2668:14.5pt::0.0pt::349.0pt. +[222 + + +] +l2hSize :tex2html_wrap_inline2934:8.0pt::8.0pt::21.55913pt. +[223 + + +] +l2hSize :tex2html_wrap_inline2936:8.0pt::8.0pt::26.24548pt. +[224 + + +] +l2hSize :displaymath2669:18.85951pt::0.0pt::349.0pt. +[225 + + +] +l2hSize :tex2html_wrap_inline2940:8.0pt::8.0pt::18.14241pt. +[226 + + +] +l2hSize :displaymath2670:14.5pt::0.0pt::349.0pt. +[227 + + +] +l2hSize :displaymath2671:14.5pt::0.0pt::349.0pt. +[228 + + +] +l2hSize :displaymath2672:14.5pt::0.0pt::349.0pt. +[229 + + +] +l2hSize :displaymath2673:14.5pt::0.0pt::349.0pt. +[230 + + +] +l2hSize :displaymath2674:14.5pt::0.0pt::349.0pt. +[231 + + +] +l2hSize :displaymath2675:13.94444pt::0.0pt::349.0pt. +[232 + + +] +l2hSize :tex2html_wrap_inline2944:6.95831pt::6.95831pt::14.68756pt. +[233 + + +] +l2hSize :tex2html_wrap_inline2946:6.95831pt::6.95831pt::18.67369pt. +[234 + + +] +l2hSize :tex2html_wrap_inline2952:6.95831pt::6.95831pt::18.67369pt. +[235 + + +] +l2hSize :displaymath2676:18.85951pt::0.0pt::349.0pt. +[236 + + +] +l2hSize :tex2html_wrap_inline2956:6.95831pt::6.95831pt::9.31372pt. +[237 + + +] +l2hSize :tex2html_wrap_inline2958:6.95831pt::6.95831pt::9.31372pt. +[238 + + +] +l2hSize :tex2html_wrap_inline2960:6.45831pt::0.0pt::12.16664pt. +[239 + + +] +l2hSize :displaymath2677:13.94444pt::0.0pt::349.0pt. +[240 + + +] +l2hSize :tex2html_wrap_inline2968:8.0pt::8.0pt::16.47232pt. +[241 + + +] +psfig: searching figs/fig02.10.ps for bounding box +psfig: including figs/fig02.10.ps +l2hSize :figure2340:230.8625pt::0.0pt::331.23749pt. +[242 + + +] +l2hSize :tex2html_wrap_inline2978:6.45831pt::0.0pt::6.2153pt. +[243 + + +] +l2hSize :tex2html_wrap_inline2980:6.95831pt::6.95831pt::10.70143pt. +[244 + + +] +l2hSize :displaymath2678:14.5pt::0.0pt::349.0pt. +[245 + + +] +l2hSize :tex2html_wrap_inline2982:6.95831pt::6.95831pt::23.72453pt. +[246 + + +] +l2hSize :tex2html_wrap_inline2988:6.95831pt::6.95831pt::10.70143pt. +[247 + + +] +l2hSize :tex2html_wrap_inline2992:8.0pt::8.0pt::15.10419pt. +[248 + + +] +l2hSize :displaymath2679:14.5pt::0.0pt::349.0pt. +[249 + + +] +l2hSize :displaymath2680:14.5pt::0.0pt::349.0pt. +[250 + + +] +l2hSize :displaymath2681:14.5pt::0.0pt::349.0pt. +[251 + + +] +l2hSize :tex2html_wrap_inline2994:6.95831pt::6.95831pt::23.72453pt. +[252 + + +] +psfig: searching figs/fig02.11.ps for bounding box +psfig: including figs/fig02.11.ps +l2hSize :figure2372:342.27875pt::0.0pt::333.245pt. +[253 + + +] +l2hSize :displaymath2682:14.5pt::0.0pt::349.0pt. +[254 + + +] +l2hSize :displaymath2683:14.5pt::0.0pt::349.0pt. +[255 + + +] +l2hSize :displaymath2684:14.5pt::0.0pt::349.0pt. +[256 + + +] +l2hSize :tex2html_wrap_inline3000:7.44444pt::7.44444pt::47.94432pt. +[257 + + +] +l2hSize :tex2html_wrap_inline3006:7.44444pt::7.44444pt::44.59013pt. +[258 + + +] +l2hSize :tex2html_wrap_inline3008:6.94444pt::0.0pt::24.35411pt. +[259 + + +] +l2hSize :tex2html_wrap_inline3020:8.0pt::8.0pt::36.84718pt. +[260 + + +] +l2hSize :tex2html_wrap_inline3032:7.33331pt::7.33331pt::26.84715pt. +[261 + + +] +l2hSize :tex2html_wrap_inline3036:6.45831pt::0.0pt::5.50005pt. +[262 + + +] +l2hSize :tex2html_wrap_inline3040:7.33331pt::7.33331pt::26.84715pt. +[263 + + +] +l2hSize :displaymath2685:14.5pt::0.0pt::349.0pt. +[264 + + +] +l2hSize :tex2html_wrap_inline3044:7.33331pt::7.33331pt::26.84715pt. +[265 + + +] +l2hSize :displaymath2686:14.5pt::0.0pt::349.0pt. +[266 + + +] +l2hSize :tex2html_wrap_inline3052:6.45831pt::0.0pt::24.83562pt. +[267 + + +] +l2hSize :tex2html_wrap_inline3064:7.33331pt::7.33331pt::26.84715pt. +[268 + + +] +l2hSize :tex2html_wrap_inline3068:6.45831pt::0.0pt::5.50005pt. +[269 + + +] +l2hSize :tex2html_wrap_inline3070:7.33331pt::7.33331pt::26.84715pt. +[270 + + +] +l2hSize :displaymath2687:14.5pt::0.0pt::349.0pt. +[271 + + +] +psfig: searching figs/fig02.12.ps for bounding box +psfig: including figs/fig02.12.ps +l2hSize :figure2398:150.5625pt::0.0pt::368.37625pt. +[272 + + +] +l2hSize :tex2html_wrap_inline3366:10.84444pt::10.84444pt::54.30005pt. +[273 + + +] +l2hSize :tex2html_wrap_inline3076:7.1428pt::7.1428pt::30.31831pt. +[274 + + +] +psfig: searching figs/fig02.13.ps for bounding box +psfig: including figs/fig02.13.ps +l2hSize :figure2410:458.71376pt::0.0pt::299.1175pt. +[275 + + +] +l2hSize :tex2html_wrap_inline3386:10.84444pt::10.84444pt::62.88339pt. +[276 + + +] +l2hSize :tex2html_wrap_inline3392:10.84444pt::10.84444pt::60.93892pt. +[277 + + +] +l2hSize :tex2html_wrap_inline3402:10.84444pt::10.84444pt::33.96672pt. +[278 + + +] +psfig: searching figs/fig02.14.ps for bounding box +psfig: including figs/fig02.14.ps +l2hSize :figure2428:318.18875pt::0.0pt::265.99374pt. +[279 + + +] +l2hSize :tex2html_wrap_inline3424:10.84444pt::10.84444pt::38.41112pt. +[280 + + +] +psfig: searching figs/fig02.15.ps for bounding box +psfig: including figs/fig02.15.ps +l2hSize :figure2441:358.33876pt::0.0pt::353.32pt. +[281 + + +] +l2hSize :tex2html_wrap_inline3444:8.20554pt::8.20554pt::37.91109pt. +[282 + + +] +l2hSize :tex2html_wrap_inline3100:8.0pt::8.0pt::24.33691pt. +[283 + + +] +l2hSize :tex2html_wrap_inline3458:10.84444pt::10.84444pt::66.24452pt. +[284 + + +] +psfig: searching figs/fig02.16.ps for bounding box +psfig: including figs/fig02.16.ps +l2hSize :figure2464:477.78499pt::0.0pt::397.485pt. +[285 + + +] +l2hSize :tex2html_wrap_inline3478:10.84444pt::10.84444pt::53.55011pt. +[286 + + +] +l2hSize :tex2html_wrap_inline3484:8.20554pt::8.20554pt::33.16116pt. +[287 + + +] +l2hSize :tex2html_wrap_inline3490:8.20554pt::8.20554pt::39.55002pt. +[288 + + +] +l2hSize :tex2html_wrap_inline3496:10.84444pt::10.84444pt::44.02222pt. +[289 + + +] +l2hSize :tex2html_wrap_inline3498:8.20554pt::8.20554pt::28.46663pt. +[290 + + +] +l2hSize :tex2html_wrap_inline3500:10.57858pt::10.57858pt::53.99443pt. +[291 + + +] +l2hSize :tex2html_wrap_inline3502:8.20554pt::8.20554pt::28.43886pt. +[292 + + +] +l2hSize :tex2html_wrap_inline3140:6.45831pt::0.0pt::4.82759pt. +[293 + + +] +l2hSize :displaymath2688:13.94444pt::0.0pt::349.0pt. +[294 + + +] +l2hSize :displaymath2689:23.50351pt::0.0pt::349.0pt. +[295 + + +] +l2hSize :tex2html_wrap_inline3148:6.45831pt::0.0pt::20.50009pt. +[296 + + +] +l2hSize :tex2html_wrap_inline3150:6.83331pt::0.0pt::46.50348pt. +[297 + + +] +l2hSize :displaymath3946:14.5pt::0.0pt::349.0pt. +[298 + + +] +l2hSize :tex2html_wrap_inline3972:8.0pt::8.0pt::36.19444pt. +[299 + + +] +l2hSize :tex2html_wrap_inline3984:8.0pt::8.0pt::18.17021pt. +[300 + + +] +l2hSize :tex2html_wrap_inline3992:6.95831pt::6.95831pt::25.36453pt. +[301 + + +] +l2hSize :displaymath3947:14.5pt::0.0pt::349.0pt. +[302 + + +] +l2hSize :displaymath3948:14.5pt::0.0pt::349.0pt. +[303 + + +] +l2hSize :displaymath3949:14.5pt::0.0pt::349.0pt. +[304 + + +] +l2hSize :tex2html_wrap_inline4006:6.45831pt::0.0pt::10.50005pt. +[305 + + +] +psfig: searching figs/fig03.01.ps for bounding box +psfig: including figs/fig03.01.ps +l2hSize :figure3562:87.32625pt::0.0pt::236.88501pt. +[306 + + +] +l2hSize :tex2html_wrap_inline4024:8.0pt::8.0pt::17.8612pt. +[307 + + +] +l2hSize :displaymath3950:25.00023pt::0.0pt::349.0pt. +[308 + + +] +l2hSize :tex2html_wrap_inline4030:8.0pt::8.0pt::16.50241pt. +[309 + + +] +psfig: searching figs/fig03.02.ps for bounding box +psfig: including figs/fig03.02.ps +l2hSize :figure3582:189.70876pt::0.0pt::353.32pt. +[310 + + +] +l2hSize :tex2html_wrap_inline4036:6.83331pt::0.0pt::8.58684pt. +[311 + + +] +l2hSize :tex2html_wrap_inline4038:6.83331pt::0.0pt::26.92007pt. +[312 + + +] +l2hSize :tex2html_wrap_inline4040:7.33331pt::7.33331pt::53.0312pt. +[313 + + +] +psfig: searching figs/fig03.03.ps for bounding box +psfig: including figs/fig03.03.ps +l2hSize :figure3590:63.23625pt::0.0pt::195.73126pt. +[314 + + +] +l2hSize :displaymath3951:14.5pt::0.0pt::349.0pt. +[315 + + +] +l2hSize :displaymath3952:14.5pt::0.0pt::349.0pt. +[316 + + +] +l2hSize :displaymath3953:14.5pt::0.0pt::349.0pt. +[317 + + +] +l2hSize :tex2html_wrap_inline4048:8.0pt::8.0pt::15.66907pt. +[318 + + +] +l2hSize :displaymath3954:14.5pt::0.0pt::349.0pt. +[319 + + +] +l2hSize :tex2html_wrap_inline4054:8.0pt::8.0pt::21.257pt. +[320 + + +] +psfig: searching figs/fig03.04.ps for bounding box +psfig: including figs/fig03.04.ps +l2hSize :figure3607:344.28624pt::0.0pt::370.38376pt. +[321 + + +] +l2hSize :tex2html_wrap_inline4058:8.0pt::8.0pt::13.00003pt. +[322 + + +] +l2hSize :tex2html_wrap_inline4064:8.0pt::8.0pt::41.62503pt. +[323 + + +] +l2hSize :tex2html_wrap_inline4070:7.44444pt::7.44444pt::43.13876pt. +[324 + + +] +l2hSize :displaymath3955:14.5pt::0.0pt::349.0pt. +[325 + + +] +l2hSize :displaymath3956:13.94444pt::0.0pt::349.0pt. +[326 + + +] +l2hSize :displaymath3957:13.94444pt::0.0pt::349.0pt. +[327 + + +] +psfig: searching figs/fig03.05.ps for bounding box +psfig: including figs/fig03.05.ps +l2hSize :figure3614:137.51375pt::0.0pt::237.88876pt. +[328 + + +] +l2hSize :tex2html_wrap_inline4084:7.33331pt::7.33331pt::26.81133pt. +[329 + + +] +psfig: searching figs/fig03.06.ps for bounding box +psfig: including figs/fig03.06.ps +l2hSize :figure3625:136.51pt::0.0pt::240.9pt. +[330 + + +] +psfig: searching figs/fig03.07.ps for bounding box +psfig: including figs/fig03.07.ps +l2hSize :figure3640:364.36125pt::0.0pt::300.12125pt. +[331 + + +] +l2hSize :tex2html_wrap_inline4092:6.45831pt::0.0pt::36.61111pt. +[332 + + +] +psfig: searching figs/fig03.08.ps for bounding box +psfig: including figs/fig03.08.ps +l2hSize :figure3654:331.2375pt::0.0pt::376.40625pt. +[333 + + +] +psfig: searching figs/fig03.09.ps for bounding box +psfig: including figs/fig03.09.ps +l2hSize :figure3663:276.03125pt::0.0pt::349.305pt. +[334 + + +] +psfig: searching figs/fig03.10.ps for bounding box +psfig: including figs/fig03.10.ps +l2hSize :figure3678:259.97125pt::0.0pt::238.8925pt. +[335 + + +] +psfig: searching figs/fig03.11.ps for bounding box +psfig: including figs/fig03.11.ps +l2hSize :figure3688:354.32375pt::0.0pt::225.84375pt. +[336 + + +] +psfig: searching figs/fig03.12.ps for bounding box +psfig: including figs/fig03.12.ps +l2hSize :figure3703:171.64125pt::0.0pt::236.88501pt. +[337 + + +] +l2hSize :tex2html_wrap_inline4370:10.84444pt::10.84444pt::26.74448pt. +[338 + + +] +l2hSize :tex2html_wrap_inline4372:10.84444pt::10.84444pt::36.88338pt. +[339 + + +] +l2hSize :tex2html_wrap_inline4380:10.57858pt::10.57858pt::32.57784pt. +[340 + + +] +l2hSize :tex2html_wrap_inline4390:8.20554pt::8.20554pt::39.63338pt. +[341 + + +] +l2hSize :tex2html_wrap_inline4396:10.84444pt::10.84444pt::37.91113pt. +[342 + + +] +l2hSize :tex2html_wrap_inline4398:10.84444pt::10.84444pt::25.13335pt. +[343 + + +] +psfig: searching figs/fig03.13.ps for bounding box +psfig: including figs/fig03.13.ps +l2hSize :figure3739:467.74751pt::0.0pt::321.20001pt. +[344 + + +] +l2hSize :tex2html_wrap_inline4428:10.84444pt::10.84444pt::26.18893pt. +[345 + + +] +l2hSize :tex2html_wrap_inline4442:10.84444pt::10.84444pt::42.02225pt. +[346 + + +] +psfig: searching figs/fig03.14.ps for bounding box +psfig: including figs/fig03.14.ps +l2hSize :figure3760:295.1025pt::0.0pt::358.33875pt. +[347 + + +] +l2hSize :tex2html_wrap_inline4476:10.84444pt::10.84444pt::59.63339pt. +[348 + + +] +l2hSize :tex2html_wrap_inline4484:8.20554pt::8.20554pt::36.32776pt. +[349 + + +] +psfig: searching figs/fig03.15.ps for bounding box +psfig: including figs/fig03.15.ps +l2hSize :figure3775:450.68375pt::0.0pt::330.23375pt. +[350 + + +] +psfig: searching figs/fig03.16.ps for bounding box +psfig: including figs/fig03.16.ps +l2hSize :figure3785:305.14pt::0.0pt::335.2525pt. +[351 + + +] +l2hSize :tex2html_wrap_inline4514:10.57858pt::10.57858pt::37.85564pt. +[352 + + +] +l2hSize :tex2html_wrap_inline4520:10.57858pt::10.57858pt::49.60565pt. +[353 + + +] +l2hSize :tex2html_wrap_inline4526:10.57858pt::10.57858pt::39.57785pt. +[354 + + +] +l2hSize :tex2html_wrap_inline4528:10.05078pt::10.05078pt::14.52225pt. +[355 + + +] +psfig: searching figs/fig04.01.ps for bounding box +psfig: including figs/fig04.01.ps +l2hSize :figure4581:133.49875pt::0.0pt::217.81375pt. +[356 + + +] +psfig: searching figs/fig04.02.ps for bounding box +psfig: including figs/fig04.02.ps +l2hSize :figure4591:349.30501pt::0.0pt::225.84375pt. +[357 + + +] +l2hSize :tex2html_wrap_inline5047:6.83331pt::0.0pt::18.17021pt. +[358 + + +] +l2hSize :tex2html_wrap_inline5051:8.0pt::8.0pt::67.10312pt. +[359 + + +] +l2hSize :displaymath5035:21.3985pt::0.0pt::349.0pt. +[360 + + +] +l2hSize :displaymath5036:14.5pt::0.0pt::349.0pt. +[361 + + +] +l2hSize :displaymath5037:14.5pt::0.0pt::349.0pt. +[362 + + +] +l2hSize :displaymath5038:14.5pt::0.0pt::349.0pt. +[363 + + +] +l2hSize :tex2html_wrap_inline5063:8.0pt::8.0pt::25.5001pt. +[364 + + +] +psfig: searching figs/fig04.03.ps for bounding box +psfig: including figs/fig04.03.ps +l2hSize :figure4614:270.00874pt::0.0pt::420.57126pt. +[365 + + +] +l2hSize :displaymath5039:14.5pt::0.0pt::349.0pt. +[366 + + +] +psfig: searching figs/fig04.04.ps for bounding box +psfig: including figs/fig04.04.ps +l2hSize :figure4622:176.65999pt::0.0pt::236.88501pt. +[367 + + +] +psfig: searching figs/fig04.05.ps for bounding box +psfig: including figs/fig04.05.ps +l2hSize :figure4637:232.87001pt::0.0pt::220.82501pt. +[368 + + +] +psfig: searching figs/fig04.06.ps for bounding box +psfig: including figs/fig04.06.ps +l2hSize :figure4651:110.41249pt::0.0pt::232.87pt. +[369 + + +] +psfig: searching figs/fig04.07.ps for bounding box +psfig: including figs/fig04.07.ps +l2hSize :figure4657:264.99pt::0.0pt::198.7425pt. +[370 + + +] +psfig: searching figs/fig04.08.ps for bounding box +psfig: including figs/fig04.08.ps +l2hSize :figure4669:214.8025pt::0.0pt::117.43875pt. +[371 + + +] +psfig: searching figs/fig04.09.ps for bounding box +psfig: including figs/fig04.09.ps +l2hSize :figure4680:262.9825pt::0.0pt::132.495pt. +[372 + + +] +psfig: searching figs/fig04.10.ps for bounding box +psfig: including figs/fig04.10.ps +l2hSize :figure4686:149.55875pt::0.0pt::258.9675pt. +[373 + + +] +l2hSize :tex2html_wrap_inline5349:10.84444pt::10.84444pt::30.07784pt. +[374 + + +] +l2hSize :tex2html_wrap_inline5351:10.84444pt::10.84444pt::40.63335pt. +[375 + + +] +l2hSize :tex2html_wrap_inline5359:10.84444pt::10.84444pt::39.5223pt. +[376 + + +] +l2hSize :tex2html_wrap_inline5361:10.84444pt::10.84444pt::50.0778pt. +[377 + + +] +psfig: searching figs/fig04.11.ps for bounding box +psfig: including figs/fig04.11.ps +l2hSize :figure4726:161.60374pt::0.0pt::282.05374pt. +[378 + + +] +psfig: searching figs/fig04.12.ps for bounding box +psfig: including figs/fig04.12.ps +l2hSize :figure4742:163.61125pt::0.0pt::288.07626pt. +[379 + + +] +psfig: searching figs/fig04.13.ps for bounding box +psfig: including figs/fig04.13.ps +l2hSize :figure4751:123.46126pt::0.0pt::334.24875pt. +[380 + + +] +psfig: searching figs/fig04.14.ps for bounding box +psfig: including figs/fig04.14.ps +l2hSize :figure4759:287.0725pt::0.0pt::378.41376pt. +[381 + + +] +psfig: searching figs/fig04.15.ps for bounding box +psfig: including figs/fig04.15.ps +l2hSize :figure4768:251.94125pt::0.0pt::245.91876pt. +[382 + + +] +l2hSize :tex2html_wrap_inline5433:10.84444pt::10.84444pt::41.74454pt. +[383 + + +] +psfig: searching figs/fig04.16.ps for bounding box +psfig: including figs/fig04.16.ps +l2hSize :figure4783:257.96376pt::0.0pt::331.23749pt. +[384 + + +] +psfig: searching figs/fig04.17.ps for bounding box +psfig: including figs/fig04.17.ps +l2hSize :figure4788:254.9525pt::0.0pt::326.21875pt. +[385 + + +] +l2hSize :tex2html_wrap_inline5463:10.01111pt::10.01111pt::42.13307pt. +[386 + + +] +l2hSize :tex2html_wrap_inline5465:10.84444pt::10.84444pt::40.91112pt. +[387 + + +] +l2hSize :tex2html_wrap_inline5469:10.01111pt::10.01111pt::42.13307pt. +[388 + + +] +l2hSize :tex2html_wrap_inline5471:10.84444pt::10.84444pt::43.3pt. +[389 + + +] +l2hSize :tex2html_wrap_inline5145:7.44444pt::7.44444pt::28.93054pt. +[390 + + +] +psfig: searching figs/fig04.18.ps for bounding box +psfig: including figs/fig04.18.ps +l2hSize :figure4819:264.99pt::0.0pt::345.29001pt. +[391 + + +] +psfig: searching figs/fig04.19.ps for bounding box +psfig: including figs/fig04.19.ps +l2hSize :figure4824:277.03499pt::0.0pt::374.39874pt. +[392 + + +] +psfig: searching figs/fig04.20.ps for bounding box +psfig: including figs/fig04.20.ps +l2hSize :figure4837:387.4475pt::0.0pt::309.155pt. +[393 + + +] +psfig: searching figs/fig04.21.ps for bounding box +psfig: including figs/fig04.21.ps +l2hSize :figure4842:416.55626pt::0.0pt::364.36124pt. +[394 + + +] +l2hSize :tex2html_wrap_inline5531:10.84444pt::10.84444pt::29.80008pt. +[395 + + +] +l2hSize :tex2html_wrap_inline5535:10.84444pt::10.84444pt::21.05005pt. +[396 + + +] +l2hSize :tex2html_wrap_inline5539:10.84444pt::10.84444pt::29.66118pt. +[397 + + +] +l2hSize :tex2html_wrap_inline5545:10.01111pt::10.01111pt::52.63298pt. +[398 + + +] +l2hSize :tex2html_wrap_inline5547:10.84444pt::10.84444pt::48.96678pt. +[399 + + +] +l2hSize :tex2html_wrap_inline5167:8.0pt::8.0pt::44.45718pt. +[400 + + +] +l2hSize :tex2html_wrap_inline5169:6.95831pt::6.95831pt::13.27785pt. +[401 + + +] +psfig: searching figs/fig05.01.ps for bounding box +psfig: including figs/fig05.01.ps +l2hSize :figure5597:279.0425pt::0.0pt::284.06125pt. +[402 + + +] +l2hSize :tex2html_wrap_inline6147:6.45831pt::0.0pt::52.1663pt. +[403 + + +] +l2hSize :displaymath6003:14.5pt::0.0pt::349.0pt. +[404 + + +] +l2hSize :tex2html_wrap_inline6149:6.45831pt::0.0pt::45.49973pt. +[405 + + +] +l2hSize :tex2html_wrap_inline6151:6.94444pt::0.0pt::43.73927pt. +[406 + + +] +l2hSize :tex2html_wrap_inline6153:6.94444pt::0.0pt::53.18675pt. +[407 + + +] +l2hSize :displaymath6004:14.5pt::0.0pt::349.0pt. +[408 + + +] +l2hSize :tex2html_wrap_inline6155:8.0pt::8.0pt::15.78595pt. +[409 + + +] +l2hSize :tex2html_wrap_inline6159:7.44444pt::7.44444pt::44.70815pt. +[410 + + +] +l2hSize :displaymath6005:21.43695pt::0.0pt::349.0pt. +[411 + + +] +l2hSize :displaymath6006:14.5pt::0.0pt::349.0pt. +[412 + + +] +l2hSize :displaymath6007:14.5pt::0.0pt::349.0pt. +[413 + + +] +l2hSize :displaymath6008:21.43695pt::0.0pt::349.0pt. +[414 + + +] +l2hSize :tex2html_wrap_inline6163:7.44444pt::7.44444pt::25.34023pt. +[415 + + +] +psfig: searching figs/fig05.02.ps for bounding box +psfig: including figs/fig05.02.ps +l2hSize :figure5647:115.43126pt::0.0pt::233.87375pt. +[416 + + +] +l2hSize :displaymath6009:14.5pt::0.0pt::349.0pt. +[417 + + +] +psfig: searching figs/fig05.03.ps for bounding box +psfig: including figs/fig05.03.ps +l2hSize :figure5653:522.95375pt::0.0pt::277.035pt. +[418 + + +] +l2hSize :tex2html_wrap_inline6195:7.44444pt::7.44444pt::25.34023pt. +[419 + + +] +l2hSize :tex2html_wrap_inline6199:7.44444pt::7.44444pt::43.67346pt. +[420 + + +] +l2hSize :displaymath6010:14.5pt::0.0pt::349.0pt. +[421 + + +] +l2hSize :tex2html_wrap_inline6201:7.44444pt::7.44444pt::25.34023pt. +[422 + + +] +l2hSize :displaymath6011:14.5pt::0.0pt::349.0pt. +[423 + + +] +l2hSize :displaymath6012:14.5pt::0.0pt::349.0pt. +[424 + + +] +l2hSize :tex2html_wrap_inline6209:6.95831pt::6.95831pt::13.56372pt. +[425 + + +] +l2hSize :tex2html_wrap_inline6211:6.95831pt::6.95831pt::13.56372pt. +[426 + + +] +l2hSize :tex2html_wrap_inline6213:7.44444pt::7.44444pt::23.5156pt. +[427 + + +] +l2hSize :displaymath6013:14.5pt::0.0pt::349.0pt. +[428 + + +] +l2hSize :displaymath6014:13.94444pt::0.0pt::349.0pt. +[429 + + +] +l2hSize :tex2html_wrap_inline6229:6.45831pt::0.0pt::12.16664pt. +[430 + + +] +psfig: searching figs/fig05.04.ps for bounding box +psfig: including figs/fig05.04.ps +l2hSize :figure5667:293.09499pt::0.0pt::296.10626pt. +[431 + + +] +psfig: searching figs/fig05.05.ps for bounding box +psfig: including figs/fig05.05.ps +l2hSize :figure5679:180.675pt::0.0pt::232.87pt. +[432 + + +] +psfig: searching figs/fig05.06.ps for bounding box +psfig: including figs/fig05.06.ps +l2hSize :figure5691:259.97125pt::0.0pt::327.2225pt. +[433 + + +] +l2hSize :displaymath6015:14.5pt::0.0pt::349.0pt. +[434 + + +] +l2hSize :displaymath6017:22.76462pt::0.0pt::349.0pt. +[435 + + +] +psfig: searching figs/fig05.07.ps for bounding box +psfig: including figs/fig05.07.ps +l2hSize :figure5699:259.97125pt::0.0pt::321.20001pt. +[436 + + +] +l2hSize :displaymath6018:14.5pt::0.0pt::349.0pt. +[437 + + +] +l2hSize :displaymath6019:22.76462pt::0.0pt::349.0pt. +[438 + + +] +l2hSize :displaymath6020:22.76462pt::0.0pt::349.0pt. +[439 + + +] +l2hSize :displaymath6021:14.5pt::0.0pt::349.0pt. +[440 + + +] +l2hSize :displaymath6022:14.5pt::0.0pt::349.0pt. +[441 + + +] +l2hSize :tex2html_wrap_inline6257:8.64003pt::8.64003pt::46.02782pt. +[442 + + +] +l2hSize :displaymath6024:14.5pt::0.0pt::349.0pt. +[443 + + +] +l2hSize :displaymath6025:14.5pt::0.0pt::349.0pt. +[444 + + +] +l2hSize :displaymath6026:14.5pt::0.0pt::349.0pt. +[445 + + +] +l2hSize :displaymath6027:14.5pt::0.0pt::349.0pt. +[446 + + +] +l2hSize :tex2html_wrap_inline6269:8.0pt::8.0pt::37.4491pt. +[447 + + +] +l2hSize :displaymath6028:14.5pt::0.0pt::349.0pt. +[448 + + +] +l2hSize :displaymath6029:14.5pt::0.0pt::349.0pt. +[449 + + +] +l2hSize :tex2html_wrap_inline6277:8.0pt::8.0pt::34.2524pt. +[450 + + +] +l2hSize :displaymath6030:14.5pt::0.0pt::349.0pt. +[451 + + +] +l2hSize :displaymath6031:14.5pt::0.0pt::349.0pt. +[452 + + +] +l2hSize :displaymath6032:14.5pt::0.0pt::349.0pt. +[453 + + +] +l2hSize :displaymath6033:21.06903pt::0.0pt::349.0pt. +[454 + + +] +l2hSize :displaymath6034:21.06903pt::0.0pt::349.0pt. +[455 + + +] +l2hSize :displaymath6035:21.06903pt::0.0pt::349.0pt. +[456 + + +] +l2hSize :displaymath6036:21.06903pt::0.0pt::349.0pt. +[457 + + +] +l2hSize :tex2html_wrap_inline6287:7.44444pt::7.44444pt::10.31606pt. +[458 + + +] +l2hSize :displaymath6037:14.5pt::0.0pt::349.0pt. +[459 + + +] +l2hSize :tex2html_wrap_inline6295:8.0pt::8.0pt::19.96536pt. +[460 + + +] +l2hSize :displaymath6038:14.5pt::0.0pt::349.0pt. +[461 + + +] +l2hSize :displaymath6039:14.5pt::0.0pt::349.0pt. +[462 + + +] +l2hSize :tex2html_wrap_inline6303:6.95831pt::6.95831pt::14.32068pt. +[463 + + +] +l2hSize :tex2html_wrap_inline6305:6.95831pt::6.95831pt::10.79831pt. +[464 + + +] +l2hSize :tex2html_wrap_inline6307:8.0pt::8.0pt::40.58763pt. +[465 + + +] +l2hSize :tex2html_wrap_inline6309:8.0pt::8.0pt::40.58763pt. +[466 + + +] +l2hSize :tex2html_wrap_inline6313:6.45831pt::0.0pt::5.2894pt. +[467 + + +] +l2hSize :displaymath6040:14.5pt::0.0pt::349.0pt. +[468 + + +] +l2hSize :tex2html_wrap_inline6327:6.45831pt::0.0pt::24.11916pt. +[469 + + +] +psfig: searching figs/fig05.08.ps for bounding box +psfig: including figs/fig05.08.ps +l2hSize :figure5777:324.21126pt::0.0pt::334.24875pt. +[470 + + +] +l2hSize :displaymath6041:14.5pt::0.0pt::349.0pt. +[471 + + +] +l2hSize :displaymath6042:14.5pt::0.0pt::349.0pt. +[472 + + +] +l2hSize :tex2html_wrap_inline6339:8.0pt::8.0pt::60.18056pt. +[473 + + +] +l2hSize :tex2html_wrap_inline6341:8.0pt::8.0pt::59.06946pt. +[474 + + +] +l2hSize :displaymath6043:14.5pt::0.0pt::349.0pt. +[475 + + +] +l2hSize :displaymath6044:14.5pt::0.0pt::349.0pt. +[476 + + +] +l2hSize :displaymath6045:13.94444pt::0.0pt::349.0pt. +[477 + + +] +l2hSize :displaymath6046:13.94444pt::0.0pt::349.0pt. +[478 + + +] +l2hSize :displaymath6047:13.49998pt::0.0pt::349.0pt. +[479 + + +] +l2hSize :displaymath6048:13.94444pt::0.0pt::349.0pt. +[480 + + +] +l2hSize :tex2html_wrap_inline6349:6.94444pt::0.0pt::11.52435pt. +[481 + + +] +l2hSize :tex2html_wrap_inline6351:6.45831pt::0.0pt::14.78365pt. +[482 + + +] +l2hSize :tex2html_wrap_inline6357:6.94444pt::0.0pt::20.30449pt. +[483 + + +] +l2hSize :tex2html_wrap_inline6359:7.44444pt::7.44444pt::39.75806pt. +[484 + + +] +l2hSize :tex2html_wrap_inline6361:6.95831pt::6.95831pt::39.49498pt. +[485 + + +] +psfig: searching figs/fig05.09.ps for bounding box +psfig: including figs/fig05.09.ps +l2hSize :figure5790:450.68375pt::0.0pt::310.15875pt. +[486 + + +] +psfig: searching figs/fig05.10.ps for bounding box +psfig: including figs/fig05.10.ps +l2hSize :figure5801:254.9525pt::0.0pt::262.9825pt. +[487 + + +] +l2hSize :tex2html_wrap_inline6685:10.01111pt::10.01111pt::47.38303pt. +[488 + + +] +l2hSize :tex2html_wrap_inline6687:10.84444pt::10.84444pt::41.74448pt. +[489 + + +] +psfig: searching figs/fig05.11.ps for bounding box +psfig: including figs/fig05.11.ps +l2hSize :figure5815:188.705pt::0.0pt::276.03125pt. +[490 + + +] +l2hSize :tex2html_wrap_inline6703:10.01111pt::10.01111pt::36.88312pt. +[491 + + +] +l2hSize :tex2html_wrap_inline6705:10.84444pt::10.84444pt::33.41112pt. +[492 + + +] +l2hSize :tex2html_wrap_inline6379:6.95831pt::6.95831pt::57.50475pt. +[493 + + +] +psfig: searching figs/fig05.12.ps for bounding box +psfig: including figs/fig05.12.ps +l2hSize :figure5827:214.8025pt::0.0pt::293.095pt. +[494 + + +] +l2hSize :displaymath6049:14.5pt::0.0pt::349.0pt. +[495 + + +] +l2hSize :tex2html_wrap_inline6387:8.64003pt::8.64003pt::43.49998pt. +[496 + + +] +l2hSize :displaymath6051:14.5pt::0.0pt::349.0pt. +[497 + + +] +l2hSize :tex2html_wrap_inline6389:8.14003pt::0.0pt::10.70143pt. +[498 + + +] +l2hSize :displaymath6052:14.5pt::0.0pt::349.0pt. +[499 + + +] +l2hSize :displaymath6053:14.5pt::0.0pt::349.0pt. +[500 + + +] +l2hSize :displaymath6054:14.5pt::0.0pt::349.0pt. +[501 + + +] +l2hSize :displaymath6055:14.5pt::0.0pt::349.0pt. +[502 + + +] +l2hSize :tex2html_wrap_inline6395:8.0pt::8.0pt::17.34384pt. +[503 + + +] +l2hSize :tex2html_wrap_inline6403:8.99002pt::8.99002pt::43.93402pt. +[504 + + +] +l2hSize :displaymath6056:14.5pt::0.0pt::349.0pt. +[505 + + +] +l2hSize :tex2html_wrap_inline6409:8.49002pt::0.0pt::11.13547pt. +[506 + + +] +l2hSize :tex2html_wrap_inline6411:7.44444pt::7.44444pt::9.88202pt. +[507 + + +] +l2hSize :tex2html_wrap_inline6413:7.44444pt::7.44444pt::15.16791pt. +[508 + + +] +l2hSize :tex2html_wrap_inline6415:8.64003pt::8.64003pt::19.65404pt. +[509 + + +] +l2hSize :tex2html_wrap_inline6421:6.95831pt::6.95831pt::42.4524pt. +[510 + + +] +l2hSize :tex2html_wrap_inline6425:6.95831pt::6.95831pt::42.4524pt. +[511 + + +] +l2hSize :tex2html_wrap_inline6429:6.95831pt::6.95831pt::42.4524pt. +[512 + + +] +l2hSize :displaymath6057:13.94444pt::0.0pt::349.0pt. +[513 + + +] +l2hSize :tex2html_wrap_inline6435:7.44444pt::7.44444pt::28.21526pt. +[514 + + +] +l2hSize :tex2html_wrap_inline6437:7.44444pt::7.44444pt::28.21526pt. +[515 + + +] +l2hSize :tex2html_wrap_inline6439:8.0pt::8.0pt::38.21529pt. +[516 + + +] +l2hSize :tex2html_wrap_inline6441:8.0pt::8.0pt::38.21529pt. +[517 + + +] +l2hSize :displaymath6058:21.06903pt::0.0pt::349.0pt. +[518 + + +] +l2hSize :displaymath6059:14.5pt::0.0pt::349.0pt. +[519 + + +] +l2hSize :tex2html_wrap_inline6443:6.45831pt::0.0pt::31.26733pt. +[520 + + +] +l2hSize :tex2html_wrap_inline6445:6.6428pt::0.0pt::10.19102pt. +[521 + + +] +l2hSize :tex2html_wrap_inline6453:6.6428pt::0.0pt::9.99394pt. +[522 + + +] +l2hSize :displaymath6060:23.50351pt::0.0pt::349.0pt. +[523 + + +] +l2hSize :tex2html_wrap_inline6457:6.45831pt::0.0pt::16.34143pt. +[524 + + +] +psfig: searching figs/fig05.13.ps for bounding box +psfig: including figs/fig05.13.ps +l2hSize :figure5874:338.26375pt::0.0pt::289.08pt. +[525 + + +] +l2hSize :displaymath6061:14.5pt::0.0pt::349.0pt. +[526 + + +] +l2hSize :tex2html_wrap_inline6461:8.0pt::8.0pt::43.62848pt. +[527 + + +] +l2hSize :displaymath6062:14.5pt::0.0pt::349.0pt. +[528 + + +] +l2hSize :displaymath6063:14.5pt::0.0pt::349.0pt. +[529 + + +] +l2hSize :tex2html_wrap_inline6463:8.0pt::8.0pt::24.02902pt. +[530 + + +] +l2hSize :displaymath6064:14.5pt::0.0pt::349.0pt. +[531 + + +] +psfig: searching figs/fig05.14.ps for bounding box +psfig: including figs/fig05.14.ps +l2hSize :figure5892:154.5775pt::0.0pt::249.93375pt. +[532 + + +] +l2hSize :displaymath6065:14.5pt::0.0pt::349.0pt. +[533 + + +] +psfig: searching figs/fig05.15.ps for bounding box +psfig: including figs/fig05.15.ps +l2hSize :figure5901:180.675pt::0.0pt::335.2525pt. +[534 + + +] +l2hSize :displaymath6066:14.5pt::0.0pt::349.0pt. +[535 + + +] +l2hSize :displaymath6067:14.5pt::0.0pt::349.0pt. +[536 + + +] +l2hSize :displaymath6068:18.85951pt::0.0pt::349.0pt. +[537 + + +] +l2hSize :displaymath6069:14.5pt::0.0pt::349.0pt. +[538 + + +] +l2hSize :displaymath6070:21.06903pt::0.0pt::349.0pt. +[539 + + +] +psfig: searching figs/fig05.16.ps for bounding box +psfig: including figs/fig05.16.ps +l2hSize :figure5919:305.14pt::0.0pt::301.125pt. +[540 + + +] +l2hSize :tex2html_wrap_inline6489:6.95831pt::6.95831pt::11.34691pt. +[541 + + +] +l2hSize :displaymath6071:14.86108pt::0.0pt::349.0pt. +[542 + + +] +l2hSize :tex2html_wrap_inline6491:6.95831pt::6.95831pt::16.80066pt. +[543 + + +] +l2hSize :tex2html_wrap_inline6493:8.0pt::8.0pt::72.99701pt. +[544 + + +] +l2hSize :displaymath6072:21.06903pt::0.0pt::349.0pt. +[545 + + +] +l2hSize :displaymath6073:14.86108pt::0.0pt::349.0pt. +[546 + + +] +l2hSize :tex2html_wrap_inline6495:8.0pt::8.0pt::46.12975pt. +[547 + + +] +l2hSize :tex2html_wrap_inline6497:8.0pt::8.0pt::47.07991pt. +[548 + + +] +l2hSize :tex2html_wrap_inline6499:6.45831pt::0.0pt::8.27783pt. +[549 + + +] +l2hSize :displaymath6074:14.86108pt::0.0pt::349.0pt. +[550 + + +] +psfig: searching figs/fig06.01.ps for bounding box +psfig: including figs/fig06.01.ps +l2hSize :figure6802:192.71999pt::0.0pt::326.21875pt. +[551 + + +] +l2hSize :displaymath7115:14.5pt::0.0pt::349.0pt. +[552 + + +] +l2hSize :tex2html_wrap_inline7157:8.0pt::8.0pt::67.7478pt. +[553 + + +] +psfig: searching figs/fig06.02.ps for bounding box +psfig: including figs/fig06.02.ps +l2hSize :figure6816:275.02751pt::0.0pt::260.975pt. +[554 + + +] +l2hSize :displaymath7116:14.5pt::0.0pt::349.0pt. +[555 + + +] +l2hSize :tex2html_wrap_inline7167:7.44444pt::7.44444pt::53.02072pt. +[556 + + +] +l2hSize :tex2html_wrap_inline7169:6.83331pt::0.0pt::7.73268pt. +[557 + + +] +psfig: searching figs/fig06.03.ps for bounding box +psfig: including figs/fig06.03.ps +l2hSize :figure6826:270.00874pt::0.0pt::259.97125pt. +[558 + + +] +l2hSize :displaymath7117:14.5pt::0.0pt::349.0pt. +[559 + + +] +l2hSize :tex2html_wrap_inline7185:6.95831pt::6.95831pt::14.11781pt. +[560 + + +] +l2hSize :displaymath7118:14.5pt::0.0pt::349.0pt. +[561 + + +] +l2hSize :tex2html_wrap_inline7195:8.0pt::8.0pt::19.2501pt. +[562 + + +] +l2hSize :tex2html_wrap_inline7203:8.0pt::8.0pt::42.98958pt. +[563 + + +] +l2hSize :displaymath7119:14.5pt::0.0pt::349.0pt. +[564 + + +] +l2hSize :displaymath7120:12.0pt::0.0pt::349.0pt. +[565 + + +] +l2hSize :tex2html_wrap_inline7207:8.14003pt::0.0pt::32.89694pt. +[566 + + +] +l2hSize :displaymath7121:18.85951pt::0.0pt::349.0pt. +[567 + + +] +l2hSize :displaymath7122:14.5pt::0.0pt::349.0pt. +[568 + + +] +l2hSize :displaymath7123:21.90236pt::0.0pt::349.0pt. +[569 + + +] +l2hSize :displaymath7124:25.00023pt::0.0pt::349.0pt. +[570 + + +] +l2hSize :tex2html_wrap_inline7211:6.83331pt::0.0pt::8.36252pt. +[571 + + +] +l2hSize :tex2html_wrap_inline7221:8.0pt::8.0pt::39.79167pt. +[572 + + +] +l2hSize :tex2html_wrap_inline7229:8.0pt::8.0pt::34.48128pt. +[573 + + +] +l2hSize :displaymath7125:14.5pt::0.0pt::349.0pt. +[574 + + +] +l2hSize :tex2html_wrap_inline7233:6.45831pt::0.0pt::13.0857pt. +[575 + + +] +l2hSize :tex2html_wrap_inline7235:6.95831pt::6.95831pt::14.33688pt. +[576 + + +] +l2hSize :displaymath7126:21.06903pt::0.0pt::349.0pt. +[577 + + +] +l2hSize :tex2html_wrap_inline7247:8.0pt::8.0pt::100.52777pt. +[578 + + +] +psfig: searching figs/fig06.04.ps for bounding box +psfig: including figs/fig06.04.ps +l2hSize :figure6861:275.02751pt::0.0pt::305.14pt. +[579 + + +] +l2hSize :tex2html_wrap_inline7255:8.0pt::8.0pt::15.78595pt. +[580 + + +] +l2hSize :displaymath7127:14.5pt::0.0pt::349.0pt. +[581 + + +] +l2hSize :tex2html_wrap_inline7261:7.33331pt::7.33331pt::15.03908pt. +[582 + + +] +psfig: searching figs/fig06.05.ps for bounding box +psfig: including figs/fig06.05.ps +l2hSize :figure6872:176.65999pt::0.0pt::258.9675pt. +[583 + + +] +psfig: searching figs/fig06.06.ps for bounding box +psfig: including figs/fig06.06.ps +l2hSize :figure6883:453.69499pt::0.0pt::327.2225pt. +[584 + + +] +psfig: searching figs/fig06.07.ps for bounding box +psfig: including figs/fig06.07.ps +l2hSize :figure6892:105.39375pt::0.0pt::251.94125pt. +[585 + + +] +l2hSize :tex2html_wrap_inline7267:6.95831pt::6.95831pt::10.74123pt. +[586 + + +] +l2hSize :tex2html_wrap_inline7269:8.0pt::8.0pt::22.38164pt. +[587 + + +] +l2hSize :tex2html_wrap_inline7271:8.0pt::8.0pt::22.32455pt. +[588 + + +] +l2hSize :displaymath7128:14.5pt::0.0pt::349.0pt. +[589 + + +] +l2hSize :tex2html_wrap_inline7273:6.95831pt::6.95831pt::40.90956pt. +[590 + + +] +l2hSize :displaymath7129:14.5pt::0.0pt::349.0pt. +[591 + + +] +l2hSize :tex2html_wrap_inline7281:6.95831pt::6.95831pt::5.32294pt. +[592 + + +] +l2hSize :tex2html_wrap_inline7283:8.0pt::8.0pt::22.38164pt. +[593 + + +] +l2hSize :tex2html_wrap_inline7305:8.0pt::8.0pt::18.56374pt. +[594 + + +] +l2hSize :tex2html_wrap_inline7315:8.0pt::8.0pt::36.89697pt. +[595 + + +] +l2hSize :displaymath7130:14.5pt::0.0pt::349.0pt. +[596 + + +] +l2hSize :displaymath7131:14.5pt::0.0pt::349.0pt. +[597 + + +] +l2hSize :displaymath7132:29.22772pt::0.0pt::349.0pt. +[598 + + +] +psfig: searching figs/fig06.08.ps for bounding box +psfig: including figs/fig06.08.ps +l2hSize :figure6917:453.69499pt::0.0pt::322.20375pt. +[599 + + +] +l2hSize :tex2html_wrap_inline7349:8.0pt::8.0pt::28.24455pt. +[600 + + +] +l2hSize :displaymath7133:18.85951pt::0.0pt::349.0pt. +[601 + + +] +l2hSize :tex2html_wrap_inline7361:7.44444pt::7.44444pt::23.24303pt. +[602 + + +] +l2hSize :tex2html_wrap_inline7371:6.95831pt::6.95831pt::22.54509pt. +[603 + + +] +psfig: searching figs/fig06.09.ps for bounding box +psfig: including figs/fig06.09.ps +l2hSize :figure6926:220.825pt::0.0pt::326.21875pt. +[604 + + +] +l2hSize :tex2html_wrap_inline7393:8.0pt::8.0pt::37.42703pt. +[605 + + +] +l2hSize :tex2html_wrap_inline7403:7.44444pt::7.44444pt::22.01384pt. +[606 + + +] +psfig: searching figs/fig06.10.ps for bounding box +psfig: including figs/fig06.10.ps +l2hSize :figure6937:316.18126pt::0.0pt::321.20001pt. +[607 + + +] +psfig: searching figs/fig06.11.ps for bounding box +psfig: including figs/fig06.11.ps +l2hSize :figure6943:187.70125pt::0.0pt::268.00125pt. +[608 + + +] +psfig: searching figs/fig06.11.ps for bounding box +psfig: including figs/fig06.11.ps +l2hSize :figure6948:177.23831pt::0.0pt::349.0pt. +[609 + + +] +psfig: searching figs/fig06.12.ps for bounding box +psfig: including figs/fig06.12.ps +l2hSize :figure6960:287.0725pt::0.0pt::309.155pt. +[610 + + +] +psfig: searching figs/fig06.13.ps for bounding box +psfig: including figs/fig06.13.ps +l2hSize :figure6965:291.08751pt::0.0pt::254.9525pt. +[611 + + +] +l2hSize :tex2html_wrap_inline7407:6.95831pt::6.95831pt::21.05565pt. +[612 + + +] +l2hSize :tex2html_wrap_inline7409:6.45831pt::0.0pt::13.27785pt. +[613 + + +] +psfig: searching figs/fig06.14.ps for bounding box +psfig: including figs/fig06.14.ps +l2hSize :figure6974:200.75pt::0.0pt::314.17374pt. +[614 + + +] +psfig: searching figs/fig06.15.ps for bounding box +psfig: including figs/fig06.15.ps +l2hSize :figure6984:258.96751pt::0.0pt::257.96375pt. +[615 + + +] +psfig: searching figs/fig06.16.ps for bounding box +psfig: including figs/fig06.16.ps +l2hSize :figure6992:222.8325pt::0.0pt::367.3725pt. +[616 + + +] +l2hSize :tex2html_wrap_inline7427:6.95831pt::6.95831pt::40.2037pt. +[617 + + +] +l2hSize :tex2html_wrap_inline7431:6.95831pt::6.95831pt::9.31372pt. +[618 + + +] +l2hSize :tex2html_wrap_inline7433:6.95831pt::6.95831pt::40.90956pt. +[619 + + +] +l2hSize :tex2html_wrap_inline7435:8.0pt::8.0pt::63.98608pt. +[620 + + +] +psfig: searching figs/fig06.17.ps for bounding box +psfig: including figs/fig06.17.ps +l2hSize :figure7003:354.32375pt::0.0pt::330.23375pt. +[621 + + +] +psfig: searching figs/fig06.18.ps for bounding box +psfig: including figs/fig06.18.ps +l2hSize :figure7013:188.705pt::0.0pt::329.23001pt. +[622 + + +] +l2hSize :tex2html_wrap_inline7715:10.84444pt::10.84444pt::34.2445pt. +[623 + + +] +l2hSize :displaymath8550:12.83333pt::0.0pt::349.0pt. +[624 + + +] +l2hSize :tex2html_wrap_inline8722:9.1555pt::9.1555pt::38.38956pt. +[625 + + +] +l2hSize :displaymath8551:14.5pt::0.0pt::349.0pt. +[626 + + +] +l2hSize :displaymath8552:14.5pt::0.0pt::349.0pt. +[627 + + +] +psfig: searching figs/fig07.01.ps for bounding box +psfig: including figs/fig07.01.ps +l2hSize :figure7770:150.5625pt::0.0pt::316.18124pt. +[628 + + +] +l2hSize :tex2html_wrap_inline8744:8.0pt::8.0pt::13.59727pt. +[629 + + +] +l2hSize :tex2html_wrap_inline8746:8.0pt::8.0pt::22.29979pt. +[630 + + +] +l2hSize :displaymath8553:14.56187pt::0.0pt::349.0pt. +[631 + + +] +l2hSize :tex2html_wrap_inline8748:8.0pt::8.0pt::22.19295pt. +[632 + + +] +l2hSize :displaymath8554:25.00023pt::0.0pt::349.0pt. +[633 + + +] +l2hSize :tex2html_wrap_inline8756:6.94444pt::0.0pt::5.47226pt. +[634 + + +] +l2hSize :displaymath8555:14.5pt::0.0pt::349.0pt. +[635 + + +] +l2hSize :displaymath8556:14.5pt::0.0pt::349.0pt. +[636 + + +] +l2hSize :tex2html_wrap_inline8762:7.44444pt::7.44444pt::46.61974pt. +[637 + + +] +l2hSize :displaymath8557:14.5pt::0.0pt::349.0pt. +[638 + + +] +l2hSize :tex2html_wrap_inline8776:7.33331pt::7.33331pt::11.81256pt. +[639 + + +] +l2hSize :tex2html_wrap_inline8778:7.33331pt::7.33331pt::11.81256pt. +[640 + + +] +l2hSize :displaymath8558:14.5pt::0.0pt::349.0pt. +[641 + + +] +l2hSize :displaymath8559:14.5pt::0.0pt::349.0pt. +[642 + + +] +l2hSize :displaymath8560:14.5pt::0.0pt::349.0pt. +[643 + + +] +l2hSize :displaymath8561:14.5pt::0.0pt::349.0pt. +[644 + + +] +l2hSize :tex2html_wrap_inline8780:8.0pt::8.0pt::60.639pt. +[645 + + +] +l2hSize :tex2html_wrap_inline8782:6.59525pt::0.0pt::3.94516pt. +[646 + + +] +l2hSize :displaymath8562:14.5pt::0.0pt::349.0pt. +[647 + + +] +l2hSize :tex2html_wrap_inline8786:7.33331pt::7.33331pt::23.12509pt. +[648 + + +] +l2hSize :tex2html_wrap_inline8788:6.95831pt::6.95831pt::18.49545pt. +[649 + + +] +l2hSize :tex2html_wrap_inline8790:7.44444pt::7.44444pt::31.08331pt. +[650 + + +] +psfig: searching figs/fig07.02.ps for bounding box +psfig: including figs/fig07.02.ps +l2hSize :figure7827:149.55875pt::0.0pt::323.20749pt. +[651 + + +] +l2hSize :displaymath8564:14.5pt::0.0pt::349.0pt. +[652 + + +] +l2hSize :tex2html_wrap_inline8808:6.83331pt::0.0pt::13.48503pt. +[653 + + +] +l2hSize :tex2html_wrap_inline8810:6.45831pt::0.0pt::13.0857pt. +[654 + + +] +l2hSize :displaymath8565:14.5pt::0.0pt::349.0pt. +[655 + + +] +l2hSize :displaymath8566:21.06903pt::0.0pt::349.0pt. +[656 + + +] +l2hSize :displaymath8567:13.94444pt::0.0pt::349.0pt. +[657 + + +] +l2hSize :displaymath8568:14.5pt::0.0pt::349.0pt. +[658 + + +] +l2hSize :displaymath8569:13.94444pt::0.0pt::349.0pt. +[659 + + +] +l2hSize :tex2html_wrap_inline8826:7.44444pt::7.44444pt::31.26617pt. +[660 + + +] +l2hSize :displaymath8570:14.5pt::0.0pt::349.0pt. +[661 + + +] +l2hSize :displaymath8571:14.5pt::0.0pt::349.0pt. +[662 + + +] +l2hSize :tex2html_wrap_inline8838:8.64003pt::8.64003pt::67.01384pt. +[663 + + +] +l2hSize :tex2html_wrap_inline8840:8.64003pt::8.64003pt::49.51381pt. +[664 + + +] +l2hSize :displaymath8572:14.5pt::0.0pt::349.0pt. +[665 + + +] +l2hSize :displaymath8573:14.5pt::0.0pt::349.0pt. +[666 + + +] +l2hSize :tex2html_wrap_inline8848:8.0pt::8.0pt::33.86456pt. +[667 + + +] +l2hSize :tex2html_wrap_inline8850:8.0pt::8.0pt::42.46024pt. +[668 + + +] +l2hSize :tex2html_wrap_inline8852:8.0pt::8.0pt::21.12738pt. +[669 + + +] +l2hSize :tex2html_wrap_inline8854:6.83331pt::0.0pt::9.56946pt. +[670 + + +] +l2hSize :displaymath8574:14.5pt::0.0pt::349.0pt. +[671 + + +] +l2hSize :tex2html_wrap_inline8860:6.83331pt::0.0pt::8.52782pt. +[672 + + +] +l2hSize :tex2html_wrap_inline8878:7.33331pt::7.33331pt::38.26389pt. +[673 + + +] +l2hSize :displaymath8575:14.5pt::0.0pt::349.0pt. +[674 + + +] +l2hSize :displaymath8576:14.5pt::0.0pt::349.0pt. +[675 + + +] +l2hSize :tex2html_wrap_inline8884:8.49002pt::0.0pt::18.95459pt. +[676 + + +] +l2hSize :tex2html_wrap_inline8888:7.44444pt::7.44444pt::20.06601pt. +[677 + + +] +l2hSize :tex2html_wrap_inline8890:8.0pt::8.0pt::42.10948pt. +[678 + + +] +psfig: searching figs/fig07.03.ps for bounding box +psfig: including figs/fig07.03.ps +l2hSize :figure7865:168.62999pt::0.0pt::348.30124pt. +[679 + + +] +l2hSize :tex2html_wrap_inline8900:8.0pt::8.0pt::18.37506pt. +[680 + + +] +psfig: searching figs/fig07.04.ps for bounding box +psfig: including figs/fig07.04.ps +l2hSize :figure7880:189.70876pt::0.0pt::367.3725pt. +[681 + + +] +l2hSize :tex2html_wrap_inline8910:8.0pt::8.0pt::16.77089pt. +[682 + + +] +l2hSize :tex2html_wrap_inline8912:8.0pt::8.0pt::16.77089pt. +[683 + + +] +l2hSize :displaymath8577:14.5pt::0.0pt::349.0pt. +[684 + + +] +l2hSize :displaymath8578:12.0pt::0.0pt::349.0pt. +[685 + + +] +l2hSize :displaymath8579:14.5pt::0.0pt::349.0pt. +[686 + + +] +l2hSize :displaymath8580:12.83333pt::0.0pt::349.0pt. +[687 + + +] +psfig: searching figs/fig07.05.ps for bounding box +psfig: including figs/fig07.05.ps +l2hSize :figure7896:162.6075pt::0.0pt::334.24875pt. +[688 + + +] +l2hSize :tex2html_wrap_inline8944:8.0pt::8.0pt::41.23271pt. +[689 + + +] +l2hSize :tex2html_wrap_inline8946:8.0pt::8.0pt::40.12161pt. +[690 + + +] +l2hSize :tex2html_wrap_inline8954:8.87892pt::0.0pt::20.78793pt. +[691 + + +] +l2hSize :tex2html_wrap_inline8956:8.87892pt::0.0pt::27.03795pt. +[692 + + +] +l2hSize :tex2html_wrap_inline8962:8.49002pt::0.0pt::12.70457pt. +[693 + + +] +l2hSize :tex2html_wrap_inline8964:8.49002pt::0.0pt::18.95459pt. +[694 + + +] +l2hSize :tex2html_wrap_inline8966:8.49002pt::0.0pt::12.70457pt. +[695 + + +] +l2hSize :displaymath8581:14.5pt::0.0pt::349.0pt. +[696 + + +] +l2hSize :tex2html_wrap_inline8970:8.0pt::8.0pt::30.06604pt. +[697 + + +] +l2hSize :displaymath8582:12.83333pt::0.0pt::349.0pt. +[698 + + +] +l2hSize :displaymath8583:14.5pt::0.0pt::349.0pt. +[699 + + +] +l2hSize :displaymath8584:14.5pt::0.0pt::349.0pt. +[700 + + +] +l2hSize :displaymath8585:14.5pt::0.0pt::349.0pt. +[701 + + +] +psfig: searching figs/fig07.06.ps for bounding box +psfig: including figs/fig07.06.ps +l2hSize :figure7926:117.43875pt::0.0pt::312.16626pt. +[702 + + +] +l2hSize :tex2html_wrap_inline8980:6.94444pt::0.0pt::12.28821pt. +[703 + + +] +l2hSize :tex2html_wrap_inline8988:8.0pt::8.0pt::21.76398pt. +[704 + + +] +l2hSize :tex2html_wrap_inline8990:8.0pt::8.0pt::36.6805pt. +[705 + + +] +l2hSize :tex2html_wrap_inline8994:8.0pt::8.0pt::36.6805pt. +[706 + + +] +l2hSize :tex2html_wrap_inline8996:6.95831pt::6.95831pt::60.24986pt. +[707 + + +] +psfig: searching figs/fig07.07.ps for bounding box +psfig: including figs/fig07.07.ps +l2hSize :figure7938:155.58125pt::0.0pt::299.1175pt. +[708 + + +] +psfig: searching figs/fig07.08.ps for bounding box +psfig: including figs/fig07.08.ps +l2hSize :figure7946:189.70876pt::0.0pt::367.3725pt. +[709 + + +] +l2hSize :displaymath8586:14.5pt::0.0pt::349.0pt. +[710 + + +] +l2hSize :displaymath8587:14.5pt::0.0pt::349.0pt. +[711 + + +] +l2hSize :displaymath8588:14.5pt::0.0pt::349.0pt. +[712 + + +] +l2hSize :tex2html_wrap_inline9014:8.99002pt::8.99002pt::24.08305pt. +[713 + + +] +l2hSize :displaymath8589:14.5pt::0.0pt::349.0pt. +[714 + + +] +l2hSize :displaymath8590:13.94444pt::0.0pt::349.0pt. +[715 + + +] +l2hSize :displaymath8591:23.01347pt::0.0pt::349.0pt. +[716 + + +] +l2hSize :tex2html_wrap_inline9022:8.0pt::8.0pt::20.08574pt. +[717 + + +] +l2hSize :displaymath8592:14.5pt::0.0pt::349.0pt. +[718 + + +] +l2hSize :displaymath8593:14.5pt::0.0pt::349.0pt. +[719 + + +] +l2hSize :tex2html_wrap_inline9028:8.0pt::8.0pt::68.1713pt. +[720 + + +] +l2hSize :displaymath8594:13.94444pt::0.0pt::349.0pt. +[721 + + +] +l2hSize :displaymath8595:23.56903pt::0.0pt::349.0pt. +[722 + + +] +psfig: searching figs/fig07.09.ps for bounding box +psfig: including figs/fig07.09.ps +l2hSize :figure7974:255.95625pt::0.0pt::309.155pt. +[723 + + +] +psfig: searching figs/fig07.10.ps for bounding box +psfig: including figs/fig07.10.ps +l2hSize :figure7979:117.43875pt::0.0pt::312.16626pt. +[724 + + +] +l2hSize :tex2html_wrap_inline9054:8.0pt::8.0pt::29.54169pt. +[725 + + +] +l2hSize :displaymath8596:12.0pt::0.0pt::349.0pt. +[726 + + +] +l2hSize :tex2html_wrap_inline9062:8.0pt::8.0pt::92.94432pt. +[727 + + +] +l2hSize :displaymath8597:23.01347pt::0.0pt::349.0pt. +[728 + + +] +l2hSize :tex2html_wrap_inline9064:6.83331pt::0.0pt::16.7767pt. +[729 + + +] +l2hSize :tex2html_wrap_inline9066:8.0pt::8.0pt::25.48462pt. +[730 + + +] +l2hSize :tex2html_wrap_inline9072:8.99002pt::8.99002pt::27.37473pt. +[731 + + +] +l2hSize :tex2html_wrap_inline9074:9.57217pt::9.57217pt::13.8334pt. +[732 + + +] +l2hSize :tex2html_wrap_inline9082:6.95831pt::6.95831pt::22.85065pt. +[733 + + +] +l2hSize :displaymath8598:14.5pt::0.0pt::349.0pt. +[734 + + +] +l2hSize :displaymath8599:14.5pt::0.0pt::349.0pt. +[735 + + +] +l2hSize :tex2html_wrap_inline9100:6.94444pt::0.0pt::24.03813pt. +[736 + + +] +psfig: searching figs/fig07.11.ps for bounding box +psfig: including figs/fig07.11.ps +l2hSize :figure8001:130.4875pt::0.0pt::274.02374pt. +[737 + + +] +l2hSize :displaymath8600:18.50009pt::0.0pt::349.0pt. +[738 + + +] +l2hSize :displaymath8601:14.5pt::0.0pt::349.0pt. +[739 + + +] +l2hSize :tex2html_wrap_inline9114:8.0pt::8.0pt::22.25935pt. +[740 + + +] +l2hSize :tex2html_wrap_inline9116:8.0pt::8.0pt::22.20148pt. +[741 + + +] +l2hSize :tex2html_wrap_inline9124:8.0pt::8.0pt::40.49992pt. +[742 + + +] +l2hSize :displaymath8602:14.5pt::0.0pt::349.0pt. +[743 + + +] +l2hSize :tex2html_wrap_inline9128:8.0pt::8.0pt::50.84482pt. +[744 + + +] +psfig: searching figs/fig07.12.ps for bounding box +psfig: including figs/fig07.12.ps +l2hSize :figure8022:210.78749pt::0.0pt::288.07626pt. +[745 + + +] +l2hSize :tex2html_wrap_inline9132:8.0pt::8.0pt::22.25935pt. +[746 + + +] +l2hSize :displaymath8603:14.5pt::0.0pt::349.0pt. +[747 + + +] +l2hSize :displaymath8604:14.5pt::0.0pt::349.0pt. +[748 + + +] +l2hSize :tex2html_wrap_inline9134:6.95831pt::6.95831pt::13.9595pt. +[749 + + +] +l2hSize :displaymath8605:14.5pt::0.0pt::349.0pt. +[750 + + +] +l2hSize :displaymath8606:14.5pt::0.0pt::349.0pt. +[751 + + +] +l2hSize :tex2html_wrap_inline9138:8.0pt::8.0pt::31.50014pt. +[752 + + +] +l2hSize :tex2html_wrap_inline9140:8.0pt::8.0pt::33.12505pt. +[753 + + +] +l2hSize :displaymath8607:14.5pt::0.0pt::349.0pt. +[754 + + +] +l2hSize :tex2html_wrap_inline9144:7.33331pt::7.33331pt::58.97275pt. +[755 + + +] +l2hSize :tex2html_wrap_inline9146:7.33331pt::7.33331pt::56.3062pt. +[756 + + +] +l2hSize :displaymath8608:12.0pt::0.0pt::349.0pt. +[757 + + +] +l2hSize :tex2html_wrap_inline9154:8.0pt::8.0pt::42.04161pt. +[758 + + +] +l2hSize :displaymath8609:14.5pt::0.0pt::349.0pt. +[759 + + +] +l2hSize :displaymath8610:14.5pt::0.0pt::349.0pt. +[760 + + +] +l2hSize :tex2html_wrap_inline9158:9.85pt::9.85pt::61.1816pt. +[761 + + +] +l2hSize :tex2html_wrap_inline9160:6.45831pt::0.0pt::22.84831pt. +[762 + + +] +l2hSize :tex2html_wrap_inline9164:9.85pt::9.85pt::163.06349pt. +[763 + + +] +psfig: searching figs/fig07.13.ps for bounding box +psfig: including figs/fig07.13.ps +l2hSize :figure8060:214.8025pt::0.0pt::299.1175pt. +[764 + + +] +psfig: searching figs/fig07.14.ps for bounding box +psfig: including figs/fig07.14.ps +l2hSize :figure8067:198.74251pt::0.0pt::287.07251pt. +[765 + + +] +l2hSize :tex2html_wrap_inline9172:6.95831pt::6.95831pt::39.11452pt. +[766 + + +] +l2hSize :tex2html_wrap_inline9174:6.95831pt::6.95831pt::37.48961pt. +[767 + + +] +l2hSize :tex2html_wrap_inline9176:6.95831pt::6.95831pt::41.2957pt. +[768 + + +] +l2hSize :tex2html_wrap_inline9178:7.09525pt::7.09525pt::5.19052pt. +[769 + + +] +l2hSize :tex2html_wrap_inline9194:6.45831pt::0.0pt::7.92828pt. +[770 + + +] +l2hSize :tex2html_wrap_inline9196:7.44444pt::7.44444pt::42.37782pt. +[771 + + +] +l2hSize :tex2html_wrap_inline9212:8.0pt::8.0pt::44.29974pt. +[772 + + +] +psfig: searching figs/fig07.15.ps for bounding box +psfig: including figs/fig07.15.ps +l2hSize :figure8097:306.14375pt::0.0pt::309.155pt. +[773 + + +] +l2hSize :tex2html_wrap_inline9214:6.95831pt::6.95831pt::23.96173pt. +[774 + + +] +l2hSize :tex2html_wrap_inline9226:8.0pt::8.0pt::14.31602pt. +[775 + + +] +l2hSize :tex2html_wrap_inline9228:8.0pt::8.0pt::44.79527pt. +[776 + + +] +l2hSize :displaymath8611:20.77538pt::0.0pt::349.0pt. +[777 + + +] +l2hSize :displaymath8612:21.4579pt::0.0pt::349.0pt. +[778 + + +] +l2hSize :displaymath8613:24.06903pt::0.0pt::349.0pt. +[779 + + +] +psfig: searching figs/fig07.16.ps for bounding box +psfig: including figs/fig07.16.ps +l2hSize :figure8112:321.2pt::0.0pt::315.17749pt. +[780 + + +] +l2hSize :tex2html_wrap_inline9254:8.0pt::8.0pt::35.20023pt. +[781 + + +] +l2hSize :tex2html_wrap_inline9262:6.94444pt::0.0pt::31.81593pt. +[782 + + +] +l2hSize :tex2html_wrap_inline9266:8.0pt::8.0pt::42.77318pt. +[783 + + +] +l2hSize :tex2html_wrap_inline9270:8.0pt::8.0pt::34.99538pt. +[784 + + +] +psfig: searching figs/fig07.17.ps for bounding box +psfig: including figs/fig07.17.ps +l2hSize :figure8122:273.02pt::0.0pt::311.1625pt. +[785 + + +] +l2hSize :tex2html_wrap_inline9278:8.0pt::8.0pt::35.4873pt. +[786 + + +] +l2hSize :tex2html_wrap_inline9280:8.0pt::8.0pt::17.26282pt. +[787 + + +] +l2hSize :displaymath8614:14.5pt::0.0pt::349.0pt. +[788 + + +] +l2hSize :displaymath8616:14.5pt::0.0pt::349.0pt. +[789 + + +] +l2hSize :displaymath8617:14.5pt::0.0pt::349.0pt. +[790 + + +] +l2hSize :displaymath8618:14.5pt::0.0pt::349.0pt. +[791 + + +] +l2hSize :displaymath8619:22.12459pt::0.0pt::349.0pt. +[792 + + +] +l2hSize :tex2html_wrap_inline9312:6.45831pt::0.0pt::13.27785pt. +[793 + + +] +l2hSize :displaymath8620:14.5pt::0.0pt::349.0pt. +[794 + + +] +l2hSize :tex2html_wrap_inline9314:8.0pt::8.0pt::24.54869pt. +[795 + + +] +l2hSize :displaymath8621:22.12459pt::0.0pt::349.0pt. +[796 + + +] +l2hSize :tex2html_wrap_inline9316:8.0pt::8.0pt::36.47565pt. +[797 + + +] +psfig: searching figs/fig07.18.ps for bounding box +psfig: including figs/fig07.18.ps +l2hSize :figure8141:127.47624pt::0.0pt::308.15125pt. +[798 + + +] +psfig: searching figs/fig07.19.ps for bounding box +psfig: including figs/fig07.19.ps +l2hSize :figure8149:258.96751pt::0.0pt::270.00876pt. +[799 + + +] +l2hSize :displaymath8622:14.5pt::0.0pt::349.0pt. +[800 + + +] +l2hSize :tex2html_wrap_inline9318:7.44444pt::7.44444pt::10.19102pt. +[801 + + +] +l2hSize :displaymath8623:14.5pt::0.0pt::349.0pt. +[802 + + +] +l2hSize :tex2html_wrap_inline9324:6.95831pt::6.95831pt::29.59138pt. +[803 + + +] +l2hSize :tex2html_wrap_inline9326:6.95831pt::6.95831pt::29.59138pt. +[804 + + +] +psfig: searching figs/fig07.20.ps for bounding box +psfig: including figs/fig07.20.ps +l2hSize :figure8157:251.94125pt::0.0pt::260.975pt. +[805 + + +] +psfig: searching figs/fig07.21.ps for bounding box +psfig: including figs/fig07.21.ps +l2hSize :figure8163:280.04625pt::0.0pt::277.035pt. +[806 + + +] +l2hSize :tex2html_wrap_inline9330:7.44444pt::7.44444pt::10.19102pt. +[807 + + +] +l2hSize :tex2html_wrap_inline9332:7.44444pt::7.44444pt::27.10066pt. +[808 + + +] +l2hSize :tex2html_wrap_inline9342:8.0pt::8.0pt::19.14246pt. +[809 + + +] +l2hSize :tex2html_wrap_inline9346:8.0pt::8.0pt::19.14246pt. +[810 + + +] +l2hSize :displaymath8624:21.56903pt::0.0pt::349.0pt. +[811 + + +] +l2hSize :displaymath8625:21.56903pt::0.0pt::349.0pt. +[812 + + +] +l2hSize :displaymath8626:21.56903pt::0.0pt::349.0pt. +[813 + + +] +psfig: searching figs/fig07.22.ps for bounding box +psfig: including figs/fig07.22.ps +l2hSize :figure8181:245.91875pt::0.0pt::240.9pt. +[814 + + +] +l2hSize :displaymath8627:22.12459pt::0.0pt::349.0pt. +[815 + + +] +l2hSize :tex2html_wrap_inline9372:8.0pt::8.0pt::23.17023pt. +[816 + + +] +l2hSize :tex2html_wrap_inline9374:8.0pt::8.0pt::23.17023pt. +[817 + + +] +psfig: searching figs/fig07.23.ps for bounding box +psfig: including figs/fig07.23.ps +l2hSize :figure8192:212.795pt::0.0pt::329.23001pt. +[818 + + +] +l2hSize :tex2html_wrap_inline9840:10.01111pt::10.01111pt::57.88293pt. +[819 + + +] +l2hSize :tex2html_wrap_inline9842:10.84444pt::10.84444pt::52.88336pt. +[820 + + +] +l2hSize :tex2html_wrap_inline9846:10.01111pt::10.01111pt::52.63298pt. +[821 + + +] +l2hSize :tex2html_wrap_inline9848:10.84444pt::10.84444pt::49.55003pt. +[822 + + +] +psfig: searching figs/fig07.24.ps for bounding box +psfig: including figs/fig07.24.ps +l2hSize :figure8206:206.7725pt::0.0pt::394.47375pt. +[823 + + +] +psfig: searching figs/fig07.25.ps for bounding box +psfig: including figs/fig07.25.ps +l2hSize :figure8213:283.05751pt::0.0pt::354.32376pt. +[824 + + +] +l2hSize :tex2html_wrap_inline9876:10.01111pt::10.01111pt::26.38321pt. +[825 + + +] +l2hSize :tex2html_wrap_inline9878:10.84444pt::10.84444pt::28.6889pt. +[826 + + +] +psfig: searching figs/fig07.26.ps for bounding box +psfig: including figs/fig07.26.ps +l2hSize :figure8231:118.44249pt::0.0pt::293.095pt. +[827 + + +] +l2hSize :displaymath8628:15.4pt::0.0pt::349.0pt. +[828 + + +] +l2hSize :displaymath8629:15.4pt::0.0pt::349.0pt. +[829 + + +] +l2hSize :tex2html_wrap_inline9392:8.0pt::8.0pt::101.04482pt. +[830 + + +] +l2hSize :displaymath8630:15.4pt::0.0pt::349.0pt. +[831 + + +] +psfig: searching figs/fig07.27.ps for bounding box +psfig: including figs/fig07.27.ps +l2hSize :figure8247:175.65625pt::0.0pt::368.37625pt. +[832 + + +] +l2hSize :tex2html_wrap_inline9924:10.01111pt::10.01111pt::42.13307pt. +[833 + + +] +l2hSize :tex2html_wrap_inline9926:10.01111pt::10.01111pt::47.38303pt. +[834 + + +] +l2hSize :tex2html_wrap_inline9928:10.84444pt::10.84444pt::40.91115pt. +[835 + + +] +l2hSize :tex2html_wrap_inline9930:10.84444pt::10.84444pt::45.41112pt. +[836 + + +] +psfig: searching figs/fig07.28.ps for bounding box +psfig: including figs/fig07.28.ps +l2hSize :figure8267:174.65251pt::0.0pt::349.305pt. +[837 + + +] +psfig: searching figs/fig07.29.ps for bounding box +psfig: including figs/fig07.29.ps +l2hSize :figure8276:254.9525pt::0.0pt::346.29376pt. +[838 + + +] +l2hSize :tex2html_wrap_inline9408:8.0pt::8.0pt::60.39244pt. +[839 + + +] +l2hSize :tex2html_wrap_inline9412:8.0pt::8.0pt::44.25018pt. +[840 + + +] +l2hSize :tex2html_wrap_inline9416:8.0pt::8.0pt::29.25014pt. +[841 + + +] +l2hSize :tex2html_wrap_inline9418:7.44444pt::7.44444pt::54.5278pt. +[842 + + +] +l2hSize :tex2html_wrap_inline9420:7.44444pt::7.44444pt::36.88889pt. +[843 + + +] +l2hSize :tex2html_wrap_inline9422:7.44444pt::7.44444pt::11.4723pt. +[844 + + +] +psfig: searching figs/fig07.30.ps for bounding box +psfig: including figs/fig07.30.ps +l2hSize :figure8285:261.97874pt::0.0pt::387.44751pt. +[845 + + +] +psfig: searching figs/fig07.31.ps for bounding box +psfig: including figs/fig07.31.ps +l2hSize :figure8299:526.96875pt::0.0pt::377.41pt. +[846 + + +] +l2hSize :tex2html_wrap_inline9428:9.85pt::9.85pt::25.50009pt. +[847 + + +] +psfig: searching figs/fig07.32.ps for bounding box +psfig: including figs/fig07.32.ps +l2hSize :figure8305:115.43126pt::0.0pt::313.17pt. +[848 + + +] +psfig: searching figs/fig07.33.ps for bounding box +psfig: including figs/fig07.33.ps +l2hSize :figure8315:342.27875pt::0.0pt::299.1175pt. +[849 + + +] +l2hSize :displaymath8632:12.0pt::0.0pt::349.0pt. +[850 + + +] +l2hSize :displaymath8633:15.81671pt::0.0pt::349.0pt. +[851 + + +] +psfig: searching figs/fig08.01.ps for bounding box +psfig: including figs/fig08.01.ps +l2hSize :figure10050:157.58876pt::0.0pt::287.07251pt. +[852 + + +] +l2hSize :tex2html_wrap_inline11087:8.0pt::8.0pt::23.98611pt. +[853 + + +] +l2hSize :tex2html_wrap_inline11095:8.0pt::8.0pt::38.13736pt. +[854 + + +] +psfig: searching figs/fig08.02.ps for bounding box +psfig: including figs/fig08.02.ps +l2hSize :figure10068:239.89626pt::0.0pt::347.2975pt. +[855 + + +] +psfig: searching figs/fig08.03.ps for bounding box +psfig: including figs/fig08.03.ps +l2hSize :figure10090:248.93001pt::0.0pt::343.2825pt. +[856 + + +] +psfig: searching figs/fig08.04.ps for bounding box +psfig: including figs/fig08.04.ps +l2hSize :figure10100:181.67876pt::0.0pt::220.82501pt. +[857 + + +] +psfig: searching figs/fig08.05.ps for bounding box +psfig: including figs/fig08.05.ps +l2hSize :figure10113:187.70125pt::0.0pt::262.9825pt. +[858 + + +] +psfig: searching figs/fig08.06.ps for bounding box +psfig: including figs/fig08.06.ps +l2hSize :figure10122:187.70125pt::0.0pt::262.9825pt. +[859 + + +] +psfig: searching figs/fig08.07.ps for bounding box +psfig: including figs/fig08.07.ps +l2hSize :figure10136:158.59251pt::0.0pt::299.1175pt. +[860 + + +] +l2hSize :tex2html_wrap_inline11117:8.0pt::8.0pt::49.79161pt. +[861 + + +] +l2hSize :displaymath10951:14.5pt::0.0pt::349.0pt. +[862 + + +] +l2hSize :displaymath10952:14.5pt::0.0pt::349.0pt. +[863 + + +] +l2hSize :displaymath10953:14.5pt::0.0pt::349.0pt. +[864 + + +] +l2hSize :displaymath10954:14.5pt::0.0pt::349.0pt. +[865 + + +] +l2hSize :tex2html_wrap_inline11133:8.64003pt::8.64003pt::26.6834pt. +[866 + + +] +l2hSize :tex2html_wrap_inline11139:8.64003pt::8.64003pt::49.46112pt. +[867 + + +] +psfig: searching figs/fig08.08.ps for bounding box +psfig: including figs/fig08.08.ps +l2hSize :figure10151:265.99376pt::0.0pt::292.09125pt. +[868 + + +] +l2hSize :tex2html_wrap_inline11157:6.45831pt::0.0pt::26.8506pt. +[869 + + +] +l2hSize :tex2html_wrap_inline11159:6.95831pt::6.95831pt::22.51155pt. +[870 + + +] +psfig: searching figs/fig08.09.ps for bounding box +psfig: including figs/fig08.09.ps +l2hSize :figure10157:163.61125pt::0.0pt::245.91876pt. +[871 + + +] +l2hSize :tex2html_wrap_inline11171:9.3332pt::9.3332pt::8.40558pt. +[872 + + +] +l2hSize :displaymath10955:14.5pt::0.0pt::349.0pt. +[873 + + +] +l2hSize :displaymath10956:14.5pt::0.0pt::349.0pt. +[874 + + +] +l2hSize :displaymath10957:14.5pt::0.0pt::349.0pt. +[875 + + +] +l2hSize :displaymath10958:14.5pt::0.0pt::349.0pt. +[876 + + +] +l2hSize :tex2html_wrap_inline11173:8.8332pt::0.0pt::39.65274pt. +[877 + + +] +l2hSize :tex2html_wrap_inline11177:8.8332pt::0.0pt::15.58337pt. +[878 + + +] +psfig: searching figs/fig08.10.ps for bounding box +psfig: including figs/fig08.10.ps +l2hSize :figure10178:123.46126pt::0.0pt::299.1175pt. +[879 + + +] +l2hSize :tex2html_wrap_inline11179:6.83331pt::0.0pt::8.30907pt. +[880 + + +] +l2hSize :displaymath10959:21.90236pt::0.0pt::349.0pt. +[881 + + +] +l2hSize :displaymath10960:21.90236pt::0.0pt::349.0pt. +[882 + + +] +l2hSize :tex2html_wrap_inline11185:8.0pt::8.0pt::32.19788pt. +[883 + + +] +l2hSize :tex2html_wrap_inline11187:8.0pt::8.0pt::32.19788pt. +[884 + + +] +psfig: searching figs/fig08.11.ps for bounding box +psfig: including figs/fig08.11.ps +l2hSize :figure10195:192.71999pt::0.0pt::324.21124pt. +[885 + + +] +l2hSize :tex2html_wrap_inline11189:7.33331pt::7.33331pt::29.54784pt. +[886 + + +] +l2hSize :tex2html_wrap_inline11191:7.33331pt::7.33331pt::47.23288pt. +[887 + + +] +l2hSize :tex2html_wrap_inline11193:7.33331pt::7.33331pt::44.96866pt. +[888 + + +] +l2hSize :displaymath10961:25.26462pt::0.0pt::349.0pt. +[889 + + +] +l2hSize :tex2html_wrap_inline11199:8.8332pt::0.0pt::8.30907pt. +[890 + + +] +l2hSize :displaymath10962:14.5pt::0.0pt::349.0pt. +[891 + + +] +l2hSize :displaymath10963:14.5pt::0.0pt::349.0pt. +[892 + + +] +l2hSize :displaymath10964:14.5pt::0.0pt::349.0pt. +[893 + + +] +l2hSize :displaymath10965:14.5pt::0.0pt::349.0pt. +[894 + + +] +l2hSize :displaymath10966:12.83333pt::0.0pt::349.0pt. +[895 + + +] +l2hSize :displaymath10967:12.0pt::0.0pt::349.0pt. +[896 + + +] +l2hSize :displaymath10968:14.5pt::0.0pt::349.0pt. +[897 + + +] +l2hSize :tex2html_wrap_inline11207:7.33331pt::7.33331pt::11.73486pt. +[898 + + +] +l2hSize :tex2html_wrap_inline11209:7.33331pt::7.33331pt::10.24945pt. +[899 + + +] +l2hSize :displaymath10969:12.83333pt::0.0pt::349.0pt. +[900 + + +] +l2hSize :displaymath10970:25.00023pt::0.0pt::349.0pt. +[901 + + +] +l2hSize :displaymath10971:25.00023pt::0.0pt::349.0pt. +[902 + + +] +l2hSize :displaymath10972:26.13824pt::0.0pt::349.0pt. +[903 + + +] +l2hSize :displaymath10973:31.13734pt::0.0pt::349.0pt. +[904 + + +] +l2hSize :displaymath10974:26.13824pt::0.0pt::349.0pt. +[905 + + +] +l2hSize :displaymath10975:26.13824pt::0.0pt::349.0pt. +[906 + + +] +l2hSize :tex2html_wrap_inline11235:9.3332pt::9.3332pt::18.40561pt. +[907 + + +] +psfig: searching figs/fig08.12.ps for bounding box +psfig: including figs/fig08.12.ps +l2hSize :figure10318:214.8025pt::0.0pt::365.36499pt. +[908 + + +] +l2hSize :tex2html_wrap_inline11243:8.0pt::8.0pt::40.53127pt. +[909 + + +] +l2hSize :tex2html_wrap_inline11247:6.95831pt::6.95831pt::22.75343pt. +[910 + + +] +l2hSize :tex2html_wrap_inline11255:6.95831pt::6.95831pt::42.66997pt. +[911 + + +] +l2hSize :displaymath10976:24.70906pt::0.0pt::349.0pt. +[912 + + +] +psfig: searching figs/fig08.13.ps for bounding box +psfig: including figs/fig08.13.ps +l2hSize :figure10336:177.66374pt::0.0pt::388.45126pt. +[913 + + +] +psfig: searching figs/fig08.14.ps for bounding box +psfig: including figs/fig08.14.ps +l2hSize :figure10344:250.9375pt::0.0pt::352.31625pt. +[914 + + +] +l2hSize :tex2html_wrap_inline11311:6.94444pt::0.0pt::25.62143pt. +[915 + + +] +l2hSize :tex2html_wrap_inline11313:8.0pt::8.0pt::59.75336pt. +[916 + + +] +l2hSize :tex2html_wrap_inline11315:7.5305pt::7.5305pt::54.545pt. +[917 + + +] +l2hSize :displaymath10977:23.01347pt::0.0pt::349.0pt. +[918 + + +] +l2hSize :tex2html_wrap_inline11329:7.44444pt::7.44444pt::42.27068pt. +[919 + + +] +l2hSize :tex2html_wrap_inline11333:7.17859pt::7.17859pt::60.0005pt. +[920 + + +] +l2hSize :displaymath10978:14.5pt::0.0pt::349.0pt. +[921 + + +] +l2hSize :displaymath10979:14.5pt::0.0pt::349.0pt. +[922 + + +] +psfig: searching figs/fig08.15.ps for bounding box +psfig: including figs/fig08.15.ps +l2hSize :figure10359:177.66374pt::0.0pt::361.35pt. +[923 + + +] +l2hSize :displaymath10980:14.5pt::0.0pt::349.0pt. +[924 + + +] +l2hSize :displaymath10981:14.5pt::0.0pt::349.0pt. +[925 + + +] +l2hSize :displaymath10982:14.5pt::0.0pt::349.0pt. +[926 + + +] +psfig: searching figs/fig08.16.ps for bounding box +psfig: including figs/fig08.16.ps +l2hSize :figure10369:176.65999pt::0.0pt::353.32pt. +[927 + + +] +l2hSize :displaymath10983:26.84395pt::0.0pt::349.0pt. +[928 + + +] +l2hSize :tex2html_wrap_inline11361:6.45831pt::0.0pt::23.62263pt. +[929 + + +] +l2hSize :tex2html_wrap_inline11365:6.45831pt::0.0pt::28.62263pt. +[930 + + +] +l2hSize :displaymath10984:25.26462pt::0.0pt::349.0pt. +[931 + + +] +l2hSize :displaymath10985:21.06903pt::0.0pt::349.0pt. +[932 + + +] +l2hSize :tex2html_wrap_inline11381:8.0pt::8.0pt::36.32637pt. +[933 + + +] +l2hSize :displaymath10986:23.59795pt::0.0pt::349.0pt. +[934 + + +] +l2hSize :displaymath10987:14.5pt::0.0pt::349.0pt. +[935 + + +] +psfig: searching figs/fig08.17.ps for bounding box +psfig: including figs/fig08.17.ps +l2hSize :figure10391:198.74251pt::0.0pt::344.28625pt. +[936 + + +] +psfig: searching figs/fig08.18.ps for bounding box +psfig: including figs/fig08.18.ps +l2hSize :figure10397:176.65999pt::0.0pt::379.41751pt. +[937 + + +] +l2hSize :displaymath10989:14.5pt::0.0pt::349.0pt. +[938 + + +] +l2hSize :tex2html_wrap_inline11405:8.0pt::8.0pt::23.48965pt. +[939 + + +] +l2hSize :tex2html_wrap_inline11413:8.0pt::8.0pt::47.37846pt. +[940 + + +] +l2hSize :tex2html_wrap_inline11415:6.83331pt::0.0pt::26.37494pt. +[941 + + +] +l2hSize :displaymath10990:25.13823pt::0.0pt::349.0pt. +[942 + + +] +l2hSize :tex2html_wrap_inline11417:8.0pt::8.0pt::32.30687pt. +[943 + + +] +l2hSize :displaymath10991:14.5pt::0.0pt::349.0pt. +[944 + + +] +l2hSize :tex2html_wrap_inline11427:6.83331pt::0.0pt::7.00697pt. +[945 + + +] +l2hSize :displaymath10992:14.5pt::0.0pt::349.0pt. +[946 + + +] +l2hSize :displaymath10993:24.70906pt::0.0pt::349.0pt. +[947 + + +] +l2hSize :displaymath10994:23.59795pt::0.0pt::349.0pt. +[948 + + +] +l2hSize :tex2html_wrap_inline11453:7.09525pt::7.09525pt::11.72296pt. +[949 + + +] +l2hSize :displaymath10995:26.13408pt::0.0pt::349.0pt. +[950 + + +] +psfig: searching figs/fig08.19.ps for bounding box +psfig: including figs/fig08.19.ps +l2hSize :figure10438:176.65999pt::0.0pt::320.19626pt. +[951 + + +] +l2hSize :tex2html_wrap_inline11473:8.64003pt::8.64003pt::56.62848pt. +[952 + + +] +l2hSize :displaymath10996:22.40236pt::0.0pt::349.0pt. +[953 + + +] +l2hSize :tex2html_wrap_inline11485:8.0pt::8.0pt::38.3194pt. +[954 + + +] +l2hSize :tex2html_wrap_inline11487:8.0pt::8.0pt::53.875pt. +[955 + + +] +l2hSize :tex2html_wrap_inline11493:8.8332pt::0.0pt::8.0417pt. +[956 + + +] +l2hSize :tex2html_wrap_inline11495:8.8332pt::0.0pt::11.33337pt. +[957 + + +] +l2hSize :tex2html_wrap_inline11497:6.83331pt::0.0pt::7.20834pt. +[958 + + +] +l2hSize :displaymath10997:14.5pt::0.0pt::349.0pt. +[959 + + +] +l2hSize :tex2html_wrap_inline11507:8.64003pt::8.64003pt::41.309pt. +[960 + + +] +l2hSize :tex2html_wrap_inline11511:8.0pt::8.0pt::54.87854pt. +[961 + + +] +l2hSize :displaymath10998:18.85951pt::0.0pt::349.0pt. +[962 + + +] +l2hSize :tex2html_wrap_inline11521:6.45831pt::0.0pt::11.5024pt. +[963 + + +] +l2hSize :tex2html_wrap_inline11531:8.0pt::8.0pt::90.03818pt. +[964 + + +] +l2hSize :tex2html_wrap_inline11533:8.0pt::8.0pt::45.65968pt. +[965 + + +] +l2hSize :tex2html_wrap_inline11535:8.0pt::8.0pt::37.97577pt. +[966 + + +] +l2hSize :tex2html_wrap_inline11541:8.0pt::8.0pt::62.14233pt. +[967 + + +] +l2hSize :displaymath10999:27.03914pt::0.0pt::349.0pt. +[968 + + +] +l2hSize :displaymath11000:22.40236pt::0.0pt::349.0pt. +[969 + + +] +l2hSize :displaymath11001:25.91492pt::0.0pt::349.0pt. +[970 + + +] +l2hSize :tex2html_wrap_inline11553:8.64003pt::8.64003pt::49.60521pt. +[971 + + +] +psfig: searching figs/fig08.20.ps for bounding box +psfig: including figs/fig08.20.ps +l2hSize :figure10463:176.65999pt::0.0pt::379.41751pt. +[972 + + +] +psfig: searching figs/fig08.21.ps for bounding box +psfig: including figs/fig08.21.ps +l2hSize :figure10470:185.69374pt::0.0pt::316.18124pt. +[973 + + +] +l2hSize :tex2html_wrap_inline11561:8.0pt::8.0pt::31.08679pt. +[974 + + +] +l2hSize :tex2html_wrap_inline11563:8.0pt::8.0pt::33.72456pt. +[975 + + +] +l2hSize :displaymath11002:25.54192pt::0.0pt::349.0pt. +[976 + + +] +l2hSize :tex2html_wrap_inline11571:6.45831pt::0.0pt::5.1563pt. +[977 + + +] +l2hSize :tex2html_wrap_inline11575:6.45831pt::0.0pt::24.83562pt. +[978 + + +] +psfig: searching figs/fig08.22.ps for bounding box +psfig: including figs/fig08.22.ps +l2hSize :figure10485:334.24875pt::0.0pt::311.1625pt. +[979 + + +] +l2hSize :tex2html_wrap_inline11591:8.0pt::8.0pt::15.15633pt. +[980 + + +] +l2hSize :displaymath11003:23.56903pt::0.0pt::349.0pt. +[981 + + +] +l2hSize :tex2html_wrap_inline11615:7.33331pt::7.33331pt::26.6423pt. +[982 + + +] +l2hSize :displaymath11004:24.29112pt::0.0pt::349.0pt. +[983 + + +] +l2hSize :tex2html_wrap_inline11621:9.3332pt::9.3332pt::18.3091pt. +[984 + + +] +psfig: searching figs/fig08.23.ps for bounding box +psfig: including figs/fig08.23.ps +l2hSize :figure10509:178.6675pt::0.0pt::275.0275pt. +[985 + + +] +psfig: searching figs/fig08.24.ps for bounding box +psfig: including figs/fig08.24.ps +l2hSize :figure10520:293.09499pt::0.0pt::329.23001pt. +[986 + + +] +psfig: searching figs/fig08.25.ps for bounding box +psfig: including figs/fig08.25.ps +l2hSize :figure10526:242.90749pt::0.0pt::316.18124pt. +[987 + + +] +l2hSize :displaymath11005:14.5pt::0.0pt::349.0pt. +[988 + + +] +l2hSize :tex2html_wrap_inline11645:8.64003pt::8.64003pt::22.25935pt. +[989 + + +] +psfig: searching figs/fig08.26.ps for bounding box +psfig: including figs/fig08.26.ps +l2hSize :figure10537:175.65625pt::0.0pt::316.18124pt. +[990 + + +] +l2hSize :displaymath11006:14.5pt::0.0pt::349.0pt. +[991 + + +] +l2hSize :displaymath11007:22.76462pt::0.0pt::349.0pt. +[992 + + +] +l2hSize :tex2html_wrap_inline11647:6.45831pt::0.0pt::11.93408pt. +[993 + + +] +l2hSize :tex2html_wrap_inline11649:8.64003pt::8.64003pt::20.27208pt. +[994 + + +] +l2hSize :displaymath11008:14.5pt::0.0pt::349.0pt. +[995 + + +] +l2hSize :tex2html_wrap_inline11651:8.64003pt::8.64003pt::49.0498pt. +[996 + + +] +psfig: searching figs/fig08.27.ps for bounding box +psfig: including figs/fig08.27.ps +l2hSize :figure10549:220.825pt::0.0pt::303.1325pt. +[997 + + +] +l2hSize :tex2html_wrap_inline11655:8.64003pt::8.64003pt::54.98604pt. +[998 + + +] +l2hSize :tex2html_wrap_inline11657:10.03891pt::10.03891pt::78.9583pt. +[999 + + +] +l2hSize :tex2html_wrap_inline11659:8.0pt::8.0pt::33.02629pt. +[1000 + + +] +l2hSize :displaymath11009:14.5pt::0.0pt::349.0pt. +[1001 + + +] +l2hSize :displaymath11010:14.5pt::0.0pt::349.0pt. +[1002 + + +] +l2hSize :displaymath11011:14.5pt::0.0pt::349.0pt. +[1003 + + +] +l2hSize :tex2html_wrap_inline11665:6.95831pt::6.95831pt::14.86115pt. +[1004 + + +] +l2hSize :displaymath11012:14.5pt::0.0pt::349.0pt. +[1005 + + +] +l2hSize :tex2html_wrap_inline11683:7.33331pt::7.33331pt::13.29866pt. +[1006 + + +] +l2hSize :tex2html_wrap_inline11685:7.33331pt::7.33331pt::13.29866pt. +[1007 + + +] +l2hSize :displaymath11013:25.00023pt::0.0pt::349.0pt. +[1008 + + +] +l2hSize :displaymath11014:14.5pt::0.0pt::349.0pt. +[1009 + + +] +l2hSize :displaymath11015:14.5pt::0.0pt::349.0pt. +[1010 + + +] +l2hSize :tex2html_wrap_inline11689:8.0pt::8.0pt::48.86069pt. +[1011 + + +] +l2hSize :tex2html_wrap_inline11693:8.0pt::8.0pt::16.34961pt. +[1012 + + +] +l2hSize :displaymath11016:25.00023pt::0.0pt::349.0pt. +[1013 + + +] +l2hSize :tex2html_wrap_inline12147:10.01111pt::10.01111pt::28.29984pt. +[1014 + + +] +l2hSize :tex2html_wrap_inline12149:10.84444pt::10.84444pt::31.1889pt. +[1015 + + +] +l2hSize :tex2html_wrap_inline12153:10.01111pt::10.01111pt::31.63316pt. +[1016 + + +] +l2hSize :tex2html_wrap_inline12159:10.01111pt::10.01111pt::26.38321pt. +[1017 + + +] +l2hSize :tex2html_wrap_inline12161:10.84444pt::10.84444pt::28.96667pt. +[1018 + + +] +l2hSize :tex2html_wrap_inline12165:10.01111pt::10.01111pt::42.13307pt. +[1019 + + +] +l2hSize :tex2html_wrap_inline12167:10.57858pt::10.57858pt::39.57779pt. +[1020 + + +] +psfig: searching figs/fig08.28.ps for bounding box +psfig: including figs/fig08.28.ps +l2hSize :figure10598:174.65251pt::0.0pt::343.2825pt. +[1021 + + +] +l2hSize :tex2html_wrap_inline12183:10.01111pt::10.01111pt::31.63316pt. +[1022 + + +] +l2hSize :tex2html_wrap_inline12185:10.84444pt::10.84444pt::31.13335pt. +[1023 + + +] +psfig: searching figs/fig08.29.ps for bounding box +psfig: including figs/fig08.29.ps +l2hSize :figure10610:242.90749pt::0.0pt::350.30875pt. +[1024 + + +] +psfig: searching figs/fig08.30.ps for bounding box +psfig: including figs/fig08.30.ps +l2hSize :figure10620:299.11751pt::0.0pt::346.29376pt. +[1025 + + +] +psfig: searching figs/fig08.31.ps for bounding box +psfig: including figs/fig08.31.ps +l2hSize :figure10626:200.75pt::0.0pt::346.29376pt. +[1026 + + +] +psfig: searching figs/fig08.32.ps for bounding box +psfig: including figs/fig08.32.ps +l2hSize :figure10639:192.71999pt::0.0pt::365.36499pt. +[1027 + + +] +l2hSize :tex2html_wrap_inline12231:10.01111pt::10.01111pt::42.13307pt. +[1028 + + +] +l2hSize :tex2html_wrap_inline12233:10.01111pt::10.01111pt::61.66289pt. +[1029 + + +] +l2hSize :tex2html_wrap_inline12235:10.01111pt::10.01111pt::42.13307pt. +[1030 + + +] +l2hSize :tex2html_wrap_inline12237:8.20554pt::8.20554pt::39.57777pt. +[1031 + + +] +l2hSize :tex2html_wrap_inline12239:8.20554pt::8.20554pt::56.95557pt. +[1032 + + +] +l2hSize :tex2html_wrap_inline12241:10.84444pt::10.84444pt::39.8278pt. +[1033 + + +] +l2hSize :tex2html_wrap_inline12245:10.01111pt::10.01111pt::42.13307pt. +[1034 + + +] +l2hSize :tex2html_wrap_inline12247:10.01111pt::10.01111pt::61.66289pt. +[1035 + + +] +l2hSize :tex2html_wrap_inline12249:10.01111pt::10.01111pt::42.13307pt. +[1036 + + +] +l2hSize :tex2html_wrap_inline12251:8.20554pt::8.20554pt::40.10555pt. +[1037 + + +] +l2hSize :tex2html_wrap_inline12253:8.20554pt::8.20554pt::57.48334pt. +[1038 + + +] +l2hSize :tex2html_wrap_inline12255:10.84444pt::10.84444pt::40.35558pt. +[1039 + + +] +psfig: searching figs/fig08.33.ps for bounding box +psfig: including figs/fig08.33.ps +l2hSize :figure10670:273.02pt::0.0pt::325.215pt. +[1040 + + +] +l2hSize :tex2html_wrap_inline11727:8.0pt::8.0pt::13.94519pt. +[1041 + + +] +l2hSize :tex2html_wrap_inline13143:7.33331pt::7.33331pt::73.4048pt. +[1042 + + +] +l2hSize :tex2html_wrap_inline13155:8.0pt::8.0pt::25.12852pt. +[1043 + + +] +l2hSize :tex2html_wrap_inline13159:8.0pt::8.0pt::59.25345pt. +[1044 + + +] +l2hSize :tex2html_wrap_inline13173:7.44444pt::7.44444pt::46.8123pt. +[1045 + + +] +l2hSize :tex2html_wrap_inline13175:8.0pt::8.0pt::30.64937pt. +[1046 + + +] +l2hSize :tex2html_wrap_inline13187:8.0pt::8.0pt::45.04506pt. +[1047 + + +] +l2hSize :tex2html_wrap_inline13191:6.83331pt::0.0pt::8.41806pt. +[1048 + + +] +l2hSize :displaymath12979:14.5pt::0.0pt::349.0pt. +[1049 + + +] +l2hSize :displaymath12980:15.50006pt::0.0pt::349.0pt. +[1050 + + +] +l2hSize :tex2html_wrap_inline13199:7.33331pt::7.33331pt::12.92021pt. +[1051 + + +] +l2hSize :displaymath12981:14.5pt::0.0pt::349.0pt. +[1052 + + +] +l2hSize :displaymath12982:15.50006pt::0.0pt::349.0pt. +[1053 + + +] +l2hSize :tex2html_wrap_inline13205:7.33331pt::7.33331pt::12.92021pt. +[1054 + + +] +l2hSize :tex2html_wrap_inline13207:7.44444pt::7.44444pt::20.38199pt. +[1055 + + +] +l2hSize :displaymath12983:21.06903pt::0.0pt::349.0pt. +[1056 + + +] +l2hSize :displaymath12984:14.5pt::0.0pt::349.0pt. +[1057 + + +] +l2hSize :tex2html_wrap_inline13213:8.49002pt::0.0pt::40.97702pt. +[1058 + + +] +l2hSize :tex2html_wrap_inline13225:6.83331pt::0.0pt::8.55559pt. +[1059 + + +] +l2hSize :displaymath12985:14.5pt::0.0pt::349.0pt. +[1060 + + +] +l2hSize :displaymath12986:14.5pt::0.0pt::349.0pt. +[1061 + + +] +l2hSize :tex2html_wrap_inline13251:8.0pt::8.0pt::19.60423pt. +[1062 + + +] +l2hSize :tex2html_wrap_inline13255:7.44444pt::7.44444pt::67.92342pt. +[1063 + + +] +l2hSize :displaymath12988:14.5pt::0.0pt::349.0pt. +[1064 + + +] +l2hSize :displaymath12989:15.50006pt::0.0pt::349.0pt. +[1065 + + +] +l2hSize :displaymath12990:21.38907pt::0.0pt::349.0pt. +[1066 + + +] +l2hSize :tex2html_wrap_inline13259:8.0pt::8.0pt::23.90517pt. +[1067 + + +] +l2hSize :tex2html_wrap_inline13261:6.95831pt::6.95831pt::23.64128pt. +[1068 + + +] +l2hSize :tex2html_wrap_inline13263:7.33331pt::7.33331pt::76.18259pt. +[1069 + + +] +l2hSize :tex2html_wrap_inline13269:8.0pt::8.0pt::31.68297pt. +[1070 + + +] +l2hSize :displaymath12991:21.06903pt::0.0pt::349.0pt. +[1071 + + +] +l2hSize :tex2html_wrap_inline13279:8.0pt::8.0pt::33.17366pt. +[1072 + + +] +l2hSize :tex2html_wrap_inline13281:6.95831pt::6.95831pt::36.39354pt. +[1073 + + +] +l2hSize :displaymath12992:21.06903pt::0.0pt::349.0pt. +[1074 + + +] +l2hSize :displaymath12993:15.50006pt::0.0pt::349.0pt. +[1075 + + +] +l2hSize :tex2html_wrap_inline13289:7.44444pt::7.44444pt::72.9233pt. +[1076 + + +] +l2hSize :tex2html_wrap_inline13291:8.0pt::8.0pt::39.46062pt. +[1077 + + +] +l2hSize :tex2html_wrap_inline13295:7.33331pt::7.33331pt::27.95824pt. +[1078 + + +] +l2hSize :displaymath12994:25.00023pt::0.0pt::349.0pt. +[1079 + + +] +l2hSize :tex2html_wrap_inline13303:7.44444pt::7.44444pt::26.88882pt. +[1080 + + +] +l2hSize :displaymath12996:23.87018pt::0.0pt::349.0pt. +[1081 + + +] +l2hSize :displaymath12997:14.5pt::0.0pt::349.0pt. +[1082 + + +] +l2hSize :tex2html_wrap_inline13305:8.64003pt::8.64003pt::31.21002pt. +[1083 + + +] +l2hSize :tex2html_wrap_inline13307:7.44444pt::7.44444pt::5.33511pt. +[1084 + + +] +l2hSize :displaymath12998:24.9813pt::0.0pt::349.0pt. +[1085 + + +] +l2hSize :displaymath12999:14.5pt::0.0pt::349.0pt. +[1086 + + +] +l2hSize :displaymath13000:24.62459pt::0.0pt::349.0pt. +[1087 + + +] +l2hSize :tex2html_wrap_inline13309:6.83331pt::0.0pt::26.88882pt. +[1088 + + +] +l2hSize :displaymath13001:19.22743pt::0.0pt::349.0pt. +[1089 + + +] +l2hSize :tex2html_wrap_inline13311:8.0pt::8.0pt::29.66257pt. +[1090 + + +] +l2hSize :displaymath13002:31.00029pt::0.0pt::349.0pt. +[1091 + + +] +l2hSize :tex2html_wrap_inline13317:6.94444pt::0.0pt::24.35411pt. +[1092 + + +] +l2hSize :tex2html_wrap_inline13319:6.94444pt::0.0pt::34.35414pt. +[1093 + + +] +l2hSize :displaymath13003:14.5pt::0.0pt::349.0pt. +[1094 + + +] +l2hSize :tex2html_wrap_inline13321:8.0pt::8.0pt::63.92795pt. +[1095 + + +] +l2hSize :tex2html_wrap_inline13335:7.44444pt::7.44444pt::24.35411pt. +[1096 + + +] +l2hSize :tex2html_wrap_inline13337:7.44444pt::7.44444pt::32.13191pt. +[1097 + + +] +l2hSize :tex2html_wrap_inline13341:7.44444pt::7.44444pt::32.13191pt. +[1098 + + +] +psfig: searching figs/fig09.01.ps for bounding box +psfig: including figs/fig09.01.ps +l2hSize :figure12411:198.74251pt::0.0pt::314.17374pt. +[1099 + + +] +psfig: searching figs/fig09.02.ps for bounding box +psfig: including figs/fig09.02.ps +l2hSize :figure12416:135.50624pt::0.0pt::322.20375pt. +[1100 + + +] +l2hSize :displaymath13005:14.5pt::0.0pt::349.0pt. +[1101 + + +] +l2hSize :displaymath13006:14.5pt::0.0pt::349.0pt. +[1102 + + +] +l2hSize :displaymath13007:14.5pt::0.0pt::349.0pt. +[1103 + + +] +l2hSize :displaymath13008:15.50006pt::0.0pt::349.0pt. +[1104 + + +] +l2hSize :displaymath13009:14.5pt::0.0pt::349.0pt. +[1105 + + +] +l2hSize :displaymath13010:19.22743pt::0.0pt::349.0pt. +[1106 + + +] +l2hSize :tex2html_wrap_inline13365:8.0pt::8.0pt::38.55438pt. +[1107 + + +] +l2hSize :tex2html_wrap_inline13369:7.44444pt::7.44444pt::25.58685pt. +[1108 + + +] +l2hSize :displaymath13011:14.5pt::0.0pt::349.0pt. +[1109 + + +] +l2hSize :displaymath13012:14.5pt::0.0pt::349.0pt. +[1110 + + +] +l2hSize :displaymath13014:14.5pt::0.0pt::349.0pt. +[1111 + + +] +l2hSize :displaymath13015:14.5pt::0.0pt::349.0pt. +[1112 + + +] +l2hSize :displaymath13016:18.85951pt::0.0pt::349.0pt. +[1113 + + +] +l2hSize :displaymath13017:21.4579pt::0.0pt::349.0pt. +[1114 + + +] +l2hSize :tex2html_wrap_inline13379:6.83331pt::0.0pt::13.48503pt. +[1115 + + +] +l2hSize :displaymath13018:18.85951pt::0.0pt::349.0pt. +[1116 + + +] +l2hSize :displaymath13019:18.85951pt::0.0pt::349.0pt. +[1117 + + +] +l2hSize :tex2html_wrap_inline13385:7.33331pt::7.33331pt::16.36392pt. +[1118 + + +] +l2hSize :tex2html_wrap_inline13387:6.83331pt::0.0pt::7.72226pt. +[1119 + + +] +l2hSize :displaymath13020:18.85951pt::0.0pt::349.0pt. +[1120 + + +] +psfig: searching figs/fig09.03.ps for bounding box +psfig: including figs/fig09.03.ps +l2hSize :figure12482:287.0725pt::0.0pt::316.18124pt. +[1121 + + +] +psfig: searching figs/fig09.04.ps for bounding box +psfig: including figs/fig09.04.ps +l2hSize :figure12488:125.46875pt::0.0pt::320.19626pt. +[1122 + + +] +l2hSize :tex2html_wrap_inline13427:8.0pt::8.0pt::19.4862pt. +[1123 + + +] +l2hSize :displaymath13021:14.5pt::0.0pt::349.0pt. +[1124 + + +] +l2hSize :displaymath13022:21.06903pt::0.0pt::349.0pt. +[1125 + + +] +l2hSize :displaymath13023:21.06903pt::0.0pt::349.0pt. +[1126 + + +] +l2hSize :displaymath13024:14.5pt::0.0pt::349.0pt. +[1127 + + +] +l2hSize :displaymath13025:25.00023pt::0.0pt::349.0pt. +[1128 + + +] +l2hSize :displaymath13026:18.85951pt::0.0pt::349.0pt. +[1129 + + +] +l2hSize :displaymath13027:18.85951pt::0.0pt::349.0pt. +[1130 + + +] +l2hSize :displaymath13028:25.00023pt::0.0pt::349.0pt. +[1131 + + +] +l2hSize :tex2html_wrap_inline13437:8.0pt::8.0pt::24.59033pt. +[1132 + + +] +psfig: searching figs/fig09.05.ps for bounding box +psfig: including figs/fig09.05.ps +l2hSize :figure12534:160.59999pt::0.0pt::299.1175pt. +[1133 + + +] +l2hSize :tex2html_wrap_inline13447:8.0pt::8.0pt::27.52116pt. +[1134 + + +] +l2hSize :tex2html_wrap_inline13451:8.0pt::8.0pt::15.50008pt. +[1135 + + +] +l2hSize :displaymath13029:22.12459pt::0.0pt::349.0pt. +[1136 + + +] +l2hSize :tex2html_wrap_inline13453:8.0pt::8.0pt::69.90962pt. +[1137 + + +] +l2hSize :displaymath13030:21.06903pt::0.0pt::349.0pt. +[1138 + + +] +l2hSize :displaymath13031:21.06903pt::0.0pt::349.0pt. +[1139 + + +] +l2hSize :tex2html_wrap_inline13457:6.95831pt::6.95831pt::18.27786pt. +[1140 + + +] +l2hSize :tex2html_wrap_inline13459:6.95831pt::6.95831pt::18.27786pt. +[1141 + + +] +l2hSize :tex2html_wrap_inline13461:6.95831pt::6.95831pt::18.27786pt. +[1142 + + +] +l2hSize :tex2html_wrap_inline13463:6.95831pt::6.95831pt::18.27786pt. +[1143 + + +] +psfig: searching figs/fig09.06.ps for bounding box +psfig: including figs/fig09.06.ps +l2hSize :figure12556:168.62999pt::0.0pt::321.20001pt. +[1144 + + +] +l2hSize :tex2html_wrap_inline13481:6.94444pt::0.0pt::12.60419pt. +[1145 + + +] +psfig: searching figs/fig09.07.ps for bounding box +psfig: including figs/fig09.07.ps +l2hSize :figure12563:463.7325pt::0.0pt::303.1325pt. +[1146 + + +] +l2hSize :tex2html_wrap_inline13487:7.44444pt::7.44444pt::82.36772pt. +[1147 + + +] +l2hSize :tex2html_wrap_inline13493:6.95831pt::6.95831pt::70.9465pt. +[1148 + + +] +l2hSize :tex2html_wrap_inline13499:6.83331pt::0.0pt::18.40514pt. +[1149 + + +] +l2hSize :tex2html_wrap_inline13505:7.33331pt::7.33331pt::36.62962pt. +[1150 + + +] +l2hSize :displaymath13032:14.5pt::0.0pt::349.0pt. +[1151 + + +] +l2hSize :displaymath13033:14.5pt::0.0pt::349.0pt. +[1152 + + +] +l2hSize :displaymath13034:14.5pt::0.0pt::349.0pt. +[1153 + + +] +l2hSize :tex2html_wrap_inline13533:8.0pt::8.0pt::41.24988pt. +[1154 + + +] +l2hSize :tex2html_wrap_inline13535:6.83331pt::0.0pt::15.55214pt. +[1155 + + +] +l2hSize :tex2html_wrap_inline13537:8.0pt::8.0pt::15.50008pt. +[1156 + + +] +psfig: searching figs/fig09.08.ps for bounding box +psfig: including figs/fig09.08.ps +l2hSize :figure12577:326.21875pt::0.0pt::205.76874pt. +[1157 + + +] +l2hSize :tex2html_wrap_inline13539:8.0pt::8.0pt::22.69823pt. +[1158 + + +] +l2hSize :tex2html_wrap_inline13541:8.0pt::8.0pt::19.9642pt. +[1159 + + +] +l2hSize :tex2html_wrap_inline13543:8.0pt::8.0pt::42.1624pt. +[1160 + + +] +l2hSize :tex2html_wrap_inline13549:8.0pt::8.0pt::39.92038pt. +[1161 + + +] +l2hSize :tex2html_wrap_inline13551:8.0pt::8.0pt::39.92038pt. +[1162 + + +] +l2hSize :tex2html_wrap_inline13553:8.0pt::8.0pt::28.2538pt. +[1163 + + +] +l2hSize :tex2html_wrap_inline13565:8.0pt::8.0pt::29.92946pt. +[1164 + + +] +l2hSize :tex2html_wrap_inline13567:8.0pt::8.0pt::67.04073pt. +[1165 + + +] +l2hSize :displaymath13035:25.00023pt::0.0pt::349.0pt. +[1166 + + +] +l2hSize :tex2html_wrap_inline13571:8.0pt::8.0pt::17.5487pt. +[1167 + + +] +l2hSize :tex2html_wrap_inline13577:8.0pt::8.0pt::66.3357pt. +[1168 + + +] +l2hSize :tex2html_wrap_inline13579:8.0pt::8.0pt::78.16206pt. +[1169 + + +] +l2hSize :tex2html_wrap_inline13581:8.0pt::8.0pt::65.39224pt. +[1170 + + +] +l2hSize :tex2html_wrap_inline13583:6.95831pt::6.95831pt::24.54854pt. +[1171 + + +] +psfig: searching figs/fig09.09.ps for bounding box +psfig: including figs/fig09.09.ps +l2hSize :figure12596:287.0725pt::0.0pt::232.87pt. +[1172 + + +] +l2hSize :tex2html_wrap_inline13589:8.0pt::8.0pt::37.06488pt. +[1173 + + +] +l2hSize :tex2html_wrap_inline13591:8.0pt::8.0pt::37.58922pt. +[1174 + + +] +l2hSize :displaymath13036:24.62459pt::0.0pt::349.0pt. +[1175 + + +] +psfig: searching figs/fig09.10.ps for bounding box +psfig: including figs/fig09.10.ps +l2hSize :figure12610:431.6125pt::0.0pt::304.13626pt. +[1176 + + +] +l2hSize :tex2html_wrap_inline13593:6.45831pt::0.0pt::31.85062pt. +[1177 + + +] +l2hSize :tex2html_wrap_inline13595:6.94444pt::0.0pt::24.35411pt. +[1178 + + +] +l2hSize :displaymath13037:37.0pt::0.0pt::349.0pt. +[1179 + + +] +l2hSize :tex2html_wrap_inline13601:6.83331pt::0.0pt::16.05904pt. +[1180 + + +] +l2hSize :displaymath13038:14.5pt::0.0pt::349.0pt. +[1181 + + +] +l2hSize :displaymath13039:22.12459pt::0.0pt::349.0pt. +[1182 + + +] +l2hSize :tex2html_wrap_inline13607:8.0pt::8.0pt::25.68408pt. +[1183 + + +] +l2hSize :tex2html_wrap_inline13611:8.0pt::8.0pt::50.04507pt. +[1184 + + +] +l2hSize :tex2html_wrap_inline13623:6.95831pt::6.95831pt::26.50232pt. +[1185 + + +] +psfig: searching figs/fig09.11.ps for bounding box +psfig: including figs/fig09.11.ps +l2hSize :figure12629:282.05376pt::0.0pt::309.155pt. +[1186 + + +] +psfig: searching figs/fig09.12.ps for bounding box +psfig: including figs/fig09.12.ps +l2hSize :figure12634:188.705pt::0.0pt::275.0275pt. +[1187 + + +] +l2hSize :displaymath13040:14.5pt::0.0pt::349.0pt. +[1188 + + +] +l2hSize :displaymath13041:14.5pt::0.0pt::349.0pt. +[1189 + + +] +l2hSize :displaymath13042:14.5pt::0.0pt::349.0pt. +[1190 + + +] +l2hSize :displaymath13043:25.00023pt::0.0pt::349.0pt. +[1191 + + +] +l2hSize :displaymath13044:27.03915pt::0.0pt::349.0pt. +[1192 + + +] +l2hSize :tex2html_wrap_inline13651:8.01782pt::8.01782pt::45.78934pt. +[1193 + + +] +l2hSize :displaymath13045:27.03915pt::0.0pt::349.0pt. +[1194 + + +] +l2hSize :tex2html_wrap_inline13657:8.0pt::8.0pt::48.73146pt. +[1195 + + +] +l2hSize :tex2html_wrap_inline13659:8.01782pt::8.01782pt::21.61465pt. +[1196 + + +] +l2hSize :tex2html_wrap_inline13661:8.01782pt::8.01782pt::38.8368pt. +[1197 + + +] +l2hSize :tex2html_wrap_inline13665:8.0pt::8.0pt::48.73146pt. +[1198 + + +] +l2hSize :tex2html_wrap_inline13669:8.0pt::8.0pt::18.8091pt. +[1199 + + +] +l2hSize :tex2html_wrap_inline13671:6.83331pt::0.0pt::14.62502pt. +[1200 + + +] +l2hSize :displaymath13046:14.5pt::0.0pt::349.0pt. +[1201 + + +] +l2hSize :displaymath13047:25.00023pt::0.0pt::349.0pt. +[1202 + + +] +l2hSize :tex2html_wrap_inline13679:8.0pt::8.0pt::18.88545pt. +[1203 + + +] +l2hSize :displaymath13048:14.5pt::0.0pt::349.0pt. +[1204 + + +] +l2hSize :displaymath13049:26.62448pt::0.0pt::349.0pt. +[1205 + + +] +l2hSize :tex2html_wrap_inline13685:8.0pt::8.0pt::19.2466pt. +[1206 + + +] +l2hSize :displaymath13050:14.5pt::0.0pt::349.0pt. +[1207 + + +] +l2hSize :displaymath13051:14.5pt::0.0pt::349.0pt. +[1208 + + +] +l2hSize :displaymath13052:14.5pt::0.0pt::349.0pt. +[1209 + + +] +l2hSize :tex2html_wrap_inline13695:7.51782pt::0.0pt::10.97574pt. +[1210 + + +] +l2hSize :tex2html_wrap_inline13703:7.51782pt::0.0pt::10.53824pt. +[1211 + + +] +psfig: searching figs/fig09.13.ps for bounding box +psfig: including figs/fig09.13.ps +l2hSize :figure12678:274.02376pt::0.0pt::304.13626pt. +[1212 + + +] +l2hSize :tex2html_wrap_inline13711:8.99002pt::8.99002pt::25.97581pt. +[1213 + + +] +l2hSize :tex2html_wrap_inline13713:6.94444pt::0.0pt::20.7778pt. +[1214 + + +] +psfig: searching figs/fig09.14.ps for bounding box +psfig: including figs/fig09.14.ps +l2hSize :figure12688:205.76875pt::0.0pt::355.3275pt. +[1215 + + +] +l2hSize :tex2html_wrap_inline14083:10.01111pt::10.01111pt::28.29984pt. +[1216 + + +] +l2hSize :tex2html_wrap_inline14085:10.84444pt::10.84444pt::27.57779pt. +[1217 + + +] +l2hSize :tex2html_wrap_inline14093:10.01111pt::10.01111pt::33.54979pt. +[1218 + + +] +l2hSize :tex2html_wrap_inline14095:10.84444pt::10.84444pt::31.49446pt. +[1219 + + +] +l2hSize :tex2html_wrap_inline13723:8.0pt::8.0pt::36.01384pt. +[1220 + + +] +l2hSize :tex2html_wrap_inline14099:10.01111pt::10.01111pt::65.04951pt. +[1221 + + +] +l2hSize :tex2html_wrap_inline14101:10.84444pt::10.84444pt::61.77226pt. +[1222 + + +] +psfig: searching figs/fig09.15.ps for bounding box +psfig: including figs/fig09.15.ps +l2hSize :figure12705:278.03874pt::0.0pt::430.60875pt. +[1223 + + +] +l2hSize :tex2html_wrap_inline14115:10.01111pt::10.01111pt::38.79974pt. +[1224 + + +] +l2hSize :tex2html_wrap_inline14117:10.84444pt::10.84444pt::34.27225pt. +[1225 + + +] +l2hSize :tex2html_wrap_inline13735:6.83331pt::0.0pt::37.95827pt. +[1226 + + +] +psfig: searching figs/fig09.16.ps for bounding box +psfig: including figs/fig09.16.ps +l2hSize :figure12717:315.1775pt::0.0pt::431.61249pt. +[1227 + + +] +l2hSize :tex2html_wrap_inline13739:8.0pt::8.0pt::16.26395pt. +[1228 + + +] +l2hSize :tex2html_wrap_inline13743:8.0pt::8.0pt::20.35658pt. +[1229 + + +] +l2hSize :displaymath13053:31.40015pt::0.0pt::349.0pt. +[1230 + + +] +l2hSize :tex2html_wrap_inline14143:10.01111pt::10.01111pt::33.54979pt. +[1231 + + +] +l2hSize :tex2html_wrap_inline14145:10.84444pt::10.84444pt::39.10558pt. +[1232 + + +] +l2hSize :tex2html_wrap_inline14149:10.01111pt::10.01111pt::49.29965pt. +[1233 + + +] +l2hSize :tex2html_wrap_inline14151:10.84444pt::10.84444pt::51.80005pt. +[1234 + + +] +l2hSize :tex2html_wrap_inline13761:8.0pt::8.0pt::80.90271pt. +[1235 + + +] +psfig: searching figs/fig09.17.ps for bounding box +psfig: including figs/fig09.17.ps +l2hSize :figure12740:345.29pt::0.0pt::396.48126pt. +[1236 + + +] +l2hSize :tex2html_wrap_inline13771:8.0pt::8.0pt::15.904pt. +[1237 + + +] +l2hSize :tex2html_wrap_inline13773:8.0pt::8.0pt::27.54874pt. +[1238 + + +] +l2hSize :tex2html_wrap_inline13779:8.0pt::8.0pt::37.9527pt. +[1239 + + +] +psfig: searching figs/fig09.18.ps for bounding box +psfig: including figs/fig09.18.ps +l2hSize :figure12748:552.0625pt::0.0pt::383.4325pt. +[1240 + + +] +l2hSize :tex2html_wrap_inline14183:10.01111pt::10.01111pt::49.29965pt. +[1241 + + +] +l2hSize :tex2html_wrap_inline14185:10.84444pt::10.84444pt::43.77226pt. +[1242 + + +] +l2hSize :tex2html_wrap_inline14189:10.01111pt::10.01111pt::53.0796pt. +[1243 + + +] +l2hSize :tex2html_wrap_inline14191:10.34444pt::10.34444pt::52.67781pt. +[1244 + + +] +l2hSize :tex2html_wrap_inline13799:8.01782pt::8.01782pt::22.05215pt. +[1245 + + +] +l2hSize :tex2html_wrap_inline13829:8.0pt::8.0pt::38.12726pt. +[1246 + + +] +l2hSize :tex2html_wrap_inline13839:6.45831pt::0.0pt::19.86116pt. +[1247 + + +] +l2hSize :tex2html_wrap_inline13843:6.94444pt::0.0pt::24.35411pt. +[1248 + + +] +psfig: searching figs/fig10.01.ps for bounding box +psfig: including figs/fig10.01.ps +l2hSize :figure14230:243.91124pt::0.0pt::335.2525pt. +[1249 + + +] +l2hSize :tex2html_wrap_inline14745:8.0pt::8.0pt::21.46182pt. +[1250 + + +] +l2hSize :tex2html_wrap_inline14757:8.0pt::8.0pt::19.07646pt. +[1251 + + +] +l2hSize :displaymath14633:14.5pt::0.0pt::349.0pt. +[1252 + + +] +l2hSize :displaymath14634:14.5pt::0.0pt::349.0pt. +[1253 + + +] +l2hSize :displaymath14635:14.5pt::0.0pt::349.0pt. +[1254 + + +] +l2hSize :tex2html_wrap_inline14765:9.37892pt::9.37892pt::49.55135pt. +[1255 + + +] +l2hSize :displaymath14637:14.5pt::0.0pt::349.0pt. +[1256 + + +] +l2hSize :displaymath14638:14.5pt::0.0pt::349.0pt. +[1257 + + +] +l2hSize :tex2html_wrap_inline14767:7.51782pt::0.0pt::12.37502pt. +[1258 + + +] +l2hSize :displaymath14639:22.12459pt::0.0pt::349.0pt. +[1259 + + +] +l2hSize :tex2html_wrap_inline14769:7.51782pt::0.0pt::14.68057pt. +[1260 + + +] +l2hSize :displaymath14640:22.12459pt::0.0pt::349.0pt. +[1261 + + +] +l2hSize :tex2html_wrap_inline14777:8.0pt::8.0pt::85.60175pt. +[1262 + + +] +l2hSize :tex2html_wrap_inline14783:8.01782pt::8.01782pt::57.89351pt. +[1263 + + +] +l2hSize :tex2html_wrap_inline14785:8.01782pt::8.01782pt::44.57173pt. +[1264 + + +] +l2hSize :tex2html_wrap_inline14791:8.0pt::8.0pt::18.79169pt. +[1265 + + +] +l2hSize :tex2html_wrap_inline14795:8.0pt::8.0pt::90.60176pt. +[1266 + + +] +l2hSize :tex2html_wrap_inline14801:8.0pt::8.0pt::28.90518pt. +[1267 + + +] +l2hSize :tex2html_wrap_inline14807:8.0pt::8.0pt::42.47449pt. +[1268 + + +] +l2hSize :displaymath14641:14.5pt::0.0pt::349.0pt. +[1269 + + +] +l2hSize :displaymath14642:14.5pt::0.0pt::349.0pt. +[1270 + + +] +l2hSize :tex2html_wrap_inline14809:8.01782pt::8.01782pt::23.93294pt. +[1271 + + +] +l2hSize :displaymath14643:22.12459pt::0.0pt::349.0pt. +[1272 + + +] +l2hSize :tex2html_wrap_inline14811:8.01782pt::8.01782pt::26.2385pt. +[1273 + + +] +l2hSize :displaymath14644:22.12459pt::0.0pt::349.0pt. +[1274 + + +] +l2hSize :tex2html_wrap_inline14817:8.0pt::8.0pt::62.86575pt. +[1275 + + +] +l2hSize :tex2html_wrap_inline14819:8.0pt::8.0pt::70.64355pt. +[1276 + + +] +psfig: searching figs/fig10.02.ps for bounding box +psfig: including figs/fig10.02.ps +l2hSize :figure14263:314.17375pt::0.0pt::340.27124pt. +[1277 + + +] +l2hSize :tex2html_wrap_inline14829:7.33331pt::7.33331pt::45.03293pt. +[1278 + + +] +l2hSize :tex2html_wrap_inline14833:7.44444pt::7.44444pt::41.83151pt. +[1279 + + +] +l2hSize :tex2html_wrap_inline14835:7.44444pt::7.44444pt::10.19102pt. +[1280 + + +] +l2hSize :tex2html_wrap_inline14837:7.33331pt::7.33331pt::11.79173pt. +[1281 + + +] +psfig: searching figs/fig10.03.ps for bounding box +psfig: including figs/fig10.03.ps +l2hSize :figure14280:223.83626pt::0.0pt::337.26001pt. +[1282 + + +] +l2hSize :tex2html_wrap_inline14841:8.0pt::8.0pt::101.16322pt. +[1283 + + +] +l2hSize :tex2html_wrap_inline14843:8.0pt::8.0pt::93.38542pt. +[1284 + + +] +l2hSize :displaymath14645:14.5pt::0.0pt::349.0pt. +[1285 + + +] +l2hSize :tex2html_wrap_inline14845:7.33331pt::7.33331pt::64.51596pt. +[1286 + + +] +l2hSize :tex2html_wrap_inline14849:8.0pt::8.0pt::24.73268pt. +[1287 + + +] +l2hSize :tex2html_wrap_inline14851:8.01782pt::8.01782pt::73.36223pt. +[1288 + + +] +l2hSize :displaymath14646:14.86108pt::0.0pt::349.0pt. +[1289 + + +] +l2hSize :displaymath14647:21.56903pt::0.0pt::349.0pt. +[1290 + + +] +l2hSize :tex2html_wrap_inline14853:7.44444pt::7.44444pt::74.05357pt. +[1291 + + +] +psfig: searching figs/fig10.04.ps for bounding box +psfig: including figs/fig10.04.ps +l2hSize :figure14299:88.33pt::0.0pt::328.22626pt. +[1292 + + +] +l2hSize :displaymath14648:23.10794pt::0.0pt::349.0pt. +[1293 + + +] +l2hSize :tex2html_wrap_inline14861:8.0pt::8.0pt::26.84727pt. +[1294 + + +] +l2hSize :tex2html_wrap_inline14863:7.33331pt::7.33331pt::48.52364pt. +[1295 + + +] +l2hSize :tex2html_wrap_inline14865:6.95831pt::6.95831pt::38.9328pt. +[1296 + + +] +l2hSize :displaymath14649:14.5pt::0.0pt::349.0pt. +[1297 + + +] +psfig: searching figs/fig10.05.ps for bounding box +psfig: including figs/fig10.05.ps +l2hSize :figure14318:192.71999pt::0.0pt::329.23001pt. +[1298 + + +] +l2hSize :tex2html_wrap_inline14869:8.14003pt::0.0pt::10.98851pt. +[1299 + + +] +l2hSize :tex2html_wrap_inline14873:6.95831pt::6.95831pt::71.15486pt. +[1300 + + +] +l2hSize :displaymath14650:21.06903pt::0.0pt::349.0pt. +[1301 + + +] +l2hSize :displaymath14651:21.06903pt::0.0pt::349.0pt. +[1302 + + +] +l2hSize :tex2html_wrap_inline14881:8.0pt::8.0pt::64.4907pt. +[1303 + + +] +l2hSize :tex2html_wrap_inline14889:8.0pt::8.0pt::19.5903pt. +[1304 + + +] +l2hSize :displaymath14652:14.5pt::0.0pt::349.0pt. +[1305 + + +] +l2hSize :displaymath14653:14.5pt::0.0pt::349.0pt. +[1306 + + +] +l2hSize :tex2html_wrap_inline14895:8.0pt::8.0pt::56.08675pt. +[1307 + + +] +l2hSize :displaymath14654:14.5pt::0.0pt::349.0pt. +[1308 + + +] +l2hSize :tex2html_wrap_inline14897:8.64003pt::8.64003pt::31.85423pt. +[1309 + + +] +l2hSize :displaymath14655:14.5pt::0.0pt::349.0pt. +[1310 + + +] +l2hSize :tex2html_wrap_inline14899:8.0pt::8.0pt::16.74545pt. +[1311 + + +] +l2hSize :tex2html_wrap_inline14901:7.33331pt::7.33331pt::47.29381pt. +[1312 + + +] +l2hSize :displaymath14656:25.00023pt::0.0pt::349.0pt. +[1313 + + +] +l2hSize :tex2html_wrap_inline14903:8.94843pt::8.94843pt::17.76256pt. +[1314 + + +] +l2hSize :displaymath14657:14.5pt::0.0pt::349.0pt. +[1315 + + +] +l2hSize :displaymath14658:21.4579pt::0.0pt::349.0pt. +[1316 + + +] +l2hSize :tex2html_wrap_inline14909:7.44444pt::7.44444pt::24.35411pt. +[1317 + + +] +l2hSize :tex2html_wrap_inline14913:8.0pt::8.0pt::38.50134pt. +[1318 + + +] +l2hSize :tex2html_wrap_inline14915:8.0pt::8.0pt::55.69194pt. +[1319 + + +] +l2hSize :tex2html_wrap_inline14921:7.44444pt::7.44444pt::32.13191pt. +[1320 + + +] +l2hSize :displaymath14659:21.06903pt::0.0pt::349.0pt. +[1321 + + +] +l2hSize :displaymath14660:21.21983pt::0.0pt::349.0pt. +[1322 + + +] +l2hSize :displaymath14661:22.12459pt::0.0pt::349.0pt. +[1323 + + +] +l2hSize :displaymath14662:22.12459pt::0.0pt::349.0pt. +[1324 + + +] +l2hSize :displaymath14663:25.00023pt::0.0pt::349.0pt. +[1325 + + +] +l2hSize :displaymath14664:25.69519pt::0.0pt::349.0pt. +[1326 + + +] +l2hSize :displaymath14665:25.96742pt::0.0pt::349.0pt. +[1327 + + +] +l2hSize :displaymath14666:23.65628pt::0.0pt::349.0pt. +[1328 + + +] +l2hSize :displaymath14667:14.5pt::0.0pt::349.0pt. +[1329 + + +] +l2hSize :displaymath14668:21.4579pt::0.0pt::349.0pt. +[1330 + + +] +l2hSize :displaymath14669:21.4579pt::0.0pt::349.0pt. +[1331 + + +] +l2hSize :displaymath14670:21.4579pt::0.0pt::349.0pt. +[1332 + + +] +l2hSize :displaymath14671:25.00023pt::0.0pt::349.0pt. +[1333 + + +] +psfig: searching figs/fig10.06.ps for bounding box +psfig: including figs/fig10.06.ps +l2hSize :figure14407:98.36751pt::0.0pt::330.23375pt. +[1334 + + +] +l2hSize :displaymath14672:21.4579pt::0.0pt::349.0pt. +[1335 + + +] +l2hSize :tex2html_wrap_inline14937:8.0pt::8.0pt::64.2383pt. +[1336 + + +] +l2hSize :displaymath14673:25.00023pt::0.0pt::349.0pt. +[1337 + + +] +l2hSize :displaymath14674:25.00023pt::0.0pt::349.0pt. +[1338 + + +] +l2hSize :displaymath14675:25.00023pt::0.0pt::349.0pt. +[1339 + + +] +l2hSize :displaymath14676:21.4579pt::0.0pt::349.0pt. +[1340 + + +] +l2hSize :displaymath14677:25.00023pt::0.0pt::349.0pt. +[1341 + + +] +psfig: searching figs/fig10.07.ps for bounding box +psfig: including figs/fig10.07.ps +l2hSize :figure14432:110.41249pt::0.0pt::327.2225pt. +[1342 + + +] +l2hSize :tex2html_wrap_inline14947:8.0pt::8.0pt::22.72227pt. +[1343 + + +] +l2hSize :tex2html_wrap_inline14949:8.0pt::8.0pt::20.73616pt. +[1344 + + +] +l2hSize :tex2html_wrap_inline14951:8.0pt::8.0pt::63.19444pt. +[1345 + + +] +l2hSize :displaymath14678:23.59795pt::0.0pt::349.0pt. +[1346 + + +] +l2hSize :tex2html_wrap_inline14953:8.0pt::8.0pt::17.0892pt. +[1347 + + +] +l2hSize :tex2html_wrap_inline14955:8.0pt::8.0pt::69.2279pt. +[1348 + + +] +l2hSize :tex2html_wrap_inline14957:8.0pt::8.0pt::40.103pt. +[1349 + + +] +l2hSize :displaymath14679:25.40523pt::0.0pt::349.0pt. +[1350 + + +] +l2hSize :displaymath14680:25.00023pt::0.0pt::349.0pt. +[1351 + + +] +l2hSize :displaymath14681:21.56903pt::0.0pt::349.0pt. +[1352 + + +] +l2hSize :displaymath14682:14.5pt::0.0pt::349.0pt. +[1353 + + +] +l2hSize :displaymath14683:14.5pt::0.0pt::349.0pt. +[1354 + + +] +l2hSize :displaymath14684:26.20392pt::0.0pt::349.0pt. +[1355 + + +] +l2hSize :tex2html_wrap_inline14969:8.0pt::8.0pt::24.30556pt. +[1356 + + +] +l2hSize :displaymath14685:23.56903pt::0.0pt::349.0pt. +[1357 + + +] +l2hSize :tex2html_wrap_inline14975:8.0pt::8.0pt::43.83331pt. +[1358 + + +] +l2hSize :tex2html_wrap_inline14977:8.0pt::8.0pt::16.86234pt. +[1359 + + +] +l2hSize :tex2html_wrap_inline14989:8.0pt::8.0pt::93.24294pt. +[1360 + + +] +l2hSize :tex2html_wrap_inline14997:6.83331pt::0.0pt::16.2917pt. +[1361 + + +] +l2hSize :tex2html_wrap_inline14999:8.0pt::8.0pt::29.58334pt. +[1362 + + +] +l2hSize :tex2html_wrap_inline15001:8.0pt::8.0pt::29.58334pt. +[1363 + + +] +l2hSize :tex2html_wrap_inline15005:8.0pt::8.0pt::62.91663pt. +[1364 + + +] +l2hSize :tex2html_wrap_inline15007:8.0pt::8.0pt::20.50009pt. +[1365 + + +] +l2hSize :tex2html_wrap_inline15009:6.45831pt::0.0pt::86.05557pt. +[1366 + + +] +l2hSize :tex2html_wrap_inline15011:6.95831pt::6.95831pt::111.05565pt. +[1367 + + +] +l2hSize :tex2html_wrap_inline15013:8.0pt::8.0pt::83.83347pt. +[1368 + + +] +psfig: searching figs/fig10.08.ps for bounding box +psfig: including figs/fig10.08.ps +l2hSize :figure14466:255.95625pt::0.0pt::332.24124pt. +[1369 + + +] +psfig: searching figs/fig10.09.ps for bounding box +psfig: including figs/fig10.09.ps +l2hSize :figure14476:94.3525pt::0.0pt::322.20375pt. +[1370 + + +] +l2hSize :tex2html_wrap_inline15031:6.45831pt::0.0pt::17.08337pt. +[1371 + + +] +psfig: searching figs/fig10.10.ps for bounding box +psfig: including figs/fig10.10.ps +l2hSize :figure14483:250.9375pt::0.0pt::330.23375pt. +[1372 + + +] +psfig: searching figs/fig10.11.ps for bounding box +psfig: including figs/fig10.11.ps +l2hSize :figure14488:257.96376pt::0.0pt::229.85875pt. +[1373 + + +] +l2hSize :tex2html_wrap_inline15041:8.0pt::8.0pt::14.79172pt. +[1374 + + +] +psfig: searching figs/fig10.12.ps for bounding box +psfig: including figs/fig10.12.ps +l2hSize :figure14496:266.99751pt::0.0pt::362.35376pt. +[1375 + + +] +psfig: searching figs/fig10.13.ps for bounding box +psfig: including figs/fig10.13.ps +l2hSize :figure14503:311.16249pt::0.0pt::268.00125pt. +[1376 + + +] +psfig: searching figs/fig10.14.ps for bounding box +psfig: including figs/fig10.14.ps +l2hSize :figure14510:260.97499pt::0.0pt::414.54874pt. +[1377 + + +] +l2hSize :tex2html_wrap_inline15045:8.0pt::8.0pt::153.27757pt. +[1378 + + +] (./images.aux) + +LaTeX Warning: There were multiply-defined labels. + + ) +Here is how much of TeX's memory you used: + 1849 strings out of 95847 + 20957 string characters out of 1193874 + 64940 words of memory out of 1000001 + 4624 multiletter control sequences out of 10000+50000 + 3808 words of font info for 15 fonts, out of 500000 for 1000 + 14 hyphenation exceptions out of 1000 + 23i,15n,19p,731b,305s stack positions out of 1500i,500n,5000p,200000b,5000s + +Output written on images.dvi (1378 pages, 377728 bytes). diff --git a/images.pl b/images.pl new file mode 100644 index 0000000..bcc417e --- /dev/null +++ b/images.pl @@ -0,0 +1,9656 @@ +# LaTeX2HTML 2002-2-1 (1.71) +# Associate images original text with physical files. + + +$key = q/g{Z^{-d}};MSF=1.6;AAT/; +$cached_env_img{$key} = q|$g{Z^{-d}}$|; + +$key = q/{displaymath}{f_1}(x)=xhspace{0.2in}mathrm{(linear),}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{f_1} (x) = x \hspace{0.2in} \mathrm{(linear),}
+\end{displaymath}|; + +$key = q/{displaymath}x[n]=f(a[n]cos(omegan)){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+x[n] = f( a[n] \cos(\omega n))
+\end{displaymath}|; + +$key = q/{displaymath}approx{{-1}overN}cdot{{-iN}over{2pik}}cdot{{-iN}over{2pik}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\approx {{-1} \over N} \cdot {{-iN} \over {2 \pi k}}
+\cdot {{-iN} \over {2 \pi k}}
+\end{displaymath}|; + +$key = q/kA;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$kA$|; + +$key = q/2.5omega;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$2.5\omega$|; + +$key = q/z[n];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$z[n]$|; + +$key = q/-0.5;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$-0.5$|; + +$key = q/{displaymath}x[n]=acos(omegan+phi){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+x[n] = a \cos (\omega n + \phi )
+\end{displaymath}|; + +$key = q/{displaymath}{calFT}left{w[n]{Z^n}right}(k){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{\cal FT} \left \{ w[n] {Z^n} \right \} (k)
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig04.10.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig04.10.ps}\end{figure}|; + +$key = q/{figure}{psfig{file=figsslashfig07.23.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig07.23.ps}\end{figure}|; + +$key = q/{figure}{psfig{file=figsslashfig09.16.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig09.16.ps}\end{figure}|; + +$key = q/ldots;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\ldots$|; + +$key = q/1.5omega;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$1.5\omega $|; + +$key = q/{figure}{psfig{file=figsslashfig01.09.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig01.09.ps}\end{figure}|; + +$key = q/fbox{{mathrm{div}{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{$\mathrm{div}$}|; + +$key = q/{displaymath}{M_a}(phi)=W(aphi),{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{M_a}(\phi) = W (a \phi),
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig08.09.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig08.09.ps}\end{figure}|; + +$key = q/a[n]+ib[n];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$a[n] + i b[n]$|; + +$key = q/r;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$r$|; + +$key = q/R[k];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$R[k]$|; + +$key = q/{figure}{psfig{file=figsslashfig01.11.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig01.11.ps}\end{figure}|; + +$key = q/{displaymath}approx{{-i}over{2pi}}left[U^n-U^{-n}right]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\approx {{-i} \over {2 \pi}} \left [ U^n - U^{-n} \right ]
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig04.06.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig04.06.ps}\end{figure}|; + +$key = q/(3+k)pislash2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$(3+k)\pi / 2$|; + +$key = q/1.5;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$1.5$|; + +$key = q/{displaymath}f(x+y)={x^2}+2xy+{y^2}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+f(x+y) = {x^2} + 2 x y + {y^2}
+\end{displaymath}|; + +$key = q/{displaymath}H(Z)={{(1-{Q_1}{Z^{-1}})cdots(1-{Q_j}{Z^{-1}})}over{(1-{P_1}{Z^{-1}})cdots(1-{P_k}{Z^{-1}})}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+H(Z) = {
+{
+(1 - {Q_1}{Z^{-1}}) \cdots (1 - {Q_j}{Z^{-1}})
+} \over {
+(1 - {P_1}{Z^{-1}}) \cdots (1 - {P_k}{Z^{-1}})
+}
+}
+\end{displaymath}|; + +$key = q/X[n]=X[n+Nslash2];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$X[n] = X[n+N/2]$|; + +$key = q/{displaymath}x[n]=a[1]sin(omegan)+a[2]sin(2omegan)+cdots{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+x[n] = a[1] \sin(\omega n) + a[2] \sin(2 \omega n) + \cdots
+\end{displaymath}|; + +$key = q/-{1overN};MSF=1.6;AAT/; +$cached_env_img{$key} = q|$-{1 \over N}$|; + +$key = q/{displaymath}{2acos(alphan+phi)cos(alphan+xi)}={displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{2 a \cos(\alpha n + \phi) \cos (\alpha n + \xi)}
+=
+\end{displaymath}|; + +$key = q/{displaymath}J(Z)={{1-{Z^{-2}}}over{1+g{Z^{-2}}}}={{(1-{Z^{-1}})(1+{Z^{-1}})}over{(1-isqrt{g}{Z^{-1}})(1+isqrt{g}{Z^{-1}})}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+J(Z) =
+{{
+1 - {Z^{-2}}
+} \over {
+1 + g{Z^{-2}}
+}}
+=
+...
+... \over {
+(1 - i\sqrt{g} {Z^{-1}})(1 + i\sqrt{g} {Z^{-1}})
+}}
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig06.03.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig06.03.ps}\end{figure}|; + +$key = q/c=s;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$c=s$|; + +$key = q/{figure}{psfig{file=figsslashfig08.08.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig08.08.ps}\end{figure}|; + +$key = q/{displaymath}R'[k+1]=R[k+2]+R[k+1]+R[k]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+R'[k+1] = R[k+2] + R[k+1] + R[k]
+\end{displaymath}|; + +$key = q/{2^{1slash{12}}};MSF=1.6;AAT/; +$cached_env_img{$key} = q|${2 ^ {1/{12}}}$|; + +$key = q/x_0;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$x_0$|; + +$key = q/{displaymath}{{1-q}over{1-p}}=g{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{{1-q} \over {1-p}} = g
+\end{displaymath}|; + +$key = q/{displaymath}+A[N-2]{U^{(N-2)n}}-A[N-1]{U^{(N-1)n}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
++ A[N-2]{U^{(N-2)n}} - A[N-1]{U^{(N-1)n}}
+\end{displaymath}|; + +$key = q/{displaymath}cos(acos(omega_mn)){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\cos(a \cos(\omega_m n))
+\end{displaymath}|; + +$key = q/{displaymath}x[n]={-Nc_1}p[n-{M_1}]-cdots-{Nc_l}p[n-{M_l}]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+x[n] = {-N c_1} p[n - {M_1}] - \cdots - {N c_l} p[n - {M_l}]
+\end{displaymath}|; + +$key = q/theta=pislash4;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\theta = \pi /4$|; + +$key = q/{d_1},ldots,{d_j};MSF=1.6;AAT/; +$cached_env_img{$key} = q|${d_1}, \ldots, {d_j}$|; + +$key = q/c_1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$c_1$|; + +$key = q/{displaymath}=e^{{-left[bsin{omegaover2}right]}^2}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+= e ^ {
+{ -\left [
+b \sin {\omega \over 2}
+\right ] }
+^2
+}
+\end{displaymath}|; + +$key = q/{displaymath}overline{AB}=overline{A}cdotoverline{B}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\overline{AB} = \overline{A} \cdot \overline{B}
+\end{displaymath}|; + +$key = q/-infty;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$-\infty$|; + +$key = q/{displaymath}{x^2}[n]={1over2}+{1over2}cos(2omegan){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{x^2}[n] = {1 \over 2} + {1 \over 2} \cos (2\omega n)
+\end{displaymath}|; + +$key = q/{m_a}(omegan);MSF=1.6;AAT/; +$cached_env_img{$key} = q|${m_a}(\omega n)$|; + +$key = q/k=0;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$k=0$|; + +$key = q/fbox{{mathrm{hip}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $\mathrm{hip}\sim$ }|; + +$key = q/1000slash(2f);MSF=1.6;AAT/; +$cached_env_img{$key} = q|$1000/(2f)$|; + +$key = q/{displaymath}S[m,k];=;a;cdot;{{left|{{S[m-1,k]T'[k]}over{T[k]}}right|}^{-1}};cdot;{{{S[m-1,k]T'[k]}over{T[k]}}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+S[m, k] \; = \;
+a
+\; \cdot \;
+{
+{ \left \vert
+{{S[m-...
+...{-1}
+}
+\; \cdot \;
+{
+{{S[m-1, k] T'[k]}
+\over
+{T[k]}}
+}
+\end{displaymath}|; + +$key = q/(N-M,-1);MSF=1.6;AAT/; +$cached_env_img{$key} = q|$(N-M, -1)$|; + +$key = q/2tau;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$2 \tau$|; + +$key = q/{displaymath}{A_{mathrm{RMS}}}{x[n]}=sqrt{P{x[n]}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{A_{\mathrm{RMS}}} \{x[n]\} = \sqrt{P\{x[n]\}}
+\end{displaymath}|; + +$key = q/R=-{Z^2};MSF=1.6;AAT/; +$cached_env_img{$key} = q|$R = - {Z^2}$|; + +$key = q/{displaymath}1=cos(0){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+1 = \cos (0)
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig08.22.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig08.22.ps}\end{figure}|; + +$key = q/{displaymath}acos(omegan+phi){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+a \cos (\omega n + \phi)
+\end{displaymath}|; + +$key = q/M_a;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$M_a$|; + +$key = q/{displaymath}{fbox{texttt{delread~}}{longrightarrowx[N-B],ldots,x[N-1]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\fbox{\texttt{delread\ }} \longrightarrow x[N-B], \ldots, x[N-1]
+\end{displaymath}|; + +$key = q/fbox{{mathrm{outlet}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $\mathrm{outlet}\sim$ }|; + +$key = q/1slash(1+b);MSF=1.6;AAT/; +$cached_env_img{$key} = q|$1/(1+b)$|; + +$key = q/{displaymath}{calFT}left{X[n]right}(k)=left({{parbox[t][0.1in]{0in}{mbox{}}{cos(pik(N-1)slashN)-isin(pik(N-1)slashN)}right){D_N}(k){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{\cal FT} \left \{ X[n] \right \} (k) =
+\left ( {
+\parbo...
+...(\pi k (N-1)/N) - i \sin(\pi k (N-1)/N)
+} \right )
+{D_N}(k)
+\end{displaymath}|; + +$key = q/t=3slash2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$t=3/2$|; + +$key = q/{figure}{psfig{file=figsslashfig02.11.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig02.11.ps}\end{figure}|; + +$key = q/{a^2}+{b^2}=1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|${a^2}+{b^2}=1$|; + +$key = q/1+1slash9+1slash25+1slash49+1slash81+cdots;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$1 + 1/9 + 1/25 + 1/49 + 1/81 + \cdots$|; + +$key = q/{displaymath}approxleft[cos(Phi(k))+isin(Phi(k))right]M(k-{{alpha}over{omega}}){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\approx \left [ \cos(\Phi(k)) + i \sin(\Phi(k))\right ]
+M(k - {{\alpha } \over {\omega}})
+\end{displaymath}|; + +$key = q/3slash2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$3/2$|; + +$key = q/omega=pislashd;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\omega = \pi/d$|; + +$key = q/{displaymath}{A_k}={1overN}left({{left[{U^{-k}}right]}^{0}}X[0]+{{left[{U^{-k}}r1}}X[1]+cdots+{{left[{U^{-k}}right]}^{N-1}}X[N-1]right){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{A_k} = {1\over N} \left (
+{{\left [ {U^{-k}} \right ]} ^ ...
+...dots +
+{{\left [ {U^{-k}} \right ]} ^ {N-1}} X[N-1]
+\right )
+\end{displaymath}|; + +$key = q/f(acdotcos(omega_mn));MSF=1.6;AAT/; +$cached_env_img{$key} = q|$f (a \cdot \cos(\omega_m n))$|; + +$key = q/alpha=beta;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\alpha =\beta $|; + +$key = q/{displaymath}angleleft{{{S[m-1,k+1]}over{T[k+1]}}right}=angleleft{{{S[m-1,k]}over{T[k]}}right}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\angle \left \{ {{S[m-1, k+1]} \over {T[k+1]}} \right \} =
+\angle \left \{ {{S[m-1, k]} \over {T[k]}} \right \}
+\end{displaymath}|; + +$key = q/-domega;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$- d \omega$|; + +$key = q/{displaymath}pcos(n{omega_2}t+rcos({omega_1}t))+{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+p \cos ( n {\omega_2} t + r \cos ({\omega_1} t)) +
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig02.16.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig02.16.ps}\end{figure}|; + +$key = q/S;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$S$|; + +$key = q/omega;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\omega $|; + +$key = q/{displaymath}left|sin({omegaover2})right|{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\left \vert \sin({\omega \over 2}) \right \vert
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig08.01.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig08.01.ps}\end{figure}|; + +$key = q/300m+225n;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$300m+225n$|; + +$key = q/{displaymath}{P{x[n]}}={1overN}left({{|x[M]|}^2}+cdots+{{|x[M+N-1]|}^2}right){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{P\{x[n]\}} = {1 \over N} \left (
+{{\vert x[M]\vert} ^2} + \cdots + {{\vert x[M+N-1]\vert} ^2}
+\right )
+\end{displaymath}|; + +$key = q/B;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$B$|; + +$key = q/{figure}{psfig{file=figsslashfig07.28.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig07.28.ps}\end{figure}|; + +$key = q/0ley[n]|; + +$key = q/{figure}{psfig{file=figsslashfig10.05.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig10.05.ps}\end{figure}|; + +$key = q/{displaymath}=2{b_0}+2{b_2}cosleft(2omegan+{theta_2}right)+2{b_4}cosleft(4omegan+{theta_4}right)+cdots{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+= 2 {b_0} +
+2 {b_2} \cos \left ( 2 \omega n + {\theta_2} \...
+... {b_4} \cos \left ( 4 \omega n + {\theta_4} \right ) + \cdots
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig04.19.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig04.19.ps}\end{figure}|; + +$key = q/f_k;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$f_k$|; + +$key = q/X'[n];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$X'[n]$|; + +$key = q/R(Z)=-{Z^2};MSF=1.6;AAT/; +$cached_env_img{$key} = q|$R(Z) = -{Z^2}$|; + +$key = q/X[n-d];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$X[n-d]$|; + +$key = q/A;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$A$|; + +$key = q/{calFT}{s[n]}(0);MSF=1.6;AAT/; +$cached_env_img{$key} = q|${\cal FT}\{ s[n] \}(0)$|; + +$key = q/angle(W);MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\angle(W)$|; + +$key = q/X''[n]=0;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$X''[n] = 0$|; + +$key = q/x_{100};MSF=1.6;AAT/; +$cached_env_img{$key} = q|$x_{100}$|; + +$key = q/{displaymath}R(Z)=Ucdot{{{A_n}{Z^n}+{A_{n-1}}{Z^{n-1}}+cdots+{A_0}}over{overline{A_0}{Z^n}+overline{A_1}{Z^{n-1}}+cdots+overline{A_n}}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+R(Z) = U \cdot
+{{
+{A_n}{Z^n} + {A_{n-1}}{Z^{n-1}} + \cdot...
+...}{Z^n} + \overline{A_1}{Z^{n-1}} + \cdots + \overline{A_n}
+}}
+\end{displaymath}|; + +$key = q/{displaymath}20{toverd}{log_{10}}(g){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+20 {t\over d} {\log_{10}} (g)
+\end{displaymath}|; + +$key = q/{displaymath}x[M],x[M+1],ldots,x[M+N-1]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+x[M], x[M+1], \ldots, x[M+N-1]
+\end{displaymath}|; + +$key = q/e^a;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$e^a$|; + +$key = q/{displaymath}0.75cdotx+0.25cdoty=0.75.{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+0.75 \cdot x + 0.25 \cdot y = 0.75.
+\end{displaymath}|; + +$key = q/{a_0}slash10;MSF=1.6;AAT/; +$cached_env_img{$key} = q|${a_0}/10$|; + +$key = q/fbox{texttt{tabsend~}};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{\texttt{tabsend\ }}|; + +$key = q/-momega;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$-m\omega$|; + +$key = q/(0,0);MSF=1.6;AAT/; +$cached_env_img{$key} = q|$(0,0)$|; + +$key = q/{displaymath}g{Z^{-d}}H=g{Z^{-d}}+{(g{Z^{-d}})}^2+{(g{Z^{-d}})}^3+cdots{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+g{Z^{-d}} H = g{Z^{-d}} + {(g{Z^{-d}})} ^ 2 + {(g{Z^{-d}})} ^ 3 + \cdots
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig04.07.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig04.07.ps}\end{figure}|; + +$key = q/a[k];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$a[k]$|; + +$key = q/{displaymath}0|; + +$key = q/1slashb;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$1/b$|; + +$key = q/{d_0}+s;MSF=1.6;AAT/; +$cached_env_img{$key} = q|${d_0}+s$|; + +$key = q/fbox{texttt{hip~}};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ \texttt{hip\ }}|; + +$key = q/omega_cslashomega;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\omega_c/\omega$|; + +$key = q/fbox{{mathrm{delay}{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $\mathrm{delay}$ }|; + +$key = q/0;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$0$|; + +$key = q/{displaymath}H(Z)=overline{Q}-{Z^{-1}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+H(Z) = \overline{Q} - {Z^{-1}}
+\end{displaymath}|; + +$key = q/{c_1}+q({c_2}-{c_1});MSF=1.6;AAT/; +$cached_env_img{$key} = q|${c_1} + q ({c_2} - {c_1})$|; + +$key = q/{displaymath}{A_{mathrm{peak}}}{x[n]}+{A_{mathrm{peak}}}{y[n]}ge{A_{mathrm{peak}}}{x[n]+y[n]}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{A_{\mathrm{peak}}} \{x[n]\} +
+{A_{\mathrm{peak}}} \{y[n]\} \ge
+{A_{\mathrm{peak}}} \{x[n]+y[n]\}
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig07.11.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig07.11.ps}\end{figure}|; + +$key = q/fbox{{mathrm{unpack}{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $\mathrm{unpack}$}|; + +$key = q/{figure}{psfig{file=figsslashfig07.20.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig07.20.ps}\end{figure}|; + +$key = q/fbox{{mathrm{moses}{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $\mathrm{moses}$ }|; + +$key = q/{X_1}+{X_2};MSF=1.6;AAT/; +$cached_env_img{$key} = q|${X_1}+{X_2}$|; + +$key = q/{displaymath}x[n]=cos(2pinslashN),,n=0,ldots,N-1{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+x[n] = \cos(2 \pi n / N) ,  n = 0, \ldots, N-1
+\end{displaymath}|; + +$key = q/{displaymath}+{J_3}(a)cos((omega_c+3omega_m)n+{{3pi}over2})+{J_3}(a)cos((omega_c-3omega_m)n+{{3pi}over2})+cdots{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
++ {J_3}(a) \cos( (\omega_c+3\omega_m) n + {{3\pi}\over2})
+...
+...}(a) \cos( (\omega_c-3\omega_m) n + {{3\pi}\over2})
++ \cdots
+\end{displaymath}|; + +$key = q/sin({omegaover2});MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\sin({\omega \over 2})$|; + +$key = q/NfslashR;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$N f / R$|; + +$key = q/{figure}{psfig{file=figsslashfig07.05.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig07.05.ps}\end{figure}|; + +$key = q/{displaymath}{{aZ+b}over{bZ+a}}={pmsqrt{-W}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{
+{
+aZ + b
+} \over {
+bZ + a
+}
+} = {
+\pm \sqrt {
+- W
+}
+}
+\end{displaymath}|; + +$key = q/{Z^n};MSF=1.6;AAT/; +$cached_env_img{$key} = q|${Z^n}$|; + +$key = q/D;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$D$|; + +$key = q/{figure}{psfig{file=figsslashfig05.06.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig05.06.ps}\end{figure}|; + +$key = q/N-1slash2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$N-1/2$|; + +$key = q/{Z^{d}};MSF=1.6;AAT/; +$cached_env_img{$key} = q|${Z^{d}}$|; + +$key = q/Q;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$Q$|; + +$key = q/{displaymath}y[n]-y[n-1]=2{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+y[n]-y[n-1] = 2
+\end{displaymath}|; + +$key = q/fbox{{mathrm{vcf}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{$\mathrm{vcf}\sim$}|; + +$key = q/{displaymath}cos((alpha-beta)n)=cos((beta-alpha)n){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\cos((\alpha - \beta)n) = \cos((\beta - \alpha)n)
+\end{displaymath}|; + +$key = q/{displaymath}{f_3}(x)={x^4}hspace{0.2in}mathrm{(quartic).}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{f_3} (x) = {x^4} \hspace{0.2in}\mathrm{(quartic).}
+\end{displaymath}|; + +$key = q/{displaymath}A[k]={1overN}{calFT}{X[n]}(k){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+A[k] = {1 \over N} {\cal FT}\{X[n]\}(k)
+\end{displaymath}|; + +$key = q/{displaymath}{calFT}left{X[n]right}(k+N)={calFT}left{X[n]right}(k){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{\cal FT}\left \{ X[n] \right \} (k+N) =
+{\cal FT}\left \{ X[n] \right \} (k)
+\end{displaymath}|; + +$key = q/fbox{{mathrm{send}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $\mathrm{send}\sim$ }|; + +$key = q/{displaymath}{calFT}left{X[n]right}(k)=left{array{{ll}N&{k=0}0&{k=1,ldots,N-1}array{right.{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{\cal FT} \left \{ X[n] \right \} (k) =
+\left \{
+\begin{...
+...}
+N & {k=0} \\\\
+0 & {k=1, \ldots, N-1}
+\end{array} \right .
+\end{displaymath}|; + +$key = q/{displaymath}cos((pi+omega)n+phi)=cos((pi+omega)n+phi-2pin){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\cos((\pi + \omega)n + \phi) = \cos((\pi + \omega)n + \phi - 2\pi n)
+\end{displaymath}|; + +$key = q/12omega;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$12\omega$|; + +$key = q/{figure}{psfig{file=figsslashfig08.13.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig08.13.ps}\end{figure}|; + +$key = q/xi;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\xi$|; + +$key = q/x_{50};MSF=1.6;AAT/; +$cached_env_img{$key} = q|$x_{50}$|; + +$key = q/{figure}{psfig{file=figsslashfig05.01.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig05.01.ps}\end{figure}|; + +$key = q/fbox{{mathrm{samphold}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $\mathrm{samphold}\sim$ }|; + +$key = q/{figure}{psfig{file=figsslashfig01.07.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig01.07.ps}\end{figure}|; + +$key = q/|P|=0.9;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\vert P\vert=0.9$|; + +$key = q/{displaymath}Y[n]=X[n-d]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+Y[n] = X[n-d]
+\end{displaymath}|; + +$key = q/f(x);MSF=1.6;AAT/; +$cached_env_img{$key} = q|$f(x)$|; + +$key = q/|H(omega)|;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\vert H(\omega)\vert$|; + +$key = q/{figure}{psfig{file=figsslashfig05.10.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig05.10.ps}\end{figure}|; + +$key = q/gW^{-d};MSF=1.6;AAT/; +$cached_env_img{$key} = q|$gW^{-d}$|; + +$key = q/fbox{{mathrm{dbtorms}{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $ \mathrm{dbtorms} $}|; + +$key = q/0,...,N-1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$0, ..., N-1$|; + +$key = q/y[n];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$y[n]$|; + +$key = q/{displaymath}x[n]=cos(omegan){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+x[n] = \cos (\omega n)
+\end{displaymath}|; + +$key = q/{displaymath}f(x[n+tau])=f(x[n]){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+f(x[n+\tau]) = f(x[n])
+\end{displaymath}|; + +$key = q/a=0;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$a=0$|; + +$key = q/{displaymath}={b_0}+{b_1}cosleft(omegan+{theta_1}right)+{b_2}cosleft(2omegan+{theta_2}right)+cdots{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+=
+{b_0} +
+{b_1} \cos \left ( \omega n + {\theta_1} \right...
+...
+{b_2} \cos \left ( 2 \omega n + {\theta_2} \right ) + \cdots
+\end{displaymath}|; + +$key = q/f_0;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$f_0$|; + +$key = q/{displaymath}{x_{100}}[n]={a_0}+{a_1}cosleft(omegan+{phi_1}right)+{a_2}cosleft(2omegan+{phi_2}right)+cdots{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{x_{100}}[n] = {a_0} +
+{a_1} \cos \left ( \omega n + {\phi...
+...+
+{a_2} \cos \left ( 2 \omega n + {\phi_2} \right ) + \cdots
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig10.11.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig10.11.ps}\end{figure}|; + +$key = q/{figure}{psfig{file=figsslashfig09.08.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig09.08.ps}\end{figure}|; + +$key = q/beta=0;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\beta =0$|; + +$key = q/{displaymath}x[n]={{N^2}over{2{pi^2}(MN-2{M^2})}}left[{parbox[t][0.12in]{0in}{mbox{}}{{cos(omega(n-M))}-{cos(omega(n+M))}right.{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+x[n] = {{N^2} \over {2{\pi ^ 2} (MN - 2{M^2})}} \left [
+\p...
+...{}}
+{\cos ( \omega (n-M))} - {\cos ( \omega (n+M))}
+\right .
+\end{displaymath}|; + +$key = q/{displaymath}left.-{sin(omegan)}+{{sin(2omegan)}over2}-{{sin(3omegan)}over3}pmcdotsright]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\left .
+-{\sin ( \omega n )}
++ {{\sin ( 2 \omega n)} \over 2}
+- {{\sin ( 3 \omega n)} \over 3}
+\pm \cdots
+\right ]
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig09.03.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig09.03.ps}\end{figure}|; + +$key = q/{displaymath}x[n]=cos(omega_cn)*cos(acos(omega_mn)){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+x[n] = \cos(\omega_c n) * \cos(a \cos(\omega_m n))
+\end{displaymath}|; + +$key = q/fbox{{mathrm{mod}{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $\mathrm{mod}$}|; + +$key = q/{displaymath}angleS[m,k]=angleS[m-1,k]+left(angleT'[k]-angleT[k]right){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\angle S[m, k] = \angle S[m-1, k] +
+\left ( \angle T'[k] - \angle T[k] \right )
+\end{displaymath}|; + +$key = q/omegad;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\omega d $|; + +$key = q/MslashN;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$M/N$|; + +$key = q/{displaymath}X[n]=A[0]+A[1]{U^n}+cdots+A[N-1]{U^{(N-1)n}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+X[n] = A[0] + A[1]{U^n} + \cdots + A[N-1]{U^{(N-1)n}}
+\end{displaymath}|; + +$key = q/Z=a+bi;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$Z=a+bi$|; + +$key = q/{displaymath}{x_{100}}[2n]={x_{50}}[n]+{x_{50}}[n+{pioveromega}]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{x_{100}}[2n] = {x_{50}}[n] + {x_{50}}[n+{\pi \over \omega}]
+\end{displaymath}|; + +$key = q/H;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$H$|; + +$key = q/{displaymath}A+overline{A}=2,mathrm{re}(A){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+A + \overline{A} = 2   \mathrm{re} (A)
+\end{displaymath}|; + +$key = q/{displaymath}{m_a}[n]=f(acos(omegan)){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{m_a}[n] = f (a \cos(\omega n))
+\end{displaymath}|; + +$key = q/fbox{{mathrm{rfft}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{$\mathrm{rfft}\sim$}|; + +$key = q/{displaymath}f(x+y)[n+tau]=f(x+y)[n].{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+f(x+y)[n + \tau] = f(x+y)[n].
+\end{displaymath}|; + +$key = q/{displaymath}{m_a}[n]=g(bsin{omegaover2}n){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{m_a}[n] = g ( b \sin {\omega \over 2} n )
+\end{displaymath}|; + +$key = q/(-1)^k;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$(-1)^k$|; + +$key = q/fbox{{mathrm{line}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $ \mathrm{line}\sim $}|; + +$key = q/{figure}{psfig{file=figsslashfig02.05.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig02.05.ps}\end{figure}|; + +$key = q/d;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$d$|; + +$key = q/x[1];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$x[1]$|; + +$key = q/{figure}{psfig{file=figsslashfig01.08.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig01.08.ps}\end{figure}|; + +$key = q/{displaymath}W(phi)={1over2}left(cos(phi)+1right){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+W(\phi) = {1\over2} \left ( \cos(\phi) + 1 \right )
+\end{displaymath}|; + +$key = q/k>1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$k>1$|; + +$key = q/n=10;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$n=10$|; + +$key = q/{displaymath}=left[cos(Phi(k))+isin(Phi(k))right]{D_N}(k-{{alpha}over{omega}}){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+= \left [ \cos(\Phi(k)) + i \sin(\Phi(k))\right ]
+{D_N}(k - {{\alpha } \over {\omega}})
+\end{displaymath}|; + +$key = q/{displaymath}={acosleft(2alphan+(phi+xi)right)}+{acosleft(phi-xiright)}.{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+=
+{a \cos \left ( 2 \alpha n + (\phi + \xi) \right ) }
++
+{a \cos \left ( \phi - \xi \right ) }
+.
+\end{displaymath}|; + +$key = q/{displaymath}{x^5}[n]={1over16}cos(-3omegan)+{4over16}cos(-omegan)+{6over16}cos(omegan)+{4over16}cos(3omegan)+{1over16}cos(5omegan){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{x^5}[n] = {1 \over 16} \cos (-3\omega n) + {4 \over 16} \c...
+... \over 16} \cos (3 \omega n)
++ {1 \over 16} \cos (5 \omega n)
+\end{displaymath}|; + +$key = q/0lenleN-1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$0 \le n \le N-1$|; + +$key = q/fbox{{mathrm{q8_rsqrt}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{$\mathrm{q8\_rsqrt}\sim$}|; + +$key = q/f=0;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$f=0$|; + +$key = q/{displaymath}x[n]=cos(2pinslashN),,n=0,ldots,N{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+x[n] = \cos(2 \pi n / N) ,  n = 0, \ldots, N
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig07.24.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig07.24.ps}\end{figure}|; + +$key = q/k^2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$k^2$|; + +$key = q/{displaymath}{calFT}left{(cos(alpha)+isin(alpha))X[n]right}(k)={calFT}left{X[n]right}(k-{{alphaN}over{2pi}}){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{\cal FT} \left \{ (\cos(\alpha) + i \sin(\alpha)) X[n] \ri...
+...l FT} \left \{ X[n] \right \} (k - {{\alpha N} \over {2 \pi}})
+\end{displaymath}|; + +$key = q/t_1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$t_1$|; + +$key = q/{figure}{psfig{file=figsslashfig04.20.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig04.20.ps}\end{figure}|; + +$key = q/{figure}{psfig{file=figsslashfig07.15.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig07.15.ps}\end{figure}|; + +$key = q/{figure}{psfig{file=figsslashfig02.09.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig02.09.ps}\end{figure}|; + +$key = q/{displaymath}{P_2}=overline{P_1}=(1-beta)(cosomega-isinomega){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{P_2} = \overline{P_1} = (1 - \beta) (\cos \omega - i \sin \omega)
+\end{displaymath}|; + +$key = q/{displaymath}{a_1}cos({alpha_1}n)+cdots+{a_k}cos({alpha_k}n){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{a_1} \cos({\alpha _1} n ) + \cdots + {a_k} \cos({\alpha _k} n )
+\end{displaymath}|; + +$key = q/(k+q)omega;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$(k+q)\omega$|; + +$key = q/{displaymath}P{x[n]+y[n]}=P{x[n]}+P{y[n]}+2cdot{mathrm{COV}}{x[n],y[n]}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+P \{x[n] + y[n]\} = P \{x[n]\} + P \{y[n]\}
++ 2 \cdot {\mathrm{COV}} \{ x[n] , y[n] \}
+\end{displaymath}|; + +$key = q/{displaymath}y[n]-y[n-1]=1{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+y[n]-y[n-1] = 1
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig02.12.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig02.12.ps}\end{figure}|; + +$key = q/P=0.9;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$P=0.9$|; + +$key = q/p=1-dslashsqrt{g};MSF=1.6;AAT/; +$cached_env_img{$key} = q|$p = 1 - d / \sqrt{g}$|; + +$key = q/{displaymath}s[n]=nslashN-1slash2{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+s[n] = n/N - 1/2
+\end{displaymath}|; + +$key = q/fbox{{mathrm{delread}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{$\mathrm{delread}\sim$}|; + +$key = q/{figure}{psfig{file=figsslashfig07.02.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig07.02.ps}\end{figure}|; + +$key = q/(1+r)omega_c;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$(1+r) \omega_c$|; + +$key = q/fbox{{mathrm{dbtorms}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $ \mathrm{dbtorms}\sim $}|; + +$key = q/w[n];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$w[n]$|; + +$key = q/i;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$i$|; + +$key = q/{displaymath}={1overN}left[X[0]+{U^{-k}}X[1]+cdots+{U^{-(N-1)k}}X[N-1]right]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+= {1 \over N} \left [ X[0] +
+{U^{-k}} X[1] + \cdots +
+{U^{-(N-1)k}} X[N-1] \right ]
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig04.01.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig04.01.ps}\end{figure}|; + +$key = q/{figure}{psfig{file=figsslashfig01.14.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig01.14.ps}\end{figure}|; + +$key = q/beta=pi;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\beta =\pi $|; + +$key = q/nomega;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$n\omega$|; + +$key = q/fbox{{mathrm{ftom}{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $ \mathrm{ftom} $}|; + +$key = q/{figure}{psfig{file=figsslashfig08.25.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig08.25.ps}\end{figure}|; + +$key = q/fbox{{mathrm{fiddle}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{$\mathrm{fiddle}\sim$}|; + +$key = q/{displaymath}S[m,k]={calFT}{w(n)X[n-mH]}(k){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+S[m, k] = {\cal FT}\{w(n)X[n-mH]\} (k)
+\end{displaymath}|; + +$key = q/p[n-(N-M)];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$p[n-(N-M)]$|; + +$key = q/{figure}{psfig{file=figsslashfig09.05.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig09.05.ps}\end{figure}|; + +$key = q/{figure}{psfig{file=figsslashfig08.10.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig08.10.ps}\end{figure}|; + +$key = q/a=cos(theta)=sin(theta)=sqrt{1slash2}approx0.7071;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$a = \cos(\theta) = \sin(\theta) = \sqrt{1/2} \approx 0.7071$|; + +$key = q/-a;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$-a$|; + +$key = q/R=44100;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$R=44100$|; + +$key = q/c(phi);MSF=1.6;AAT/; +$cached_env_img{$key} = q|$c(\phi)$|; + +$key = q/2N;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$2N$|; + +$key = q/{displaymath}Phi(k)=-picdot(k-{{alpha}over{omega}}){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\Phi(k) = - \pi \cdot (k - {{\alpha } \over {\omega}})
+\end{displaymath}|; + +$key = q/J;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$J$|; + +$key = q/{U^{Nslash2}}=-1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|${U^{N/2}} = -1$|; + +$key = q/{w_1},ldots{w_j};MSF=1.6;AAT/; +$cached_env_img{$key} = q|${w_1}, \ldots {w_j}$|; + +$key = q/{figure}{psfig{file=figsslashfig08.14.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig08.14.ps}\end{figure}|; + +$key = q/{figure}{psfig{file=figsslashfig07.04.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig07.04.ps}\end{figure}|; + +$key = q/NslashR;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$N/R$|; + +$key = q/fbox{{mathrm{bp}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{$\mathrm{bp}\sim$}|; + +$key = q/{displaymath}{X_n}=2,mathrm{re}(A{Z^n})=A{Z^n}+overline{A}{{overline{Z}}^n}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{X_n} = 2   \mathrm{re}(A{Z^n}) = A{Z^n} + \overline{A}
+{{\overline{Z}}^n}
+\end{displaymath}|; + +$key = q/{displaymath}{calFT}{p[n]}(k)approx{{-1}overN}cdot{{-iN}over{2pik}}cdot{calFT}{s[n]}(k){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{\cal FT}\{ p[n] \} (k) \approx
+{{-1} \over N} \cdot {{-iN} \over {2 \pi k}} \cdot {\cal FT}\{ s[n] \} (k)
+\end{displaymath}|; + +$key = q/H=Y[n]slashX[n];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$H=Y[n]/X[n]$|; + +$key = q/k+1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$k+1$|; + +$key = q/fbox{{mathrm{noise}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{$\mathrm{noise}\sim$}|; + +$key = q/{displaymath}={{{{({noverN}-{Nover{2N}})}^2}-{{({{n}overN}-{{N-2}over{2N}})}^2}}over{2}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+= {
+{
+{{({n\over N} - {N\over {2N}})}^2} -
+{{({{n}\over N} - {{N - 2}\over {2N}})}^2}
+} \over {
+2
+}}
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig06.07.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig06.07.ps}\end{figure}|; + +$key = q/f(t)=1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$f(t)=1$|; + +$key = q/{displaymath}x[n]=cos(2pi(n-1)slashN),,n=0,ldots,N+2{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+x[n] = \cos(2 \pi (n-1) / N) ,  n = 0, \ldots, N+2
+\end{displaymath}|; + +$key = q/fbox{texttt{fft~}};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{\texttt{fft\ }}|; + +$key = q/overline{Z};MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\overline{Z}$|; + +$key = q/n=0;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$n=0$|; + +$key = q/1slash2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$1/2$|; + +$key = q/{displaymath}t[n]=y[n]-y[n-1]=1-(d[n]-d[n-1]){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+t[n] = y[n] - y[n-1] = 1 - (d[n] - d[n-1])
+\end{displaymath}|; + +$key = q/{displaymath}H=1+g{Z^{-d}}+{(g{Z^{-d}})}^2+cdots{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+H = 1 + g{Z^{-d}} + {(g{Z^{-d}})} ^ 2 + \cdots
+\end{displaymath}|; + +$key = q/0:1:2cdots;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$0:1:2\cdots$|; + +$key = q/{displaymath}left{array{{ll}{sqrt{{s[k]-m[k]}over{s[k]}}}&{s[k]>m[k]}0&mbox{otherwise}array{right.{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\left \{
+\begin{array}{ll}
+{\sqrt{{s[k]-m[k]}\over {s[k]}...
+... {s[k] > m[k]} \\\\
+0 & \mbox{otherwise}
+\end{array} \right .
+\end{displaymath}|; + +$key = q/1slashoverline{P};MSF=1.6;AAT/; +$cached_env_img{$key} = q|$1/\overline{P}$|; + +$key = q/{figure}{psfig{file=figsslashfig01.01.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig01.01.ps}\end{figure}|; + +$key = q/{displaymath}P({x_1}[n],ldots,{x_r}[n])=P({x_1}[n])+cdots+P({x_r}[n]){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+P({x_1}[n] , \ldots , {x_r}[n]) = P({x_1}[n]) + \cdots + P({x_r}[n])
+\end{displaymath}|; + +$key = q/fbox{texttt{rzero_rev~}};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ \texttt{rzero\_rev\ }}|; + +$key = q/{displaymath}H={1over{1-g{Z^{-d}}}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+H = {1 \over {1 - g{Z^{-d}}}}
+\end{displaymath}|; + +$key = q/X={x_1}+{x_2}i;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$X={x_1} + {x_2}i$|; + +$key = q/lfloorxrfloor;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\lfloor x \rfloor$|; + +$key = q/{displaymath}={1over2}{left[{{parbox[t][0.1in]{0in}{mbox{}}{{cosleft((alpha+beta)right)}+{cosleft((alpha-beta)n+(phi-xi)right)}}right]}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+= {1 \over 2} { \left [ {
+\parbox[t][0.1in]{0in}{\mbox{}}...
+...t ( (\alpha - \beta) n + (\phi - \xi) \right ) }
+} \right ] }
+\end{displaymath}|; + +$key = q/Q{Z^{-1}};MSF=1.6;AAT/; +$cached_env_img{$key} = q|$Q{Z^{-1}}$|; + +$key = q/harmonic;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$harmonic$|; + +$key = q/fbox{texttt{delread~}};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ \texttt{delread\ }}|; + +$key = q/{displaymath}{y_{mathrm{INT}}}(x)={a_0}+{a_1}(x-{x_0})+{a_2}{{({x-x_0})}^2}+cdots+{a_n}{{({x-x_0})}^n}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{y_{\mathrm{INT}}}(x) =
+{a_0} + {a_1} (x - {x_0}) + {a_2} {{({x - x_0})}^ 2 } + \cdots +
+{a_n} {{({x - x_0})}^ n }
+\end{displaymath}|; + +$key = q/{displaymath}f(x)={f_0}+{f_2}{x^2}+{f_4}{x^4}+cdots{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+f(x) = {f_0} + {f_2}{x^2} + {f_4}{x^4} + \cdots
+\end{displaymath}|; + +$key = q/tslashd;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$t/d$|; + +$key = q/1-p;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$1-p$|; + +$key = q/{displaymath}...,x[n-1],x[n],x[n+1],...{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+..., x[n-1], x[n], x[n+1], ...
+\end{displaymath}|; + +$key = q/fbox{{mathrm{mtof}{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $ \mathrm{mtof} $}|; + +$key = q/fbox{{mathrm{tabosc4}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $ \mathrm{tabosc4}\sim $}|; + +$key = q/P<1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$P<1$|; + +$key = q/{displaymath}S[m,k];=;{{left|R[k]right|}^{-1}}cdot{{R[k]T'[k]}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+S[m, k] \; = \;
+{
+{ \left \vert
+R[k]
+\right \vert}
+^
+{-1}
+}
+\cdot
+{
+{R[k] T'[k]}
+}
+\end{displaymath}|; + +$key = q/{displaymath}{D_N}(k)approx{{Nsin(pik)}over{pik}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{D_N}(k) \approx {
+{N \sin(\pi k) } \over {\pi k}
+}
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig03.05.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig03.05.ps}\end{figure}|; + +$key = q/{displaymath}{x^3}[n]={1over4}cos(-omegan)+{2over4}cos(omegan)+{1over4}cos(3omegan){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{x^3}[n] = {1 \over 4} \cos (-\omega n) + {2 \over 4} \cos (\omega n)
++ {1 \over 4} \cos (3 \omega n)
+\end{displaymath}|; + +$key = q/Nslash2Mapprox1slash17;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$N/2M \approx 1/17$|; + +$key = q/{displaymath}{cos(omega(n-M))}-{cos(omega(n+M))}=2sin(2piMslashN)sin(omegan){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{\cos ( \omega (n-M))} - {\cos ( \omega (n+M))} =
+2 \sin (2 \pi M / N) \sin ( \omega n)
+\end{displaymath}|; + +$key = q/(1-r)omega_c;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$(1-r)\omega_c $|; + +$key = q/q;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$q$|; + +$key = q/{displaymath}{H_{mathrm{im}}}(Z)={{mathrm{im}(P){Z^{-1}}}over{(1-{P}{Z^{-1}})(1-{overline{P}}{Z^{-1}})}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{H_{\mathrm{im}}}(Z) = {{
+\mathrm{im} (P) {Z^{-1}}
+} \over {
+(1 - {P}{Z^{-1}}) (1 - {\overline{P}}{Z^{-1}})
+}}
+\end{displaymath}|; + +$key = q/sqrt2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\sqrt 2$|; + +$key = q/1+aomega;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$1 + a \omega$|; + +$key = q/{displaymath}H-g{Z^{-d}}H=1{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+H - g{Z^{-d}} H = 1
+\end{displaymath}|; + +$key = q/alpha=1.5omega=3pislashN;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\alpha =1.5\omega =3\pi /N$|; + +$key = q/fbox{{mathrm{poly}{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $\mathrm{poly}$}|; + +$key = q/S[m-1,k];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$S[m-1,k]$|; + +$key = q/fbox{texttt{makenote}};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ \texttt{makenote}}|; + +$key = q/T[k];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$T[k]$|; + +$key = q/{displaymath}m=69+12cdot{log_2}(fslash440){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+m = 69 + 12 \cdot {\log _ 2} (f/440)
+\end{displaymath}|; + +$key = q/a_0;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$a_0$|; + +$key = q/k<-1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$k < -1$|; + +$key = q/2pislashN;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$2\pi/N$|; + +$key = q/{figure}{psfig{file=figsslashfig04.03.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig04.03.ps}\end{figure}|; + +$key = q/inharmonic;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$inharmonic$|; + +$key = q/2f,4f,6fcdots;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$2f, 4f, 6f\cdots$|; + +$key = q/R(S(Z))=W;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$R(S(Z)) = W$|; + +$key = q/fp+d;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$fp+d$|; + +$key = q/{displaymath}R'[k]=R[k+1]+R[k]+R[k-1]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+R'[k] = R[k+1] + R[k] + R[k-1]
+\end{displaymath}|; + +$key = q/Y[n];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$Y[n]$|; + +$key = q/cdots;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\cdots$|; + +$key = q/omega_b;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\omega_b$|; + +$key = q/{figure}{psfig{file=figsslashfig03.09.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig03.09.ps}\end{figure}|; + +$key = q/{displaymath}angle({H_1}(Z))-angle({H_2}(Z))approxleft{array{{ll}pislash2&{0|; + +$key = q/{displaymath}b=rsin(theta){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+b = r \sin (\theta)
+\end{displaymath}|; + +$key = q/e;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$e$|; + +$key = q/{displaymath}c(phi)=c(omegan)=pcos(komegan)+qcos((k+1)omegan){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+c(\phi) = c(\omega n) = p \cos( k \omega n) + q \cos( (k+1) \omega n)
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig03.12.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig03.12.ps}\end{figure}|; + +$key = q/{d_1}+cdots+{d_j}=0;MSF=1.6;AAT/; +$cached_env_img{$key} = q|${d_1} + \cdots + {d_j} = 0$|; + +$key = q/{displaymath}{Z_1}{Z_2}={r_1}{r_2}cdot{left[{cos({theta_1})cos({theta_2})-sin({theta_1})sin({theta_2})}right.},+{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{Z_1}{Z_2} = {r_1}{r_2} \cdot
+{ \left [ {
+\cos({\theta_1...
+...a_2}) -
+\sin({\theta_1}) \sin({\theta_2})
+} \right . }   +
+\end{displaymath}|; + +$key = q/{displaymath}approx(1-iomegak){calFT}{x[n]}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\approx (1 - i \omega k) {\cal FT}\{ x[n] \}
+\end{displaymath}|; + +$key = q/{x_1}[n];MSF=1.6;AAT/; +$cached_env_img{$key} = q|${x_1}[n]$|; + +$key = q/{displaymath}y[n]+x[n](z[n]-y[n]){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+y[n] + x[n](z[n]-y[n])
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig07.10.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig07.10.ps}\end{figure}|; + +$key = q/(M,1);MSF=1.6;AAT/; +$cached_env_img{$key} = q|$(M, 1)$|; + +$key = q/alpha-beta<0;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\alpha-\beta<0$|; + +$key = q/{displaymath}={V^{d}}X[0]+{V^{d+1}}X[1]+cdots+{V^{d+N-1}}X[N-1]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+=
+{V ^ {d}} X[0] +
+{V ^ {d+1}} X[1] +
+\cdots +
+{V ^ {d+N-1}} X[N-1]
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig04.08.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig04.08.ps}\end{figure}|; + +$key = q/{displaymath}sin(acos(omegan))=2{J_1}(a)cos(omegan)-2{J_3}(a)cos(3omegan)+2{J_5}(a)cos(5omegan)mpcdots{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\sin(a \cos(\omega n)) =
+2 {J_1}(a) \cos(\omega n)
+- 2{J_3}(a) \cos(3 \omega n)
++ 2{J_5}(a) \cos(5 \omega n) \mp \cdots
+\end{displaymath}|; + +$key = q/{displaymath}=2cos(omegadslash2){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+= 2 \cos(\omega d / 2)
+\end{displaymath}|; + +$key = q/X[-n]=X[n];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$X[-n] = X[n]$|; + +$key = q/{displaymath}0,2omega_m,4omega_m,ldots{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+0, 2\omega_m, 4\omega_m, \ldots
+\end{displaymath}|; + +$key = q/x[N],ldots,x[N+B-1];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$x[N], \ldots, x[N+B-1]$|; + +$key = q/{figure}{psfig{file=figsslashfig07.30.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig07.30.ps}\end{figure}|; + +$key = q/{figure}{psfig{file=figsslashfig01.10.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig01.10.ps}\end{figure}|; + +$key = q/Zoverline{Z};MSF=1.6;AAT/; +$cached_env_img{$key} = q|$Z\overline{Z}$|; + +$key = q/beta>alpha;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\beta > \alpha $|; + +$key = q/{displaymath}{y_{mathrm{INT}}}(x)=y[{x_0}]+(y[{x_0}+1]-y[{x_0}])cdot(x-{x_0}){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{y_{\mathrm{INT}}}(x) =
+y[{x_0}] + (y[{x_0} + 1]- y[{x_0}]) \cdot (x - {x_0})
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig07.12.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig07.12.ps}\end{figure}|; + +$key = q/Q=-1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$Q=-1$|; + +$key = q/{displaymath}(2,1),(4.75,0),(7.5,1),(10.25,0),(13,1),ldots{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+(2, 1), (4.75, 0), (7.5, 1), (10.25, 0), (13, 1), \ldots
+\end{displaymath}|; + +$key = q/beta=2pislash10;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\beta =2\pi /10$|; + +$key = q/{c_1}+cdots+{c_l}=0;MSF=1.6;AAT/; +$cached_env_img{$key} = q|${c_1} + \cdots + {c_l} = 0$|; + +$key = q/-i;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$-i$|; + +$key = q/{displaymath}H(Z)={{{overline{P}-{Z^{-1}}}}over{{1-P{Z^{-1}}}}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+H(Z) = {{
+{\overline{P} - {Z^{-1}}}
+} \over {
+{1 - P{Z^{-1}}}
+}}
+\end{displaymath}|; + +$key = q/{displaymath}mathrm{re}(A{Z^n})=acdotcos(nomega+phi){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\mathrm{re}(A{Z^n}) = a \cdot \cos(n \omega + \phi)
+\end{displaymath}|; + +$key = q/3pislash2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$3\pi /2$|; + +$key = q/NslashM;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$N/M$|; + +$key = q/{displaymath}d=20cdot{{{log}_{10}}({aslash{a_0}})}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+d = 20 \cdot {{{\log}_{10}} ( {a / {a_0}} )}
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig05.15.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig05.15.ps}\end{figure}|; + +$key = q/Nslash2+1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$N/2+1$|; + +$key = q/{figure}{psfig{file=figsslashfig04.09.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig04.09.ps}\end{figure}|; + +$key = q/(M,c);MSF=1.6;AAT/; +$cached_env_img{$key} = q|$(M, c)$|; + +$key = q/x[n+1];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$x[n+1]$|; + +$key = q/{displaymath}cos(phi)+isin(phi)=R(cos(omega)+isin(omega)){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\cos(\phi) + i \sin(\phi) = R(\cos(\omega) + i \sin(\omega))
+\end{displaymath}|; + +$key = q/N+M-1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$N+M-1$|; + +$key = q/1,W,{W^2},ldots;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$1, W, {W^2}, \ldots$|; + +$key = q/mathrm{fft}sim;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\mathrm{fft}\sim$|; + +$key = q/f=x-{x_0};MSF=1.6;AAT/; +$cached_env_img{$key} = q|$f = x - {x_0}$|; + +$key = q/{displaymath}U=cos(omega)+isin(omega){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+U = \cos(\omega) + i \sin(\omega)
+\end{displaymath}|; + +$key = q/Z=1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$Z=1$|; + +$key = q/fbox{{*sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $*\sim$ }|; + +$key = q/{displaymath}omega_c+momega_m{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\omega_c + m \omega_m
+\end{displaymath}|; + +$key = q/Rslashf;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$R/f$|; + +$key = q/H=Nslash4;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$H=N/4$|; + +$key = q/Nslash4M;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$N/4M$|; + +$key = q/r=0.5;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$r=0.5$|; + +$key = q/RslashB;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$R/B$|; + +$key = q/{displaymath}h[n]=12{{log_2}left|y[n]-y[n-1]right|}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+h[n] = 12 {{\log_2} \left \vert y[n] - y[n-1] \right \vert}
+\end{displaymath}|; + +$key = q/{displaymath}{f_1}={f_0},2{f_2}={f_1},3{f_3}={f_2},ldots{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{f_1} = {f_0} , 2 {f_2} = {f_1}, 3 {f_3} = {f_2} , \ldots
+\end{displaymath}|; + +$key = q/{displaymath}angle({U^k})=kangle(U)=komega{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\angle({U^k}) = k \angle(U) = k\omega
+\end{displaymath}|; + +$key = q/Z^n;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$Z^n$|; + +$key = q/{displaymath}{piover2}({1overn}-1),;{piover2}({3overn}-1),;ldots,;{piover2}({{2n-1}overn}-1){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{\pi \over 2} ({1 \over n} - 1) , \;
+{\pi \over 2} ({3 \ov...
+...} - 1) , \; \ldots , \;
+{\pi \over 2} ({{2n-1} \over n} - 1)
+\end{displaymath}|; + +$key = q/2a;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$2a$|; + +$key = q/2pislashH;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$2\pi/H$|; + +$key = q/{displaymath}cdotslet[0]let[1]let[2]lecdots{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\cdots \le t[0] \le t[1] \le t[2] \le \cdots
+\end{displaymath}|; + +$key = q/B=4;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$B=4$|; + +$key = q/fbox{{mathrm{del}{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $\mathrm{del}$ }|; + +$key = q/{displaymath}{P_k}[n]={A_k}{{left[{U^k}right]}^{n}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{P_k}[n] = {A_k}{{\left [ {U^k} \right ]} ^ {n}}
+\end{displaymath}|; + +$key = q/{displaymath}-{{{d_1}+cdots+{d_j}}over{N}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+-{{{d_1} + \cdots + {d_j}} \over {N}}
+\end{displaymath}|; + +$key = q/S(1)=1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$S(1) = 1$|; + +$key = q/2pikslashN;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$2\pi k / N$|; + +$key = q/{displaymath}P(x[n])=left[{{|x[0]|}^2}+{{|x[1]|}^2}+cdots+{{|x[N-1]|}^2}right]slashN{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+P(x[n]) = \left [{{\vert x[0]\vert}^2} + {{\vert x[1]\vert}^2} + \cdots
++ {{\vert x[N-1]\vert}^2} \right ] / N
+\end{displaymath}|; + +$key = q/20{log_{10}}(g);MSF=1.6;AAT/; +$cached_env_img{$key} = q|$20 {\log_{10}} (g)$|; + +$key = q/fbox{texttt{switch~}};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ \texttt{switch\ }}|; + +$key = q/{displaymath}a=cos({{pi}over4}-{{omega}over2}),;b=sin({{pi}over4}-{{omega}over2}){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+a = \cos({{\pi}\over 4} - {{\omega} \over 2}) , \;
+b = \sin({{\pi}\over 4} - {{\omega} \over 2})
+\end{displaymath}|; + +$key = q/Nslash2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$N/2$|; + +$key = q/{displaymath}{mathrm{COV}}{x[n],y[n]}={{x[M]y[M]+cdots+x[M+N-1]y[M+N-1]}overN}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{\mathrm{COV}} \{ x[n] , y[n] \} =
+{
+{x[M]y[M] + \cdots + x[M+N-1]y[M+N-1]}
+\over
+N
+}
+\end{displaymath}|; + +$key = q/a=;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$a=$|; + +$key = q/k=0,1,ldots,N-1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$k = 0, 1, \ldots, N-1$|; + +$key = q/Y[k]slashN;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$Y[k]/N$|; + +$key = q/fbox{{mathrm{rpole}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{$\mathrm{rpole}\sim$}|; + +$key = q/{displaymath}f={{omegaR}over{2pi}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+f = {{\omega R} \over {2 \pi}}
+\end{displaymath}|; + +$key = q/{displaymath}s[n]approx{1overpi}left[{sin(omegan)}+{{sin(2omegan)}over2}+{{sin(3omegan)}over3}+cdotsright]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+s[n] \approx {1 \over \pi} \left [
+{\sin ( \omega n )}
++ ...
+...\over 2}
++ {{\sin ( 3 \omega n)} \over 3}
++ \cdots
+\right ]
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig06.08.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig06.08.ps}\end{figure}|; + +$key = q/{figure}{psfig{file=figsslashfig02.04.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig02.04.ps}\end{figure}|; + +$key = q/c,s;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$c, s$|; + +$key = q/fbox{{mathrm{tabsend}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{$\mathrm{tabsend}\sim$}|; + +$key = q/{f_3}=1slash6;MSF=1.6;AAT/; +$cached_env_img{$key} = q|${f_3}=1/6$|; + +$key = q/{displaymath}R[k];=;{{overline{T[k]};cdot;{S[m-1,k]}}over{left|{S[m-1,k]}right|}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+R[k] \; = \;
+{
+{
+\overline {T[k]} \; \cdot \; {S[m-1, k]}
+} \over {
+\left \vert
+{S[m-1, k]}
+\right \vert
+}
+}
+\end{displaymath}|; + +$key = q/|R(Z)|=1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\vert R(Z)\vert = 1$|; + +$key = q/{displaymath}x[t+tau]+y[t+tau]=x[t]+y[t]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+x[t + \tau] + y[t+\tau] = x[t] + y[t]
+\end{displaymath}|; + +$key = q/omegan+phi;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\omega n + \phi$|; + +$key = q/{displaymath}-{{left[{{aZ+b}over{bZ+a}}right]}^2}=W{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+- {
+{ \left [ {
+{
+aZ + b
+} \over {
+bZ + a
+}
+} \right ] }
+^ 2
+} = W
+\end{displaymath}|; + +$key = q/{displaymath}cos(a)-cos(b)=2sin({{b-a}over2})sin({{a+b}over2}){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\cos(a) - \cos(b) = 2 \sin({{b-a}\over 2}) \sin({{a+b}\over 2})
+\end{displaymath}|; + +$key = q/{m_a};MSF=1.6;AAT/; +$cached_env_img{$key} = q|${m_a}$|; + +$key = q/{displaymath}x[n]={{underbrace{gleft(asin(omeganslash2)right)}_{mathrm{modulatoros(komegan)+qcos((k+1)omegan)}right]}_mathrm{carrier}}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+x[n] = {
+{\underbrace
+{g \left ( a \sin (\omega n/2) \ri...
+...) + q \cos( (k+1) \omega n)}
+\right ] } _\mathrm{carrier}}
+}
+\end{displaymath}|; + +$key = q/t;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$t$|; + +$key = q/c=cos(theta);MSF=1.6;AAT/; +$cached_env_img{$key} = q|$c = \cos(\theta)$|; + +$key = q/{displaymath}|H(cos(omega)+isin(omega))|{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\vert H(\cos(\omega) + i \sin(\omega)) \vert
+\end{displaymath}|; + +$key = q/Rt=n;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$Rt = n$|; + +$key = q/{displaymath}f(-x)=f(x){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+f(-x) = f(x)
+\end{displaymath}|; + +$key = q/d[n];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$d[n]$|; + +$key = q/|P|<1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\vert P\vert < 1$|; + +$key = q/A_k;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$A_k$|; + +$key = q/{figure}{psfig{file=figsslashfig08.15.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig08.15.ps}\end{figure}|; + +$key = q/{displaymath}c=cos(theta){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+c = \cos(\theta)
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig07.03.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig07.03.ps}\end{figure}|; + +$key = q/{J_k}(a);MSF=1.6;AAT/; +$cached_env_img{$key} = q|${J_k}(a)$|; + +$key = q/kslashN;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$k/N$|; + +$key = q/c;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$c$|; + +$key = q/J(Z)=infty;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$J(Z)=\infty$|; + +$key = q/{figure}{psfig{file=figsslashfig04.21.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig04.21.ps}\end{figure}|; + +$key = q/kmtau;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$km\tau$|; + +$key = q/1slash{k^2};MSF=1.6;AAT/; +$cached_env_img{$key} = q|$1/{k^2}$|; + +$key = q/fbox{{mathrm{lrshift}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{$\mathrm{lrshift}\sim$}|; + +$key = q/fbox{{mathrm{r}{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $ \mathrm{r} $}|; + +$key = q/C[m-2];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$C[m-2]$|; + +$key = q/3.999ldots;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$3.999\ldots$|; + +$key = q/{figure}{psfig{file=figsslashfig08.32.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig08.32.ps}\end{figure}|; + +$key = q/fbox{{mathrm{wrap}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{$\mathrm{wrap}\sim$}|; + +$key = q/k=100;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$k=100$|; + +$key = q/s;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$s$|; + +$key = q/{displaymath}H(Z)={{1}over{1-P{Z^{-1}}}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+H(Z) = {{1} \over {1 - P {Z^{-1}}}}
+\end{displaymath}|; + +$key = q/{displaymath}|Z|=sqrt{({a^2}+{b^2})}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\vert Z\vert = \sqrt {({a^2} + {b^2})}
+\end{displaymath}|; + +$key = q/S(-1)=-1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$S(-1) = -1$|; + +$key = q/fbox{{mathrm{czero}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{$\mathrm{czero}\sim$}|; + +$key = q/{Z^{-dslash2}};MSF=1.6;AAT/; +$cached_env_img{$key} = q|${Z^{-d/2}}$|; + +$key = q/{displaymath}X''[n]={{X[n]-X[-n]}over{2i}}=A[1]sin(omegan)+cdots+A[N-1]sin(omega(N-1)n){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+X''[n] = {{X[n] - X[-n]}\over {2i}} =
+A[1]\sin(\omega n)+ \cdots + A[N-1]\sin(\omega (N-1) n)
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig03.14.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig03.14.ps}\end{figure}|; + +$key = q/{J_3}(a){J_k}(b);MSF=1.6;AAT/; +$cached_env_img{$key} = q|${J_3}(a) {J_k}(b)$|; + +$key = q/{figure}{psfig{file=figsslashfig07.31.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig07.31.ps}\end{figure}|; + +$key = q/{displaymath}{H_1}(Z)+i{H_2}(Z)approxleft{array{{ll}2{H_1}(Z)&{0|; + +$key = q/d_0;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$d_0$|; + +$key = q/{displaymath}overline{A+B}=overline{A}+overline{B}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\overline{A+B} = \overline{A} + \overline{B}
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig03.03.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig03.03.ps}\end{figure}|; + +$key = q/({a^2}+{b^2})slash2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$({a^2} +
+{b^2})/2$|; + +$key = q/fbox{{mathrm{inlet}{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $ \mathrm{inlet} $}|; + +$key = q/{displaymath}={2overpi}left[{sin(omegan)}+{{sin(3omegan)}over3}+{{sin(5omegan)}over5}+cdotsright]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+= {2 \over \pi} \left [
+{\sin ( \omega n )}
++ {{\sin ( 3 ...
+...\over 3}
++ {{\sin ( 5 \omega n)} \over 5}
++ \cdots
+\right ]
+\end{displaymath}|; + +$key = q/Halpha;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$H\alpha$|; + +$key = q/a=2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$a=2$|; + +$key = q/{displaymath}X[n]={Z^n}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+X[n] = {Z^n}
+\end{displaymath}|; + +$key = q/{displaymath}{{left({A_{mathrm{RMS}}}{x[n]+y[n]}right)}^2}={{left({A_{mathrm{RMSn]}right)}^2}+{{left({A_{mathrm{RMS}}}{y[n]}right)}^2}.{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{{\left ( {A_{\mathrm{RMS}}} \{x[n]+y[n]\} \right ) } ^ 2} ...
+...2} +
+{{\left ( {A_{\mathrm{RMS}}} \{y[n]\} \right ) } ^ 2} .
+\end{displaymath}|; + +$key = q/1slashoverline{Q};MSF=1.6;AAT/; +$cached_env_img{$key} = q|$1/\overline{Q}$|; + +$key = q/W;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$W$|; + +$key = q/{figure}vspace*{-15pt}{centerline{psfig{file=figsslashfig06.11.ps,width=3.8in}}{vspace*{-13pt}{{vspace*{13pt}{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\vspace*{-15pt}
+\centerline{\psfig{file=figs/fig06.11.ps,width=3.8in}}
+\vspace*{-13pt}\vspace*{13pt}
+\end{figure}|; + +$key = q/Q_i;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$Q_i$|; + +$key = q/fbox{{mathrm{receive}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $\mathrm{receive}\sim$ }|; + +$key = q/{figure}{psfig{file=figsslashfig09.17.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig09.17.ps}\end{figure}|; + +$key = q/pi;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\pi $|; + +$key = q/{displaymath}Z=rcdotleft[cos(theta)+isin(theta)right]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+Z = r \cdot \left[ \cos(\theta) + i \sin(\theta) \right ]
+\end{displaymath}|; + +$key = q/fbox{texttt{throw~}};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ \texttt{throw\ }}|; + +$key = q/{displaymath}127{f_2}(x)=10^{2(x-1)}hspace{0.2in}mathrm{(dBtolinear),}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+       %
+{f_2} (x) = 10^{2(x-1)} \hspace{0.2in}\mathrm{(dB to linear),}
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig01.15.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig01.15.ps}\end{figure}|; + +$key = q/f=261.626;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$f=261.626$|; + +$key = q/s[n];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$s[n]$|; + +$key = q/overline{Z}={Z^{-1}};MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\overline{Z} = {Z^{-1}}$|; + +$key = q/{displaymath}{A_{mathrm{peak}}}{x[n]}=max|x[n]|,hspace{0.3in}n=M,ldots,M+N-1{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{A_{\mathrm{peak}}} \{x[n]\} = \max \vert x[n] \vert ,
+\hspace{0.3in}n = M, \ldots, M+N-1
+\end{displaymath}|; + +$key = q/(n+f,y);MSF=1.6;AAT/; +$cached_env_img{$key} = q|$(n+f, y)$|; + +$key = q/fbox{{mathrm{dac}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $ \mathrm{dac}\sim $}|; + +$key = q/pislashomega;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\pi / \omega$|; + +$key = q/lfloory[n]rfloor;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\lfloor y[n] \rfloor$|; + +$key = q/{figure}{psfig{file=figsslashfig07.29.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig07.29.ps}\end{figure}|; + +$key = q/fbox{texttt{czero_rev~}};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ \texttt{czero\_rev\ }}|; + +$key = q/t_2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$t_2$|; + +$key = q/{displaymath}{1overN}left[{calFT}{s[n]}(1)cdot{U^n}+{calFT}{s[n]}(-1)cdot{U^{-n}}right]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{1 \over N}\left [
+{\cal FT}\{ s[n] \} (1) \cdot {U^n} +
+{\cal FT}\{ s[n] \} (-1) \cdot {U^{-n}}
+\right ]
+\end{displaymath}|; + +$key = q/{displaymath}|H|=2|cos(omegadslash2)|{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\vert H\vert = 2 \vert\cos(\omega d / 2) \vert
+\end{displaymath}|; + +$key = q/V;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$V$|; + +$key = q/z[n]=x[n];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$z[n] = x[n]$|; + +$key = q/{figure}{psfig{file=figsslashfig02.10.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig02.10.ps}\end{figure}|; + +$key = q/{displaymath}p[n]-p[n-1]={{{{({noverN}-{1over2})}^2}-{{({{n-1}overN}-{1over2})}^2}}over{2}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+p[n] - p[n-1] = {
+{
+{{({n\over N} - {1\over 2})}^2} -
+{{({{n-1}\over N} - {1\over 2})}^2}
+} \over {
+2
+}}
+\end{displaymath}|; + +$key = q/{P_1},ldots,{P_k};MSF=1.6;AAT/; +$cached_env_img{$key} = q|${P_1}, \ldots, {P_k}$|; + +$key = q/{figure}{psfig{file=figsslashfig06.01.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig06.01.ps}\end{figure}|; + +$key = q/{displaymath}=mathrm{re}left[{{{2-2,mathrm{re}(P){Z^{-1}}}over{(1-{P}{Z^{-1}})(1-{overline{P}}{Z^{-1}})}}{A{Z^n}}}right]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+=
+\mathrm{re} \left[ {
+{{
+2 - 2   \mathrm{re} (P) {Z^{-...
+...^{-1}}) (1 - {\overline{P}}{Z^{-1}})
+}}
+{A{Z^n}}
+} \right ]
+\end{displaymath}|; + +$key = q/fbox{{mathrm{cos}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $\mathrm{cos}\sim$ }|; + +$key = q/{displaymath}Halpha=angleS[1,3]-angleS[0,3]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+H \alpha = \angle S[1, 3] - \angle S[0, 3]
+\end{displaymath}|; + +$key = q/infty;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\infty$|; + +$key = q/p[n];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$p[n]$|; + +$key = q/1-|P|;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$1-\vert P\vert$|; + +$key = q/{displaymath}-f(f-1)(f-2)slash6cdoty[{x_0}-1]+(f+1)(f-1)(f-2)slash2cdoty[{x_0}]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+-f (f-1)(f-2)/6 \cdot y[{x_0}-1]
++ (f+1)(f-1)(f-2)/2 \cdot y[{x_0}]
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig07.08.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig07.08.ps}\end{figure}|; + +$key = q/{displaymath}-(f+1)f(f-2)slash2cdoty[{x_0}+1]+(f+1)f(f-1)slash6cdoty[{x_0}+2]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+- (f+1) f (f-2) / 2 \cdot y[{x_0}+1]
++ (f+1) f (f-1) / 6 \cdot y[{x_0}+2]
+\end{displaymath}|; + +$key = q/{displaymath}x[n]=cos(acos(omega_mn)+omega_cn){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+x[n] = \cos(a \cos(\omega_m n) + \omega_c n )
+\end{displaymath}|; + +$key = q/{displaymath}{1overN}{calFT}left{Y[k]right}(m)=X[-m]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{1 \over N} {\cal FT} \left \{ Y[k] \right \} (m) = X[-m]
+\end{displaymath}|; + +$key = q/beta;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\beta $|; + +$key = q/FT;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$FT$|; + +$key = q/fbox{{mathrm{t}{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $\mathrm{t}$}|; + +$key = q/{displaymath}Phi(k)=-picdot(k-{{alpha}over{omega}})cdot(N-1)slashN{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\Phi(k) = - \pi \cdot (k - {{\alpha } \over {\omega}}) \cdot (N-1)/N
+\end{displaymath}|; + +$key = q/{displaymath}f(x)={e^x}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+f(x) = {e ^ x}
+\end{displaymath}|; + +$key = q/{displaymath}={{{{{2n}over{N^2}}-{1over{N}}}+{1over{N^2}}}over{2}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+= {
+{
+{{{2n}\over {N^2}} - {1\over {N}}} + {1\over {N^2}}
+} \over {
+2
+}}
+\end{displaymath}|; + +$key = q/{displaymath}x[1.5]={{9cos(omegaslash2)-cos(3omegaslash2)}over4}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+x[1.5] = {{9 \cos(\omega/2) - \cos(3 \omega / 2)}\over4}
+\end{displaymath}|; + +$key = q/{displaymath}J(Z)=H(R(Z)){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+J(Z) = H(R(Z))
+\end{displaymath}|; + +$key = q/p;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$p$|; + +$key = q/N+1-k;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$N + 1 - k$|; + +$key = q/fbox{texttt{delwrite~}};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ \texttt{delwrite\ }}|; + +$key = q/1slash{sqrtN};MSF=1.6;AAT/; +$cached_env_img{$key} = q|$1 / {\sqrt N}$|; + +$key = q/{x_r}[n];MSF=1.6;AAT/; +$cached_env_img{$key} = q|${x_r}[n]$|; + +$key = q/fbox{{mathrm{notein}{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $\mathrm{notein}$}|; + +$key = q/overline{Q};MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\overline{Q}$|; + +$key = q/|H|;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\vert H\vert$|; + +$key = q/{Z_1}{Z_2};MSF=1.6;AAT/; +$cached_env_img{$key} = q|${Z_1}{Z_2}$|; + +$key = q/1slashi=-i;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$1/i = -i$|; + +$key = q/{displaymath}+qcos((n+1){omega_2}t+rcos({omega_1}t)){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
++ q \cos ( (n+1) {\omega_2} t + r \cos ({\omega_1} t))
+\end{displaymath}|; + +$key = q/{displaymath}{cos(alphan+phi)cos(betan+xi)}={displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{\cos(\alpha n + \phi) \cos (\beta n + \xi)}
+=
+\end{displaymath}|; + +$key = q/{displaymath}X'[n]={{X[n]+X[n+Nslash2]}over2}=A[0]+A[2]{U^{2n}}+cdots+A[N-2]{U^{(N-2)n}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+X'[n] = {{X[n] + X[n+N/2]}\over 2} =
+A[0] + A[2]{U^{2n}} + \cdots + A[N-2]{U^{(N-2)n}}
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig08.12.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig08.12.ps}\end{figure}|; + +$key = q/alpha=3omega;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\alpha = 3\omega$|; + +$key = q/sslash2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$s/2$|; + +$key = q/{displaymath}{H_{mathrm{re}}}(Z)={{1-mathrm{re}(P){Z^{-1}}}over{(1-{P}{Z^{-1}})(1-{overline{P}}{Z^{-1}})}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{H_{\mathrm{re}}}(Z) = {{
+1 - \mathrm{re} (P) {Z^{-1}}
+} \over {
+(1 - {P}{Z^{-1}}) (1 - {\overline{P}}{Z^{-1}})
+}}
+\end{displaymath}|; + +$key = q/1000cdot2048slashR;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$1000\cdot2048/R$|; + +$key = q/omega=angle(Z);MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\omega = \angle(Z)$|; + +$key = q/{figure}{psfig{file=figsslashfig09.07.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig09.07.ps}\end{figure}|; + +$key = q/f(x)={x^2};MSF=1.6;AAT/; +$cached_env_img{$key} = q|$f(x) = {x^2}$|; + +$key = q/{figure}{psfig{file=figsslashfig09.09.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig09.09.ps}\end{figure}|; + +$key = q/{figure}{psfig{file=figsslashfig04.16.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig04.16.ps}\end{figure}|; + +$key = q/{displaymath}{f_k}={1over{1cdot2cdot3cdot...cdotk}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{f_k} = {1 \over {1 \cdot 2 \cdot 3 \cdot ... \cdot k}}
+\end{displaymath}|; + +$key = q/{displaymath}w[n]={1over2}-{1over2}cos(2pinslashN){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+w[n] = {1\over 2} - {1\over 2} \cos(2\pi n / N)
+\end{displaymath}|; + +$key = q/-1slash2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$-1/2$|; + +$key = q/{displaymath}z[n]=left{{array{{ll}x[lfloory[n]rfloor]&mbox{if{0ley[n]|; + +$key = q/{displaymath}fx+(1-f)y,{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+fx + (1-f)y,
+\end{displaymath}|; + +$key = q/|;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\vert$|; + +$key = q/1-g;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$1-g$|; + +$key = q/{displaymath}R(Z)=-{Z^2}=-{{1cdot{Z^2}+0cdotZ+0}over{0cdot{Z^2}+0cdotZ+1}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+R(Z) = -{Z^2} = -
+{{
+1 \cdot {Z^2} + 0 \cdot Z + 0
+} \over {
+0 \cdot {Z^2} + 0 \cdot Z + 1
+}}
+\end{displaymath}|; + +$key = q/{displaymath}={{left[{U^{0}}right]}^{n}}Y[0]+{{left[{U^{1}}right]}^{n}}Y[1]+cdots+{{left[{U^{N-1}}right]}^{n}}Y[N-1]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+= {{\left [ {U^{0}} \right ]} ^ {n}} Y[0] +
+{{\left [ {U^{...
+...Y[1] +
+\cdots +
+{{\left [ {U^{N-1}} \right ]} ^ {n}} Y[N-1]
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig08.04.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig08.04.ps}\end{figure}|; + +$key = q/fbox{{mathrm{rifft}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{$\mathrm{rifft}\sim$}|; + +$key = q/{displaymath}{calFT}{s[n]}(k)approx{1over{iomegak}}={{-iN}over{2pik}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{\cal FT}\{ s[n] \} (k) \approx {1 \over {i \omega k}}
+= {{-iN} \over {2 \pi k}}
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig01.04.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig01.04.ps}\end{figure}|; + +$key = q/|Z|;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\vert Z\vert$|; + +$key = q/(L,d);MSF=1.6;AAT/; +$cached_env_img{$key} = q|$(L, d)$|; + +$key = q/{displaymath}left.+{{cos(2omega(n-M))-cos(2omega(n+M))}over4}+cdotsright]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\left .
++ {{\cos ( 2 \omega (n-M)) - \cos ( 2 \omega (n+M))} \over 4}
++ \cdots
+\right ]
+\end{displaymath}|; + +$key = q/approx;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\approx$|; + +$key = q/x[n]-x[n-1];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$x[n] - x[n-1]$|; + +$key = q/f(x)=x^5;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$f(x) = x^5$|; + +$key = q/{displaymath}{calFT}left{X[n]right}(k)={xi^{N-1}}{{{xi^N}-{xi^{-N}}}over{xi-{xi^{-1}}}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{\cal FT} \left \{ X[n] \right \} (k) =
+{\xi^{N-1}}
+{{
+{\xi^N} - {\xi^{-N}}
+} \over {
+\xi - {\xi^{-1}}
+}}
+\end{displaymath}|; + +$key = q/{displaymath}={calFT}left{{1over2}{Z^n}-{1over4}{(UZ)^n}-{1over4}{({U^{-1}}Z)^n}right}(k){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+= {\cal FT} \left \{ {1\over 2} {Z^n} - {1\over 4} {(UZ)^n}
+- {1\over 4} {({U^{-1}}Z)^n}\right \} (k)
+\end{displaymath}|; + +$key = q/2pikslashomega;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$2 \pi k/ \omega$|; + +$key = q/{figure}{psfig{file=figsslashfig07.09.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig07.09.ps}\end{figure}|; + +$key = q/4pislashN;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$4\pi/N$|; + +$key = q/{displaymath}{y_2}[n]=s{x_1}[n]+c{x_2}[n]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{y_2}[n] = s {x_1}[n] + c {x_2}[n]
+\end{displaymath}|; + +$key = q/X[n]=-X[n+Nslash2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$X[n] = -X[n+N/2$|; + +$key = q/A[k];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$A[k]$|; + +$key = q/{displaymath}g(x)=e^{-x^2}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+g(x) = e ^ {- x ^ 2}
+\end{displaymath}|; + +$key = q/{displaymath}x[n]=8p[n]-8p[n-{Nover2}]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+x[n] = 8 p[n] - 8 p[n-{N \over 2}]
+\end{displaymath}|; + +$key = q/40;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$40$|; + +$key = q/n=0,ldots,N-1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$n=0,\ldots,N-1$|; + +$key = q/{figure}{psfig{file=figsslashfig09.13.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig09.13.ps}\end{figure}|; + +$key = q/{displaymath}y[t+tauslash4]=y[t]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+y[t + \tau/4] = y[t]
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig08.31.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig08.31.ps}\end{figure}|; + +$key = q/{figure}{psfig{file=figsslashfig10.01.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig10.01.ps}\end{figure}|; + +$key = q/{displaymath}H(overline{Z})=overline{H(Z)}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+H(\overline{Z}) = \overline{H(Z)}
+\end{displaymath}|; + +$key = q/-1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$-1$|; + +$key = q/{figure}{psfig{file=figsslashfig03.11.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig03.11.ps}\end{figure}|; + +$key = q/2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$2$|; + +$key = q/fbox{texttt{catch~}};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ \texttt{catch\ }}|; + +$key = q/{displaymath}f={{t-p}overc}={{{{2^{hslash12}}}-p}overc}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+f = {{t - p} \over c} = {{{{2 ^ {h/12}}} - p} \over c}
+\end{displaymath}|; + +$key = q/{displaymath}X[n]={A_0}{{left[{U^0}right]}^{n}}+{A_1}{{left[{U^1}right]}^{n}}+cdots+{A_{N-1}}{{left[{U^{N-1}}right]}^{n}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+X[n] =
+{A_0}{{\left [ {U^0} \right ]} ^ {n}}
++ {A_1}{{\l...
+...n}}
++ \cdots
++ {A_{N-1}}{{\left [ {U^{N-1}} \right ]} ^ {n}}
+\end{displaymath}|; + +$key = q/{displaymath}={{(VZ)}^{0}}X[0]+{{(VZ)}^{1}}X[1]+cdots+{{(VZ)}^{N-1}}X[N-1]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+=
+{{(VZ)} ^ {0}} X[0] +
+{{(VZ)} ^ {1}} X[1] +
+\cdots +
+{{(VZ)} ^ {N-1}} X[N-1]
+\end{displaymath}|; + +$key = q/+a;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$+a$|; + +$key = q/{displaymath}b=mathrm{im}(Z){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+b = \mathrm{im}(Z)
+\end{displaymath}|; + +$key = q/sin({theta_1})sin({theta_2});MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\sin({\theta_1}) \sin({\theta_2})$|; + +$key = q/p{c_1}+q{c_2};MSF=1.6;AAT/; +$cached_env_img{$key} = q|$p
+{c_1} + q {c_2}$|; + +$key = q/-54;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$-54$|; + +$key = q/{displaymath}array{{lll}{angleS[0,2]=phi+pi}&{angleS[0,3]=phi}&{angleS[0,4]=phi+eS[2,3]=phi+2Halpha}&{angleS[2,4]=phi+2Halpha+pi}array{{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\begin{array}{lll}
+{\angle S[0, 2] = \phi + \pi} &
+{\angl...
+...ha} &
+{\angle S[2, 4] = \phi + 2H\alpha + \pi}\\\\
+\end{array}\end{displaymath}|; + +$key = q/685600slash440=1558;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$685600/440=1558$|; + +$key = q/fbox{{mathrm{r}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $\mathrm{r}\sim$ }|; + +$key = q/{calFT}left{X[n]right}(k);MSF=1.6;AAT/; +$cached_env_img{$key} = q|${\cal FT} \left \{ X[n] \right \} (k)$|; + +$key = q/{displaymath}M(k)={left[{{1over2}{D_N}(k)+{1over4}{D_N}(k+1)+{1over4}{D_N}(k-1)}right]}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+M(k) =
+{\left [ {
+{1\over 2}{D_N}(k)
++ {1\over 4}{D_N}(k + 1)
++ {1\over 4}{D_N}(k - 1)
+} \right ] }
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig02.07.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig02.07.ps}\end{figure}|; + +$key = q/{displaymath}Y[n]=X[n-d]=A{Z^{(n-d)}}={Z^{-d}}A{Z^n}={Z^{-d}}X[n]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+Y[n] = X[n-d] = A {Z^{(n-d)}} = {Z^{-d}} A {Z^n} = {Z^{-d}} X[n]
+\end{displaymath}|; + +$key = q/{displaymath}{Z^n}+{Z^{-d}}{Z^n}=(1+{Z^{-d}}){Z^n}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{Z^n} + {Z^{-d}} {Z^n} = (1 + {Z^{-d}}) {Z^n}
+\end{displaymath}|; + +$key = q/-pislash2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$-\pi/2$|; + +$key = q/fbox{{mathrm{czero_rev}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{$\mathrm{czero\_rev}\sim$}|; + +$key = q/fbox{{mathrm{vline}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $\mathrm{vline}\sim$}|; + +$key = q/1slashe;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$1/e$|; + +$key = q/{displaymath}ldots,t[0],t[1],t[2],ldots{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\ldots , t[0], t[1], t[2], \ldots
+\end{displaymath}|; + +$key = q/{displaymath}mathrm{RT}={{-3d}over{{log_{10}}(g)}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\mathrm{RT} = {{-3d} \over {{\log_{10}}(g) }}
+\end{displaymath}|; + +$key = q/f(x)=cos(x);MSF=1.6;AAT/; +$cached_env_img{$key} = q|$f(x) = \cos(x)$|; + +$key = q/{displaymath}{x_{50}}[n]={b_0}+{b_1}cosleft(omegan+{theta_1}right)+{b_2}cosleft(2omegan+{theta_2}right)+cdots{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{x_{50}}[n] = {b_0} +
+{b_1} \cos \left ( \omega n + {\thet...
+...
+{b_2} \cos \left ( 2 \omega n + {\theta_2} \right ) + \cdots
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig08.33.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig08.33.ps}\end{figure}|; + +$key = q/fbox{{mathrm{receive}{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $ \mathrm{receive} $}|; + +$key = q/{displaymath}x[n]=cos(omega_cn+acos(omega_mn)+bcos(omega_pn)){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+x[n] = \cos(\omega_c n + a \cos(\omega_m n) + b \cos(\omega_p n))
+\end{displaymath}|; + +$key = q/fbox{texttt{fiddle~}};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ \texttt{fiddle\ }}|; + +$key = q/t=nslashR;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$t = n/R$|; + +$key = q/alpha=0;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\alpha =0$|; + +$key = q/{displaymath}X[n]+Y[n]=(A+B){Z^n}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+X[n] + Y[n] = (A+B) {Z^n}
+\end{displaymath}|; + +$key = q/e^x;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$e^x$|; + +$key = q/1,WZ,{{(WZ)}^2},ldots;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$1, WZ, {{(WZ)}^2}, \ldots$|; + +$key = q/{displaymath}{x^4}[n]={1over8}cos(-2omegan)+{3over8}cos(0)+{3over8}cos(2omegan)+{1over8}cos(4omegan){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{x^4}[n] = {1 \over 8} \cos (-2\omega n) + {3 \over 8} \cos...
+... {3 \over 8} \cos (2 \omega n) + {1 \over 8} \cos (4 \omega n)
+\end{displaymath}|; + +$key = q/R(Z)=-Z^2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$R(Z) = -Z^2$|; + +$key = q/{displaymath}={V^{0}}X[0]+{V^{1}}ZX[1]+cdots+{V^{N-1}}{Z^{N-1}}X[N-1]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+=
+{V ^ {0}} X[0] +
+{V ^ {1}} Z X[1] +
+\cdots +
+{V ^ {N-1}} {Z^{N-1}} X[N-1]
+\end{displaymath}|; + +$key = q/fbox{{mathrm{outlet}{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $\mathrm{outlet}$ }|; + +$key = q/-pi;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$-\pi$|; + +$key = q/omega=phi=0;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\omega = \phi = 0$|; + +$key = q/1slash(1-p);MSF=1.6;AAT/; +$cached_env_img{$key} = q|$1/(1-p)$|; + +$key = q/{figure}{psfig{file=figsslashfig08.24.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig08.24.ps}\end{figure}|; + +$key = q/{displaymath}f(n)=1,,,,,,,n=,,ldots,-1,0,1,ldots{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+f(n) = 1   ,           n =     \ldots, -1, 0, 1, \ldots
+\end{displaymath}|; + +$key = q/d=omega;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$d = \omega$|; + +$key = q/P_i;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$P_i$|; + +$key = q/fbox{{mathrm{send}{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $\mathrm{send}$}|; + +$key = q/{figure}{psfig{file=figsslashfig05.14.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig05.14.ps}\end{figure}|; + +$key = q/phi;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\phi$|; + +$key = q/{displaymath}20{mathrm{RT}overd}{log_{10}}(g)=-60{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+20 {\mathrm{RT}\over d} {\log_{10}}( g ) = -60
+\end{displaymath}|; + +$key = q/{displaymath}{H_1}(Z)approxi{H_2}(Z),;0|; + +$key = q/n=5;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$n=5$|; + +$key = q/fbox{texttt{noise~}};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ \texttt{noise\ }}|; + +$key = q/fbox{{mathrm{bang}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{$\mathrm{bang}\sim$}|; + +$key = q/{figure}{psfig{file=figsslashfig04.13.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig04.13.ps}\end{figure}|; + +$key = q/{displaymath}{calFT}{x[n-1]}=left[cos(komega)-isin(komega)right]{calFT}{x[n]}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{\cal FT}\{ x[n-1] \} =
+\left [ \cos(k \omega) - i \sin (k \omega) \right ]
+{\cal FT}\{ x[n] \}
+\end{displaymath}|; + +$key = q/-pilephilepi;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$-\pi \le \phi \le \pi$|; + +$key = q/{displaymath}=(cos(omegadslash2)+isin(omegadslash2))+(cos(omegadslash2)-isin(omegadslash2)){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+= (\cos(\omega d / 2) + i \sin(\omega d / 2)) +
+(\cos(\omega d / 2) - i \sin(\omega d / 2))
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig10.02.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig10.02.ps}\end{figure}|; + +$key = q/mH;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$mH$|; + +$key = q/{figure}{psfig{file=figsslashfig02.03.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig02.03.ps}\end{figure}|; + +$key = q/{figure}{psfig{file=figsslashfig07.16.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig07.16.ps}\end{figure}|; + +$key = q/1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$1$|; + +$key = q/alpha=pislash2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\alpha = \pi/2$|; + +$key = q/{displaymath}x(phi)=T(cphi)*W(aphi),{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+x(\phi) = T (c \phi) * W (a \phi),
+\end{displaymath}|; + +$key = q/mH+n;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$mH+n$|; + +$key = q/w;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$w$|; + +$key = q/{displaymath}Y=XZ{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+Y = XZ
+\end{displaymath}|; + +$key = q/{displaymath}{{x[n]}^2}={{a^2}over2}left(cos(2alphan)+1right){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{{x[n]}^2} = {{a^2}\over 2} \left ( \cos(2 \alpha n) + 1 \right )
+\end{displaymath}|; + +$key = q/{displaymath}AcdotH(Z)cdot{Z^n}+overline{A}cdotoverline{H(Z)}cdot{{overline{Z}}^n}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+A \cdot H(Z) \cdot {Z^n} +
+\overline{A} \cdot \overline{H(Z)} \cdot {{\overline{Z}}^n}
+\end{displaymath}|; + +$key = q/16cdot44100=705600;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$16\cdot 44100 =
+705600$|; + +$key = q/S[m,k]=C[m];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$S[m, k] = C[m]$|; + +$key = q/{displaymath}cos(6omegan){M_a}(omegan){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\cos(6 \omega n) {M_a}(\omega n)
+\end{displaymath}|; + +$key = q/{displaymath}x[n+1]-x[n]={foverR}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+x[n+1] - x[n] = {f \over R}
+\end{displaymath}|; + +$key = q/m[k];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$m[k]$|; + +$key = q/a=|T'[k]|;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$a = \vert T'[k]\vert$|; + +$key = q/(0,ldots,0);MSF=1.6;AAT/; +$cached_env_img{$key} = q|$(0, \ldots, 0)$|; + +$key = q/|U|=1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\vert U\vert=1$|; + +$key = q/fbox{{mathrm{loadbang}{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $\mathrm{loadbang}$ }|; + +$key = q/{displaymath}beta*(beta+2omega){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\beta * (\beta + 2 \omega)
+\end{displaymath}|; + +$key = q/{displaymath}f(x)={f_0}+{f_1}x+{f_2}{x^2}+{f_3}{x^3}+cdots{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+f(x) = {f_0} + {f_1}x + {f_2}{x^2} + {f_3}{x^3} + \cdots
+\end{displaymath}|; + +$key = q/{displaymath}{Z_2}={r_2}cdotleft[cos({theta_2})+isin({theta_2})right]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{Z_2} = {r_2} \cdot \left [ \cos({\theta_2}) + i \sin({\theta_2}) \right ]
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig10.14.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig10.14.ps}\end{figure}|; + +$key = q/P=Q;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$P=Q$|; + +$key = q/{displaymath}T'[k]={calFT}(W(n)X[n+H])(k){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+T'[k] = {\cal FT}(W(n)X[n+H]) (k)
+\end{displaymath}|; + +$key = q/1slash100;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$1/100$|; + +$key = q/{figure}{psfig{file=figsslashfig04.04.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig04.04.ps}\end{figure}|; + +$key = q/{figure}{psfig{file=figsslashfig06.06.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig06.06.ps}\end{figure}|; + +$key = q/{figure}{psfig{file=figsslashfig09.11.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig09.11.ps}\end{figure}|; + +$key = q/{figure}{psfig{file=figsslashfig04.11.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig04.11.ps}\end{figure}|; + +$key = q/{displaymath}beta=2arctan(r){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\beta = 2 \arctan (r)
+\end{displaymath}|; + +$key = q/p=1-beta;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$p = 1 - \beta$|; + +$key = q/{displaymath}{{1}over{1-P{Z^{-1}}}}{Z^n}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{{1} \over {1 - P {Z^{-1}}}} {Z^n}
+\end{displaymath}|; + +$key = q/omega=pislash10;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\omega = \pi/10$|; + +$key = q/Z^d;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$Z^d$|; + +$key = q/f[k];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$f[k]$|; + +$key = q/{displaymath}a[k]={1over{{pi^2}(MslashN-2{{(MslashN)}^2})}}cdot{{sin(2pikMslashN)}over{k^2}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+a[k] = {1 \over {{\pi ^ 2} (M/N - 2{{(M/N)}^2})}}
+\cdot {{\sin (2 \pi k M / N) } \over {k^2}}
+\end{displaymath}|; + +$key = q/d=pislashomega;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$d=\pi/\omega$|; + +$key = q/fbox{{mathrm{delwrite}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{$\mathrm{delwrite}\sim$}|; + +$key = q/0leqk|; + +$key = q/{figure}{psfig{file=figsslashfig09.12.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig09.12.ps}\end{figure}|; + +$key = q/{displaymath}cos(komega)approx1;,;sin(komega)approxkomega{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\cos(k \omega) \approx 1 \; , \; \sin(k \omega) \approx k \omega
+\end{displaymath}|; + +$key = q/dslashR;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$d/R$|; + +$key = q/z[0];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$z[0]$|; + +$key = q/{displaymath}P{x[n]+y[n]}=P{x[n]}+P{y[n]},hspace{0.1in}mathrm{whenever}{mathrm{COV}}{x[n],y[n]}=0{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+P \{x[n] + y[n]\} = P \{x[n]\} + P \{y[n]\} , \hspace{0.1in}
+\mathrm{whenever}
+ {\mathrm{COV}} \{ x[n] , y[n] \} = 0
+\end{displaymath}|; + +$key = q/{displaymath}f={{2^{hslash12}R}overN}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+f = {{2^{h/12} R} \over N}
+\end{displaymath}|; + +$key = q/pislash4;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\pi /4$|; + +$key = q/gle1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$g \le 1$|; + +$key = q/s=c=sqrt{1slash2};MSF=1.6;AAT/; +$cached_env_img{$key} = q|$s = c = \sqrt{1/2}$|; + +$key = q/{f_2}=1slash2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|${f_2}=1/2$|; + +$key = q/{displaymath}x[n]=acos(alphan)+bcos(betan){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+x[n] = a \cos(\alpha n) + b \cos(\beta n)
+\end{displaymath}|; + +$key = q/{displaymath}a[n]=mathrm{re}left[{{1over{1-{P}{Z^{-1}}}}{A{Z^n}+{1over{1-{P}{Z}}}overline{A}{Z^{-n}}}}right]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+a[n] =
+\mathrm{re} \left[ {
+{1 \over {1 - {P}{Z^{-1}}}} {...
+...n} +
+{1 \over {1 - {P}{Z}}} \overline{A}{Z^{-n}}}
+} \right ]
+\end{displaymath}|; + +$key = q/{displaymath}{(1-{r^2})-2ri}over{1+{r^2}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{ (1 - {r^2}) - 2 r i }
+\over
+{ 1 + {r^2} }
+\end{displaymath}|; + +$key = q/y[1];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$y[1]$|; + +$key = q/r=infty;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$r=\infty$|; + +$key = q/T'[k];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$T'[k]$|; + +$key = q/{figure}{psfig{file=figsslashfig02.01.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig02.01.ps}\end{figure}|; + +$key = q/{figure}{psfig{file=figsslashfig10.13.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig10.13.ps}\end{figure}|; + +$key = q/1slashn;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$1/n$|; + +$key = q/X''[n];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$X''[n]$|; + +$key = q/kge0;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$k \ge 0$|; + +$key = q/kcdotx[n];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$k \cdot x[n]$|; + +$key = q/2M;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$2M$|; + +$key = q/{displaymath}angle(Z)=mathrm{arctan}{left({bovera}right)}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\angle(Z) = \mathrm{arctan}
+{ \left ( {
+b \over a
+} \right ) }
+\end{displaymath}|; + +$key = q/1000;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$1000$|; + +$key = q/{displaymath}p[n]approx{1over{2{pi^2}}}left[{cos(omegan)}+{{cos(2omegan)}over4}+{{cos(3omegan)}over9}+cdotsright]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+p[n] \approx {1 \over {2 {\pi^2}}} \left [
+{\cos ( \omega ...
+...\over 4}
++ {{\cos ( 3 \omega n)} \over 9}
++ \cdots
+\right ]
+\end{displaymath}|; + +$key = q/{displaymath}{Z^{-d}}=1{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{Z^{-d}} = 1
+\end{displaymath}|; + +$key = q/{displaymath}N={{2^{hslash12}R}overf}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+N = {{2^{h/12} R} \over f}
+\end{displaymath}|; + +$key = q/{displaymath}f={{(t-1)R}overs}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+f = {{(t - 1) R} \over s}
+\end{displaymath}|; + +$key = q/0|; + +$key = q/{displaymath}x[t]=cos(omega_cn)cos(acos(omega_mn))-sin(omega_cn)sin(acos(omega_mn)){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+x[t] = \cos( \omega_c n ) \cos (a \cos(\omega_m n))
+- \sin( \omega_c n ) \sin (a \cos(\omega_m n))
+\end{displaymath}|; + +$key = q/fbox{{mathrm{select}{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $\mathrm{select}$ }|; + +$key = q/{displaymath}={calFT}left{X[n]right}(k-{{alpha}over{omega}}){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+= {\cal FT} \left \{ X[n] \right \} (k - {{\alpha } \over {\omega}})
+\end{displaymath}|; + +$key = q/{displaymath}+A[N-1](cos(omega(N-1)n)+isin(omega(N-1)n)){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
++ A[N-1](\cos(\omega (N-1) n) + i \sin(\omega (N-1) n))
+\end{displaymath}|; + +$key = q/{displaymath}{Z_1}{Z_2}={r_1}{r_2}cdotleft[cos({theta_1}+{theta_2})+isin({theta_1}+{theta_2})right]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{Z_1}{Z_2} = {r_1}{r_2}
+\cdot \left[ \cos({\theta_1}+{\theta_2})
++ i \sin({\theta_1}+{\theta_2}) \right ]
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig08.18.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig08.18.ps}\end{figure}|; + +$key = q/{displaymath}{y_1}[n]=c{x_1}[n]+s{x_2}[n]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{y_1}[n] = c {x_1}[n] + s {x_2}[n]
+\end{displaymath}|; + +$key = q/C[m];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$C[m]$|; + +$key = q/2pislashd;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$2\pi/d$|; + +$key = q/{omega_c}slashomega;MSF=1.6;AAT/; +$cached_env_img{$key} = q|${\omega_c}/\omega$|; + +$key = q/y[t];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$y[t]$|; + +$key = q/s[k];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$s[k]$|; + +$key = q/{displaymath}S[m,k];=;{{left|{{S[m-1,k]}over{T[k]}}right|}^{-1}};cdot;{{{S[m-1,k]T'[k]}over{T[k]}}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+S[m, k] \; = \;
+{
+{ \left \vert
+{{S[m-1, k]}
+\over
+{...
+...{-1}
+}
+\; \cdot \;
+{
+{{S[m-1, k] T'[k]}
+\over
+{T[k]}}
+}
+\end{displaymath}|; + +$key = q/fbox{{mathrm{s}{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $\mathrm{s}$ }|; + +$key = q/{d_0};MSF=1.6;AAT/; +$cached_env_img{$key} = q|${d_0}$|; + +$key = q/omega=0,2pislashd,4pislashd,ldots;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\omega = 0, 2\pi/d , 4\pi/d , \ldots$|; + +$key = q/{displaymath}+{J_2}(a)cos((omega_c+2omega_m)n+pi)+{J_2}(a)cos((omega_c-2omega_m)n+pi){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
++ {J_2}(a) \cos( (\omega_c+2\omega_m) n + \pi)
++ {J_2}(a) \cos( (\omega_c-2\omega_m) n + \pi)
+\end{displaymath}|; + +$key = q/P=0.8;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$P=0.8$|; + +$key = q/2omega;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$2\omega $|; + +$key = q/N-2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$N-2$|; + +$key = q/{displaymath}y[n]=n-d[n]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+y[n] = n - d[n]
+\end{displaymath}|; + +$key = q/J(Z)=H(R(S(Z)));MSF=1.6;AAT/; +$cached_env_img{$key} = q|$J(Z) = H(R(S(Z)))$|; + +$key = q/{displaymath}{calFT}left{w[n]X[n]right}(k){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{\cal FT} \left \{ w[n] X[n] \right \} (k)
+\end{displaymath}|; + +$key = q/{displaymath}16{x^5}=cos(5omegan)+5cos(3omegan)+10cos(omegan){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+16 {x^5} = \cos (5 \omega n) + 5 \cos(3 \omega n) + 10 \cos(\omega n)
+\end{displaymath}|; + +$key = q/{displaymath}Y[n]={Z^n}X[n]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+Y[n] = {Z^n} X[n]
+\end{displaymath}|; + +$key = q/{displaymath}f(-x)=-f(x){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+f(-x) = -f(x)
+\end{displaymath}|; + +$key = q/Nslash2M;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$N/2M$|; + +$key = q/dslash2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$d/2$|; + +$key = q/{figure}{psfig{file=figsslashfig05.08.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig05.08.ps}\end{figure}|; + +$key = q/A,AZ,A{Z^2},ldots;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$A, AZ, A{Z^2}, \ldots$|; + +$key = q/{displaymath}x[n]={d_1}s[n-{L_1}]+cdots+{d_j}s[n-{L_j}]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+x[n] = {d_1} s[n - {L_1}] + \cdots + {d_j} s[n - {L_j}]
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig10.07.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig10.07.ps}\end{figure}|; + +$key = q/Rslash2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$R/2$|; + +$key = q/{figure}{psfig{file=figsslashfig03.16.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig03.16.ps}\end{figure}|; + +$key = q/{displaymath}X[n]={1overN}{calFT}left{Y[k]right}(-n){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+X[n] = {1 \over N} {\cal FT} \left \{ Y[k] \right \} (-n)
+\end{displaymath}|; + +$key = q/{displaymath}{Z^n}=cos(nomega)+isin(nomega){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{Z^n} = \cos(n\omega) + i \sin(n \omega)
+\end{displaymath}|; + +$key = q/{displaymath}m=ldots-2,-1,0,1,2,ldots{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+m = \ldots -2, -1, 0, 1, 2, \ldots
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig07.22.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig07.22.ps}\end{figure}|; + +$key = q/{displaymath}S(cos(omega)+isin(omega))=i{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+S(\cos(\omega) + i \sin(\omega)) = i
+\end{displaymath}|; + +$key = q/aslash2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$a/2$|; + +$key = q/{displaymath}{fbox{texttt{delread~}}{longrightarrowx[N],ldots,x[N+B-1]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\fbox{\texttt{delread\ }} \longrightarrow x[N], \ldots, x[N+B-1]
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig06.15.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig06.15.ps}\end{figure}|; + +$key = q/{figure}{psfig{file=figsslashfig02.14.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig02.14.ps}\end{figure}|; + +$key = q/0len|; + +$key = q/a=mathop{mathgroupsymoperatorscos}nolimits(theta)=mathop{mathgroupsymoperatorssin}nolimits(theta)=sqrt{1slash2}approx0.7071;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$a = \mathop {\mathgroup \symoperators cos}\nolimits (\theta ) = \mathop {\mathgroup \symoperators sin}\nolimits (\theta ) = \sqrt {1/2} \approx 0.7071$|; + +$key = q/{figure}{psfig{file=figsslashfig08.27.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig08.27.ps}\end{figure}|; + +$key = q/fbox{{mathrm{stripnote}{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $\mathrm{stripnote}$}|; + +$key = q/{figure}{psfig{file=figsslashfig10.03.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig10.03.ps}\end{figure}|; + +$key = q/{displaymath}omega_c+3omega_m+komega_p,k=0,pm1,pm2,ldots{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\omega_c+3\omega_m + k \omega_p , k = 0, \pm 1, \pm 2, \ldots
+\end{displaymath}|; + +$key = q/{displaymath}{a_0}={a_0}cos(0cdotomegan),{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{a_0} = {a_0}\cos(0 \cdot \omega n),
+\end{displaymath}|; + +$key = q/omega=alpha;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\omega = \alpha$|; + +$key = q/@mathrm{fft}sim;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\@mathrm {fft}\sim $|; + +$key = q/{figure}{psfig{file=figsslashfig03.06.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig03.06.ps}\end{figure}|; + +$key = q/{displaymath}cos(a)cos(b)={1over2}{left[{parbox[t][0.1in]{0in}{mbox{}}{cos(a+b)+cos(a-b)right]}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\cos(a) \cos (b) = {1 \over 2}
+{ \left [
+\parbox[t][0.1in]{0in}{\mbox{}}
+\cos (a+b) + \cos(a-b)
+\right ] }
+\end{displaymath}|; + +$key = q/{displaymath}f(x)=cos(x)cos(phi)-sin(x)sin(phi){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+f(x) = \cos(x) \cos(\phi) - \sin(x) \sin(\phi)
+\end{displaymath}|; + +$key = q/T'[k+1];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$T'[k+1]$|; + +$key = q/V={U^{-k}};MSF=1.6;AAT/; +$cached_env_img{$key} = q|$V = {U^{-k}}$|; + +$key = q/{sqrt2}a;MSF=1.6;AAT/; +$cached_env_img{$key} = q|${\sqrt 2} a$|; + +$key = q/{displaymath}f(x)=cos(x+phi){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+f(x) = \cos(x + \phi)
+\end{displaymath}|; + +$key = q/{theta_1}+{theta_2};MSF=1.6;AAT/; +$cached_env_img{$key} = q|${\theta_1}+{\theta_2}$|; + +$key = q/{figure}{psfig{file=figsslashfig08.19.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig08.19.ps}\end{figure}|; + +$key = q/a=b;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$a=b$|; + +$key = q/{figure}{psfig{file=figsslashfig09.01.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig09.01.ps}\end{figure}|; + +$key = q/|X|=|Y|;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\vert X\vert = \vert Y\vert$|; + +$key = q/{displaymath}s[n]-s[n-1]=-{1overN}+left{array{{ll}{1}&{n=0}0&mbox{otherwise}array{right.{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+s[n] - s[n-1] = -{1 \over N} +
+\left \{
+\begin{array}{ll}
+{1} & {n = 0} \\\\
+0 & \mbox{otherwise}
+\end{array} \right .
+\end{displaymath}|; + +$key = q/f(x)=x^k;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$f(x) = x^k$|; + +$key = q/k=0,ldots,N-1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$k=0,
+\ldots, N-1$|; + +$key = q/angle(ZW);MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\angle(ZW)$|; + +$key = q/{displaymath}approx-s[n]slashN.{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\approx - s[n] / N .
+\end{displaymath}|; + +$key = q/fbox{texttt{vcf~}};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ \texttt{vcf\ }}|; + +$key = q/{displaymath}A{Z^n}+overline{A}{Z^{-n}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+A{Z^n} + \overline{A}{Z^{-n}}
+\end{displaymath}|; + +$key = q/X[N-n];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$X[N-n]$|; + +$key = q/2n;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$2n$|; + +$key = q/{figure}{psfig{file=figsslashfig05.13.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig05.13.ps}\end{figure}|; + +$key = q/{figure}{psfig{file=figsslashfig07.18.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig07.18.ps}\end{figure}|; + +$key = q/fbox{texttt{q8_rsqrt~}};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{\texttt{q8\_rsqrt\ }}|; + +$key = q/{displaymath}V=cos(-komega)+isin(-komega){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+V = \cos(-k\omega) + i\sin(-k\omega)
+\end{displaymath}|; + +$key = q/{displaymath}={V^{0}}X[-d]+{V^{1}}X[-d+1]+cdots+{V^{N-1}}X[-d+N-1]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+=
+{V ^ {0}} X[-d] +
+{V ^ {1}} X[-d+1] +
+\cdots +
+{V ^ {N-1}} X[-d+N-1]
+\end{displaymath}|; + +$key = q/X[n]=1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$X[n]=1$|; + +$key = q/X[-m];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$X[-m]$|; + +$key = q/{figure}{psfig{file=figsslashfig05.02.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig05.02.ps}\end{figure}|; + +$key = q/s'[n]=ds[n-L];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$s'[n] = d s[n-L]$|; + +$key = q/omega_c;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\omega_c$|; + +$key = q/fbox{{mathrm{expr}{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $\mathrm{expr}$ }|; + +$key = q/{figure}{psfig{file=figsslashfig08.28.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig08.28.ps}\end{figure}|; + +$key = q/{displaymath}{AZ^n}=acdot[cos(nomega+phi)+isin(nomega+phi)]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{AZ^n} = a \cdot [\cos(n \omega + \phi) + i \sin(n \omega + \phi)]
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig08.17.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig08.17.ps}\end{figure}|; + +$key = q/H_2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$H_2$|; + +$key = q/{displaymath}{P_1}=pcdot(cosomega+isinomega){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{P_1} = p \cdot (\cos \omega + i \sin \omega)
+\end{displaymath}|; + +$key = q/n-d[n];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$n - d[n]$|; + +$key = q/N+2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$N+2$|; + +$key = q/{displaymath}f(acdotx[n])={f_0}+a{f_1}cos(omegan)+{a^2}{f_2}{cos^2}(omegan)+{a^3}{f_3}{cos^3}(omegan)+cdots{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+f(a \cdot x[n]) = {f_0} + a {f_1}\cos(\omega n) + {a^2} {f_...
+...\cos^2} (\omega n)
++ {a^3} {f_3} {\cos^3} (\omega n) + \cdots
+\end{displaymath}|; + +$key = q/T;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$T$|; + +$key = q/{displaymath}{H_1}(Z)approx-i{H_2}(Z),;-pi|; + +$key = q/{displaymath}{calFT}left{X[n-d]right}(k)=left({{parbox[t][0.1in]{0in}{mbox{}}{codkomega)+isin(-dkomega)}right){calFT}left{X[n]right}(k){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{\cal FT} \left \{ X[n-d] \right \} (k) =
+\left ( {
+\par...
+...-dk\omega)
+} \right )
+{\cal FT} \left \{ X[n] \right \} (k)
+\end{displaymath}|; + +$key = q/fbox{{mathrm{env}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $\mathrm{env}\sim$}|; + +$key = q/k=pm1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$k = \pm 1$|; + +$key = q/{displaymath}+A[N-1](cos(omega(N-1)n)-isin(omega(N-1)n)){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
++ A[N-1](\cos(\omega (N-1) n) - i \sin(\omega (N-1) n))
+\end{displaymath}|; + +$key = q/fbox{{mathrm{throwsim}{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{$\mathrm{throw\sim}$}|; + +$key = q/2|; + +$key = q/{displaymath}{a_1}=y[{x_0}+1]-y[{x_0}]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{a_1} = y[{x_0} + 1]- y[{x_0}]
+\end{displaymath}|; + +$key = q/{displaymath}=angleleft({{S[m-1,k]T'[k]}over{T[k]}}right){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+= \angle \left (
+{{S[m-1, k] T'[k]}
+\over
+{T[k]}}
+\right )
+\end{displaymath}|; + +$key = q/2pislash10;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$2\pi /10$|; + +$key = q/{figure}{psfig{file=figsslashfig03.08.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig03.08.ps}\end{figure}|; + +$key = q/{displaymath}+ableft[cos((alpha+beta)n)+cos((alpha-beta)n)right]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
++ a b \left [
+\cos ( (\alpha + \beta) n ) + \cos ( (\alpha - \beta) n )
+\right ]
+\end{displaymath}|; + +$key = q/{displaymath}X[n]=Z^n{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+X[n] = Z^n
+\end{displaymath}|; + +$key = q/{displaymath}X[n]=A{Z^n},Y[n]=B{Z^n}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+X[n] = A {Z^n} ,  Y[n] = B {Z^n}
+\end{displaymath}|; + +$key = q/({x_1},{x_2});MSF=1.6;AAT/; +$cached_env_img{$key} = q|$({x_1}, {x_2})$|; + +$key = q/fbox{texttt{bang~}};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{\texttt{bang\ }}|; + +$key = q/{displaymath}x[t]=cos(omega_cn+acos(omega_mn)){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+x[t] = \cos( \omega_c n + a \cos(\omega_m n))
+\end{displaymath}|; + +$key = q/aslash{sqrt2};MSF=1.6;AAT/; +$cached_env_img{$key} = q|$a / {\sqrt 2}$|; + +$key = q/Z;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$Z$|; + +$key = q/{displaymath}x[n]=c(omegan){m_a}(omegan){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+x[n] = c(\omega n) {m_a}(\omega n)
+\end{displaymath}|; + +$key = q/S[m,k+1];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$S[m,k+1]$|; + +$key = q/{displaymath}x[n]approx{1overpi}left[{sin(omegan)}+{{sin(2omegan)}over2}+{{sin(3omegan)}over3}+cdotsright.{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+x[n] \approx {1 \over \pi} \left [
+{\sin ( \omega n )}
++ ...
+...\over 2}
++ {{\sin ( 3 \omega n)} \over 3}
++ \cdots
+\right .
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig01.12.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig01.12.ps}\end{figure}|; + +$key = q/{figure}{psfig{file=figsslashfig04.05.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig04.05.ps}\end{figure}|; + +$key = q/{figure}{psfig{file=figsslashfig02.06.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig02.06.ps}\end{figure}|; + +$key = q/X[-n]=-X[n];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$X[-n] = -X[n]$|; + +$key = q/f(x)=sin(x);MSF=1.6;AAT/; +$cached_env_img{$key} = q|$f(x) = \sin(x)$|; + +$key = q/S[m,k];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$S[m, k]$|; + +$key = q/{displaymath}f(x[n])={{a^2}over2}left(1+cos(2omegan+2phi)right){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+f(x[n]) = {{a^2} \over 2} \left ( 1 + \cos(2 \omega n + 2 \phi) \right )
+\end{displaymath}|; + +$key = q/{displaymath}{2over{5pi}}-{1over2}[{2over{3pi}}+{2over{7pi}}]approx-32.30mathrm{dB}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{2 \over {5 \pi}} - {1\over 2} [ {2 \over {3 \pi}} + {2 \over {7 \pi}} ]
+\approx -32.30 \mathrm{dB}
+\end{displaymath}|; + +$key = q/k=3slash2,5slash2,ldots;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$k = 3/2, 5/2, \ldots$|; + +$key = q/{displaymath}f=440cdot{{2}^{(m-69)slash12}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+f = 440 \cdot {{2} ^ {(m - 69) / 12}}
+\end{displaymath}|; + +$key = q/{displaymath}{{left(1-{1overn}right)}^n}approx{1overe}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{ {\left ( 1-{1\over n} \right ) } ^ n } \approx {1\over e}
+\end{displaymath}|; + +$key = q/{displaymath}t=1-{{sf}overR}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+t = 1 - {{sf} \over R}
+\end{displaymath}|; + +$key = q/Z^-d;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$Z^-d$|; + +$key = q/{figure}{psfig{file=figsslashfig08.26.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig08.26.ps}\end{figure}|; + +$key = q/theta;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\theta$|; + +$key = q/{figure}{psfig{file=figsslashfig08.16.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig08.16.ps}\end{figure}|; + +$key = q/pislash2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\pi /2$|; + +$key = q/Y;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$Y$|; + +$key = q/{figure}{psfig{file=figsslashfig08.05.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig08.05.ps}\end{figure}|; + +$key = q/{displaymath}x[n]=acdotcos(alphan){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+x[n] = a \cdot \cos(\alpha n)
+\end{displaymath}|; + +$key = q/H_1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$H_1$|; + +$key = q/({L_2},{d_2})=(0.6N,1.3);MSF=1.6;AAT/; +$cached_env_img{$key} = q|$({L_2}, {d_2}) = (0.6N, 1.3)$|; + +$key = q/{Z^{-d}};MSF=1.6;AAT/; +$cached_env_img{$key} = q|${Z^{-d}}$|; + +$key = q/R'[k];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$R'[k]$|; + +$key = q/{displaymath}alpha={{angleS[1,3]-angleS[0,3]+2ppi}overH}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\alpha = {{\angle S[1, 3] - \angle S[0, 3] + 2 p \pi} \over H}
+\end{displaymath}|; + +$key = q/{displaymath}{calFT}left{X[n]right}(k)={V^{0}}X[0]+{V^{1}}X[1]+cdots+{V^{N-1}}X[N-1]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{\cal FT}\left \{ X[n] \right \} (k) =
+{V ^ {0}} X[0] +
+{V ^ {1}} X[1] +
+\cdots +
+{V ^ {N-1}} X[N-1]
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig01.05.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig01.05.ps}\end{figure}|; + +$key = q/{figure}{psfig{file=figsslashfig03.02.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig03.02.ps}\end{figure}|; + +$key = q/{displaymath}sin(acos(omega_mn)){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\sin(a \cos(\omega_m n))
+\end{displaymath}|; + +$key = q/1slasha;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$1/a$|; + +$key = q/X[n];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$X[n]$|; + +$key = q/eapprox2.7;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$e \approx 2.7$|; + +$key = q/R;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$R$|; + +$key = q/{a^2}{f_2};MSF=1.6;AAT/; +$cached_env_img{$key} = q|${a^2}{f_2}$|; + +$key = q/{figure}{psfig{file=figsslashfig09.10.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig09.10.ps}\end{figure}|; + +$key = q/{figure}{psfig{file=figsslashfig07.33.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig07.33.ps}\end{figure}|; + +$key = q/{displaymath}=mathrm{re}left[{{{1-mathrm{re}(P){Z^{-1}}}over{(1-{P}{Z^{-1}})(1-{ne{Z}}^{-1}})}}{overline{A}{{overline{Z}}^{-n}}}}right]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+=
+\mathrm{re} \left[ {
+{{
+1 - \mathrm{re} (P) {Z^{-1}}
+...
+...}}^{-1}})
+}}
+{\overline{A}{{\overline{Z}}^{-n}}}
+} \right ]
+\end{displaymath}|; + +$key = q/1,1slash2,1slash3,ldots,1slashb;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$1, 1/2, 1/3, \ldots, 1/b$|; + +$key = q/{displaymath}=cos((omega-pi)n+phi){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+= \cos((\omega - \pi)n + \phi)
+\end{displaymath}|; + +$key = q/f,3f,ldots;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$f, 3f, \ldots$|; + +$key = q/{figure}{psfig{file=figsslashfig09.18.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig09.18.ps}\end{figure}|; + +$key = q/{displaymath}16{x^5}-20{x^3}+5x=cos(5omegan){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+16 {x^5} - 20 {x^3} + 5 x = \cos (5 \omega n)
+\end{displaymath}|; + +$key = q/{displaymath}x[n]=acdotcos(alphan)+bcdotcos(betan){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+x[n] = a \cdot \cos(\alpha n) + b \cdot \cos(\beta n)
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig03.04.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig03.04.ps}\end{figure}|; + +$key = q/{displaymath}+{b_0}+{b_1}cosleft(omegan+pi+{theta_1}right)+{b_2}cosleft(2omegan+2pi+{theta_2}right)+cdots{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
++
+{b_0} +
+{b_1} \cos \left ( \omega n + \pi + {\theta_1} ...
+...\cos \left ( 2 \omega n + 2 \pi + {\theta_2} \right ) + \cdots
+\end{displaymath}|; + +$key = q/x[n]=1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$x[n] = 1$|; + +$key = q/sqrt{1slash2};MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\sqrt{1/2}$|; + +$key = q/omega=2pislashN;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\omega=2\pi/N$|; + +$key = q/{figure}{psfig{file=figsslashfig03.07.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig03.07.ps}\end{figure}|; + +$key = q/R';MSF=1.6;AAT/; +$cached_env_img{$key} = q|$R'$|; + +$key = q/{figure}{psfig{file=figsslashfig09.06.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig09.06.ps}\end{figure}|; + +$key = q/c(phi)=1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$c(\phi) = 1$|; + +$key = q/|S[m,k]|;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\vert S[m, k]\vert$|; + +$key = q/(Nslash2,-8);MSF=1.6;AAT/; +$cached_env_img{$key} = q|$(N/2, -8)$|; + +$key = q/af_1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$af_1$|; + +$key = q/{displaymath}{(1-{r^2})-(2rsin(alpha))i}over{1+{r^2}+2rcos(alpha))}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{ (1 - {r^2}) - (2 r \sin(\alpha)) i }
+\over
+{ 1 + {r^2} + 2 r \cos(\alpha))}
+\end{displaymath}|; + +$key = q/{displaymath}x[t+tauslash3]=x[t]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+x[t + \tau/3] = x[t]
+\end{displaymath}|; + +$key = q/{displaymath}d[n]={d_0}+acos(omegan){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+d[n] = {d_0} + a \cos(\omega n)
+\end{displaymath}|; + +$key = q/m=0,ldots,N-1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$m = 0, \ldots, N-1$|; + +$key = q/n=-m;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$n = -m$|; + +$key = q/cos(-domega);MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\cos(-d \omega)$|; + +$key = q/{displaymath}g[m,k]=left{array{{ll}{1-f[k]slash|S[m,k]|}&{|S[m,k]|>f[k]}0&mbox{otherwise}array{right.{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+g[m, k] =
+\left \{
+\begin{array}{ll}
+{1 - f[k]/\vert S[...
+...]\vert > f[k]} \\\\
+0 & \mbox{otherwise}
+\end{array} \right .
+\end{displaymath}|; + +$key = q/omega=pislash2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\omega = \pi / 2$|; + +$key = q/{displaymath}x[n]=s[n]-s[n-{Nover2}]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+x[n] = s[n] - s[n-{N \over 2}]
+\end{displaymath}|; + +$key = q/c[k];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$c[k]$|; + +$key = q/{figure}{psfig{file=figsslashfig04.14.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig04.14.ps}\end{figure}|; + +$key = q/overline{W};MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\overline{W}$|; + +$key = q/{figure}{psfig{file=figsslashfig06.04.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig06.04.ps}\end{figure}|; + +$key = q/omega=arg(Z);MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\omega=\arg(Z)$|; + +$key = q/{figure}{psfig{file=figsslashfig05.16.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig05.16.ps}\end{figure}|; + +$key = q/0,1,...B-1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$0, 1, ... B-1$|; + +$key = q/0lef<1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$0 \le f < 1$|; + +$key = q/{displaymath}{calFT}{s[n]-s[n-1]}(k)=1,;kneq0,;-N|; + +$key = q/{2^m}+3;MSF=1.6;AAT/; +$cached_env_img{$key} = q|${2^m} + 3$|; + +$key = q/{displaymath}{y_{mathrm{INT}}}(x)={displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{y_{\mathrm{INT}}}(x) =
+\end{displaymath}|; + +$key = q/{D_N};MSF=1.6;AAT/; +$cached_env_img{$key} = q|${D_N}$|; + +$key = q/{x_0};MSF=1.6;AAT/; +$cached_env_img{$key} = q|${x_0}$|; + +$key = q/{displaymath}{a_0}=2{b_0},,,{a_1}=2{b_2},,,{a_2}=2{b_4}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{a_0} = 2{b_0},    {a_1} = 2{b_2},    {a_2} = 2{b_4}
+\end{displaymath}|; + +$key = q/(0,8);MSF=1.6;AAT/; +$cached_env_img{$key} = q|$(0, 8)$|; + +$key = q/beta=pislash4;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\beta = \pi /4$|; + +$key = q/{figure}{psfig{file=figsslashfig07.32.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig07.32.ps}\end{figure}|; + +$key = q/D_N;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$D_N$|; + +$key = q/{displaymath}x[1.5]={{-x[0]+9x[1]+9x[2]-x[3]}over8}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+x[1.5] = {{-x[0] + 9x[1] + 9 x[2] - x[3]} \over 8}
+\end{displaymath}|; + +$key = q/N>1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$N>1$|; + +$key = q/fbox{{mathrm{rzero_rev}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{$\mathrm{rzero\_rev}\sim$}|; + +$key = q/{figure}{psfig{file=figsslashfig07.19.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig07.19.ps}\end{figure}|; + +$key = q/{figure}{psfig{file=figsslashfig08.20.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig08.20.ps}\end{figure}|; + +$key = q/-49;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$-49$|; + +$key = q/{displaymath}{calFT}left{Y[n]right}(k)={V^{0}}Y[0]+{V^{1}}Y[1]+cdots+{V^{N-1}}Y[N-1]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{\cal FT} \left \{ Y[n] \right \} (k) =
+{V ^ {0}} Y[0] +
+{V ^ {1}} Y[1] +
+\cdots +
+{V ^ {N-1}} Y[N-1]
+\end{displaymath}|; + +$key = q/a=1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$a=1$|; + +$key = q/{figure}{psfig{file=figsslashfig04.15.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig04.15.ps}\end{figure}|; + +$key = q/{r_1}{r_2};MSF=1.6;AAT/; +$cached_env_img{$key} = q|${r_1}{r_2}$|; + +$key = q/komega;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$k\omega$|; + +$key = q/{displaymath}f(x)={f_0}+{f_1}x+{f_2}{x^2}+cdots,{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+f(x) = {f_0} + {f_1} x + {f_2} {x^2} + \cdots,
+\end{displaymath}|; + +$key = q/U;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$U$|; + +$key = q/2f;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$2f$|; + +$key = q/sin(theta)approxtheta;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\sin(\theta) \approx \theta$|; + +$key = q/cosomega+isinomega;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\cos \omega + i \sin \omega$|; + +$key = q/1+b;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$1+b$|; + +$key = q/{figure}{psfig{file=figsslashfig03.15.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig03.15.ps}\end{figure}|; + +$key = q/{displaymath}Y[n]=(1+g{Z^{-d}}+{g^2}{Z^{-2d}}+cdots)X[n]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+Y[n] = (1 + g{Z^{-d}} + {g^2}{Z^{-2d}} + \cdots) X[n]
+\end{displaymath}|; + +$key = q/omega,2omega,ldots;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\omega, 2 \omega, \ldots$|; + +$key = q/-omega;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$-\omega$|; + +$key = q/nomega+phi;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$n \omega + \phi$|; + +$key = q/{displaymath}T[k]={calFT}(W(n)X[n])(k){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+T[k] = {\cal FT}(W(n)X[n]) (k)
+\end{displaymath}|; + +$key = q/k=-1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$k=-1$|; + +$key = q/Y={y_1}+{y_2}i;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$Y={y_1} + {y_2}i$|; + +$key = q/{figure}{psfig{file=figsslashfig06.02.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig06.02.ps}\end{figure}|; + +$key = q/{displaymath}{{1-{r^2}}over{{(1+r)}^2}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{{1 - {r^2}} \over {{(1 + r)}^2}}
+\end{displaymath}|; + +$key = q/x_{200};MSF=1.6;AAT/; +$cached_env_img{$key} = q|$x_{200}$|; + +$key = q/{displaymath}overline{A}=a-bi=rcdot(cos(alpha)-isin(alpha)){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\overline{A} = a-bi = r \cdot (\cos(\alpha) - i \sin(\alpha))
+\end{displaymath}|; + +$key = q/{displaymath}{2over{3pi}}approx-13mathrm{dB},;{2over{5pi}}approx-18mathrm{dB},;{rox-21mathrm{dB},;{2over{9pi}}approx-23mathrm{dB},ldots{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{2 \over {3 \pi}} \approx -13 \mathrm{dB} , \;
+{2 \over {5...
+...{dB} , \;
+{2 \over {9 \pi}} \approx -23 \mathrm{dB} ,
+\ldots
+\end{displaymath}|; + +$key = q/fbox{{mathrm{vd}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{$\mathrm{vd}\sim$}|; + +$key = q/x[n-d];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$x[n-d]$|; + +$key = q/{figure}{psfig{file=figsslashfig08.30.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig08.30.ps}\end{figure}|; + +$key = q/fbox{texttt{rzero~}};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ \texttt{rzero\ }}|; + +$key = q/{figure}{psfig{file=figsslashfig03.01.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig03.01.ps}\end{figure}|; + +$key = q/angle(Z);MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\angle(Z)$|; + +$key = q/fbox{{mathrm{fft}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{$\mathrm{fft}\sim$}|; + +$key = q/{xi^2}=V;MSF=1.6;AAT/; +$cached_env_img{$key} = q|${\xi^2} = V$|; + +$key = q/{x_{50}}[n];MSF=1.6;AAT/; +$cached_env_img{$key} = q|${x_{50}}[n]$|; + +$key = q/{Z^{dslash2}};MSF=1.6;AAT/; +$cached_env_img{$key} = q|${Z^{d/2}}$|; + +$key = q/W(phi)=(1+cos(phi))slash2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$W(\phi)=(1+\cos(\phi))/2$|; + +$key = q/0.5;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$0.5$|; + +$key = q/{displaymath}h(x)={1over{1+{x^2}}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+h(x) = {1\over{1 + {x^2}}}
+\end{displaymath}|; + +$key = q/omega_m;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\omega_m$|; + +$key = q/j=k=1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$j=k=1$|; + +$key = q/{displaymath}cos(omega_cn+acos(omega_mn+bcos(omega_pn))){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\cos( \omega_c n + a \cos( \omega_m n + b \cos( \omega_p n )))
+\end{displaymath}|; + +$key = q/{displaymath}f(x)=16{x^5}-20{x^3}+5x{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+f(x) = 16 {x^5} - 20 {x^3} + 5 x
+\end{displaymath}|; + +$key = q/{Q_1},ldots,{Q_j};MSF=1.6;AAT/; +$cached_env_img{$key} = q|${Q_1}, \ldots, {Q_j}$|; + +$key = q/{displaymath}H(Z)=(1-{Q}{Z^{-1}})cdot(1-overline{Q}{Z^{-1}}){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+H(Z) = (1 - {Q}{Z^{-1}}) \cdot (1 - \overline{Q}{Z^{-1}})
+\end{displaymath}|; + +$key = q/{displaymath}{left.{+ileft(sin({theta_1})cos({theta_2})+cos({theta_1})sin({theta_2})right)}right]}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{ \left . {
++ i \left (
+\sin({\theta_1}) \cos({\theta_2}) +
+\cos({\theta_1}) \sin({\theta_2})
+\right )
+} \right ] }
+\end{displaymath}|; + +$key = q/x;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$x$|; + +$key = q/{figure}{psfig{file=figsslashfig05.11.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig05.11.ps}\end{figure}|; + +$key = q/{displaymath}cos(pik(N-1)slashN)-isin(pik(N-1)slashN){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\cos(\pi k (N-1)/N) - i \sin(\pi k (N-1)/N)
+\end{displaymath}|; + +$key = q/fbox{{mathrm{pack}{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $\mathrm{pack}$ }|; + +$key = q/{displaymath}16{x^5}-20{x^3}=cos(5omegan)-5cos(omegan){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+16 {x^5} - 20 {x^3} = \cos (5 \omega n) - 5 \cos(\omega n)
+\end{displaymath}|; + +$key = q/j;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$j$|; + +$key = q/{displaymath}{x_{200}}[2n]={x_{100}}[n]+{x_{100}}[n+{pioveromega}]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{x_{200}}[2n] = {x_{100}}[n] + {x_{100}}[n+{\pi \over \omega}]
+\end{displaymath}|; + +$key = q/P{x[n]};MSF=1.6;AAT/; +$cached_env_img{$key} = q|$P\{x[n]\}$|; + +$key = q/{figure}{psfig{file=figsslashfig06.13.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig06.13.ps}\end{figure}|; + +$key = q/{displaymath}X[n]=aleft(cos(omegan)+isin(omegan)right){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+X[n] = a \left ( \cos (\omega n) + i \sin (\omega n) \right )
+\end{displaymath}|; + +$key = q/{displaymath}{a_0}=y[{x_0}]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{a_0} = y[{x_0}]
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig07.13.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig07.13.ps}\end{figure}|; + +$key = q/{displaymath}x[n+tau]=x[n]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+x[n + \tau] = x[n]
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig01.02.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig01.02.ps}\end{figure}|; + +$key = q/alpha-beta;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\alpha-\beta$|; + +$key = q/{displaymath}alpha_1+beta,alpha_1-beta,ldots,alpha_k+beta,alpha_k-beta{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\alpha_1 + \beta, \alpha_1 - \beta, \ldots,
+\alpha_k + \beta, \alpha_k - \beta
+\end{displaymath}|; + +$key = q/SslashT;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$S/T$|; + +$key = q/l-sslash2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$l-s/2$|; + +$key = q/k;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$k$|; + +$key = q/{displaymath}k<{{1}over{4MslashN}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+k < {{1} \over {4 M/N}}
+\end{displaymath}|; + +$key = q/8pislashN=4omega;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$8\pi/N = 4 \omega$|; + +$key = q/{displaymath}{Z_1}={r_1}cdotleft[cos({theta_1})+isin({theta_1})right]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{Z_1} = {r_1} \cdot \left [ \cos({\theta_1}) + i \sin({\theta_1}) \right ]
+\end{displaymath}|; + +$key = q/phi=-pislash2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\phi=-\pi/2$|; + +$key = q/W^n;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$W^n$|; + +$key = q/{displaymath}=mathrm{re}left[{{1over{1-{P}{Z^{-1}}}}{A{Z^n}}+{1over{1-overline{P}{Z^{-1}}}}{A{Z^n}}}right]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+=
+\mathrm{re} \left[ {
+{1 \over {1 - {P}{Z^{-1}}}} {A{Z^n}} +
+{1 \over {1 - \overline{P}{Z^{-1}}}} {A{Z^n}}
+} \right ]
+\end{displaymath}|; + +$key = q/{displaymath}C[m]=S[m,k]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+C[m] = S[m, k]
+\end{displaymath}|; + +$key = q/2pislashomega;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$2 \pi / \omega$|; + +$key = q/{figure}{psfig{file=figsslashfig06.05.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig06.05.ps}\end{figure}|; + +$key = q/fbox{{mathrm{switch}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{$\mathrm{switch}\sim$}|; + +$key = q/R(S(Z));MSF=1.6;AAT/; +$cached_env_img{$key} = q|$R(S(Z))$|; + +$key = q/{displaymath}A=a+bi=rcdot(cos(alpha)+isin(alpha)){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+A = a+bi = r \cdot (\cos(\alpha) + i \sin(\alpha))
+\end{displaymath}|; + +$key = q/{displaymath}+{J_1}(a)cos((omega_c+omega_m)n+{piover2})+{J_1}(a)cos((omega_c-omega_m)n+{piover2}){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
++ {J_1}(a) \cos( (\omega_c+\omega_m) n + {\pi\over2})
++ {J_1}(a) \cos( (\omega_c-\omega_m) n + {\pi\over2})
+\end{displaymath}|; + +$key = q/Z_2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$Z_2$|; + +$key = q/{displaymath}Y[n]cdotg{Z^{-d}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+Y[n] \cdot g{Z^{-d}}
+\end{displaymath}|; + +$key = q/{{a^2}slash2};MSF=1.6;AAT/; +$cached_env_img{$key} = q|${{a^2} / 2}$|; + +$key = q/{displaymath}x[n]approx{8over{{pi^2}}}left[{cos(omegan)}+{{cos(3omegan)}over9}+{{cos(5omegan)}over25}+cdotsright]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+x[n] \approx {8 \over {{\pi^2}}} \left [
+{\cos ( \omega n ...
+...over 9}
++ {{\cos ( 5 \omega n)} \over 25}
++ \cdots
+\right ]
+\end{displaymath}|; + +$key = q/x[n],n=0,...,N-1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$x[n], n = 0, ..., N-1$|; + +$key = q/{displaymath}(k+q)*{omega}={omega_c}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+(k + q) * {\omega} = {\omega_c}
+\end{displaymath}|; + +$key = q/{displaymath}pm(1-g)approxmathrm{im}({gW^{-d}})approxangle({W^{-d}}){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\pm(1-g) \approx \mathrm{im}({gW^{-d}}) \approx \angle({W^{-d}})
+\end{displaymath}|; + +$key = q/{displaymath}{P_1}=(1-beta)(cosomega+isinomega){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{P_1} = (1 - \beta) (\cos \omega + i \sin \omega)
+\end{displaymath}|; + +$key = q/1-r;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$1-r$|; + +$key = q/x[n];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$x[n]$|; + +$key = q/Z_1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$Z_1$|; + +$key = q/t_3;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$t_3$|; + +$key = q/1-1slashn;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$1-1/n$|; + +$key = q/N=100;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$N=100$|; + +$key = q/t[n];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$t[n]$|; + +$key = q/{figure}{psfig{file=figsslashfig07.01.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig07.01.ps}\end{figure}|; + +$key = q/{figure}{psfig{file=figsslashfig02.02.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig02.02.ps}\end{figure}|; + +$key = q/2(N-1)pislashN;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$2(N-1)\pi/N$|; + +$key = q/{displaymath}Z=a+bi{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+Z = a + bi
+\end{displaymath}|; + +$key = q/fbox{texttt{rpole~}};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ \texttt{rpole\ }}|; + +$key = q/{displaymath}ldots,,(t[0],x[0]),,(t[1],x[1]),,ldots{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\ldots ,   (t[0], x[0]),   (t[1], x[1]),   \ldots
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig01.13.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig01.13.ps}\end{figure}|; + +$key = q/N;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$N$|; + +$key = q/fbox{texttt{cpole~}};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ \texttt{cpole\ }}|; + +$key = q/{displaymath}(1-Q{Z^{-1}}){Z^n}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+(1 - Q{Z^{-1}}){Z^n}
+\end{displaymath}|; + +$key = q/1,Z,{Z^2},ldots;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$1, Z, {Z^2}, \ldots$|; + +$key = q/{displaymath}X[n+Nslash2]=A[0]-A[1]{U^n}+A[2]{U^{2n}}pmcdots{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+X[n+N/2] = A[0] - A[1]{U^n} + A[2]{U^{2n}} \pm \cdots
+\end{displaymath}|; + +$key = q/fbox{texttt{czero~}};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ \texttt{czero\ }}|; + +$key = q/{displaymath}scdotx[n+1]-scdotx[n]={{sf}overR}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+s \cdot x[n+1] - s \cdot x[n] = {{sf} \over R}
+\end{displaymath}|; + +$key = q/-sslash2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$-s/2$|; + +$key = q/{figure}{psfig{file=figsslashfig06.18.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig06.18.ps}\end{figure}|; + +$key = q/{displaymath}y[n]={{left({{n}over{N}}right)}^4},{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+y[n] = {{ \left ( {{n} \over {N}} \right ) } ^ 4} ,
+\end{displaymath}|; + +$key = q/{displaymath}t={2^{hslash12}}={e^{log(2)slash12cdoth}}approx{e^{0.05776h}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+t = {2 ^ {h/12}} = {e ^ {\log(2)/12 \cdot h}} \approx {e ^ {0.05776 h}}
+\end{displaymath}|; + +$key = q/{displaymath}a=mathrm{re}(Z){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+a = \mathrm{re}(Z)
+\end{displaymath}|; + +$key = q/fslashR;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$f/R$|; + +$key = q/{displaymath}x[n]=mathrm{re}(X[n]){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+x[n] = \mathrm{re} (X[n])
+\end{displaymath}|; + +$key = q/V=1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$V=1$|; + +$key = q/fbox{{mathrm{sel}{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $\mathrm{sel}$ }|; + +$key = q/{figure}{psfig{file=figsslashfig08.03.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig08.03.ps}\end{figure}|; + +$key = q/{displaymath}h=12,{log_2}left({NoverM}right)=12,{log_2}left({NfoverR}right){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+h = 12   {\log _ 2} \left ( {N \over M} \right ) =
+12   {\log _ 2} \left ( {N f \over R} \right )
+\end{displaymath}|; + +$key = q/z[1];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$z[1]$|; + +$key = q/{displaymath}t={NslashM}={{Nf}slashR}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+t = {N / M} = {{N f} / R}
+\end{displaymath}|; + +$key = q/({x_1},ldots,{x_r});MSF=1.6;AAT/; +$cached_env_img{$key} = q|$({x_1}, \ldots, {x_r})$|; + +$key = q/{figure}{psfig{file=figsslashfig10.10.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig10.10.ps}\end{figure}|; + +$key = q/{displaymath}{m_a}[n]={e^{acdot(cos(omegan)-1))}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{m_a}[n] = {e^{a \cdot (\cos(\omega n) - 1))}}
+\end{displaymath}|; + +$key = q/{displaymath}(1-x[n])y[n]+x[n]z[n]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+(1 - x[n])y[n] + x[n]z[n]
+\end{displaymath}|; + +$key = q/-1slashN;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$-1/N$|; + +$key = q/-2slash(N-2M);MSF=1.6;AAT/; +$cached_env_img{$key} = q|$-2/(N-2M)$|; + +$key = q/G;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$G$|; + +$key = q/{figure}{psfig{file=figsslashfig07.26.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig07.26.ps}\end{figure}|; + +$key = q/X[-n];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$X[-n]$|; + +$key = q/ktau;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$k \tau$|; + +$key = q/kneq0;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$k \neq 0$|; + +$key = q/({L_1},{d_1})=(0.3N,-0.3);MSF=1.6;AAT/; +$cached_env_img{$key} = q|$({L_1}, {d_1}) = (0.3N, -0.3)$|; + +$key = q/{displaymath}{A_{mathrm{RMS}}}{x[n]}+{A_{mathrm{RMS}}}{y[n]}ge{A_{mathrm{RMS}}}{x[n]+y[n]}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{A_{\mathrm{RMS}}} \{x[n]\} +
+{A_{\mathrm{RMS}}} \{y[n]\} \ge
+{A_{\mathrm{RMS}}} \{x[n]+y[n]\}
+\end{displaymath}|; + +$key = q/{displaymath}xi=cos(pikslashN)-isin(pikslashN){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\xi = \cos(\pi k / N) - i \sin(\pi k / N)
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig09.14.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig09.14.ps}\end{figure}|; + +$key = q/islash2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$i/2$|; + +$key = q/{displaymath}X'[n]=aleft(cos(omegan)-isin(omegan)right){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+X'[n] = a \left ( \cos (\omega n) - i \sin (\omega n) \right )
+\end{displaymath}|; + +$key = q/{displaymath}H(Z)=1-Q{Z^{-1}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+H(Z) = 1 - Q{Z^{-1}}
+\end{displaymath}|; + +$key = q/{displaymath}={{left[{U^{-k}}right]}^{0}}X[0]+{{left[{U^{-k}}right]}^{1}}X[1]+cdots+{{left[{U^{-k}}right]}^{N-1}}X[N-1]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+= {{\left [ {U^{-k}} \right ]} ^ {0}} X[0] +
+{{\left [ {U^...
+...X[1] +
+\cdots +
+{{\left [ {U^{-k}} \right ]} ^ {N-1}} X[N-1]
+\end{displaymath}|; + +$key = q/{displaymath}f(t)={1over2}-{1overpi}{left(sin(omegat)+{{sin(2omegat)}over2}+{{sin(3omegat)}over3}+cdotsright)}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+f(t) = {1 \over 2} - {1 \over \pi}
+{ \left (
+\sin(\omega ...
+...\over 2} +
+{{\sin(3 \omega t)} \over 3} + \cdots
+\right ) }
+\end{displaymath}|; + +$key = q/{f_0}=0;MSF=1.6;AAT/; +$cached_env_img{$key} = q|${f_0}=0$|; + +$key = q/{figure}{psfig{file=figsslashfig05.09.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig05.09.ps}\end{figure}|; + +$key = q/|S[m,k]|-f[k];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\vert S[m, k]\vert-f[k]$|; + +$key = q/g[m]C[m];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$g[m]C[m]$|; + +$key = q/{displaymath}{calFT}{x[n]-x[n-1]}approxiomegak{calFT}{x[n]}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{\cal FT}\{ x[n] - x[n-1] \} \approx i \omega k {\cal FT}\{ x[n] \}
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig07.27.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig07.27.ps}\end{figure}|; + +$key = q/{displaymath}H{Z^N}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+H {Z^N}
+\end{displaymath}|; + +$key = q/0<=n|; + +$key = q/-komega;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$-k\omega$|; + +$key = q/omega_cn;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\omega_c n$|; + +$key = q/{displaymath}Z=cos(alpha)+isin(alpha){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+Z = \cos(\alpha) + i \sin(\alpha)
+\end{displaymath}|; + +$key = q/fbox{texttt{tabreceive~}};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{\texttt{tabreceive\ }}|; + +$key = q/{displaymath}H={Z^{-dslash2}}({Z^{dslash2}}+{Z^{-dslash2}}){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+H = {Z^{-d/2}} ({Z^{d/2}} + {Z^{-d/2}})
+\end{displaymath}|; + +$key = q/{displaymath}y[n]=f(nslashN).{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+y[n] = f(n/N) .
+\end{displaymath}|; + +$key = q/{displaymath}Y[k]={calFT}left{X[n]right}(k){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+Y[k] = {\cal FT}\left \{ X[n] \right \} (k)
+\end{displaymath}|; + +$key = q/fbox{texttt{rifft~}};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{\texttt{rifft\ }}|; + +$key = q/{displaymath}H=1+{Z^{-d}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+H = 1 + {Z^{-d}}
+\end{displaymath}|; + +$key = q/k=0,...,N-1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$k = 0, ..., N-1$|; + +$key = q/{figure}{psfig{file=figsslashfig09.15.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig09.15.ps}\end{figure}|; + +$key = q/{figure}{psfig{file=figsslashfig09.02.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig09.02.ps}\end{figure}|; + +$key = q/{displaymath}x[n]=acdotcos(omegan){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+x[n] = a \cdot \cos (\omega n)
+\end{displaymath}|; + +$key = q/H(R(S(Z)));MSF=1.6;AAT/; +$cached_env_img{$key} = q|$H(R(S(Z)))$|; + +$key = q/1-aomega;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$1 - a \omega$|; + +$key = q/{figure}{psfig{file=figsslashfig04.02.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig04.02.ps}\end{figure}|; + +$key = q/phi=0;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\phi=0$|; + +$key = q/{displaymath}x[n]=cos(omega_cn)f(acos(omega_mn)){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+x[n] = \cos(\omega_c n) f (a \cos(\omega_m n))
+\end{displaymath}|; + +$key = q/r=0;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$r=0$|; + +$key = q/g(x)=1-1slashx;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$g(x) = 1-1/x$|; + +$key = q/{displaymath}={{sin(omegan)}over{pi}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+= {{\sin ( \omega n)} \over {\pi}}
+\end{displaymath}|; + +$key = q/1slashk;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$1/k$|; + +$key = q/{figure}{psfig{file=figsslashfig10.08.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig10.08.ps}\end{figure}|; + +$key = q/f(x)={e^x};MSF=1.6;AAT/; +$cached_env_img{$key} = q|$f(x) = {e^x}$|; + +$key = q/{displaymath}n>y[n]>n-D.{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+n > y[n] > n - D.
+\end{displaymath}|; + +$key = q/705600-20000=685600;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$705600-20000=685600$|; + +$key = q/fbox{{mathrm{snapshot}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $\mathrm{snapshot}\sim$}|; + +$key = q/{displaymath}a=rcos(theta){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+a = r \cos (\theta)
+\end{displaymath}|; + +$key = q/sqrt{10};MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\sqrt {10}$|; + +$key = q/{displaymath}x[n]={a_0}+{a_1}cosleft(omegan+{phi_1}right)+{a_2}cosleft(2omegan+{phi_2}right)+cdots+{a_p}cosleft(pomegan+{phi_p}right){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+x[n] = {a_0} +
+{a_1} \cos \left ( \omega n + {\phi_1} \rig...
+... + \cdots +
+{a_p} \cos \left ( p \omega n + {\phi_p} \right )
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig08.11.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig08.11.ps}\end{figure}|; + +$key = q/{A_k};MSF=1.6;AAT/; +$cached_env_img{$key} = q|${A_k}$|; + +$key = q/1slashf[k];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$1/f[k]$|; + +$key = q/{figure}{psfig{file=figsslashfig05.04.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig05.04.ps}\end{figure}|; + +$key = q/d_1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$d_1$|; + +$key = q/fbox{texttt{bp~}};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ \texttt{bp\ }}|; + +$key = q/{displaymath}H(Z)={{1+{Z^{-1}}}over{1-g{Z^{-1}}}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+H(Z) =
+{{
+1 + {Z^{-1}}
+} \over {
+1 - g{Z^{-1}}
+}}
+\end{displaymath}|; + +$key = q/c[k]slashf[k];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$c[k]/f[k]$|; + +$key = q/{L_1},ldots,{L_j};MSF=1.6;AAT/; +$cached_env_img{$key} = q|${L_1}, \ldots, {L_j}$|; + +$key = q/{figure}{psfig{file=figsslashfig02.08.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig02.08.ps}\end{figure}|; + +$key = q/fbox{{mathrm{cpole}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{$\mathrm{cpole}\sim$}|; + +$key = q/fbox{{mathrm{inlet}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $ \mathrm{inlet}\sim $}|; + +$key = q/{displaymath}|H|={1over{|1-g{Z^{-d}}|}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\vert H\vert = {1 \over {\vert 1 - g{Z^{-d}}\vert}}
+\end{displaymath}|; + +$key = q/{displaymath}|H|={1over{1-g}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\vert H\vert = {1 \over {1 - g}}
+\end{displaymath}|; + +$key = q/2omega,4omega,6omega,ldots;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$2\omega, 4\omega, 6\omega, \ldots$|; + +$key = q/{figure}{psfig{file=figsslashfig01.06.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig01.06.ps}\end{figure}|; + +$key = q/{displaymath}-sin(omega_cn)*sin(acos(omega_mn)){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+- \sin(\omega_c n) * \sin(a \cos(\omega_m n))
+\end{displaymath}|; + +$key = q/{displaymath}h(bsin({omegaover2}n))=Gcdotleft({1over2}+Hcos(omegan)+{H^2}cos(2omegan)+cdotsright){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+h(b \sin({\omega \over 2} n)) =
+G \cdot \left (
+{1\over 2...
+...H \cos(\omega n) + {H^2} \cos(2 \omega n)
++ \cdots
+\right )
+\end{displaymath}|; + +$key = q/1slashf;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$1/f$|; + +$key = q/{displaymath}X[-n]=A[0]+A[1](cos(omegan)-isin(omegan))+cdots{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+X[-n] =
+A[0] + A[1](\cos(\omega n) - i \sin(\omega n)) + \cdots
+\end{displaymath}|; + +$key = q/N+1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$N+1$|; + +$key = q/{displaymath}omega_m,3omega_m,5omega_m,ldots{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\omega_m, 3\omega_m, 5\omega_m, \ldots
+\end{displaymath}|; + +$key = q/Z^{-d};MSF=1.6;AAT/; +$cached_env_img{$key} = q|$Z^{-d}$|; + +$key = q/{figure}{psfig{file=figsslashfig05.03.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig05.03.ps}\end{figure}|; + +$key = q/fbox{{mathrm{pipe}{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $\mathrm{pipe}$ }|; + +$key = q/x[n]^2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$x[n]^2$|; + +$key = q/{displaymath}Z={{pmasqrt{-W}-b}over{mpbsqrt{-W}+a}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+Z = { {
+\pm a \sqrt { - W }
+- b
+} \over {
+\mp b \sqrt { - W }
++ a
+}
+}
+\end{displaymath}|; + +$key = q/n+1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$n+1$|; + +$key = q/y[n]=nslash(10R);MSF=1.6;AAT/; +$cached_env_img{$key} = q|$y[n] = n/(10R)$|; + +$key = q/{D_N}(k);MSF=1.6;AAT/; +$cached_env_img{$key} = q|${D_N}(k)$|; + +$key = q/{displaymath}|1-Q{Z^{-1}}|=|Z||1-Q{Z^{-1}}|=|Q-Z|{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\vert 1 - Q{Z^{-1}}\vert = \vert Z\vert\vert 1 - Q{Z^{-1}}\vert = \vert Q - Z\vert
+\end{displaymath}|; + +$key = q/alpha+beta;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\alpha + \beta$|; + +$key = q/{figure}{psfig{file=figsslashfig06.16.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig06.16.ps}\end{figure}|; + +$key = q/y;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$y$|; + +$key = q/{displaymath}S[m,k];=;{{left|R'[k]right|}^{-1}};cdot;{{R'[k]T'[k]}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+S[m, k] \; = \;
+{
+{ \left \vert
+R'[k]
+\right \vert}
+^
+{-1}
+}
+\; \cdot \;
+{
+{R'[k] T'[k]}
+}
+\end{displaymath}|; + +$key = q/{displaymath}left[2acos(alphan)right]cdotleft[cos(betan)right]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\left [ 2 a \cos (\alpha n) \right ]
+\cdot
+\left [ \cos (\beta n) \right ]
+\end{displaymath}|; + +$key = q/beta=3pislash10;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\beta =3\pi /10$|; + +$key = q/alpha>beta>0;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\alpha > \beta > 0$|; + +$key = q/|T[m,k]|;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\vert T[m, k]\vert$|; + +$key = q/y[n]=n;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$y[n] = n$|; + +$key = q/f(x+y);MSF=1.6;AAT/; +$cached_env_img{$key} = q|$f(x+y)$|; + +$key = q/alpha;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\alpha $|; + +$key = q/{figure}{psfig{file=figsslashfig04.17.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig04.17.ps}\end{figure}|; + +$key = q/{displaymath}{y_2}[n]=s{x_1}[n]-c{x_2}[n]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{y_2}[n] = s {x_1}[n] - c {x_2}[n]
+\end{displaymath}|; + +$key = q/{displaymath}x[n]={{N^2}over{MN-2{M^2}}}(p[n-M]-p[n+M]){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+x[n] = {{N^2} \over {MN - 2{M^2}}} (p[n-M] - p[n+M])
+\end{displaymath}|; + +$key = q/fbox{texttt{clip~}};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ \texttt{clip\ }}|; + +$key = q/{displaymath}Y[n]=X[n]+Y[n]cdotg{Z^{-d}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+Y[n] = X[n]+Y[n] \cdot g{Z^{-d}}
+\end{displaymath}|; + +$key = q/{f_1}=1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|${f_1}=1$|; + +$key = q/{displaymath}{Z^{dslash2}}+{Z^{-dslash2}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{Z^{d/2}} + {Z^{-d/2}}
+\end{displaymath}|; + +$key = q/{displaymath}f(acos(omegan))={{{e^{acos(omegan)}}}over{e^a}}={e^{a(cos(omegan)-1)}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+f(a \cos(\omega n)) =
+{{{e^{a \cos(\omega n)}}} \over {e^a}} = {e^{a (\cos(\omega n) - 1)}}
+\end{displaymath}|; + +$key = q/l+s;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$l+s$|; + +$key = q/cos(omegan);MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\cos(\omega n)$|; + +$key = q/f();MSF=1.6;AAT/; +$cached_env_img{$key} = q|$f()$|; + +$key = q/{x_2}[n];MSF=1.6;AAT/; +$cached_env_img{$key} = q|${x_2}[n]$|; + +$key = q/x^3;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$x^3$|; + +$key = q/mtau;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$m \tau$|; + +$key = q/x[1.5];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$x[1.5]$|; + +$key = q/(a,b);MSF=1.6;AAT/; +$cached_env_img{$key} = q|$(a,b)$|; + +$key = q/b[n];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$b[n]$|; + +$key = q/{displaymath}={V^d}{calFT}left{X[n]right}(k){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+= {V^d} {\cal FT} \left \{ X[n] \right \} (k)
+\end{displaymath}|; + +$key = q/fbox{{mathrm{catchsim}{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{$\mathrm{catch\sim}$}|; + +$key = q/omega_m=komega;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\omega_m=k\omega$|; + +$key = q/fbox{{mathrm{until}{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $\mathrm{until}$ }|; + +$key = q/M+N-1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$M+N-1$|; + +$key = q/{displaymath}cos(5omegan){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\cos(5 \omega n)
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig08.23.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig08.23.ps}\end{figure}|; + +$key = q/{displaymath}t=p+cf{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+t = p + cf
+\end{displaymath}|; + +$key = q/a;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$a$|; + +$key = q/{displaymath}y[n]=pcdoty[n-1]+(1-p)cdotx[n]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+y[n] = p \cdot y[n-1] + (1-p) \cdot x[n]
+\end{displaymath}|; + +$key = q/-domegaslash2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$-d \omega / 2$|; + +$key = q/y[n]cdotx[n];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$y[n] \cdot x[n]$|; + +$key = q/{displaymath}t[n]=left|y[n]-y[n-1]right|{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+t[n] = \left \vert y[n] - y[n-1] \right \vert
+\end{displaymath}|; + +$key = q/f(0);MSF=1.6;AAT/; +$cached_env_img{$key} = q|$f(0)$|; + +$key = q/fbox{texttt{block~}};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ \texttt{block\ }}|; + +$key = q/{figure}{psfig{file=figsslashfig05.05.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig05.05.ps}\end{figure}|; + +$key = q/{displaymath}{calFT}left{{Z^n}right}(k)={calFT}left{1right}(k-{{alpha}over{omega}}){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{\cal FT} \left \{ {Z^n} \right \} (k) =
+{\cal FT} \left \{ 1 \right \}(k - {{\alpha } \over {\omega}})
+\end{displaymath}|; + +$key = q/fbox{texttt{lop~}};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{\texttt{lop\ }}|; + +$key = q/p[n+M];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$p[n+M]$|; + +$key = q/1-q;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$1-q$|; + +$key = q/0lex[n]le1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$0 \le x[n] \le 1$|; + +$key = q/{displaymath}s=sin(theta){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+s = \sin(\theta)
+\end{displaymath}|; + +$key = q/omega_p;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\omega_p$|; + +$key = q/{displaymath}f(x[n])={{a^2}over2}left(1+cos(2alphan)right)+{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+f(x[n]) = {{a^2} \over 2} \left ( 1 + \cos(2 \alpha n) \right ) +
+\end{displaymath}|; + +$key = q/x<1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$x<1$|; + +$key = q/fbox{texttt{lrshift~}};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{\texttt{lrshift\ }}|; + +$key = q/2alpha;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$2 \alpha$|; + +$key = q/fbox{{mathrm{line}{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $\mathrm{line}$}|; + +$key = q/angle(A+B);MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\angle(A+B)$|; + +$key = q/a[n];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$a[n]$|; + +$key = q/{figure}{psfig{file=figsslashfig06.17.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig06.17.ps}\end{figure}|; + +$key = q/g[m,k];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$g[m, k]$|; + +$key = q/Rslash30;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$R/30$|; + +$key = q/{figure}{psfig{file=figsslashfig06.11.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig06.11.ps}\end{figure}|; + +$key = q/komega=2pikslashN;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$k \omega = 2\pi k / N$|; + +$key = q/{figure}{psfig{file=figsslashfig10.04.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig10.04.ps}\end{figure}|; + +$key = q/{figure}{psfig{file=figsslashfig07.06.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig07.06.ps}\end{figure}|; + +$key = q/m;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$m$|; + +$key = q/Vnot=1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$V \not= 1$|; + +$key = q/{displaymath}w[n]={1over2}-{1over4}{U^n}-{1over4}{U^{-n}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+w[n] = {1\over 2} - {1\over 4} {U^n} - {1\over 4} {U^{-n}}
+\end{displaymath}|; + +$key = q/{displaymath}{Q_1}=qcdot(cosomega+isinomega){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{Q_1} = q \cdot (\cos \omega + i \sin \omega)
+\end{displaymath}|; + +$key = q/r=|Q|;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$r=\vert Q\vert$|; + +$key = q/P;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$P$|; + +$key = q/f(x)={x^n};MSF=1.6;AAT/; +$cached_env_img{$key} = q|$f(x) = {x^n}$|; + +$key = q/{displaymath}S[k]=S[m,k]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+S[k] = S[m, k]
+\end{displaymath}|; + +$key = q/1slash50;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$1/50$|; + +$key = q/{displaymath}x[N],ldots,x[N+B-1]longrightarrow{fbox{texttt{delwrite~}}{{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+x[N], \ldots, x[N+B-1] \longrightarrow \fbox{\texttt{delwrite\ }}
+\end{displaymath}|; + +$key = q/M(k);MSF=1.6;AAT/; +$cached_env_img{$key} = q|$M(k)$|; + +$key = q/{x_1},ldots{x_k};MSF=1.6;AAT/; +$cached_env_img{$key} = q|${x_1}, \ldots {x_k}$|; + +$key = q/{displaymath}{xi^N}-{xi^{-N}}=left(cos(pik)-isin(pik)right)-left(cos(pik)+isin(pik)right)=-2isin(pik){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{\xi^N} - {\xi^{-N}} =
+\left (\cos(\pi k) - i \sin(\pi k) ...
+...eft (\cos(\pi k) + i \sin(\pi k) \right )
+= - 2 i \sin(\pi k)
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig08.07.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig08.07.ps}\end{figure}|; + +$key = q/{c_1},ldots,{c_l};MSF=1.6;AAT/; +$cached_env_img{$key} = q|${c_1}, \ldots, {c_l}$|; + +$key = q/{D_n}(k);MSF=1.6;AAT/; +$cached_env_img{$key} = q|${D_n}(k)$|; + +$key = q/{displaymath}{|{x_1}|}^2+cdots+{|{x_r}|}^2{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{\vert{x_1}\vert}^2 + \cdots + {\vert{x_r}\vert}^2
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig06.14.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig06.14.ps}\end{figure}|; + +$key = q/y[n]=2n;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$y[n] = 2n$|; + +$key = q/{figure}{psfig{file=figsslashfig02.15.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig02.15.ps}\end{figure}|; + +$key = q/angle(H(omega));MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\angle( H(\omega))$|; + +$key = q/x=|S[m,k]|slashf[k];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$x = \vert S[m, k]\vert/f[k]$|; + +$key = q/{figure}{psfig{file=figsslashfig10.12.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig10.12.ps}\end{figure}|; + +$key = q/{displaymath}(1-g)slashd{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+(1-g)/d
+\end{displaymath}|; + +$key = q/p=1-omega;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$p = 1-\omega$|; + +$key = q/N+3;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$N+3$|; + +$key = q/0:1:2:cdots;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$0:1:2:\cdots$|; + +$key = q/|Z|=1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\vert Z\vert=1$|; + +$key = q/{displaymath}X[n]=A[0]+A[1](cos(omegan)+isin(omegan))+cdots{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+X[n] =
+A[0] + A[1](\cos(\omega n) + i \sin(\omega n)) + \cdots
+\end{displaymath}|; + +$key = q/n;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$n$|; + +$key = q/{displaymath}{1overZ}={Z^{-1}}=cos(omega)-isin(omega){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{1 \over Z} = {Z^{-1}} = cos(\omega) - i \sin(\omega)
+\end{displaymath}|; + +$key = q/{displaymath}{J_3}(a)cos((omega_c+3omega_m)n+{{3pi}over2}+bcos(omega_pn)){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{J_3}(a) \cos( (\omega_c+3\omega_m) n + {{3\pi}\over2} + b \cos(\omega_p n))
+\end{displaymath}|; + +$key = q/k=1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$k=1$|; + +$key = q/fbox{{mathrm{lop}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{$\mathrm{lop}\sim$}|; + +$key = q/{displaymath}{calFT}left{X[n]right}(k)=left({{parbox[t][0.1in]{0in}{mbox{}}{cos((pik(N-1)slashN)}right){{sin(pik)}over{sin(pikslashN)}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{\cal FT} \left \{ X[n] \right \} (k) =
+\left ( {
+\parbo...
+...
+} \right )
+{{
+\sin(\pi k)
+} \over {
+\sin(\pi k / N)
+}}
+\end{displaymath}|; + +$key = q/fbox{texttt{rfft~}};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{\texttt{rfft\ }}|; + +$key = q/C[m-1];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$C[m-1]$|; + +$key = q/{displaymath}{a_0}={10^{-5}}=0.00001{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{a_0} = {10^{-5}} = 0.00001
+\end{displaymath}|; + +$key = q/n-B;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$n-B$|; + +$key = q/N-3;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$N-3$|; + +$key = q/{displaymath}+{{b^2}over2}left(1+cos(2betan)right){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
++ {{b^2} \over 2} \left ( 1 + \cos(2 \beta n) \right )
+\end{displaymath}|; + +$key = q/x[n]=0;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$x[n] = 0$|; + +$key = q/{M_i},ldots,{M_l};MSF=1.6;AAT/; +$cached_env_img{$key} = q|${M_i}, \ldots, {M_l}$|; + +$key = q/{displaymath}ldots,A,AZ,A{Z^2},ldots{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\ldots, A, AZ, A{Z^2}, \ldots
+\end{displaymath}|; + +$key = q/X'[n]=X[n];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$X'[n] = X[n]$|; + +$key = q/{figure}{psfig{file=figsslashfig08.02.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig08.02.ps}\end{figure}|; + +$key = q/{displaymath}{y_1}[n]=c{x_1}[n]-s{x_2}[n]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{y_1}[n] = c {x_1}[n] - s {x_2}[n]
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig06.12.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig06.12.ps}\end{figure}|; + +$key = q/MslashN=0.03;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$M/N=0.03$|; + +$key = q/|1-Q{Z^{-1}}|;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\vert 1 - Q{Z^{-1}}\vert$|; + +$key = q/X;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$X$|; + +$key = q/{figure}{psfig{file=figsslashfig01.03.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig01.03.ps}\end{figure}|; + +$key = q/yge0;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$y \ge
+0$|; + +$key = q/{figure}{psfig{file=figsslashfig07.21.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig07.21.ps}\end{figure}|; + +$key = q/m=ldots,0,1,ldots;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$m = \ldots, 0, 1, \ldots$|; + +$key = q/{displaymath}cos(acos(omegan))={J_0}(a)-2{J_2}(a)cos(2omegan)+2{J_4}(a)cos(4omegan)-2{J_6}(a)cos(6omegan)pmcdots{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\cos(a \cos(\omega n)) = {J_0}(a)
+- 2 {J_2}(a) \cos(2 \om...
+...a) \cos(4 \omega n)
+- 2 {J_6}(a) \cos(6 \omega n) \pm \cdots
+\end{displaymath}|; + +$key = q/{displaymath}f(x)={x^2}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+f(x) = {x^2}
+\end{displaymath}|; + +$key = q/{displaymath}ldots,cos(0),cos(omega),cos(2omega),ldots{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\ldots, \cos(0), \cos(\omega), \cos(2 \omega), \ldots
+\end{displaymath}|; + +$key = q/n=Nslash2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$n=N/2$|; + +$key = q/y[0];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$y[0]$|; + +$key = q/{figure}{psfig{file=figsslashfig03.10.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig03.10.ps}\end{figure}|; + +$key = q/1slash4;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$1/4$|; + +$key = q/{displaymath}p[n]={1over2}{{({noverN}-{1over2})}^2}-{1over{24}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+p[n] = {1 \over 2} {{({n\over N} - {1\over 2})}^2} - {1 \over {24}}
+\end{displaymath}|; + +$key = q/fbox{{mathrm{block}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{$\mathrm{block}\sim$}|; + +$key = q/{displaymath}H=1+Hg{Z^{-d}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+H = 1 + Hg{Z^{-d}}
+\end{displaymath}|; + +$key = q/H(omega);MSF=1.6;AAT/; +$cached_env_img{$key} = q|$H(\omega)$|; + +$key = q/n=1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$n=1$|; + +$key = q/k=3;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$k=3$|; + +$key = q/fbox{{mathrm{tabread4}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $\mathrm{tabread4}\sim$ }|; + +$key = q/n=0,...,N-1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$n = 0, ..., N-1$|; + +$key = q/q=1-dsqrt{g};MSF=1.6;AAT/; +$cached_env_img{$key} = q|$q = 1 - d \sqrt{g}$|; + +$key = q/{displaymath}{{n}over{2pislashomega}}={{1}over{2pi}}{{omega}over{b}}={{q}over{2pi}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{{n} \over {2\pi/\omega}} = {{1} \over {2\pi}} {{\omega} \over {b}}
+= {{q} \over {2\pi}}
+\end{displaymath}|; + +$key = q/{displaymath}={{left[{U^{0}}right]}^{k}}X[0]+{{left[{U^{-1}}right]}^{k}}X[1]+cdots+{{left[{U^{-(N-1)}}right]}^{k}}X[N-1]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+= {{\left [ {U^{0}} \right ]} ^ {k}} X[0] +
+{{\left [ {U^{...
+...1] +
+\cdots +
+{{\left [ {U^{-(N-1)}} \right ]} ^ {k}} X[N-1]
+\end{displaymath}|; + +$key = q/fbox{{mathrm{s}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $\mathrm{s}\sim$ }|; + +$key = q/N-1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$N-1$|; + +$key = q/{displaymath}0cdotx+1cdoty=1,{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+0 \cdot x + 1 \cdot y = 1,
+\end{displaymath}|; + +$key = q/m=60;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$m=60$|; + +$key = q/fbox{{mathrm{rzero}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{$\mathrm{rzero}\sim$}|; + +$key = q/{displaymath}={V^d}left({V^{0}}X[0]+{V^{1}}X[1]+cdots+{V^{N-1}}X[N-1]right){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+= {V^d} \left (
+{V ^ {0}} X[0] +
+{V ^ {1}} X[1] +
+\cdots +
+{V ^ {N-1}} X[N-1]
+\right )
+\end{displaymath}|; + +$key = q/|C[m]|;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\vert C[m]\vert$|; + +$key = q/{displaymath}|overline{Q}-{Z^{-1}}|=|Q-overline{Z^{-1}}|=|Q-Z|{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\vert\overline{Q} - {Z^{-1}}\vert = \vert Q - \overline{Z^{-1}}\vert = \vert Q- Z\vert
+\end{displaymath}|; + +$key = q/fbox{{mathrm{makenote}{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{$\mathrm{makenote}$}|; + +$key = q/f;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$f$|; + +$key = q/{y_1},ldots{y_k};MSF=1.6;AAT/; +$cached_env_img{$key} = q|${y_1}, \ldots {y_k}$|; + +$key = q/-59;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$-59$|; + +$key = q/n-1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$n-1$|; + +$key = q/X[m];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$X[m]$|; + +$key = q/{displaymath}X[n]=A{Z^n}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+X[n] = A {Z^n}
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig07.17.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig07.17.ps}\end{figure}|; + +$key = q/Rslash20;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$R/20$|; + +$key = q/{displaymath}t=1+aomegacos(omegan-pislash2){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+t = 1 + a \omega \cos(\omega n - \pi/2)
+\end{displaymath}|; + +$key = q/pislash10;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\pi/10$|; + +$key = q/lfloortrfloor;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\lfloor t \rfloor$|; + +$key = q/{displaymath}x[t]={J_0}(a)cos(omega_cn){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+x[t] = {J_0}(a) \cos( \omega_c n )
+\end{displaymath}|; + +$key = q/kapprox1slash(4cdot0.03)approx8.5;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$k \approx 1/(4\cdot 0.03) \approx 8.5$|; + +$key = q/sin(-domega);MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\sin(-d \omega)$|; + +$key = q/ycdotx[n];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$y \cdot
+x[n]$|; + +$key = q/M;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$M$|; + +$key = q/{figure}{psfig{file=figsslashfig08.21.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig08.21.ps}\end{figure}|; + +$key = q/omega_c=momega;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\omega_c=m\omega$|; + +$key = q/{figure}{psfig{file=figsslashfig08.06.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig08.06.ps}\end{figure}|; + +$key = q/{figure}{psfig{file=figsslashfig03.13.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig03.13.ps}\end{figure}|; + +$key = q/fbox{{mathrm{osc}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $ \mathrm{osc}\sim $}|; + +$key = q/{displaymath}x[n]=cos(omegacdot(n-1.5)){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+x[n] = \cos(\omega \cdot (n - 1.5))
+\end{displaymath}|; + +$key = q/h;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$h$|; + +$key = q/b;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$b$|; + +$key = q/{displaymath}cos(a+b)=cos(a)cos(b)-sin(a)sin(b){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\cos(a+b) = \cos(a)\cos(b) - \sin(a) \sin(b)
+\end{displaymath}|; + +$key = q/W(phi)=(1+mathop{mathgroupsymoperatorscos}nolimits(phi))slash2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$W(\phi )=(1+\mathop {\mathgroup \symoperators cos}\nolimits (\phi ))/2$|; + +$key = q/{displaymath}y[n]=a+(b-a){{n-M}overN},hspace{0.1in}MlenleM+N-1.{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+y[n] = a + (b - a) {{n-M} \over N}, \hspace{0.1in} M \le n \le M+N-1.
+\end{displaymath}|; + +$key = q/d=1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$d=1$|; + +$key = q/p=1-q;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$p=1-q$|; + +$key = q/m-1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$m-1$|; + +$key = q/{displaymath}={Nover{4{pi^2}{k^2}}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+= {N \over {4 {\pi ^2} {k^2}}}
+\end{displaymath}|; + +$key = q/k=2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$k=2$|; + +$key = q/g;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$g$|; + +$key = q/beta-alpha;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\beta-\alpha$|; + +$key = q/({k^2}-k)slash2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$({k^2}-k)/2$|; + +$key = q/{displaymath}{[{{(1-gcos(omegad))}^2}+{{(gsin(omegad))}^2}]}^{-1slash2}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{[ {{(1-g \cos (\omega d))}^2} + {{(g \sin (\omega d))}^2} ]}
+^
+{-1/2}
+\end{displaymath}|; + +$key = q/fbox{{mathrm{tabreceive}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{$\mathrm{tabreceive}\sim$}|; + +$key = q/{displaymath}Z=cos(omega)+isin(omega){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+Z = \cos(\omega) + i \sin(\omega)
+\end{displaymath}|; + +$key = q/overline{P};MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\overline{P}$|; + +$key = q/-dkomega;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$-dk\omega$|; + +$key = q/{displaymath}H(Z)=1-{{{1-p}over{1-p{Z^{-1}}}}}=p{{{1-{Z^{-1}}}over{1-p{Z^{-1}}}}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+H(Z) = 1 - {{{1-p} \over {1 - p{Z^{-1}}}}}
+= p{{{1-{Z^{-1}}} \over {1 - p{Z^{-1}}}}}
+\end{displaymath}|; + +$key = q/|P|>1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\vert P\vert> 1$|; + +$key = q/2pi;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$2\pi $|; + +$key = q/{figure}{psfig{file=figsslashfig06.10.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig06.10.ps}\end{figure}|; + +$key = q/g[m];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$g[m]$|; + +$key = q/tau;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\tau$|; + +$key = q/{b^2}=2a;MSF=1.6;AAT/; +$cached_env_img{$key} = q|${b^2}=2a$|; + +$key = q/{figure}{psfig{file=figsslashfig07.25.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig07.25.ps}\end{figure}|; + +$key = q/-42;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$-42$|; + +$key = q/{figure}{psfig{file=figsslashfig05.07.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig05.07.ps}\end{figure}|; + +$key = q/sqrt{2};MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\sqrt{2}$|; + +$key = q/X';MSF=1.6;AAT/; +$cached_env_img{$key} = q|$X'$|; + +$key = q/l;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$l$|; + +$key = q/{figure}{psfig{file=figsslashfig06.09.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig06.09.ps}\end{figure}|; + +$key = q/(kslashN)^2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$(k/N)^2$|; + +$key = q/l+sslash2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$l+s/2$|; + +$key = q/x^k;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$x^k$|; + +$key = q/{displaymath}{D_N}(k)=left{array{{ll}N&{k=0}{{sin(pik)}over{sin(pikslashN)}}&{knot=0,;-N|; + +$key = q/g=0.8;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$g = 0.8$|; + +$key = q/c_0;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$c_0$|; + +$key = q/t=fsslashR;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$t = fs/R$|; + +$key = q/|A+B|;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\vert A+B\vert$|; + +$key = q/{figure}{psfig{file=figsslashfig05.12.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig05.12.ps}\end{figure}|; + +$key = q/{displaymath}{calFT}left{X[n]right}(k)={{{V^N}-1}over{V-1}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{\cal FT} \left \{ X[n] \right \} (k) =
+{{
+{V^N} - 1
+} \over {
+V - 1
+}}
+\end{displaymath}|; + +$key = q/{displaymath}=cos((pi-omega)n-phi){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+= \cos((\pi - \omega)n - \phi)
+\end{displaymath}|; + +$key = q/fbox{{mathrm{tabwrite}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $\mathrm{tabwrite}\sim$ }|; + +$key = q/({y_1},{y_2});MSF=1.6;AAT/; +$cached_env_img{$key} = q|$({y_1}, {y_2})$|; + +$key = q/{figure}{psfig{file=figsslashfig02.13.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig02.13.ps}\end{figure}|; + +$key = q/X'';MSF=1.6;AAT/; +$cached_env_img{$key} = q|$X''$|; + +$key = q/1slash(1-g);MSF=1.6;AAT/; +$cached_env_img{$key} = q|$1/(1-g)$|; + +$key = q/{displaymath}X''[n]={{X[n]-X[n+Nslash2]}over2}=A[1]{U^n}+A[3]{U^{3n}}+cdots+A[N-1]{U^{(N-1)n}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+X''[n] = {{X[n] - X[n+N/2]}\over 2} =
+A[1]{U^n} + A[3]{U^{3n}} + \cdots + A[N-1]{U^{(N-1)n}}
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig08.29.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig08.29.ps}\end{figure}|; + +$key = q/{displaymath}z[n]=x[y[n]]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+z[n] = x[y[n]]
+\end{displaymath}|; + +$key = q/{figure}{psfig{file=figsslashfig04.18.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig04.18.ps}\end{figure}|; + +$key = q/x[n-1.5];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$x[n-1.5]$|; + +$key = q/{figure}{psfig{file=figsslashfig10.09.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig10.09.ps}\end{figure}|; + +$key = q/phi-xi;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\phi - \xi$|; + +$key = q/{displaymath}X'[n]={{X[n]+X[-n]}over2}=A[0]+A[1]cos(omegan)+cdots+A[N-1]cos(omega(N-1)n){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+X'[n] = {{X[n] + X[-n]}\over 2} =
+A[0] + A[1]\cos(\omega n)+ \cdots + A[N-1]\cos(\omega (N-1) n)
+\end{displaymath}|; + +$key = q/10R;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$10R$|; + +$key = q/{figure}{psfig{file=figsslashfig09.04.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig09.04.ps}\end{figure}|; + +$key = q/{figure}{psfig{file=figsslashfig07.14.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig07.14.ps}\end{figure}|; + +$key = q/1|; + +$key = q/{figure}{psfig{file=figsslashfig04.12.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig04.12.ps}\end{figure}|; + +$key = q/{displaymath}{a_0}+{a_1}cosleft(2omegan+{phi_1}right)+{a_2}cosleft(4omegan+{phi_2}right)+cdots{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{a_0} +
+{a_1} \cos \left ( 2 \omega n + {\phi_1} \right ) +
+{a_2} \cos \left ( 4 \omega n + {\phi_2} \right ) + \cdots
+\end{displaymath}|; + +$key = q/R(Z);MSF=1.6;AAT/; +$cached_env_img{$key} = q|$R(Z)$|; + +$key = q/{displaymath}angleT[k+1]-angleT[k]=angleS[m-1,k+1]-angleS[m-1,k]{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\angle T[k+1] - \angle T[k] = \angle S[m-1, k+1] - \angle S[m-1, k]
+\end{displaymath}|; + +$key = q/omega_cn+bcos(omega_pn);MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\omega_c n + b \cos(\omega_p n)$|; + +$key = q/{displaymath}Q=rcdot(cos(alpha)+isin(alpha)){displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+Q = r \cdot (\cos(\alpha) + i \sin(\alpha))
+\end{displaymath}|; + +$key = q/x[0];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$x[0]$|; + +$key = q/{figure}{psfig{file=figsslashfig10.06.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig10.06.ps}\end{figure}|; + +$key = q/{displaymath}S(Z)={{aZ+b}over{bZ+a}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+S(Z) =
+{{
+aZ + b
+} \over {
+bZ + a
+}}
+\end{displaymath}|; + +$key = q/{omega_b}slashomega;MSF=1.6;AAT/; +$cached_env_img{$key} = q|${\omega_b}/\omega$|; + +$key = q/Y[k];MSF=1.6;AAT/; +$cached_env_img{$key} = q|$Y[k]$|; + +$key = q/{displaymath}{|{y_1}|}^2+{|{y_2}|}^2={|{x_1}|}^2+{|{x_2}|}^2{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{\vert{y_1}\vert}^2 + {\vert{y_2}\vert}^2 = {\vert{x_1}\vert}^2 + {\vert{x_2}\vert}^2
+\end{displaymath}|; + +$key = q/{displaymath}ldots,{Z^0},{Z^1},{Z^2},ldots{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+\ldots, {Z^0}, {Z^1}, {Z^2}, \ldots
+\end{displaymath}|; + +$key = q/f(t);MSF=1.6;AAT/; +$cached_env_img{$key} = q|$f(t)$|; + +$key = q/1slash(2f);MSF=1.6;AAT/; +$cached_env_img{$key} = q|$1/(2f)$|; + +$key = q/T';MSF=1.6;AAT/; +$cached_env_img{$key} = q|$T'$|; + +$key = q/fbox{{mathrm{trigger}{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ $\mathrm{trigger}$}|; + +$key = q/fbox{{mathrm{clip}sim{};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{$\mathrm{clip}\sim$}|; + +$key = q/pi+omega;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\pi + \omega$|; + +$key = q/c_2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$c_2$|; + +$key = q/p+q=1;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$p + q = 1$|; + +$key = q/d=1.5;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$d=1.5$|; + +$key = q/{figure}{psfig{file=figsslashfig07.07.ps}{{{{figure};FSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{figure}\psfig{file=figs/fig07.07.ps}\end{figure}|; + +$key = q/1slashM;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$1/M$|; + +$key = q/omegan;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\omega n$|; + +$key = q/n^2;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$n^2$|; + +$key = q/{L_1};MSF=1.6;AAT/; +$cached_env_img{$key} = q|${L_1}$|; + +$key = q/Rslash10;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$R/10$|; + +$key = q/Phi;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$\Phi$|; + +$key = q/N=512;MSF=1.6;AAT/; +$cached_env_img{$key} = q|$N=512$|; + +$key = q/fbox{texttt{vd~}};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\fbox{ \texttt{vd\ }}|; + +$key = q/{displaymath}g[m,k]={{|T[m,k]|}over{|S[m,k]|}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+g[m, k] = {{\vert T[m, k]\vert}\over{\vert S[m, k]\vert}}
+\end{displaymath}|; + +$key = q/{displaymath}{{sin(komegan)}over{kpi}}{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{{\sin ( k \omega n)} \over {k \pi}}
+\end{displaymath}|; + +$key = q/{a_0}slash100;MSF=1.6;AAT/; +$cached_env_img{$key} = q|${a_0}/100$|; + +$key = q/i=sqrt{-1};MSF=1.6;AAT/; +$cached_env_img{$key} = q|$i=\sqrt{-1}$|; + +$key = q/{displaymath}{c_0}=2{a_0},{c_1}=2{a_2},{c_2}=2{a_4},ldots{displaymath};MSF=1.6;AAT/; +$cached_env_img{$key} = q|\begin{displaymath}
+{c_0} = 2{a_0}, {c_1} = 2{a_2}, {c_2} = 2{a_4}, \ldots
+\end{displaymath}|; + +1; + diff --git a/images.tex b/images.tex new file mode 100644 index 0000000..8fb6cb2 --- /dev/null +++ b/images.tex @@ -0,0 +1,11113 @@ +\batchmode +\input{psfig.sty} +\documentclass{book} +\RequirePackage{ifthen} + + +\usepackage{html} +\usepackage{makeidx} +\makeindex + + + + +\usepackage[dvips]{color} + + +\pagecolor[gray]{.7} + +\usepackage[latin1]{inputenc} + + + +\makeatletter +\AtBeginDocument{\makeatletter +\input /home/msp/papers/book/book.aux +\makeatother +} + +\makeatletter +\count@=\the\catcode`\_ \catcode`\_=8 +\newenvironment{tex2html_wrap}{}{}% +\catcode`\<=12\catcode`\_=\count@ +\newcommand{\providedcommand}[1]{\expandafter\providecommand\csname #1\endcsname}% +\newcommand{\renewedcommand}[1]{\expandafter\providecommand\csname #1\endcsname{}% + \expandafter\renewcommand\csname #1\endcsname}% +\newcommand{\newedenvironment}[1]{\newenvironment{#1}{}{}\renewenvironment{#1}}% +\let\newedcommand\renewedcommand +\let\renewedenvironment\newedenvironment +\makeatother +\let\mathon=$ +\let\mathoff=$ +\ifx\AtBeginDocument\undefined \newcommand{\AtBeginDocument}[1]{}\fi +\newbox\sizebox +\setlength{\hoffset}{0pt}\setlength{\voffset}{0pt} +\addtolength{\textheight}{\footskip}\setlength{\footskip}{0pt} +\addtolength{\textheight}{\topmargin}\setlength{\topmargin}{0pt} +\addtolength{\textheight}{\headheight}\setlength{\headheight}{0pt} +\addtolength{\textheight}{\headsep}\setlength{\headsep}{0pt} +\setlength{\textwidth}{349pt} +\newwrite\lthtmlwrite +\makeatletter +\let\realnormalsize=\normalsize +\global\topskip=2sp +\def\preveqno{}\let\real@float=\@float \let\realend@float=\end@float +\def\@float{\let\@savefreelist\@freelist\real@float} +\def\liih@math{\ifmmode$\else\bad@math\fi} +\def\end@float{\realend@float\global\let\@freelist\@savefreelist} +\let\real@dbflt=\@dbflt \let\end@dblfloat=\end@float +\let\@largefloatcheck=\relax +\let\if@boxedmulticols=\iftrue +\def\@dbflt{\let\@savefreelist\@freelist\real@dbflt} +\def\adjustnormalsize{\def\normalsize{\mathsurround=0pt \realnormalsize + \parindent=0pt\abovedisplayskip=0pt\belowdisplayskip=0pt}% + \def\phantompar{\csname par\endcsname}\normalsize}% +\def\lthtmltypeout#1{{\let\protect\string \immediate\write\lthtmlwrite{#1}}}% +\newcommand\lthtmlhboxmathA{\adjustnormalsize\setbox\sizebox=\hbox\bgroup\kern.05em }% +\newcommand\lthtmlhboxmathB{\adjustnormalsize\setbox\sizebox=\hbox to\hsize\bgroup\hfill }% +\newcommand\lthtmlvboxmathA{\adjustnormalsize\setbox\sizebox=\vbox\bgroup % + \let\ifinner=\iffalse \let\)\liih@math }% +\newcommand\lthtmlboxmathZ{\@next\next\@currlist{}{\def\next{\voidb@x}}% + \expandafter\box\next\egroup}% +\newcommand\lthtmlmathtype[1]{\gdef\lthtmlmathenv{#1}}% +\newcommand\lthtmllogmath{\dimen0\ht\sizebox \advance\dimen0\dp\sizebox + \ifdim\dimen0>.95\vsize + \lthtmltypeout{% +*** image for \lthtmlmathenv\space is too tall at \the\dimen0, reducing to .95 vsize ***}% + \ht\sizebox.95\vsize \dp\sizebox\z@ \fi + \lthtmltypeout{l2hSize % +:\lthtmlmathenv:\the\ht\sizebox::\the\dp\sizebox::\the\wd\sizebox.\preveqno}}% +\newcommand\lthtmlfigureA[1]{\let\@savefreelist\@freelist + \lthtmlmathtype{#1}\lthtmlvboxmathA}% +\newcommand\lthtmlpictureA{\bgroup\catcode`\_=8 \lthtmlpictureB}% +\newcommand\lthtmlpictureB[1]{\lthtmlmathtype{#1}\egroup + \let\@savefreelist\@freelist \lthtmlhboxmathB}% +\newcommand\lthtmlpictureZ[1]{\hfill\lthtmlfigureZ}% +\newcommand\lthtmlfigureZ{\lthtmlboxmathZ\lthtmllogmath\copy\sizebox + \global\let\@freelist\@savefreelist}% +\newcommand\lthtmldisplayA{\bgroup\catcode`\_=8 \lthtmldisplayAi}% +\newcommand\lthtmldisplayAi[1]{\lthtmlmathtype{#1}\egroup\lthtmlvboxmathA}% +\newcommand\lthtmldisplayB[1]{\edef\preveqno{(\theequation)}% + \lthtmldisplayA{#1}\let\@eqnnum\relax}% +\newcommand\lthtmldisplayZ{\lthtmlboxmathZ\lthtmllogmath\lthtmlsetmath}% +\newcommand\lthtmlinlinemathA{\bgroup\catcode`\_=8 \lthtmlinlinemathB} +\newcommand\lthtmlinlinemathB[1]{\lthtmlmathtype{#1}\egroup\lthtmlhboxmathA + \vrule height1.5ex width0pt }% +\newcommand\lthtmlinlineA{\bgroup\catcode`\_=8 \lthtmlinlineB}% +\newcommand\lthtmlinlineB[1]{\lthtmlmathtype{#1}\egroup\lthtmlhboxmathA}% +\newcommand\lthtmlinlineZ{\egroup\expandafter\ifdim\dp\sizebox>0pt % + \expandafter\centerinlinemath\fi\lthtmllogmath\lthtmlsetinline} +\newcommand\lthtmlinlinemathZ{\egroup\expandafter\ifdim\dp\sizebox>0pt % + \expandafter\centerinlinemath\fi\lthtmllogmath\lthtmlsetmath} +\newcommand\lthtmlindisplaymathZ{\egroup % + \centerinlinemath\lthtmllogmath\lthtmlsetmath} +\def\lthtmlsetinline{\hbox{\vrule width.1em \vtop{\vbox{% + \kern.1em\copy\sizebox}\ifdim\dp\sizebox>0pt\kern.1em\else\kern.3pt\fi + \ifdim\hsize>\wd\sizebox \hrule depth1pt\fi}}} +\def\lthtmlsetmath{\hbox{\vrule width.1em\kern-.05em\vtop{\vbox{% + \kern.1em\kern0.8 pt\hbox{\hglue.17em\copy\sizebox\hglue0.8 pt}}\kern.3pt% + \ifdim\dp\sizebox>0pt\kern.1em\fi \kern0.8 pt% + \ifdim\hsize>\wd\sizebox \hrule depth1pt\fi}}} +\def\centerinlinemath{% + \dimen1=\ifdim\ht\sizebox<\dp\sizebox \dp\sizebox\else\ht\sizebox\fi + \advance\dimen1by.5pt \vrule width0pt height\dimen1 depth\dimen1 + \dp\sizebox=\dimen1\ht\sizebox=\dimen1\relax} + +\def\lthtmlcheckvsize{\ifdim\ht\sizebox<\vsize + \ifdim\wd\sizebox<\hsize\expandafter\hfill\fi \expandafter\vfill + \else\expandafter\vss\fi}% +\providecommand{\selectlanguage}[1]{}% +\makeatletter \tracingstats = 1 + + +\begin{document} +\pagestyle{empty}\thispagestyle{empty}\lthtmltypeout{}% +\lthtmltypeout{latex2htmlLength hsize=\the\hsize}\lthtmltypeout{}% +\lthtmltypeout{latex2htmlLength vsize=\the\vsize}\lthtmltypeout{}% +\lthtmltypeout{latex2htmlLength hoffset=\the\hoffset}\lthtmltypeout{}% +\lthtmltypeout{latex2htmlLength voffset=\the\voffset}\lthtmltypeout{}% +\lthtmltypeout{latex2htmlLength topmargin=\the\topmargin}\lthtmltypeout{}% +\lthtmltypeout{latex2htmlLength topskip=\the\topskip}\lthtmltypeout{}% +\lthtmltypeout{latex2htmlLength headheight=\the\headheight}\lthtmltypeout{}% +\lthtmltypeout{latex2htmlLength headsep=\the\headsep}\lthtmltypeout{}% +\lthtmltypeout{latex2htmlLength parskip=\the\parskip}\lthtmltypeout{}% +\lthtmltypeout{latex2htmlLength oddsidemargin=\the\oddsidemargin}\lthtmltypeout{}% +\makeatletter +\if@twoside\lthtmltypeout{latex2htmlLength evensidemargin=\the\evensidemargin}% +\else\lthtmltypeout{latex2htmlLength evensidemargin=\the\oddsidemargin}\fi% +\lthtmltypeout{}% +\makeatother +\setcounter{page}{1} +\onecolumn + +% !!! IMAGES START HERE !!! + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19209}% +$\sqrt 2$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19212}% +$y[n]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19215}% +$N$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19218}% +$a$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19221}% +$\pi /2$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19223}% +$3\pi /2$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19227}% +$\alpha $% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19229}% +$\beta $% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19231}% +$\alpha > \beta > 0$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19233}% +$\beta > \alpha $% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19235}% +$f=0$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19237}% +$\alpha =\beta $% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19239}% +$\alpha =0$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19248}% +$f()$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19251}% +$f(x) = {x^2}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19254}% +$2\pi $% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19257}% +$W(\phi )=(1+\mathop {\mathgroup \symoperators cos}\nolimits (\phi ))/2$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19259}% +$a=1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19261}% +$a=2$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19269}% +$Z$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19273}% +$b$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19280}% +$|Z|=1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19282}% +$A$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19289}% +$Z^-d$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19291}% +$H$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19295}% +$d/2$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19302}% +$\omega $% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19305}% +$d$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19307}% +$g$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19311}% +$|H|$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19313}% +$W$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19323}% +$g = 0.8$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19325}% +$1/(1-g)$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19329}% +$\theta = \pi /4$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19331}% +$a = \mathop {\mathgroup \symoperators cos}\nolimits (\theta ) = \mathop {\mathgroup \symoperators sin}\nolimits (\theta ) = \sqrt {1/2} \approx 0.7071$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19335}% +$R$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19338}% +$t_1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19340}% +$t_2$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19342}% +$t_3$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19347}% +$D$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19350}% +$\pi $% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19353}% +$Q$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19355}% +$Q=-1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19367}% +$r=|Q|$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19371}% +$r=0.5$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19374}% +$\beta = \pi /4$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19376}% +$\beta =\pi $% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19378}% +$\beta =3\pi /10$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19380}% +$\beta =2\pi /10$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19382}% +$\beta =0$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19389}% +$R(Z) = -{Z^2}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19395}% +$\pi /4$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19398}% +$P=0.8$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19400}% +$P=0.9$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19402}% +$|P|=0.9$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19404}% +$2\pi /10$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19410}% +$p$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19413}% +$k$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19421}% +$2\omega $% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19423}% +$1.5\omega $% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19428}% +$\alpha =1.5\omega =3\pi /N$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19437}% +$D_N$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19439}% +$N=100$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19443}% +$S[m, k]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19446}% +$\@mathrm {fft}\sim $% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19449}% +$(M, c)$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19451}% +$(0, 8)$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19453}% +$(N/2, -8)$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19458}% +$(M, 1)$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19460}% +$(N-M, -1)$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19464}% +$M/N=0.03$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19466}% +$1/k$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline19468}% +$1/{k^2}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + + +% +\providecommand{\patchAA}{A01.sinewave.pd}% + + +% +\providecommand{\patchAB}{A02.amplitude.pd}% + + +% +\providecommand{\patchAC}{A03.line.pd}% + + +% +\providecommand{\patchACbis}{A04.line2.pd}% + + +% +\providecommand{\patchAD}{A05.output.subpatch.pd}% + + +% +\providecommand{\patchAE}{A06.frequency.pd}% + + +% +\providecommand{\patchAG}{A07.fusion.pd}% + + +% +\providecommand{\patchAH}{A08.beating.pd}% + + +% +\providecommand{\patchAI}{A09.frequency.mod.pd}% + + +% +\providecommand{\patchBA}{B01.wavetables.pd}% + + +% +\providecommand{\patchBB}{B02.wavetable.FM.pd}% + + +% +\providecommand{\patchBC}{B03.tabread4.pd}% + + +% +\providecommand{\patchBD}{B04.sampler.pd}% + + +% +\providecommand{\patchBE}{B05.sampler.loop.pd}% + + +% +\providecommand{\patchBF}{B06.sampler.loop.smooth.pd}% + + +% +\providecommand{\patchBG}{B07.sampler.scratch.pd}% + + +% +\providecommand{\patchBH}{B08.sampler.nodoppler.pd}% + + +% +\providecommand{\patchBI}{B09.sampler.transpose.pd}% + + +% +\providecommand{\patchBJ}{B10.sampler.overlap.pd}% + + +% +\providecommand{\patchBK}{B11.sampler.rockafella.pd}% + + +% +\providecommand{\patchCA}{C01.nyquist.pd}% + + +% +\providecommand{\patchCB}{C02.sawtooth-foldover.pd}% + + +% +\providecommand{\patchCC}{C03.zipper.noise.pd}% + + +% +\providecommand{\patchCD}{C04.control.to.signal.pd}% + + +% +\providecommand{\patchCE}{C05.sampler.oneshot.pd}% + + +% +\providecommand{\patchCF}{C06.signal.to.control.pd}% + + +% +\providecommand{\patchCG}{C07.envelope.follower.pd}% + + +% +\providecommand{\patchCH}{C08.analog.sequencer.pd}% + + +% +\providecommand{\patchCI}{C09.sample.hold.pd}% + + +% +\providecommand{\patchCJ}{C10.monophonic.synth.pd}% + + +% +\providecommand{\patchDA}{D01.envelope.gen.pd}% + + +% +\providecommand{\patchDB}{D02.adsr.pd}% + + +% +\providecommand{\patchDC}{D03.envelope.dB.pd}% + + +% +\providecommand{\patchDD}{D04.envelope.quartic.pd}% + + +% +\providecommand{\patchDE}{D05.envelope.pitch.pd}% + + +% +\providecommand{\patchDF}{D06.envelope.portamento.pd}% + + +% +\providecommand{\patchDG}{D07.additive.pd}% + + +% +\providecommand{\patchDH}{D08.table.spectrum.pd}% + + +% +\providecommand{\patchDI}{D09.shepard.tone.pd}% + + +% +\providecommand{\patchDJ}{D10.sampler.notes.pd}% + + +% +\providecommand{\patchDK}{D11.sampler.poly.pd}% + + +% +\providecommand{\patchEA}{E01.spectrum.pd}% + + +% +\providecommand{\patchEB}{E02.ring.modulation.pd}% + + +% +\providecommand{\patchEC}{E03.octave.divider.pd}% + + +% +\providecommand{\patchED}{E04.difference.tone.pd}% + + +% +\providecommand{\patchEE}{E05.chebychev.pd}% + + +% +\providecommand{\patchEF}{E06.exponential.pd}% + + +% +\providecommand{\patchEG}{E07.evenodd.pd}% + + +% +\providecommand{\patchEH}{E08.phase.mod.pd}% + + +% +\providecommand{\patchEI}{E09.FM.spectrum.pd}% + + +% +\providecommand{\patchEJ}{E10.complex.FM.pd}% + + +% +\providecommand{\patchFA}{F01.pulse.pd}% + + +% +\providecommand{\patchFE}{F05.ring.modulation.pd}% + + +% +\providecommand{\patchFF}{F06.packets.pd}% + + +% +\providecommand{\patchFH}{F08.two.cosines.pd}% + + +% +\providecommand{\patchFI}{F09.declickit.pd}% + + +% +\providecommand{\patchFL}{F12.paf.pd}% + + +% +\providecommand{\patchFM}{F13.paf.control.pd}% + + +% +\providecommand{\patchFN}{F14.wave.packet.pd}% + + +% +\providecommand{\patchGA}{G01.delay.pd}% + + +% +\providecommand{\patchGB}{G02.delay.loop.pd}% + + +% +\providecommand{\patchGC}{G03.delay.variable.pd}% + + +% +\providecommand{\patchGD}{G04.control.blocksize.pd}% + + +% +\providecommand{\patchGE}{G05.execution.order.pd}% + + +% +\providecommand{\patchGF}{G06.octave.doubler.pd}% + + +% +\providecommand{\patchGG}{G07.shaker.pd}% + + +% +\providecommand{\patchGH}{G08.reverb.pd}% + + +% +\providecommand{\patchGI}{G09.pitchshift.pd}% + + +% +\providecommand{\patchHA}{H01.low-pass.pd}% + + +% +\providecommand{\patchHB}{H02.high-pass.pd}% + + +% +\providecommand{\patchHC}{H03.band-pass.pd}% + + +% +\providecommand{\patchHD}{H04.filter.sweep.pd}% + + +% +\providecommand{\patchHE}{H05.filter.floyd.pd}% + + +% +\providecommand{\patchHF}{H06.envelope.follower.pd}% + + +% +\providecommand{\patchHG}{H07.measure.spectrum.pd}% + + +% +\providecommand{\patchHH}{H08.heterodyning.pd}% + + +% +\providecommand{\patchHI}{H09.ssb.modulation.pd}% + + +% +\providecommand{\patchHJ}{H10.measurement.pd}% + + +% +\providecommand{\patchHK}{H11.shelving.pd}% + + +% +\providecommand{\patchHL}{H12.peaking.pd}% + + +% +\providecommand{\patchHM}{H13.butterworth.pd}% + + +% +\providecommand{\patchHN}{H14.all.pass.pd}% + + +% +\providecommand{\patchHO}{H15.phaser.pd}% + + +% +\providecommand{\patchIA}{I01.Fourier.analysis.pd}% + + +% +\providecommand{\patchIB}{I02.Hann.window.pd}% + + +% +\providecommand{\patchIC}{I03.resynthesis.pd}% + + +% +\providecommand{\patchID}{I04.noisegate.pd}% + + +% +\providecommand{\patchIE}{I05.compressor.pd}% + + +% +\providecommand{\patchIF}{I06.timbre.stamp.pd}% + + +% +\providecommand{\patchIG}{I07.phase.vocoder.pd}% + + +% +\providecommand{\patchIH}{I08.pvoc.reverb.pd}% + + +% +\providecommand{\patchII}{I09.sheep.from.goats.pd}% + + +% +\providecommand{\patchIJ}{I10.phase.bash.pd}% + + +% +\providecommand{\patchJA}{J01.even.odd.pd}% + + +% +\providecommand{\patchJB}{J02.trapezoids.pd}% + + +% +\providecommand{\patchJC}{J03.pulse.width.mod.pd}% + + +% +\providecommand{\patchJD}{J04.corners.pd}% + + +% +\providecommand{\patchJE}{J05.triangle.pd}% + + +% +\providecommand{\patchJF}{J06.enveloping.pd}% + + +% +\providecommand{\patchJG}{J07.oversampling.pd}% + + +% +\providecommand{\patchJH}{J08.classicsynth.pd}% + + +% +\providecommand{\patchJI}{J09.bandlimited.pd}% + + +% +\providecommand{\pdplus}{\texttt{+}}% + + +% +\providecommand{\pddbtorms}{\texttt{dbtorms}}% + + +% +\providecommand{\pddelay}{\texttt{delay}}% + + +% +\providecommand{\pddel}{\texttt{del}}% + + +% +\providecommand{\pddiv}{\texttt{div}}% + + +% +\providecommand{\pdexpr}{\texttt{expr}}% + + +% +\providecommand{\pdftom}{\texttt{ftom}}% + + +% +\providecommand{\pdf}{\texttt{f}}% + + +% +\providecommand{\pdfloat}{\texttt{float}}% + + +% +\providecommand{\pdinlet}{\texttt{inlet}}% + + +% +\providecommand{\pdline}{\texttt{line}}% + + +% +\providecommand{\pdmakefilename}{\texttt{makefilename}}% + + +% +\providecommand{\pdmakenote}{\texttt{makenote}}% + + +% +\providecommand{\pdmetro}{\texttt{metro}}% + + +% +\providecommand{\pdmod}{\texttt{pdmod}}% + + +% +\providecommand{\pdmoses}{\texttt{moses}}% + + +% +\providecommand{\pdmtof}{\texttt{mtof}}% + + +% +\providecommand{\pdnotein}{\texttt{notein}}% + + +% +\providecommand{\pdoutlet}{\texttt{outlet}}% + + +% +\providecommand{\pdpack}{\texttt{pack}}% + + +% +\providecommand{\pdpipe}{\texttt{pipe}}% + + +% +\providecommand{\pdpoly}{\texttt{poly}}% + + +% +\providecommand{\pdr}{\texttt{r}}% + + +% +\providecommand{\pdreceive}{\texttt{receive}}% + + +% +\providecommand{\pdroute}{\texttt{route}}% + + +% +\providecommand{\pds}{\texttt{s}}% + + +% +\providecommand{\pdsend}{\texttt{send}}% + + +% +\providecommand{\pdselect}{\texttt{select}}% + + +% +\providecommand{\pdstripnote}{\texttt{stripnote}}% + + +% +\providecommand{\pdtabreadfour}{\texttt{tabread4}}% + + +% +\providecommand{\pdtabread}{\texttt{tabread}}% + + +% +\providecommand{\pdtabwrite}{\texttt{tabwrite}}% + + +% +\providecommand{\pdtrigger}{\texttt{trigger}}% + + +% +\providecommand{\pdunpack}{\texttt{pdunpack}}% + + +% +\providecommand{\pduntil}{\texttt{until}}% + + +% +\providecommand{\pdtimestilde}{\texttt{*\~}}% + + +% +\providecommand{\pdplustilde}{\texttt{+\~}}% + + +% +\providecommand{\pdbangtilde}{\texttt{bang\~}}% + + +% +\providecommand{\pdbiquadtilde}{\texttt{biquad\~}}% + + +% +\providecommand{\pdblocktilde}{\texttt{block\~}}% + + +% +\providecommand{\pdbptilde}{\texttt{bp\~}}% + + +% +\providecommand{\pdcatchtilde}{\texttt{catch\~}}% + + +% +\providecommand{\pdcliptilde}{\texttt{clip\~}}% + + +% +\providecommand{\pdcostilde}{\texttt{cos\~}}% + + +% +\providecommand{\pdcpoletilde}{\texttt{cpole\~}}% + + +% +\providecommand{\pdczerorevtilde}{\texttt{czero\_rev\~}}% + + +% +\providecommand{\pdczerotilde}{\texttt{czero\~}}% + + +% +\providecommand{\pddactilde}{\texttt{dac\~}}% + + +% +\providecommand{\pddbtormstilde}{\texttt{dbtorms\~}}% + + +% +\providecommand{\pddelreadtilde}{\texttt{delread\~}}% + + +% +\providecommand{\pddelwritetilde}{\texttt{delwrite\~}}% + + +% +\providecommand{\pdffttilde}{\texttt{fft\~}}% + + +% +\providecommand{\pdfiddletilde}{\texttt{fiddle\~}}% + + +% +\providecommand{\pdhiptilde}{\texttt{hip\~}}% + + +% +\providecommand{\pdiffttilde}{\texttt{ifft\~}}% + + +% +\providecommand{\pdinlettilde}{\texttt{inlet\~}}% + + +% +\providecommand{\pdlinetilde}{\texttt{line\~}}% + + +% +\providecommand{\pdloptilde}{\texttt{lop\~}}% + + +% +\providecommand{\pdlrshifttilde}{\texttt{lrshift\~}}% + + +% +\providecommand{\pdnoisetilde}{\texttt{noise\~}}% + + +% +\providecommand{\pdosctilde}{\texttt{osc\~}}% + + +% +\providecommand{\pdoutlettilde}{\texttt{outlet\~}}% + + +% +\providecommand{\pdphasortilde}{\texttt{phasor\~}}% + + +% +\providecommand{\pdreceivetilde}{\texttt{receive\~}}% + + +% +\providecommand{\pdrffttilde}{\texttt{rfft\~}}% + + +% +\providecommand{\pdriffttilde}{\texttt{rifft\~}}% + + +% +\providecommand{\pdrpoletilde}{\texttt{rpole\~}}% + + +% +\providecommand{\pdrzerorevtilde}{\texttt{rzero\_rev\~}}% + + +% +\providecommand{\pdrzerotilde}{\texttt{rzero\~}}% + + +% +\providecommand{\pdsampholdtilde}{\texttt{samphold\~}}% + + +% +\providecommand{\pdsendtilde}{\texttt{send\~}}% + + +% +\providecommand{\pdsqrttilde}{\texttt{sqrt\~}}% + + +% +\providecommand{\pdswitchtilde}{\texttt{switch\~}}% + + +% +\providecommand{\pdtaboscfourtilde}{\texttt{tabosc4\~}}% + + +% +\providecommand{\pdtabreadfourtilde}{\texttt{tabread4\~}}% + + +% +\providecommand{\pdtabreadtilde}{\texttt{tabread\~}}% + + +% +\providecommand{\pdtabreceivetilde}{\texttt{tabreceive\~}}% + + +% +\providecommand{\pdtabsendtilde}{\texttt{tabsend\~}}% + + +% +\providecommand{\pdtabwritetilde}{\texttt{tabwrite\~}}% + + +% +\providecommand{\pdthrowtilde}{\texttt{throw\~}}% + + +% +\providecommand{\pdvcftilde}{\texttt{vcf\~}}% + + +% +\providecommand{\pdvdtilde}{\texttt{vd\~}}% + + +% +\providecommand{\pdvlinetilde}{\texttt{vline\~}}% + + +% +\providecommand{\pdwraptilde}{\texttt{wrap\~}}% + + +% +\providecommand{\pdoutputtilde}{\texttt{output\~}}% + + +% +\providecommand{\pdobject}[1]{\texttt{#1}}% + + +% +\providecommand{\refchapterwavetab}{2}% + + +% +\providecommand{\refchaptermod}{5}% + + +% +\providecommand{\refchapterpaf}{6}% + + +% +\providecommand{\refchapterdel}{7}% + + +% +\providecommand{\refchapterfft}{9}% + +\stepcounter{chapter} +{\newpage\clearpage +\lthtmldisplayA{displaymath1490}% +\begin{displaymath} + ..., x[n-1], x[n], x[n+1], ... +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1530}% +$n$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath1491}% +\begin{displaymath} + x[n] = a \cos (\omega n + \phi ) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1536}% +$\phi$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1540}% +$\omega n + \phi$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1542}% +$n=0$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1546}% +$x[n]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure1026}% +\begin{figure}\psfig{file=figs/fig01.01.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1550}% +$t$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1554}% +$Rt = n$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1556}% +$t = n/R$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath1492}% +\begin{displaymath} + f = {{\omega R} \over {2 \pi}} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1566}% +$M$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath1493}% +\begin{displaymath} + x[M], x[M+1], \ldots, x[M+N-1] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath1494}% +\begin{displaymath} + {A_{\mathrm{peak}}} \{x[n]\} = \max | x[n] | , + \hspace{0.3in}n = M, \ldots, M+N-1 +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath1495}% +\begin{displaymath} + {A_{\mathrm{RMS}}} \{x[n]\} = \sqrt{P\{x[n]\}} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1572}% +$P\{x[n]\}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath1496}% +\begin{displaymath} + {P\{x[n]\}} = {1 \over N} \left ( + {{|x[M]|} ^2} + \cdots + {{|x[M+N-1]|} ^2} + \right ) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1576}% +$1 / {\sqrt N}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure1057}% +\begin{figure}\psfig{file=figs/fig01.02.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1582}% +$a / {\sqrt 2}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmldisplayA{displaymath1497}% +\begin{displaymath} + d = 20 \cdot {{{\log}_{10}} ( {a / {a_0}} )} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1588}% +$a_0$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1590}% +$\sqrt {10}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1592}% +$1/2$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure1073}% +\begin{figure}\psfig{file=figs/fig01.03.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1598}% +${a_0}/10$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1600}% +${a_0}/100$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1602}% +$-\infty$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath1498}% +\begin{displaymath} + {a_0} = {10^{-5}} = 0.00001 +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlfigureA{figure1088}% +\begin{figure}\psfig{file=figs/fig01.04.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1608}% +$y \ge +0$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1610}% +$y$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1612}% +$y \cdot +x[n]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1622}% +$y[n] \cdot x[n]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1626}% +$M+N-1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1638}% +${2 ^ {1/{12}}}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1640}% +$m$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1642}% +$f$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath1499}% +\begin{displaymath} + m = 69 + 12 \cdot {\log _ 2} (f/440) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath1500}% +\begin{displaymath} + f = 440 \cdot {{2} ^ {(m - 69) / 12}} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1644}% +$m=60$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1646}% +$f=261.626$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlfigureA{figure1121}% +\begin{figure}\psfig{file=figs/fig01.05.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure1127}% +\begin{figure}\psfig{file=figs/fig01.06.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath1501}% +\begin{displaymath} + y[n] = a + (b - a) {{n-M} \over N}, \hspace{0.1in} M \le n \le M+N-1. +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1674}% +$a=b$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure1146}% +\begin{figure}\psfig{file=figs/fig01.07.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1680}% +$k \cdot x[n]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1682}% +$k \ge 0$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1684}% +$kA$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1686}% +$k^2$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath1502}% +\begin{displaymath} + {A_{\mathrm{peak}}} \{x[n]\} + + {A_{\mathrm{peak}}} \{y[n]\} \ge + {A_{\mathrm{peak}}} \{x[n]+y[n]\} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath1503}% +\begin{displaymath} + {A_{\mathrm{RMS}}} \{x[n]\} + + {A_{\mathrm{RMS}}} \{y[n]\} \ge + {A_{\mathrm{RMS}}} \{x[n]+y[n]\} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1694}% +$N+M-1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath1504}% +\begin{displaymath} + P \{x[n] + y[n]\} = P \{x[n]\} + P \{y[n]\} + + 2 \cdot {\mathrm{COV}} \{ x[n] , y[n] \} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath1505}% +\begin{displaymath} + {\mathrm{COV}} \{ x[n] , y[n] \} = + { + {x[M]y[M] + \cdots + x[M+N-1]y[M+N-1]} + \over + N + } +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath1506}% +\begin{displaymath} + P \{x[n] + y[n]\} = P \{x[n]\} + P \{y[n]\} , \hspace{0.1in} + \mathrm{whenever} + \ {\mathrm{COV}} \{ x[n] , y[n] \} = 0 +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath1507}% +\begin{displaymath} + {{\left ( {A_{\mathrm{RMS}}} \{x[n]+y[n]\} \right ) } ^ 2} = + {{\left ( {A_{\mathrm{RMS}}} \{x[n]\} \right ) } ^ 2} + + {{\left ( {A_{\mathrm{RMS}}} \{y[n]\} \right ) } ^ 2} . +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1698}% +${\sqrt 2} a$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1700}% +$2a$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1704}% +$\tau$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath1508}% +\begin{displaymath} + x[n + \tau] = x[n] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1708}% +$2 \tau$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1716}% +$2 \pi / \omega$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1720}% +$2 \pi k/ \omega$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath1509}% +\begin{displaymath} + x[n] = {a_0} + + {a_1} \cos \left ( \omega n + {\phi_1} \right ) + + {a_2} \cos \left ( 2 \omega n + {\phi_2} \right ) + \cdots + + {a_p} \cos \left ( p \omega n + {\phi_p} \right ) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1730}% +$\omega, 2 \omega, \ldots$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure1194}% +\begin{figure}\psfig{file=figs/fig01.08.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure1200}% +\begin{figure}\psfig{file=figs/fig01.09.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlfigureA{figure1236}% +\begin{figure}\psfig{file=figs/fig01.10.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlfigureA{figure1254}% +\begin{figure}\psfig{file=figs/fig01.11.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1994}% +\fbox{ $ \mathrm{osc}\sim $}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2000}% +\fbox{ $*\sim$\ }% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2006}% +\fbox{ $ \mathrm{dac}\sim $}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure1271}% +\begin{figure}\psfig{file=figs/fig01.12.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2026}% +\fbox{ $ \mathrm{dbtorms} $}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2028}% +\fbox{ $ \mathrm{dbtorms}\sim $}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2040}% +\fbox{ $ \mathrm{line}\sim $}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure1294}% +\begin{figure}\psfig{file=figs/fig01.13.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2070}% +\fbox{ $ \mathrm{mtof} $}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2072}% +\fbox{ $ \mathrm{ftom} $}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2080}% +\fbox{ $ \mathrm{receive} $}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2082}% +\fbox{ $ \mathrm{r} $}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2090}% +\fbox{ $\mathrm{send}$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2092}% +\fbox{ $\mathrm{s}$\ }% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure1320}% +\begin{figure}\psfig{file=figs/fig01.14.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure1328}% +\begin{figure}\psfig{file=figs/fig01.15.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1776}% +$\phi=0$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1778}% +$\omega = \pi/10$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1780}% +$n=10$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline1782}% +$x[n], n = 0, ..., N-1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{chapter} +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2726}% +$n = 0, ..., N-1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2734}% +$z[n]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath2656}% +\begin{displaymath} + z[n] = x[y[n]] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure2154}% +\begin{figure}\psfig{file=figs/fig02.01.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2740}% +$0, ..., N-1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2746}% +$N-1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath2657}% +\begin{displaymath} + z[n] = \left \{ { + \begin{array}{ll} + x[ \lfloor y[n] \rfloor ] & \mbox{if $0 \le y[n] < N-1$} \\ + x[0] & \mbox{if $y[n] < 0$} \\ + x[N-1] & \mbox{if $y[n] \ge N-1$} \\ + \end{array} + } \right . +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2754}% +$\lfloor y[n] \rfloor$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2758}% +$y[0]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2760}% +$z[0]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2762}% +$y[1]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2764}% +$z[1]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2768}% +$0 \le y[n] < N$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2774}% +$0$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2776}% +$40$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2778}% +$R/20$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure2174}% +\begin{figure}\psfig{file=figs/fig02.02.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlfigureA{figure2188}% +\begin{figure}\psfig{file=figs/fig02.03.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2802}% +$2\pi/N$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2804}% +$0 \le x[n] \le 1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2806}% +$x[n] = 0$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2808}% +$x[n] = 1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath2658}% +\begin{displaymath} + (1 - x[n])y[n] + x[n]z[n] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath2659}% +\begin{displaymath} + y[n] + x[n](z[n]-y[n]) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure2196}% +\begin{figure}\psfig{file=figs/fig02.04.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2826}% +$N/M$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2828}% +$N f / R$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2834}% +$t=3/2$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2836}% +$h$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath2660}% +\begin{displaymath} + t = {N / M} = {{N f} / R} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath2661}% +\begin{displaymath} + h = 12 \, {\log _ 2} \left ( {N \over M} \right ) = + 12 \, {\log _ 2} \left ( {N f \over R} \right ) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath2662}% +\begin{displaymath} + f = {{2^{h/12} R} \over N} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath2663}% +\begin{displaymath} + N = {{2^{h/12} R} \over f} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2844}% +$y[t]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath2664}% +\begin{displaymath} + t[n] = \left | y[n] - y[n-1] \right | +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath2665}% +\begin{displaymath} + h[n] = 12 {{\log_2} \left | y[n] - y[n-1] \right |} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2850}% +$|$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2852}% +$y[n] = n$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2854}% +$z[n] = x[n]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath2666}% +\begin{displaymath} + y[n]-y[n-1] = 1 +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2856}% +$y[n] = 2n$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath2667}% +\begin{displaymath} + y[n]-y[n-1] = 2 +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2872}% +$s$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2874}% +$t = fs/R$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2880}% +$l$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2894}% +$l+s$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2898}% +$-1/2$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2904}% +$-s/2$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2906}% +$s/2$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2910}% +$l-s/2$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2912}% +$l+s/2$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure2230}% +\begin{figure}\psfig{file=figs/fig02.05.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlfigureA{figure2241}% +\begin{figure}\psfig{file=figs/fig02.06.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure2247}% +\begin{figure}\psfig{file=figs/fig02.07.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure2254}% +\begin{figure}\psfig{file=figs/fig02.08.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlfigureA{figure2269}% +\begin{figure}\psfig{file=figs/fig02.09.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath2668}% +\begin{displaymath} + {x_{100}}[n] = {a_0} + + {a_1} \cos \left ( \omega n + {\phi_1} \right ) + + {a_2} \cos \left ( 2 \omega n + {\phi_2} \right ) + \cdots +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2934}% +$\pi/10$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2936}% +${x_{50}}[n]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath2669}% +\begin{displaymath} + {x_{100}}[2n] = {x_{50}}[n] + {x_{50}}[n+{\pi \over \omega}] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2940}% +$\pi / \omega$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath2670}% +\begin{displaymath} + {x_{50}}[n] = {b_0} + + {b_1} \cos \left ( \omega n + {\theta_1} \right ) + + {b_2} \cos \left ( 2 \omega n + {\theta_2} \right ) + \cdots +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath2671}% +\begin{displaymath} + {a_0} + + {a_1} \cos \left ( 2 \omega n + {\phi_1} \right ) + + {a_2} \cos \left ( 4 \omega n + {\phi_2} \right ) + \cdots +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath2672}% +\begin{displaymath} + = + {b_0} + + {b_1} \cos \left ( \omega n + {\theta_1} \right ) + + {b_2} \cos \left ( 2 \omega n + {\theta_2} \right ) + \cdots +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath2673}% +\begin{displaymath} + + + {b_0} + + {b_1} \cos \left ( \omega n + \pi + {\theta_1} \right ) + + {b_2} \cos \left ( 2 \omega n + 2 \pi + {\theta_2} \right ) + \cdots +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath2674}% +\begin{displaymath} + = 2 {b_0} + + 2 {b_2} \cos \left ( 2 \omega n + {\theta_2} \right ) + + 2 {b_4} \cos \left ( 4 \omega n + {\theta_4} \right ) + \cdots +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath2675}% +\begin{displaymath} + {a_0} = 2{b_0}, \,\, {a_1} = 2{b_2}, \,\, {a_2} = 2{b_4} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2944}% +$x_{50}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2946}% +$x_{100}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2952}% +$x_{200}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath2676}% +\begin{displaymath} + {x_{200}}[2n] = {x_{100}}[n] + {x_{100}}[n+{\pi \over \omega}] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2956}% +$c_0$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2958}% +$c_1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2960}% +$\ldots$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath2677}% +\begin{displaymath} + {c_0} = 2{a_0}, {c_1} = 2{a_2}, {c_2} = 2{a_4}, \ldots +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2968}% +$1/f$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure2340}% +\begin{figure}\psfig{file=figs/fig02.10.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2978}% +$x$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2980}% +${x_0}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath2678}% +\begin{displaymath} + {y_{\mathrm{INT}}}(x) = + {a_0} + {a_1} (x - {x_0}) + {a_2} {{({x - x_0})}^ 2 } + \cdots + + {a_n} {{({x - x_0})}^ n } +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2982}% +$n+1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2988}% +$x_0$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2992}% +$\lfloor x \rfloor$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath2679}% +\begin{displaymath} + {y_{\mathrm{INT}}}(x) = + y[{x_0}] + (y[{x_0} + 1]- y[{x_0}]) \cdot (x - {x_0}) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath2680}% +\begin{displaymath} + {a_0} = y[{x_0}] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath2681}% +\begin{displaymath} + {a_1} = y[{x_0} + 1]- y[{x_0}] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline2994}% +$n-1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure2372}% +\begin{figure}\psfig{file=figs/fig02.11.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath2682}% +\begin{displaymath} + {y_{\mathrm{INT}}}(x) = +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath2683}% +\begin{displaymath} + -f (f-1)(f-2)/6 \cdot y[{x_0}-1] + + (f+1)(f-1)(f-2)/2 \cdot y[{x_0}] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath2684}% +\begin{displaymath} + - (f+1) f (f-2) / 2 \cdot y[{x_0}+1] + + (f+1) f (f-1) / 6 \cdot y[{x_0}+2] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline3000}% +$f = x - {x_0}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline3006}% +$N + 1 - k$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline3008}% +$k=1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline3020}% +$N-1/2$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline3032}% +$N-2$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline3036}% +$1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline3040}% +$N-3$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath2685}% +\begin{displaymath} + x[n] = \cos(2 \pi n / N) ,\, n = 0, \ldots, N-1 +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline3044}% +$N+1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath2686}% +\begin{displaymath} + x[n] = \cos(2 \pi n / N) ,\, n = 0, \ldots, N +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline3052}% +$n=1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline3064}% +$N+2$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline3068}% +$2$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline3070}% +$N+3$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath2687}% +\begin{displaymath} + x[n] = \cos(2 \pi (n-1) / N) ,\, n = 0, \ldots, N+2 +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlfigureA{figure2398}% +\begin{figure}\psfig{file=figs/fig02.12.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline3366}% +\fbox{ $ \mathrm{tabosc4}\sim $}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline3076}% +${2^m} + 3$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure2410}% +\begin{figure}\psfig{file=figs/fig02.13.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline3386}% +\fbox{ $\mathrm{tabread4}\sim$\ }% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline3392}% +\fbox{ $\mathrm{tabwrite}\sim$\ }% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline3402}% +\fbox{ $\mathrm{pack}$\ }% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure2428}% +\begin{figure}\psfig{file=figs/fig02.14.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline3424}% +\fbox{ $\mathrm{hip}\sim$\ }% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure2441}% +\begin{figure}\psfig{file=figs/fig02.15.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline3444}% +\fbox{ $\mathrm{cos}\sim$\ }% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline3100}% +$-\pi/2$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline3458}% +\fbox{ $\mathrm{samphold}\sim$\ }% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure2464}% +\begin{figure}\psfig{file=figs/fig02.16.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline3478}% +\fbox{ $\mathrm{loadbang}$\ }% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline3484}% +\fbox{ $\mathrm{expr}$\ }% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline3490}% +\fbox{$\mathrm{wrap}\sim$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline3496}% +\fbox{ $\mathrm{send}\sim$\ }% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline3498}% +\fbox{ $\mathrm{s}\sim$\ }% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline3500}% +\fbox{ $\mathrm{receive}\sim$\ }% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline3502}% +\fbox{ $\mathrm{r}\sim$\ }% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline3140}% +$c$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath2688}% +\begin{displaymath} + t = p + cf +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath2689}% +\begin{displaymath} + f = {{t - p} \over c} = {{{{2 ^ {h/12}}} - p} \over c} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline3148}% +$1000$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline3150}% +$R=44100$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{chapter} +\stepcounter{section} +{\newpage\clearpage +\lthtmldisplayA{displaymath3946}% +\begin{displaymath} + f(n) = 1 \, , \, \, \, \, \, n = \, \, \ldots, -1, 0, 1, \ldots +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline3972}% +$f(t)=1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline3984}% +$R/2$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline3992}% +$\pi + \omega$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath3947}% +\begin{displaymath} + \cos((\pi + \omega)n + \phi) = \cos((\pi + \omega)n + \phi - 2\pi n) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath3948}% +\begin{displaymath} + = \cos((\omega - \pi)n + \phi) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath3949}% +\begin{displaymath} + = \cos((\pi - \omega)n - \phi) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline4006}% +$\infty$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure3562}% +\begin{figure}\psfig{file=figs/fig03.01.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline4024}% +$f(t)$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath3950}% +\begin{displaymath} + f(t) = {1 \over 2} - {1 \over \pi} + { \left ( + \sin(\omega t) + {{\sin(2 \omega t)} \over 2} + + {{\sin(3 \omega t)} \over 3} + \cdots + \right ) } +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline4030}% +$1/n$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlfigureA{figure3582}% +\begin{figure}\psfig{file=figs/fig03.02.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline4036}% +$B$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline4038}% +$B=4$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline4040}% +$0, 1, ... B-1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlfigureA{figure3590}% +\begin{figure}\psfig{file=figs/fig03.03.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath3951}% +\begin{displaymath} + \ldots , t[0], t[1], t[2], \ldots +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath3952}% +\begin{displaymath} + \cdots \le t[0] \le t[1] \le t[2] \le \cdots +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath3953}% +\begin{displaymath} + \ldots , \, (t[0], x[0]), \, (t[1], x[1]), \, \ldots +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline4048}% +$t[n]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath3954}% +\begin{displaymath} + (2, 1), (4.75, 0), (7.5, 1), (10.25, 0), (13, 1), \ldots +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline4054}% +$R/B$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure3607}% +\begin{figure}\psfig{file=figs/fig03.04.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline4058}% +$\lfloor t \rfloor$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline4064}% +$(n+f, y)$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline4070}% +$0 \le f < 1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath3955}% +\begin{displaymath} + fx + (1-f)y, +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath3956}% +\begin{displaymath} + 0 \cdot x + 1 \cdot y = 1, +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath3957}% +\begin{displaymath} + 0.75 \cdot x + 0.25 \cdot y = 0.75. +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure3614}% +\begin{figure}\psfig{file=figs/fig03.05.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline4084}% +$n-B$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlfigureA{figure3625}% +\begin{figure}\psfig{file=figs/fig03.06.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlfigureA{figure3640}% +\begin{figure}\psfig{file=figs/fig03.07.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline4092}% +$3.999\ldots$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure3654}% +\begin{figure}\psfig{file=figs/fig03.08.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure3663}% +\begin{figure}\psfig{file=figs/fig03.09.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlfigureA{figure3678}% +\begin{figure}\psfig{file=figs/fig03.10.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure3688}% +\begin{figure}\psfig{file=figs/fig03.11.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlfigureA{figure3703}% +\begin{figure}\psfig{file=figs/fig03.12.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline4370}% +\fbox{ $\mathrm{del}$\ }% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline4372}% +\fbox{ $\mathrm{delay}$\ }% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline4380}% +\fbox{ $\mathrm{pipe}$\ }% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline4390}% +\fbox{ $\mathrm{moses}$\ }% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline4396}% +\fbox{ $\mathrm{select}$\ }% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline4398}% +\fbox{ $\mathrm{sel}$\ }% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlfigureA{figure3739}% +\begin{figure}\psfig{file=figs/fig03.13.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline4428}% +\fbox{ $\mathrm{line}$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline4442}% +\fbox{ $\mathrm{vline}\sim$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure3760}% +\begin{figure}\psfig{file=figs/fig03.14.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline4476}% +\fbox{ $\mathrm{snapshot}\sim$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline4484}% +\fbox{ $\mathrm{env}\sim$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure3775}% +\begin{figure}\psfig{file=figs/fig03.15.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure3785}% +\begin{figure}\psfig{file=figs/fig03.16.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline4514}% +\fbox{ $\mathrm{notein}$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline4520}% +\fbox{ $\mathrm{stripnote}$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline4526}% +\fbox{ $\mathrm{trigger}$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline4528}% +\fbox{ $\mathrm{t}$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{chapter} +\stepcounter{section} +{\newpage\clearpage +\lthtmlfigureA{figure4581}% +\begin{figure}\psfig{file=figs/fig04.01.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure4591}% +\begin{figure}\psfig{file=figs/fig04.02.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline5047}% +$10R$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline5051}% +$y[n] = n/(10R)$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath5035}% +\begin{displaymath} + y[n] = {{ \left ( {{n} \over {N}} \right ) } ^ 4} , +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath5036}% +\begin{displaymath} + {f_1} (x) = x \hspace{0.2in} \mathrm{(linear),} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath5037}% +\begin{displaymath} + \ \ \ \ \ \ \ % + {f_2} (x) = 10^{2(x-1)} \hspace{0.2in}\mathrm{(dB\ to\ linear),} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath5038}% +\begin{displaymath} + {f_3} (x) = {x^4} \hspace{0.2in}\mathrm{(quartic).} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline5063}% +$1/100$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure4614}% +\begin{figure}\psfig{file=figs/fig04.03.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath5039}% +\begin{displaymath} + y[n] = f(n/N) . +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure4622}% +\begin{figure}\psfig{file=figs/fig04.04.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +\stepcounter{subsection} +{\newpage\clearpage +\lthtmlfigureA{figure4637}% +\begin{figure}\psfig{file=figs/fig04.05.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{subsection} +{\newpage\clearpage +\lthtmlfigureA{figure4651}% +\begin{figure}\psfig{file=figs/fig04.06.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure4657}% +\begin{figure}\psfig{file=figs/fig04.07.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlfigureA{figure4669}% +\begin{figure}\psfig{file=figs/fig04.08.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlfigureA{figure4680}% +\begin{figure}\psfig{file=figs/fig04.09.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure4686}% +\begin{figure}\psfig{file=figs/fig04.10.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +\stepcounter{section} +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline5349}% +\fbox{ $ \mathrm{inlet} $}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline5351}% +\fbox{ $ \mathrm{inlet}\sim $}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline5359}% +\fbox{ $\mathrm{outlet}$\ }% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline5361}% +\fbox{ $\mathrm{outlet}\sim$\ }% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure4726}% +\begin{figure}\psfig{file=figs/fig04.11.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlfigureA{figure4742}% +\begin{figure}\psfig{file=figs/fig04.12.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure4751}% +\begin{figure}\psfig{file=figs/fig04.13.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure4759}% +\begin{figure}\psfig{file=figs/fig04.14.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure4768}% +\begin{figure}\psfig{file=figs/fig04.15.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline5433}% +\fbox{ $\mathrm{unpack}$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure4783}% +\begin{figure}\psfig{file=figs/fig04.16.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure4788}% +\begin{figure}\psfig{file=figs/fig04.17.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline5463}% +\fbox{ \texttt{catch\~}}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline5465}% +\fbox{$\mathrm{catch\sim}$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline5469}% +\fbox{ \texttt{throw\~}}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline5471}% +\fbox{$\mathrm{throw\sim}$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline5145}% +$fp+d$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure4819}% +\begin{figure}\psfig{file=figs/fig04.18.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure4824}% +\begin{figure}\psfig{file=figs/fig04.19.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure4837}% +\begin{figure}\psfig{file=figs/fig04.20.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure4842}% +\begin{figure}\psfig{file=figs/fig04.21.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline5531}% +\fbox{ $\mathrm{mod}$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline5535}% +\fbox{$\mathrm{div}$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline5539}% +\fbox{ $\mathrm{poly}$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline5545}% +\fbox{ \texttt{makenote}}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline5547}% +\fbox{$\mathrm{makenote}$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline5167}% +$f(x) = {x^n}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline5169}% +$-1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{chapter} +\stepcounter{section} +{\newpage\clearpage +\lthtmlfigureA{figure5597}% +\begin{figure}\psfig{file=figs/fig05.01.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6147}% +$0:1:2:\cdots$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6003}% +\begin{displaymath} + {a_0} = {a_0}\cos(0 \cdot \omega n), +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6149}% +$0:1:2\cdots$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6151}% +$harmonic$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6153}% +$inharmonic$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6004}% +\begin{displaymath} + a \cos (\omega n + \phi) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6155}% +$a/2$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6159}% +$\omega = \phi = 0$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmldisplayA{displaymath6005}% +\begin{displaymath} + \cos(a) \cos (b) = {1 \over 2} + { \left [ + \parbox[t][0.1in]{0in}{\mbox{}} + \cos (a+b) + \cos(a-b) + \right ] } +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6006}% +\begin{displaymath} + \cos(a+b) = \cos(a)\cos(b) - \sin(a) \sin(b) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6007}% +\begin{displaymath} + {\cos(\alpha n + \phi) \cos (\beta n + \xi)} + = +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6008}% +\begin{displaymath} + = {1 \over 2} { \left [ { + \parbox[t][0.1in]{0in}{\mbox{}} + {\cos \left ( (\alpha + \beta) n + (\phi + \xi) \right ) } + + + {\cos \left ( (\alpha - \beta) n + (\phi - \xi) \right ) } + } \right ] } +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6163}% +$\alpha-\beta$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure5647}% +\begin{figure}\psfig{file=figs/fig05.02.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6009}% +\begin{displaymath} + \left [ 2 a \cos (\alpha n) \right ] + \cdot + \left [ \cos (\beta n) \right ] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure5653}% +\begin{figure}\psfig{file=figs/fig05.03.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6195}% +$\alpha + \beta$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6199}% +$\alpha-\beta<0$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6010}% +\begin{displaymath} + \cos((\alpha - \beta)n) = \cos((\beta - \alpha)n) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6201}% +$\beta-\alpha$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6011}% +\begin{displaymath} + {2 a \cos(\alpha n + \phi) \cos (\alpha n + \xi)} + = +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6012}% +\begin{displaymath} + = + {a \cos \left ( 2 \alpha n + (\phi + \xi) \right ) } + + + {a \cos \left ( \phi - \xi \right ) } + . +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6209}% +$+a$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6211}% +$-a$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6213}% +$\phi - \xi$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6013}% +\begin{displaymath} + {a_1} \cos({\alpha _1} n ) + \cdots + {a_k} \cos({\alpha _k} n ) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6014}% +\begin{displaymath} + \alpha_1 + \beta, \alpha_1 - \beta, \ldots, + \alpha_k + \beta, \alpha_k - \beta +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6229}% +$\cdots$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure5667}% +\begin{figure}\psfig{file=figs/fig05.04.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlfigureA{figure5679}% +\begin{figure}\psfig{file=figs/fig05.05.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure5691}% +\begin{figure}\psfig{file=figs/fig05.06.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6015}% +\begin{displaymath} + f(x) = {x^2} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6017}% +\begin{displaymath} + f(x[n]) = {{a^2} \over 2} \left ( 1 + \cos(2 \omega n + 2 \phi) \right ) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure5699}% +\begin{figure}\psfig{file=figs/fig05.07.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6018}% +\begin{displaymath} + x[n] = a \cos(\alpha n) + b \cos(\beta n) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6019}% +\begin{displaymath} + f(x[n]) = {{a^2} \over 2} \left ( 1 + \cos(2 \alpha n) \right ) + +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6020}% +\begin{displaymath} + + {{b^2} \over 2} \left ( 1 + \cos(2 \beta n) \right ) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6021}% +\begin{displaymath} + + a b \left [ + \cos ( (\alpha + \beta) n ) + \cos ( (\alpha - \beta) n ) + \right ] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6022}% +\begin{displaymath} + f(x+y) = {x^2} + 2 x y + {y^2} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6257}% +$({k^2}-k)/2$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6024}% +\begin{displaymath} + f(x[n+\tau]) = f(x[n]) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6025}% +\begin{displaymath} + x[t + \tau/3] = x[t] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6026}% +\begin{displaymath} + y[t + \tau/4] = y[t] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6027}% +\begin{displaymath} + x[t + \tau] + y[t+\tau] = x[t] + y[t] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6269}% +$f(x+y)$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6028}% +\begin{displaymath} + f(x+y)[n + \tau] = f(x+y)[n]. +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6029}% +\begin{displaymath} + f(x) = {f_0} + {f_1}x + {f_2}{x^2} + {f_3}{x^3} + \cdots +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6277}% +$\cos(\omega n)$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6030}% +\begin{displaymath} + f(a \cdot x[n]) = {f_0} + a {f_1}\cos(\omega n) + {a^2} {f_2} {\cos^2} (\omega n) + + {a^3} {f_3} {\cos^3} (\omega n) + \cdots +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6031}% +\begin{displaymath} + 1 = \cos (0) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6032}% +\begin{displaymath} + x[n] = \cos (\omega n) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6033}% +\begin{displaymath} + {x^2}[n] = {1 \over 2} + {1 \over 2} \cos (2\omega n) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6034}% +\begin{displaymath} + {x^3}[n] = {1 \over 4} \cos (-\omega n) + {2 \over 4} \cos (\omega n) + + {1 \over 4} \cos (3 \omega n) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6035}% +\begin{displaymath} + {x^4}[n] = {1 \over 8} \cos (-2\omega n) + {3 \over 8} \cos (0) + + {3 \over 8} \cos (2 \omega n) + {1 \over 8} \cos (4 \omega n) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6036}% +\begin{displaymath} + {x^5}[n] = {1 \over 16} \cos (-3\omega n) + {4 \over 16} \cos (-\omega n) + + {6 \over 16} \cos (\omega n) + {4 \over 16} \cos (3 \omega n) + + {1 \over 16} \cos (5 \omega n) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6287}% +$f_k$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6037}% +\begin{displaymath} + f(x) = {f_0} + {f_2}{x^2} + {f_4}{x^4} + \cdots +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6295}% +$f(x)$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6038}% +\begin{displaymath} + f(-x) = f(x) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6039}% +\begin{displaymath} + f(-x) = -f(x) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6303}% +$\omega_m$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6305}% +$\omega_c$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6307}% +$(1-r)\omega_c $% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6309}% +$(1+r) \omega_c$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6313}% +$r$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6040}% +\begin{displaymath} +x[n] = \cos(a \cos(\omega_m n) + \omega_c n ) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6327}% +$a=0$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure5777}% +\begin{figure}\psfig{file=figs/fig05.08.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6041}% +\begin{displaymath} +x[n] = \cos(\omega_c n) * \cos(a \cos(\omega_m n)) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6042}% +\begin{displaymath} + - \sin(\omega_c n) * \sin(a \cos(\omega_m n)) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6339}% +$f(x) = \cos(x)$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6341}% +$f(x) = \sin(x)$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6043}% +\begin{displaymath} + \cos(a \cos(\omega_m n)) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6044}% +\begin{displaymath} + \sin(a \cos(\omega_m n)) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6045}% +\begin{displaymath} + 0, 2\omega_m, 4\omega_m, \ldots +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6046}% +\begin{displaymath} + \omega_m, 3\omega_m, 5\omega_m, \ldots +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6047}% +\begin{displaymath} + \omega_c + m \omega_m +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6048}% +\begin{displaymath} + m = \ldots -2, -1, 0, 1, 2, \ldots +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6349}% +$k \tau$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6351}% +$m \tau$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6357}% +$km\tau$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6359}% +$\omega_m=k\omega$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6361}% +$\omega_c=m\omega$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlfigureA{figure5790}% +\begin{figure}\psfig{file=figs/fig05.09.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure5801}% +\begin{figure}\psfig{file=figs/fig05.10.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6685}% +\fbox{ \texttt{fiddle\~}}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6687}% +\fbox{$\mathrm{fiddle}\sim$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure5815}% +\begin{figure}\psfig{file=figs/fig05.11.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6703}% +\fbox{ \texttt{clip\~}}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6705}% +\fbox{$\mathrm{clip}\sim$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6379}% +$300m+225n$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure5827}% +\begin{figure}\psfig{file=figs/fig05.12.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6049}% +\begin{displaymath} + \cos(5 \omega n) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6387}% +$f(x) = x^5$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6051}% +\begin{displaymath} + 16 {x^5} = \cos (5 \omega n) + 5 \cos(3 \omega n) + 10 \cos(\omega n) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6389}% +$x^3$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6052}% +\begin{displaymath} + 16 {x^5} - 20 {x^3} = \cos (5 \omega n) - 5 \cos(\omega n) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6053}% +\begin{displaymath} + 16 {x^5} - 20 {x^3} + 5 x = \cos (5 \omega n) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6054}% +\begin{displaymath} + f(x) = 16 {x^5} - 20 {x^3} + 5 x +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6055}% +\begin{displaymath} + x[n] = f( a[n] \cos(\omega n)) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6395}% +$a[n]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6403}% +$f(x) = x^k$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath6056}% +\begin{displaymath} + f(x) = {f_0} + {f_1} x + {f_2} {x^2} + \cdots, +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6409}% +$x^k$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6411}% +$f_0$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6413}% +$af_1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6415}% +${a^2}{f_2}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline6421}% +$0 y[n] > n - D. +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath8618}% +\begin{displaymath} + t[n] = y[n] - y[n-1] = 1 - (d[n] - d[n-1]) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmldisplayA{displaymath8619}% +\begin{displaymath} + x[1.5] = {{-x[0] + 9x[1] + 9 x[2] - x[3]} \over 8} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline9312}% +$1.5$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath8620}% +\begin{displaymath} + x[n] = \cos(\omega \cdot (n - 1.5)) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline9314}% +$x[1.5]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath8621}% +\begin{displaymath} + x[1.5] = {{9 \cos(\omega/2) - \cos(3 \omega / 2)}\over4} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline9316}% +$\omega = \pi / 2$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure8141}% +\begin{figure}\psfig{file=figs/fig07.18.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlfigureA{figure8149}% +\begin{figure}\psfig{file=figs/fig07.19.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath8622}% +\begin{displaymath} + d[n] = {d_0} + a \cos(\omega n) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline9318}% +$d_0$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath8623}% +\begin{displaymath} + t = 1 + a \omega \cos(\omega n - \pi/2) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline9324}% +$1 - a \omega$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline9326}% +$1 + a \omega$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure8157}% +\begin{figure}\psfig{file=figs/fig07.20.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure8163}% +\begin{figure}\psfig{file=figs/fig07.21.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline9330}% +${d_0}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline9332}% +${d_0}+s$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline9342}% +$R/f$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline9346}% +$f/R$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath8624}% +\begin{displaymath} + x[n+1] - x[n] = {f \over R} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath8625}% +\begin{displaymath} + s \cdot x[n+1] - s \cdot x[n] = {{sf} \over R} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath8626}% +\begin{displaymath} + t = 1 - {{sf} \over R} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure8181}% +\begin{figure}\psfig{file=figs/fig07.22.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath8627}% +\begin{displaymath} + f = {{(t - 1) R} \over s} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline9372}% +$R/30$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline9374}% +$R/10$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlfigureA{figure8192}% +\begin{figure}\psfig{file=figs/fig07.23.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline9840}% +\fbox{ \texttt{delwrite\~}}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline9842}% +\fbox{$\mathrm{delwrite}\sim$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline9846}% +\fbox{ \texttt{delread\~}}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline9848}% +\fbox{$\mathrm{delread}\sim$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure8206}% +\begin{figure}\psfig{file=figs/fig07.24.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure8213}% +\begin{figure}\psfig{file=figs/fig07.25.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline9876}% +\fbox{ \texttt{vd\~}}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline9878}% +\fbox{$\mathrm{vd}\sim$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure8231}% +\begin{figure}\psfig{file=figs/fig07.26.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath8628}% +\begin{displaymath} + x[N], \ldots, x[N+B-1] \longrightarrow \fbox{\texttt{delwrite\~}} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath8629}% +\begin{displaymath} + \fbox{\texttt{delread\~}} \longrightarrow x[N], \ldots, x[N+B-1] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline9392}% +$x[N], \ldots, x[N+B-1]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath8630}% +\begin{displaymath} + \fbox{\texttt{delread\~}} \longrightarrow x[N-B], \ldots, x[N-1] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure8247}% +\begin{figure}\psfig{file=figs/fig07.27.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline9924}% +\fbox{ \texttt{block\~}}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline9926}% +\fbox{ \texttt{switch\~}}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline9928}% +\fbox{$\mathrm{block}\sim$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline9930}% +\fbox{$\mathrm{switch}\sim$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure8267}% +\begin{figure}\psfig{file=figs/fig07.28.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure8276}% +\begin{figure}\psfig{file=figs/fig07.29.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline9408}% +$1000\cdot2048/R$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline9412}% +$1000/(2f)$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline9416}% +$1/(2f)$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline9418}% +$2f, 4f, 6f\cdots$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline9420}% +$f, 3f, \ldots$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline9422}% +$2f$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure8285}% +\begin{figure}\psfig{file=figs/fig07.30.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure8299}% +\begin{figure}\psfig{file=figs/fig07.31.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline9428}% +$\sqrt{1/2}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure8305}% +\begin{figure}\psfig{file=figs/fig07.32.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure8315}% +\begin{figure}\psfig{file=figs/fig07.33.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath8632}% +\begin{displaymath} + t = {2 ^ {h/12}} = {e ^ {\log(2)/12 \cdot h}} \approx {e ^ {0.05776 h}} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath8633}% +\begin{displaymath} + {[ {{(1-g \cos (\omega d))}^2} + {{(g \sin (\omega d))}^2} ]} + ^ + {-1/2} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{chapter} +{\newpage\clearpage +\lthtmlfigureA{figure10050}% +\begin{figure}\psfig{file=figs/fig08.01.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11087}% +$H(\omega)$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11095}% +$\angle( H(\omega))$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +\stepcounter{subsection} +{\newpage\clearpage +\lthtmlfigureA{figure10068}% +\begin{figure}\psfig{file=figs/fig08.02.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{subsection} +{\newpage\clearpage +\lthtmlfigureA{figure10090}% +\begin{figure}\psfig{file=figs/fig08.03.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure10100}% +\begin{figure}\psfig{file=figs/fig08.04.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{subsection} +{\newpage\clearpage +\lthtmlfigureA{figure10113}% +\begin{figure}\psfig{file=figs/fig08.05.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure10122}% +\begin{figure}\psfig{file=figs/fig08.06.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +\stepcounter{subsection} +{\newpage\clearpage +\lthtmlfigureA{figure10136}% +\begin{figure}\psfig{file=figs/fig08.07.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11117}% +$\omega=\arg(Z)$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10951}% +\begin{displaymath} + (1 - Q{Z^{-1}}){Z^n} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10952}% +\begin{displaymath} + H(Z) = 1 - Q{Z^{-1}} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10953}% +\begin{displaymath} + Q = r \cdot (\cos(\alpha) + i \sin(\alpha)) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10954}% +\begin{displaymath} + |1 - Q{Z^{-1}}| = |Z||1 - Q{Z^{-1}}| = |Q - Z| +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11133}% +$Q{Z^{-1}}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11139}% +$|1 - Q{Z^{-1}}|$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure10151}% +\begin{figure}\psfig{file=figs/fig08.08.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11157}% +$\omega = \alpha$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11159}% +$1-r$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure10157}% +\begin{figure}\psfig{file=figs/fig08.09.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{subsection} +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11171}% +$\overline{Q}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10955}% +\begin{displaymath} + A = a+bi = r \cdot (\cos(\alpha) + i \sin(\alpha)) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10956}% +\begin{displaymath} + \overline{A} = a-bi = r \cdot (\cos(\alpha) - i \sin(\alpha)) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10957}% +\begin{displaymath} + H(Z) = \overline{Q} - {Z^{-1}} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10958}% +\begin{displaymath} + |\overline{Q} - {Z^{-1}}| = |Q - \overline{Z^{-1}}| = |Q- Z| +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11173}% +$\overline{Z} = {Z^{-1}}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11177}% +$Z\overline{Z}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure10178}% +\begin{figure}\psfig{file=figs/fig08.10.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{subsection} +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11179}% +$P$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10959}% +\begin{displaymath} + {{1} \over {1 - P {Z^{-1}}}} {Z^n} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10960}% +\begin{displaymath} + H(Z) = {{1} \over {1 - P {Z^{-1}}}} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11185}% +$|P| < 1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11187}% +$|P|> 1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure10195}% +\begin{figure}\psfig{file=figs/fig08.11.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11189}% +$P=Q$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{subsection} +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11191}% +${Q_1}, \ldots, {Q_j}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11193}% +${P_1}, \ldots, {P_k}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10961}% +\begin{displaymath} + H(Z) = { + { + (1 - {Q_1}{Z^{-1}}) \cdots (1 - {Q_j}{Z^{-1}}) + } \over { + (1 - {P_1}{Z^{-1}}) \cdots (1 - {P_k}{Z^{-1}}) + } + } +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{subsection} +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11199}% +$\overline{P}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10962}% +\begin{displaymath} + H(Z) = (1 - {Q}{Z^{-1}}) \cdot (1 - \overline{Q}{Z^{-1}}) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10963}% +\begin{displaymath} + H(\overline{Z}) = \overline{H(Z)} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10964}% +\begin{displaymath} + {X_n} = 2 \, \mathrm{re}(A{Z^n}) = A{Z^n} + \overline{A} + {{\overline{Z}}^n} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10965}% +\begin{displaymath} + A \cdot H(Z) \cdot {Z^n} + + \overline{A} \cdot \overline{H(Z)} \cdot {{\overline{Z}}^n} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10966}% +\begin{displaymath} + \overline{A+B} = \overline{A} + \overline{B} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10967}% +\begin{displaymath} + \overline{AB} = \overline{A} \cdot \overline{B} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10968}% +\begin{displaymath} + A + \overline{A} = 2 \, \mathrm{re} (A) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11207}% +$Q_i$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11209}% +$P_i$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{subsection} +{\newpage\clearpage +\lthtmldisplayA{displaymath10969}% +\begin{displaymath} + A{Z^n} + \overline{A}{Z^{-n}} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10970}% +\begin{displaymath} + a[n] = + \mathrm{re} \left[ { + {1 \over {1 - {P}{Z^{-1}}}} {A{Z^n} + + {1 \over {1 - {P}{Z}}} \overline{A}{Z^{-n}}} + } \right ] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10971}% +\begin{displaymath} + = + \mathrm{re} \left[ { + {1 \over {1 - {P}{Z^{-1}}}} {A{Z^n}} + + {1 \over {1 - \overline{P}{Z^{-1}}}} {A{Z^n}} + } \right ] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10972}% +\begin{displaymath} + = + \mathrm{re} \left[ { + {{ + 2 - 2 \, \mathrm{re} (P) {Z^{-1}} + } \over { + (1 - {P}{Z^{-1}}) (1 - {\overline{P}}{Z^{-1}}) + }} + {A{Z^n}} + } \right ] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10973}% +\begin{displaymath} + = + \mathrm{re} \left[ { + {{ + 1 - \mathrm{re} (P) {Z^{-1}} + } \over { + (1 - {P}{Z^{-1}}) (1 - {\overline{P}}{Z^{-1}}) + }} + {A{Z^n}} + + + {{ + 1 - \mathrm{re} (P) {{\overline{Z}}^{-1}} + } \over { + (1 - {\overline{P}}{{\overline{Z}}^{-1}}) (1 - {P}{{\overline{Z}}^{-1}}) + }} + {\overline{A}{{\overline{Z}}^{-n}}} + } \right ] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10974}% +\begin{displaymath} + {H_{\mathrm{re}}}(Z) = {{ + 1 - \mathrm{re} (P) {Z^{-1}} + } \over { + (1 - {P}{Z^{-1}}) (1 - {\overline{P}}{Z^{-1}}) + }} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10975}% +\begin{displaymath} + {H_{\mathrm{im}}}(Z) = {{ + \mathrm{im} (P) {Z^{-1}} + } \over { + (1 - {P}{Z^{-1}}) (1 - {\overline{P}}{Z^{-1}}) + }} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11235}% +$1/\overline{Q}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{subsection} +{\newpage\clearpage +\lthtmlfigureA{figure10318}% +\begin{figure}\psfig{file=figs/fig08.12.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11243}% +$1/(1-p)$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11247}% +$1-p$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11255}% +$p = 1-\omega$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{subsection} +{\newpage\clearpage +\lthtmldisplayA{displaymath10976}% +\begin{displaymath} + H(Z) = 1 - {{{1-p} \over {1 - p{Z^{-1}}}}} + = p{{{1-{Z^{-1}}} \over {1 - p{Z^{-1}}}}} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure10336}% +\begin{figure}\psfig{file=figs/fig08.13.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{subsection} +{\newpage\clearpage +\lthtmlfigureA{figure10344}% +\begin{figure}\psfig{file=figs/fig08.14.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11311}% +$d = \omega$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11313}% +$p = 1 - d / \sqrt{g}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11315}% +$q = 1 - d \sqrt{g}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10977}% +\begin{displaymath} + {{1-q} \over {1-p}} = g +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{subsection} +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11329}% +$p = 1 - \beta$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11333}% +$\cos \omega + i \sin \omega$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10978}% +\begin{displaymath} + {P_1} = (1 - \beta) (\cos \omega + i \sin \omega) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10979}% +\begin{displaymath} + {P_2} = \overline{P_1} = (1 - \beta) (\cos \omega - i \sin \omega) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure10359}% +\begin{figure}\psfig{file=figs/fig08.15.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10980}% +\begin{displaymath} + \beta * (\beta + 2 \omega) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{subsection} +{\newpage\clearpage +\lthtmldisplayA{displaymath10981}% +\begin{displaymath} + {P_1} = p \cdot (\cos \omega + i \sin \omega) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10982}% +\begin{displaymath} + {Q_1} = q \cdot (\cos \omega + i \sin \omega) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure10369}% +\begin{figure}\psfig{file=figs/fig08.16.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{subsection} +{\newpage\clearpage +\lthtmldisplayA{displaymath10983}% +\begin{displaymath} + {{1 - {r^2}} \over {{(1 + r)}^2}} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11361}% +$r=0$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11365}% +$r=\infty$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10984}% +\begin{displaymath} + { (1 - {r^2}) - (2 r \sin(\alpha)) i } + \over + { 1 + {r^2} + 2 r \cos(\alpha))} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10985}% +\begin{displaymath} + {\pi \over 2} ({1 \over n} - 1) , \; + {\pi \over 2} ({3 \over n} - 1) , \; \ldots , \; + {\pi \over 2} ({{2n-1} \over n} - 1) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11381}% +$\alpha = \pi/2$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10986}% +\begin{displaymath} + { (1 - {r^2}) - 2 r i } + \over + { 1 + {r^2} } +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10987}% +\begin{displaymath} + \beta = 2 \arctan (r) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure10391}% +\begin{figure}\psfig{file=figs/fig08.17.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure10397}% +\begin{figure}\psfig{file=figs/fig08.18.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{subsection} +{\newpage\clearpage +\lthtmldisplayA{displaymath10989}% +\begin{displaymath} + | H(\cos(\omega) + i \sin(\omega)) | +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11405}% +$R(Z)$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11413}% +$|R(Z)| = 1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11415}% +$Z=1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10990}% +\begin{displaymath} + R(Z) = U \cdot + {{ + {A_n}{Z^n} + {A_{n-1}}{Z^{n-1}} + \cdots + {A_0} + } \over { + \overline{A_0}{Z^n} + \overline{A_1}{Z^{n-1}} + \cdots + \overline{A_n} + }} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11417}% +$|U|=1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10991}% +\begin{displaymath} + J(Z) = H(R(Z)) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11427}% +$J$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10992}% +\begin{displaymath} + \cos(\phi) + i \sin(\phi) = R(\cos(\omega) + i \sin(\omega)) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10993}% +\begin{displaymath} + H(Z) = + {{ + 1 + {Z^{-1}} + } \over { + 1 - g{Z^{-1}} + }} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10994}% +\begin{displaymath} + R(Z) = -{Z^2} = - + {{ + 1 \cdot {Z^2} + 0 \cdot Z + 0 + } \over { + 0 \cdot {Z^2} + 0 \cdot Z + 1 + }} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11453}% +$-i$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10995}% +\begin{displaymath} + J(Z) = + {{ + 1 - {Z^{-2}} + } \over { + 1 + g{Z^{-2}} + }} + = + {{ + (1 - {Z^{-1}})(1 + {Z^{-1}}) + } \over { + (1 - i\sqrt{g} {Z^{-1}})(1 + i\sqrt{g} {Z^{-1}}) + }} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure10438}% +\begin{figure}\psfig{file=figs/fig08.19.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{subsection} +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11473}% +$R(Z) = -Z^2$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10996}% +\begin{displaymath} + S(Z) = + {{ + aZ + b + } \over { + bZ + a + }} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11485}% +$S(1) = 1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11487}% +$S(-1) = -1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11493}% +$\overline{Z}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11495}% +$\overline{W}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11497}% +$S$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10997}% +\begin{displaymath} + S(\cos(\omega) + i \sin(\omega)) = i +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11507}% +$R = - {Z^2}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11511}% +$H(R(S(Z)))$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10998}% +\begin{displaymath} + a = \cos({{\pi}\over 4} - {{\omega} \over 2}) , \; + b = \sin({{\pi}\over 4} - {{\omega} \over 2}) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11521}% +$2n$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11531}% +$J(Z) = H(R(S(Z)))$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11533}% +$J(Z)=\infty$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11535}% +$R(S(Z))$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11541}% +$R(S(Z)) = W$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath10999}% +\begin{displaymath} + - { + { \left [ { + { + aZ + b + } \over { + bZ + a + } + } \right ] } + ^ 2 + } = W +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath11000}% +\begin{displaymath} + { + { + aZ + b + } \over { + bZ + a + } + } = { + \pm \sqrt { + - W + } + } +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath11001}% +\begin{displaymath} + Z = { { + \pm a \sqrt { - W } + - b + } \over { + \mp b \sqrt { - W } + + a + } + } +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11553}% +${a^2}+{b^2}=1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure10463}% +\begin{figure}\psfig{file=figs/fig08.20.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{subsection} +{\newpage\clearpage +\lthtmlfigureA{figure10470}% +\begin{figure}\psfig{file=figs/fig08.21.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11561}% +$1-|P|$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{subsection} +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11563}% +$1-1/n$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath11002}% +\begin{displaymath} + { {\left ( 1-{1\over n} \right ) } ^ n } \approx {1\over e} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11571}% +$e$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11575}% +$n=5$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure10485}% +\begin{figure}\psfig{file=figs/fig08.22.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11591}% +$1/e$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath11003}% +\begin{displaymath} + {{n} \over {2\pi/\omega}} = {{1} \over {2\pi}} {{\omega} \over {b}} + = {{q} \over {2\pi}} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{subsection} +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11615}% +$P<1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath11004}% +\begin{displaymath} + H(Z) = {{ + {\overline{P} - {Z^{-1}}} + } \over { + {1 - P{Z^{-1}}} + }} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11621}% +$1/\overline{P}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure10509}% +\begin{figure}\psfig{file=figs/fig08.23.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +\stepcounter{subsection} +{\newpage\clearpage +\lthtmlfigureA{figure10520}% +\begin{figure}\psfig{file=figs/fig08.24.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure10526}% +\begin{figure}\psfig{file=figs/fig08.25.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{subsection} +{\newpage\clearpage +\lthtmldisplayA{displaymath11005}% +\begin{displaymath} + y[n] = p \cdot y[n-1] + (1-p) \cdot x[n] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11645}% +$x[n]^2$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure10537}% +\begin{figure}\psfig{file=figs/fig08.26.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath11006}% +\begin{displaymath} + x[n] = a \cdot \cos(\alpha n) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath11007}% +\begin{displaymath} + {{x[n]}^2} = {{a^2}\over 2} \left ( \cos(2 \alpha n) + 1 \right ) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11647}% +$2 \alpha$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11649}% +${{a^2} / 2}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath11008}% +\begin{displaymath} + x[n] = a \cdot \cos(\alpha n) + b \cdot \cos(\beta n) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11651}% +$({a^2} + +{b^2})/2$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure10549}% +\begin{figure}\psfig{file=figs/fig08.27.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{subsection} +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11655}% +$1, W, {W^2}, \ldots$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11657}% +$1, WZ, {{(WZ)}^2}, \ldots$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11659}% +$\angle(ZW)$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath11009}% +\begin{displaymath} + x[n] = a \cdot \cos (\omega n) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath11010}% +\begin{displaymath} + X[n] = a \left ( \cos (\omega n) + i \sin (\omega n) \right ) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath11011}% +\begin{displaymath} + x[n] = \mathrm{re} (X[n]) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11665}% +$-\omega$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath11012}% +\begin{displaymath} + X'[n] = a \left ( \cos (\omega n) - i \sin (\omega n) \right ) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11683}% +$H_1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11685}% +$H_2$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath11013}% +\begin{displaymath} + \angle({H_1}(Z)) - \angle({H_2}(Z)) \approx + \left \{ + \begin{array}{ll} + \pi/2 & {0 < \angle(Z) < \pi} \\ + -\pi/2 & {-\pi < \angle(Z) < 0} + \end{array} + \right . +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath11014}% +\begin{displaymath} + {H_1}(Z) \approx i {H_2}(Z) , \; 0 < \angle(Z) < \pi +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath11015}% +\begin{displaymath} + {H_1}(Z) \approx -i {H_2}(Z) , \; -\pi < \angle(Z) < 0 +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11689}% +$a[n] + i b[n]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11693}% +$b[n]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath11016}% +\begin{displaymath} + {H_1}(Z) + i {H_2}(Z) \approx + \left \{ + \begin{array}{ll} + 2 {H_1}(Z) & {0 < \angle(Z) < \pi} \\ + 0 & \mbox{otherwise} + \end{array} + \right . +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline12147}% +\fbox{\texttt{lop\~}}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline12149}% +\fbox{$\mathrm{lop}\sim$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline12153}% +\fbox{ \texttt{hip\~}}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline12159}% +\fbox{ \texttt{bp\~}}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline12161}% +\fbox{$\mathrm{bp}\sim$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline12165}% +\fbox{ \texttt{noise\~}}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline12167}% +\fbox{$\mathrm{noise}\sim$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure10598}% +\begin{figure}\psfig{file=figs/fig08.28.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline12183}% +\fbox{ \texttt{vcf\~}}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline12185}% +\fbox{$\mathrm{vcf}\sim$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure10610}% +\begin{figure}\psfig{file=figs/fig08.29.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure10620}% +\begin{figure}\psfig{file=figs/fig08.30.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure10626}% +\begin{figure}\psfig{file=figs/fig08.31.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure10639}% +\begin{figure}\psfig{file=figs/fig08.32.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline12231}% +\fbox{ \texttt{rzero\~}}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline12233}% +\fbox{ \texttt{rzero\_rev\~}}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline12235}% +\fbox{ \texttt{rpole\~}}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline12237}% +\fbox{$\mathrm{rzero}\sim$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline12239}% +\fbox{$\mathrm{rzero\_rev}\sim$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline12241}% +\fbox{$\mathrm{rpole}\sim$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline12245}% +\fbox{ \texttt{czero\~}}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline12247}% +\fbox{ \texttt{czero\_rev\~}}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline12249}% +\fbox{ \texttt{cpole\~}}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline12251}% +\fbox{$\mathrm{czero}\sim$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline12253}% +\fbox{$\mathrm{czero\_rev}\sim$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline12255}% +\fbox{$\mathrm{cpole}\sim$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure10670}% +\begin{figure}\psfig{file=figs/fig08.33.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline11727}% +$i/2$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{chapter} +\stepcounter{section} +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13143}% +$n=0,\ldots,N-1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13155}% +$4\pi/N$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13159}% +$2(N-1)\pi/N$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13173}% +$0 \leq k < N$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13175}% +$2\pi k / N$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13187}% +$\omega=2\pi/N$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13191}% +$U$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath12979}% +\begin{displaymath} + U = \cos(\omega) + i \sin(\omega) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath12980}% +\begin{displaymath} + {P_k}[n] = {A_k}{{\left [ {U^k} \right ]} ^ {n}} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13199}% +${A_k}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath12981}% +\begin{displaymath} + \angle({U^k}) = k \angle(U) = k\omega +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath12982}% +\begin{displaymath} + X[n] = + {A_0}{{\left [ {U^0} \right ]} ^ {n}} + + {A_1}{{\left [ {U^1} \right ]} ^ {n}} + + \cdots + + {A_{N-1}}{{\left [ {U^{N-1}} \right ]} ^ {n}} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13205}% +$A_k$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13207}% +$-k\omega$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath12983}% +\begin{displaymath} + {A_k} = {1\over N} \left ( + {{\left [ {U^{-k}} \right ]} ^ {0}} X[0] + + {{\left [ {U^{-k}} \right ]} ^ {1}} X[1] + + \cdots + + {{\left [ {U^{-k}} \right ]} ^ {N-1}} X[N-1] + \right ) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath12984}% +\begin{displaymath} + {\cal FT}\left \{ X[n] \right \} (k) = + {V ^ {0}} X[0] + + {V ^ {1}} X[1] + + \cdots + + {V ^ {N-1}} X[N-1] + \end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13213}% +$V = {U^{-k}}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13225}% +$V$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath12985}% +\begin{displaymath} + V = \cos(-k\omega) + i\sin(-k\omega) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{subsection} +{\newpage\clearpage +\lthtmldisplayA{displaymath12986}% +\begin{displaymath} + {\cal FT}\left \{ X[n] \right \} (k+N) = + {\cal FT}\left \{ X[n] \right \} (k) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{subsection} +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13251}% +$Y[k]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13255}% +$k = 0, ..., N-1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath12988}% +\begin{displaymath} + Y[k] = {\cal FT}\left \{ X[n] \right \} (k) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath12989}% +\begin{displaymath} + = {{\left [ {U^{-k}} \right ]} ^ {0}} X[0] + + {{\left [ {U^{-k}} \right ]} ^ {1}} X[1] + + \cdots + + {{\left [ {U^{-k}} \right ]} ^ {N-1}} X[N-1] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath12990}% +\begin{displaymath} + = {{\left [ {U^{0}} \right ]} ^ {k}} X[0] + + {{\left [ {U^{-1}} \right ]} ^ {k}} X[1] + + \cdots + + {{\left [ {U^{-(N-1)}} \right ]} ^ {k}} X[N-1] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13259}% +$X[m]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13261}% +$-m\omega$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13263}% +$m = 0, \ldots, N-1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13269}% +$X[-m]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath12991}% +\begin{displaymath} + {1 \over N} {\cal FT} \left \{ Y[k] \right \} (m) = X[-m] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13279}% +$Y[k]/N$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13281}% +$n = -m$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath12992}% +\begin{displaymath} + X[n] = {1 \over N} {\cal FT} \left \{ Y[k] \right \} (-n) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath12993}% +\begin{displaymath} + = {{\left [ {U^{0}} \right ]} ^ {n}} Y[0] + + {{\left [ {U^{1}} \right ]} ^ {n}} Y[1] + + \cdots + + {{\left [ {U^{N-1}} \right ]} ^ {n}} Y[N-1] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13289}% +$k=0, +\ldots, N-1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +\stepcounter{subsection} +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13291}% +$X[n]=1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13295}% +$N>1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath12994}% +\begin{displaymath} + {\cal FT} \left \{ X[n] \right \} (k) = + \left \{ + \begin{array}{ll} + N & {k=0} \\ + 0 & {k=1, \ldots, N-1} + \end{array} + \right . +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13303}% +$V \not= 1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath12996}% +\begin{displaymath} + {\cal FT} \left \{ X[n] \right \} (k) = + {{ + {V^N} - 1 + } \over { + V - 1 + }} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath12997}% +\begin{displaymath} + \xi = \cos(\pi k / N) - i \sin(\pi k / N) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13305}% +${\xi^2} = V$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13307}% +$\xi$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath12998}% +\begin{displaymath} + {\cal FT} \left \{ X[n] \right \} (k) = + {\xi^{N-1}} + {{ + {\xi^N} - {\xi^{-N}} + } \over { + \xi - {\xi^{-1}} + }} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath12999}% +\begin{displaymath} + {\xi^N} - {\xi^{-N}} = + \left (\cos(\pi k) - i \sin(\pi k) \right ) - + \left (\cos(\pi k) + i \sin(\pi k) \right ) + = - 2 i \sin(\pi k) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13000}% +\begin{displaymath} + {\cal FT} \left \{ X[n] \right \} (k) = + \left ( { + \parbox[t][0.1in]{0in}{\mbox{}} + \cos(\pi k (N-1)/N) - i \sin(\pi k (N-1)/N) + } \right ) + {{ + \sin(\pi k) + } \over { + \sin(\pi k / N) + }} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13309}% +$V=1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13001}% +\begin{displaymath} + {\cal FT} \left \{ X[n] \right \} (k) = + \left ( { + \parbox[t][0.1in]{0in}{\mbox{}} + \cos(\pi k (N-1)/N) - i \sin(\pi k (N-1)/N) + } \right ) + {D_N}(k) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13311}% +${D_N}(k)$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13002}% +\begin{displaymath} + {D_N}(k) = + \left \{ + \begin{array}{ll} + N & {k= 0} \\ + {{ + \sin(\pi k) + } \over { + \sin(\pi k / N) + }} + & {k\not=0,\; -N < k < N} + \end{array} + \right . +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13317}% +$k=0$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13319}% +$k=100$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13003}% +\begin{displaymath} + \cos(\pi k (N-1)/N) - i \sin(\pi k (N-1)/N) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13321}% +${\cal FT} \left \{ X[n] \right \} (k)$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13335}% +$k>1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13337}% +$k < -1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13341}% +$k=-1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure12411}% +\begin{figure}\psfig{file=figs/fig09.01.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure12416}% +\begin{figure}\psfig{file=figs/fig09.02.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{subsection} +{\newpage\clearpage +\lthtmldisplayA{displaymath13005}% +\begin{displaymath} + {\cal FT} \left \{ Y[n] \right \} (k) = + {V ^ {0}} Y[0] + + {V ^ {1}} Y[1] + + \cdots + + {V ^ {N-1}} Y[N-1] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13006}% +\begin{displaymath} + = + {V ^ {0}} X[-d] + + {V ^ {1}} X[-d+1] + + \cdots + + {V ^ {N-1}} X[-d+N-1] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13007}% +\begin{displaymath} + = + {V ^ {d}} X[0] + + {V ^ {d+1}} X[1] + + \cdots + + {V ^ {d+N-1}} X[N-1] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13008}% +\begin{displaymath} + = {V^d} \left ( + {V ^ {0}} X[0] + + {V ^ {1}} X[1] + + \cdots + + {V ^ {N-1}} X[N-1] + \right ) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13009}% +\begin{displaymath} + = {V^d} {\cal FT} \left \{ X[n] \right \} (k) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13010}% +\begin{displaymath} + {\cal FT} \left \{ X[n-d] \right \} (k) = + \left ( { + \parbox[t][0.1in]{0in}{\mbox{}} + \cos(-dk\omega) + i\sin(-dk\omega) + } \right ) + {\cal FT} \left \{ X[n] \right \} (k) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13365}% +$X[n-d]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13369}% +$-dk\omega$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13011}% +\begin{displaymath} + Y[n] = {Z^n} X[n] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13012}% +\begin{displaymath} + Z = \cos(\alpha) + i \sin(\alpha) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13014}% +\begin{displaymath} + = + {V ^ {0}} X[0] + + {V ^ {1}} Z X[1] + + \cdots + + {V ^ {N-1}} {Z^{N-1}} X[N-1] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13015}% +\begin{displaymath} + = + {{(VZ)} ^ {0}} X[0] + + {{(VZ)} ^ {1}} X[1] + + \cdots + + {{(VZ)} ^ {N-1}} X[N-1] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13016}% +\begin{displaymath} + = {\cal FT} \left \{ X[n] \right \} (k - {{\alpha } \over {\omega}}) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13017}% +\begin{displaymath} + {\cal FT} \left \{ (\cos(\alpha) + i \sin(\alpha)) X[n] \right \} (k) = + {\cal FT} \left \{ X[n] \right \} (k - {{\alpha N} \over {2 \pi}}) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{subsection} +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13379}% +${Z^n}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13018}% +\begin{displaymath} + {\cal FT} \left \{ {Z^n} \right \} (k) = + {\cal FT} \left \{ 1 \right \}(k - {{\alpha } \over {\omega}}) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13019}% +\begin{displaymath} + = \left [ \cos(\Phi(k)) + i \sin(\Phi(k))\right ] + {D_N}(k - {{\alpha } \over {\omega}}) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13385}% +${D_N}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13387}% +$\Phi$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13020}% +\begin{displaymath} + \Phi(k) = - \pi \cdot (k - {{\alpha } \over {\omega}}) \cdot (N-1)/N +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure12482}% +\begin{figure}\psfig{file=figs/fig09.03.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure12488}% +\begin{figure}\psfig{file=figs/fig09.04.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13427}% +$w[n]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13021}% +\begin{displaymath} + {\cal FT} \left \{ w[n] X[n] \right \} (k) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13022}% +\begin{displaymath} + w[n] = {1\over 2} - {1\over 2} \cos(2\pi n / N) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13023}% +\begin{displaymath} + w[n] = {1\over 2} - {1\over 4} {U^n} - {1\over 4} {U^{-n}} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13024}% +\begin{displaymath} + {\cal FT} \left \{ w[n] {Z^n} \right \} (k) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13025}% +\begin{displaymath} + = {\cal FT} \left \{ {1\over 2} {Z^n} - {1\over 4} {(UZ)^n} + - {1\over 4} {({U^{-1}}Z)^n}\right \} (k) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13026}% +\begin{displaymath} + \approx \left [ \cos(\Phi(k)) + i \sin(\Phi(k))\right ] + M(k - {{\alpha } \over {\omega}}) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13027}% +\begin{displaymath} + \Phi(k) = - \pi \cdot (k - {{\alpha } \over {\omega}}) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13028}% +\begin{displaymath} + M(k) = + {\left [ { + {1\over 2}{D_N}(k) + + {1\over 4}{D_N}(k + 1) + + {1\over 4}{D_N}(k - 1) + } \right ] } +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13437}% +$M(k)$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure12534}% +\begin{figure}\psfig{file=figs/fig09.05.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13447}% +${D_n}(k)$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13451}% +$1/4$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13029}% +\begin{displaymath} + {D_N}(k) \approx { + {N \sin(\pi k) } \over {\pi k} + } +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13453}% +$k = 3/2, 5/2, \ldots$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13030}% +\begin{displaymath} + {2 \over {3 \pi}} \approx -13 \mathrm{dB} , \; + {2 \over {5 \pi}} \approx -18 \mathrm{dB} , \; + {2 \over {7 \pi}} \approx -21 \mathrm{dB} , \; + {2 \over {9 \pi}} \approx -23 \mathrm{dB} , + \ldots +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13031}% +\begin{displaymath} + {2 \over {5 \pi}} - {1\over 2} [ {2 \over {3 \pi}} + {2 \over {7 \pi}} ] + \approx -32.30 \mathrm{dB} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13457}% +$-42$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13459}% +$-49$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13461}% +$-54$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13463}% +$-59$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure12556}% +\begin{figure}\psfig{file=figs/fig09.06.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13481}% +$k\omega$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure12563}% +\begin{figure}\psfig{file=figs/fig09.07.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13487}% +$k = 0, 1, \ldots, N-1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13493}% +$m = \ldots, 0, 1, \ldots$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13499}% +$mH$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13505}% +$mH+n$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13032}% +\begin{displaymath} + S[m, k] = {\cal FT}\{w(n)X[n-mH]\} (k) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13033}% +\begin{displaymath} + S[k] = S[m, k] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13034}% +\begin{displaymath} + C[m] = S[m, k] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13533}% +$H=N/4$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13535}% +$FT$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13537}% +$3/2$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{subsection} +{\newpage\clearpage +\lthtmlfigureA{figure12577}% +\begin{figure}\psfig{file=figs/fig09.08.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13539}% +$C[m]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13541}% +$g[m]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13543}% +$g[m]C[m]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13549}% +$C[m-1]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13551}% +$C[m-2]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13553}% +$|C[m]|$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13565}% +$g[m, k]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13567}% +$S[m, k] = C[m]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13035}% +\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}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13571}% +$f[k]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13577}% +$|S[m, k]|-f[k]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13579}% +$x = |S[m, k]|/f[k]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13581}% +$g(x) = 1-1/x$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13583}% +$x<1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{subsection} +{\newpage\clearpage +\lthtmlfigureA{figure12596}% +\begin{figure}\psfig{file=figs/fig09.09.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13589}% +$|S[m, k]|$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13591}% +$|T[m, k]|$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13036}% +\begin{displaymath} + g[m, k] = {{|T[m, k]|}\over{|S[m, k]|}} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlfigureA{figure12610}% +\begin{figure}\psfig{file=figs/fig09.10.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13593}% +$\alpha = 3\omega$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13595}% +$k=3$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13037}% +\begin{displaymath} + \begin{array}{lll} + {\angle S[0, 2] = \phi + \pi} & + {\angle S[0, 3] = \phi} & + {\angle S[0, 4] = \phi + \pi}\\ + {\angle S[1, 2] = \phi + H\alpha + \pi } & + {\angle S[1, 3] = \phi + H\alpha} & + {\angle S[1, 4] = \phi + H\alpha + \pi}\\ + {\angle S[2, 2] = \phi + 2H\alpha + \pi } & + {\angle S[2, 3] = \phi + 2H\alpha} & + {\angle S[2, 4] = \phi + 2H\alpha + \pi}\\ + \end{array} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13601}% +$H\alpha$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13038}% +\begin{displaymath} + H \alpha = \angle S[1, 3] - \angle S[0, 3] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13039}% +\begin{displaymath} + \alpha = {{\angle S[1, 3] - \angle S[0, 3] + 2 p \pi} \over H} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13607}% +$2\pi/H$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13611}% +$8\pi/N = 4 \omega$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13623}% +$m-1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure12629}% +\begin{figure}\psfig{file=figs/fig09.11.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure12634}% +\begin{figure}\psfig{file=figs/fig09.12.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13040}% +\begin{displaymath} + T[k] = {\cal FT}(W(n)X[n]) (k) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13041}% +\begin{displaymath} + T'[k] = {\cal FT}(W(n)X[n+H]) (k) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13042}% +\begin{displaymath} + \angle S[m, k] = \angle S[m-1, k] + + \left ( \angle T'[k] - \angle T[k] \right ) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13043}% +\begin{displaymath} + = \angle \left ( + {{S[m-1, k] T'[k]} + \over + {T[k]}} + \right ) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13044}% +\begin{displaymath} + S[m, k] \; = \; + a + \; \cdot \; + { + { \left | + {{S[m-1, k] T'[k]} + \over + {T[k]}} + \right |} + ^ + {-1} + } + \; \cdot \; + { + {{S[m-1, k] T'[k]} + \over + {T[k]}} + } +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13651}% +$a = |T'[k]|$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13045}% +\begin{displaymath} + S[m, k] \; = \; + { + { \left | + {{S[m-1, k]} + \over + {T[k]}} + \right |} + ^ + {-1} + } + \; \cdot \; + { + {{S[m-1, k] T'[k]} + \over + {T[k]}} + } +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{subsection} +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13657}% +$S[m,k+1]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13659}% +$T'[k]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13661}% +$T'[k+1]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13665}% +$S[m-1,k]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13669}% +$T[k]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13671}% +$2N$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13046}% +\begin{displaymath} + \angle T[k+1] - \angle T[k] = \angle S[m-1, k+1] - \angle S[m-1, k] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13047}% +\begin{displaymath} + \angle \left \{ {{S[m-1, k+1]} \over {T[k+1]}} \right \} = + \angle \left \{ {{S[m-1, k]} \over {T[k]}} \right \} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13679}% +$S/T$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13048}% +\begin{displaymath} + S[m, k] \; = \; + { + { \left | + R[k] + \right |} + ^ + {-1} + } + \cdot + { + {R[k] T'[k]} + } +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13049}% +\begin{displaymath} + R[k] \; = \; + { + { + \overline {T[k]} \; \cdot \; {S[m-1, k]} + } \over { + \left | + {S[m-1, k]} + \right | + } + } +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13685}% +$R[k]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13050}% +\begin{displaymath} + S[m, k] \; = \; + { + { \left | + R'[k] + \right |} + ^ + {-1} + } + \; \cdot \; + { + {R'[k] T'[k]} + } +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13051}% +\begin{displaymath} + R'[k] = R[k+1] + R[k] + R[k-1] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13052}% +\begin{displaymath} + R'[k+1] = R[k+2] + R[k+1] + R[k] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13695}% +$R'$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13703}% +$T'$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlfigureA{figure12678}% +\begin{figure}\psfig{file=figs/fig09.13.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13711}% +$(-1)^k$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13713}% +$\mathrm{fft}\sim$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure12688}% +\begin{figure}\psfig{file=figs/fig09.14.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14083}% +\fbox{\texttt{fft\~}}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14085}% +\fbox{$\mathrm{fft}\sim$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14093}% +\fbox{\texttt{rfft\~}}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14095}% +\fbox{$\mathrm{rfft}\sim$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13723}% +$N/2+1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14099}% +\fbox{\texttt{tabreceive\~}}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14101}% +\fbox{$\mathrm{tabreceive}\sim$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure12705}% +\begin{figure}\psfig{file=figs/fig09.15.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14115}% +\fbox{\texttt{rifft\~}}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14117}% +\fbox{$\mathrm{rifft}\sim$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13735}% +$N=512$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure12717}% +\begin{figure}\psfig{file=figs/fig09.16.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13739}% +$s[k]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13743}% +$m[k]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath13053}% +\begin{displaymath} + \left \{ + \begin{array}{ll} + {\sqrt{{s[k]-m[k]}\over {s[k]}}} & {s[k] > m[k]} \\ + 0 & \mbox{otherwise} + \end{array} + \right . +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14143}% +\fbox{\texttt{bang\~}}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14145}% +\fbox{$\mathrm{bang}\sim$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14149}% +\fbox{\texttt{tabsend\~}}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14151}% +\fbox{$\mathrm{tabsend}\sim$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13761}% +$1, 1/2, 1/3, \ldots, 1/b$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure12740}% +\begin{figure}\psfig{file=figs/fig09.17.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13771}% +$c[k]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13773}% +$1/f[k]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13779}% +$c[k]/f[k]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure12748}% +\begin{figure}\psfig{file=figs/fig09.18.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14183}% +\fbox{\texttt{lrshift\~}}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14185}% +\fbox{$\mathrm{lrshift}\sim$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14189}% +\fbox{\texttt{q8\_rsqrt\~}}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14191}% +\fbox{$\mathrm{q8\_rsqrt}\sim$}% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13799}% +$R'[k]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13829}% +$n=N/2$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13839}% +$2.5\omega$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline13843}% +$k=2$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{chapter} +{\newpage\clearpage +\lthtmlfigureA{figure14230}% +\begin{figure}\psfig{file=figs/fig10.01.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14745}% +$N/R$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14757}% +$A[k]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14633}% +\begin{displaymath} + X[n] = A[0] + A[1]{U^n} + \cdots + A[N-1]{U^{(N-1)n}} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14634}% +\begin{displaymath} + X[n] = + A[0] + A[1](\cos(\omega n) + i \sin(\omega n)) + \cdots +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14635}% +\begin{displaymath} + + A[N-1](\cos(\omega (N-1) n) + i \sin(\omega (N-1) n)) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14765}% +${U^{N/2}} = -1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14637}% +\begin{displaymath} + X[n+N/2] = A[0] - A[1]{U^n} + A[2]{U^{2n}} \pm \cdots +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14638}% +\begin{displaymath} + + A[N-2]{U^{(N-2)n}} - A[N-1]{U^{(N-1)n}} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14767}% +$X'$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14639}% +\begin{displaymath} + X'[n] = {{X[n] + X[n+N/2]}\over 2} = + A[0] + A[2]{U^{2n}} + \cdots + A[N-2]{U^{(N-2)n}} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14769}% +$X''$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14640}% +\begin{displaymath} + X''[n] = {{X[n] - X[n+N/2]}\over 2} = + A[1]{U^n} + A[3]{U^{3n}} + \cdots + A[N-1]{U^{(N-1)n}} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14777}% +$X[n] = X[n+N/2]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14783}% +$X'[n] = X[n]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14785}% +$X''[n] = 0$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14791}% +$N/2$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14795}% +$X[n] = -X[n+N/2$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14801}% +$X[-n]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14807}% +$X[N-n]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14641}% +\begin{displaymath} + X[-n] = + A[0] + A[1](\cos(\omega n) - i \sin(\omega n)) + \cdots +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14642}% +\begin{displaymath} + + A[N-1](\cos(\omega (N-1) n) - i \sin(\omega (N-1) n)) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14809}% +$X'[n]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14643}% +\begin{displaymath} + X'[n] = {{X[n] + X[-n]}\over 2} = + A[0] + A[1]\cos(\omega n)+ \cdots + A[N-1]\cos(\omega (N-1) n) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14811}% +$X''[n]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14644}% +\begin{displaymath} + X''[n] = {{X[n] - X[-n]}\over {2i}} = + A[1]\sin(\omega n)+ \cdots + A[N-1]\sin(\omega (N-1) n) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14817}% +$X[-n] = X[n]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14819}% +$X[-n] = -X[n]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{subsection} +{\newpage\clearpage +\lthtmlfigureA{figure14263}% +\begin{figure}\psfig{file=figs/fig10.02.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14829}% +${L_1}, \ldots, {L_j}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14833}% +${d_1}, \ldots, {d_j}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14835}% +$d_1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14837}% +${L_1}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure14280}% +\begin{figure}\psfig{file=figs/fig10.03.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14841}% +$({L_1}, {d_1}) = (0.3N, -0.3)$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14843}% +$({L_2}, {d_2}) = (0.6N, 1.3)$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14645}% +\begin{displaymath} + s[n] = n/N - 1/2 +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14845}% +$0 \le n \le N-1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14849}% +$(L, d)$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14851}% +$s'[n] = d s[n-L]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14646}% +\begin{displaymath} + x[n] = {d_1} s[n - {L_1}] + \cdots + {d_j} s[n - {L_j}] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14647}% +\begin{displaymath} + -{{{d_1} + \cdots + {d_j}} \over {N}} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14853}% +${d_1} + \cdots + {d_j} = 0$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure14299}% +\begin{figure}\psfig{file=figs/fig10.04.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14648}% +\begin{displaymath} + p[n] = {1 \over 2} {{({n\over N} - {1\over 2})}^2} - {1 \over {24}} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14861}% +$-1/N$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14863}% +${M_i}, \ldots, {M_l}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14865}% +${c_1}, \ldots, {c_l}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14649}% +\begin{displaymath} + x[n] = {-N c_1} p[n - {M_1}] - \cdots - {N c_l} p[n - {M_l}] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure14318}% +\begin{figure}\psfig{file=figs/fig10.05.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14869}% +$n^2$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14873}% +${c_1} + \cdots + {c_l} = 0$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmldisplayA{displaymath14650}% +\begin{displaymath} + A[k] = {1 \over N} {\cal FT}\{X[n]\}(k) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14651}% +\begin{displaymath} += {1 \over N} \left [ X[0] + + {U^{-k}} X[1] + \cdots + + {U^{-(N-1)k}} X[N-1] \right ] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14881}% +$x[n] - x[n-1]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14889}% +$k/N$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14652}% +\begin{displaymath} + {\cal FT}\{ x[n-1] \} = + \left [ \cos(k \omega) - i \sin (k \omega) \right ] + {\cal FT}\{ x[n] \} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14653}% +\begin{displaymath} + \approx (1 - i \omega k) {\cal FT}\{ x[n] \} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14895}% +$k \omega = 2\pi k / N$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14654}% +\begin{displaymath} + \cos(k \omega) \approx 1 \; , \; \sin(k \omega) \approx k \omega +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14897}% +$(k/N)^2$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14655}% +\begin{displaymath} + {\cal FT}\{ x[n] - x[n-1] \} \approx i \omega k {\cal FT}\{ x[n] \} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{subsection} +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14899}% +$s[n]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14901}% +$0 \le n < N$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14656}% +\begin{displaymath} + s[n] - s[n-1] = -{1 \over N} + + \left \{ + \begin{array}{ll} + {1} & {n = 0} \\ + 0 & \mbox{otherwise} + \end{array} + \right . +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14903}% +$-{1 \over N}$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14657}% +\begin{displaymath} + {\cal FT}\{ s[n] - s[n-1] \} (k) = 1 , \; k \neq 0, \; -N < k < N\ +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14658}% +\begin{displaymath} + {\cal FT}\{ s[n] \} (k) \approx {1 \over {i \omega k}} + = {{-iN} \over {2 \pi k}} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14909}% +$k \neq 0$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14913}% +$1/i = -i$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14915}% +${\cal FT}\{ s[n] \}(0)$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14921}% +$k = \pm 1$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14659}% +\begin{displaymath} + {1 \over N}\left [ + {\cal FT}\{ s[n] \} (1) \cdot {U^n} + + {\cal FT}\{ s[n] \} (-1) \cdot {U^{-n}} + \right ] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14660}% +\begin{displaymath} + \approx {{-i} \over {2 \pi}} \left [ U^n - U^{-n} \right ] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14661}% +\begin{displaymath} + = {{\sin ( \omega n)} \over {\pi}} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14662}% +\begin{displaymath} + {{\sin ( k \omega n)} \over {k \pi}} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14663}% +\begin{displaymath} + s[n] \approx {1 \over \pi} \left [ + {\sin ( \omega n )} + + {{\sin ( 2 \omega n)} \over 2} + + {{\sin ( 3 \omega n)} \over 3} + + \cdots + \right ] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{subsection} +{\newpage\clearpage +\lthtmldisplayA{displaymath14664}% +\begin{displaymath} + p[n] - p[n-1] = { + { + {{({n\over N} - {1\over 2})}^2} - + {{({{n-1}\over N} - {1\over 2})}^2} + } \over { + 2 + }} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14665}% +\begin{displaymath} + = { + { + {{({n\over N} - {N\over {2N}})}^2} - + {{({{n}\over N} - {{N - 2}\over {2N}})}^2} + } \over { + 2 + }} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14666}% +\begin{displaymath} + = { + { + {{{2n}\over {N^2}} - {1\over {N}}} + {1\over {N^2}} + } \over { + 2 + }} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14667}% +\begin{displaymath} + \approx - s[n] / N . +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14668}% +\begin{displaymath} + {\cal FT}\{ p[n] \} (k) \approx + {{-1} \over N} \cdot {{-iN} \over {2 \pi k}} \cdot {\cal FT}\{ s[n] \} (k) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14669}% +\begin{displaymath} + \approx {{-1} \over N} \cdot {{-iN} \over {2 \pi k}} + \cdot {{-iN} \over {2 \pi k}} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14670}% +\begin{displaymath} + = {N \over {4 {\pi ^2} {k^2}}} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14671}% +\begin{displaymath} + p[n] \approx {1 \over {2 {\pi^2}}} \left [ + {\cos ( \omega n )} + + {{\cos ( 2 \omega n)} \over 4} + + {{\cos ( 3 \omega n)} \over 9} + + \cdots + \right ] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{subsection} +{\newpage\clearpage +\lthtmlfigureA{figure14407}% +\begin{figure}\psfig{file=figs/fig10.06.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14672}% +\begin{displaymath} + x[n] = s[n] - s[n-{N \over 2}] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14937}% +$0 <= n < N/2$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14673}% +\begin{displaymath} + x[n] \approx {1 \over \pi} \left [ + {\sin ( \omega n )} + + {{\sin ( 2 \omega n)} \over 2} + + {{\sin ( 3 \omega n)} \over 3} + + \cdots + \right . +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14674}% +\begin{displaymath} + \left . + -{\sin ( \omega n )} + + {{\sin ( 2 \omega n)} \over 2} + - {{\sin ( 3 \omega n)} \over 3} + \pm \cdots + \right ] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14675}% +\begin{displaymath} + = {2 \over \pi} \left [ + {\sin ( \omega n )} + + {{\sin ( 3 \omega n)} \over 3} + + {{\sin ( 5 \omega n)} \over 5} + + \cdots + \right ] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14676}% +\begin{displaymath} + x[n] = 8 p[n] - 8 p[n-{N \over 2}] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14677}% +\begin{displaymath} + x[n] \approx {8 \over {{\pi^2}}} \left [ + {\cos ( \omega n )} + + {{\cos ( 3 \omega n)} \over 9} + + {{\cos ( 5 \omega n)} \over 25} + + \cdots + \right ] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{subsection} +{\newpage\clearpage +\lthtmlfigureA{figure14432}% +\begin{figure}\psfig{file=figs/fig10.07.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14947}% +$(0,0)$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14949}% +$1/M$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14951}% +$-2/(N-2M)$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14678}% +\begin{displaymath} + x[n] = {{N^2} \over {MN - 2{M^2}}} (p[n-M] - p[n+M]) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14953}% +$p[n]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14955}% +$p[n-(N-M)]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14957}% +$p[n+M]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14679}% +\begin{displaymath} + x[n] = {{N^2} \over {2{\pi ^ 2} (MN - 2{M^2})}} \left [ + \parbox[t][0.12in]{0in}{\mbox{}} + {\cos ( \omega (n-M))} - {\cos ( \omega (n+M))} + \right . +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14680}% +\begin{displaymath} + \left . + + {{\cos ( 2 \omega (n-M)) - \cos ( 2 \omega (n+M))} \over 4} + + \cdots + \right ] +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14681}% +\begin{displaymath} + \cos(a) - \cos(b) = 2 \sin({{b-a}\over 2}) \sin({{a+b}\over 2}) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14682}% +\begin{displaymath} + {\cos ( \omega (n-M))} - {\cos ( \omega (n+M))} = + 2 \sin (2 \pi M / N) \sin ( \omega n) +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14683}% +\begin{displaymath} + x[n] = a[1] \sin(\omega n) + a[2] \sin(2 \omega n) + \cdots +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14684}% +\begin{displaymath} + a[k] = {1 \over {{\pi ^ 2} (M/N - 2{{(M/N)}^2})}} + \cdot {{\sin (2 \pi k M / N) } \over {k^2}} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14969}% +$M/N$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmldisplayA{displaymath14685}% +\begin{displaymath} + k < {{1} \over {4 M/N}} +\end{displaymath}% +\lthtmldisplayZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14975}% +$\sin(\theta) \approx \theta$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14977}% +$a[k]$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14989}% +$k \approx 1/(4\cdot 0.03) \approx 8.5$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14997}% +$2M$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline14999}% +$N/4M$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline15001}% +$N/2M$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline15005}% +$N/2M \approx 1/17$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline15007}% +$1/50$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{subsection} +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline15009}% +$16\cdot 44100 = +705600$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline15011}% +$705600-20000=685600$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline15013}% +$685600/440=1558$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure14466}% +\begin{figure}\psfig{file=figs/fig10.08.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{subsection} +\stepcounter{subsection} +{\newpage\clearpage +\lthtmlfigureA{figure14476}% +\begin{figure}\psfig{file=figs/fig10.09.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline15031}% +$12\omega$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure14483}% +\begin{figure}\psfig{file=figs/fig10.10.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure14488}% +\begin{figure}\psfig{file=figs/fig10.11.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline15041}% +$1/b$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + +\stepcounter{section} +{\newpage\clearpage +\lthtmlfigureA{figure14496}% +\begin{figure}\psfig{file=figs/fig10.12.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure14503}% +\begin{figure}\psfig{file=figs/fig10.13.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlfigureA{figure14510}% +\begin{figure}\psfig{file=figs/fig10.14.ps} + +\end{figure}% +\lthtmlfigureZ +\lthtmlcheckvsize\clearpage} + +{\newpage\clearpage +\lthtmlinlinemathA{tex2html_wrap_inline15045}% +$1 + 1/9 + 1/25 + 1/49 + 1/81 + \cdots$% +\lthtmlinlinemathZ +\lthtmlcheckvsize\clearpage} + + +\end{document} diff --git a/img1.png b/img1.png new file mode 100644 index 0000000..b0e7794 Binary files /dev/null and b/img1.png differ diff --git a/img10.png b/img10.png new file mode 100644 index 0000000..cb59e27 Binary files /dev/null and b/img10.png differ diff --git a/img100.png b/img100.png new file mode 100644 index 0000000..ce202c6 Binary files /dev/null and b/img100.png differ diff --git a/img1000.png b/img1000.png new file mode 100644 index 0000000..c563ba8 Binary files /dev/null and b/img1000.png differ diff --git a/img1001.png b/img1001.png new file mode 100644 index 0000000..dc67354 Binary files /dev/null and b/img1001.png differ diff --git a/img1002.png b/img1002.png new file mode 100644 index 0000000..fb4fff1 Binary files /dev/null and b/img1002.png differ diff --git a/img1003.png b/img1003.png new file mode 100644 index 0000000..959882a Binary files /dev/null and b/img1003.png differ diff --git a/img1004.png b/img1004.png new file mode 100644 index 0000000..8b0b372 Binary files /dev/null and b/img1004.png differ diff --git a/img1005.png b/img1005.png new file mode 100644 index 0000000..a912bc2 Binary files /dev/null and b/img1005.png differ diff --git a/img1006.png b/img1006.png new file mode 100644 index 0000000..a64158f Binary files /dev/null and b/img1006.png differ diff --git a/img1007.png b/img1007.png new file mode 100644 index 0000000..79027d5 Binary files /dev/null and b/img1007.png differ diff --git a/img1008.png b/img1008.png new file mode 100644 index 0000000..10af47f Binary files /dev/null and b/img1008.png differ diff --git a/img1009.png b/img1009.png new file mode 100644 index 0000000..2cdd00b Binary files /dev/null and b/img1009.png differ diff --git a/img101.png b/img101.png new file mode 100644 index 0000000..1854b5d Binary files /dev/null and b/img101.png differ diff --git a/img1010.png b/img1010.png new file mode 100644 index 0000000..d945916 Binary files /dev/null and b/img1010.png differ diff --git a/img1011.png b/img1011.png new file mode 100644 index 0000000..3f282ac Binary files /dev/null and b/img1011.png differ diff --git a/img1012.png b/img1012.png new file mode 100644 index 0000000..d57dc0c Binary files /dev/null and b/img1012.png differ diff --git a/img1013.png b/img1013.png new file mode 100644 index 0000000..6102289 Binary files /dev/null and b/img1013.png differ diff --git a/img1014.png b/img1014.png new file mode 100644 index 0000000..4f80cd2 Binary files /dev/null and b/img1014.png differ diff --git a/img1015.png b/img1015.png new file mode 100644 index 0000000..2c5f1f6 Binary files /dev/null and b/img1015.png differ diff --git a/img1016.png b/img1016.png new file mode 100644 index 0000000..ca6853a Binary files /dev/null and b/img1016.png differ diff --git a/img1017.png b/img1017.png new file mode 100644 index 0000000..fbe299e Binary files /dev/null and b/img1017.png differ diff --git a/img1018.png b/img1018.png new file mode 100644 index 0000000..848b359 Binary files /dev/null and b/img1018.png differ diff --git a/img1019.png b/img1019.png new file mode 100644 index 0000000..2367368 Binary files /dev/null and b/img1019.png differ diff --git a/img102.png b/img102.png new file mode 100644 index 0000000..7a6e5e5 Binary files /dev/null and b/img102.png differ diff --git a/img1020.png b/img1020.png new file mode 100644 index 0000000..37beaaa Binary files /dev/null and b/img1020.png differ diff --git a/img1021.png b/img1021.png new file mode 100644 index 0000000..edc13cc Binary files /dev/null and b/img1021.png differ diff --git a/img1022.png b/img1022.png new file mode 100644 index 0000000..1206c8c Binary files /dev/null and b/img1022.png differ diff --git a/img1023.png b/img1023.png new file mode 100644 index 0000000..19cfa1e Binary files /dev/null and b/img1023.png differ diff --git a/img1024.png b/img1024.png new file mode 100644 index 0000000..1dbb7f6 Binary files /dev/null and b/img1024.png differ diff --git a/img1025.png b/img1025.png new file mode 100644 index 0000000..136aed6 Binary files /dev/null and b/img1025.png differ diff --git a/img1026.png b/img1026.png new file mode 100644 index 0000000..f6c42cc Binary files /dev/null and b/img1026.png differ diff --git a/img1027.png b/img1027.png new file mode 100644 index 0000000..4d325f7 Binary files /dev/null and b/img1027.png differ diff --git a/img1028.png b/img1028.png new file mode 100644 index 0000000..7db1911 Binary files /dev/null and b/img1028.png differ diff --git a/img1029.png b/img1029.png new file mode 100644 index 0000000..2c9abcd Binary files /dev/null and b/img1029.png differ diff --git a/img103.png b/img103.png new file mode 100644 index 0000000..376e3c1 Binary files /dev/null and b/img103.png differ diff --git a/img1030.png b/img1030.png new file mode 100644 index 0000000..72687b9 Binary files /dev/null and b/img1030.png differ diff --git a/img1031.png b/img1031.png new file mode 100644 index 0000000..4ea2876 Binary files /dev/null and b/img1031.png differ diff --git a/img1032.png b/img1032.png new file mode 100644 index 0000000..fd047e5 Binary files /dev/null and b/img1032.png differ diff --git a/img1033.png b/img1033.png new file mode 100644 index 0000000..e94da8a Binary files /dev/null and b/img1033.png differ diff --git a/img1034.png b/img1034.png new file mode 100644 index 0000000..af2120c Binary files /dev/null and b/img1034.png differ diff --git a/img1035.png b/img1035.png new file mode 100644 index 0000000..0dce035 Binary files /dev/null and b/img1035.png differ diff --git a/img1036.png b/img1036.png new file mode 100644 index 0000000..b8e7e51 Binary files /dev/null and b/img1036.png differ diff --git a/img1037.png b/img1037.png new file mode 100644 index 0000000..11f8c55 Binary files /dev/null and b/img1037.png differ diff --git a/img1038.png b/img1038.png new file mode 100644 index 0000000..c8bcedb Binary files /dev/null and b/img1038.png differ diff --git a/img1039.png b/img1039.png new file mode 100644 index 0000000..5d3e6d6 Binary files /dev/null and b/img1039.png differ diff --git a/img104.png b/img104.png new file mode 100644 index 0000000..9ae5b5b Binary files /dev/null and b/img104.png differ diff --git a/img1040.png b/img1040.png new file mode 100644 index 0000000..b2f0fee Binary files /dev/null and b/img1040.png differ diff --git a/img1041.png b/img1041.png new file mode 100644 index 0000000..57d079a Binary files /dev/null and b/img1041.png differ diff --git a/img1042.png b/img1042.png new file mode 100644 index 0000000..a44eb6b Binary files /dev/null and b/img1042.png differ diff --git a/img1043.png b/img1043.png new file mode 100644 index 0000000..1061336 Binary files /dev/null and b/img1043.png differ diff --git a/img1044.png b/img1044.png new file mode 100644 index 0000000..8a946b2 Binary files /dev/null and b/img1044.png differ diff --git a/img1045.png b/img1045.png new file mode 100644 index 0000000..15c2b97 Binary files /dev/null and b/img1045.png differ diff --git a/img1046.png b/img1046.png new file mode 100644 index 0000000..5679267 Binary files /dev/null and b/img1046.png differ diff --git a/img1047.png b/img1047.png new file mode 100644 index 0000000..8417457 Binary files /dev/null and b/img1047.png differ diff --git a/img1048.png b/img1048.png new file mode 100644 index 0000000..9fd2813 Binary files /dev/null and b/img1048.png differ diff --git a/img1049.png b/img1049.png new file mode 100644 index 0000000..76aed2c Binary files /dev/null and b/img1049.png differ diff --git a/img105.png b/img105.png new file mode 100644 index 0000000..39fa2ee Binary files /dev/null and b/img105.png differ diff --git a/img1050.png b/img1050.png new file mode 100644 index 0000000..3c587b8 Binary files /dev/null and b/img1050.png differ diff --git a/img1051.png b/img1051.png new file mode 100644 index 0000000..c66257a Binary files /dev/null and b/img1051.png differ diff --git a/img1052.png b/img1052.png new file mode 100644 index 0000000..c5f9a3e Binary files /dev/null and b/img1052.png differ diff --git a/img1053.png b/img1053.png new file mode 100644 index 0000000..7bd0afa Binary files /dev/null and b/img1053.png differ diff --git a/img1054.png b/img1054.png new file mode 100644 index 0000000..c66257a Binary files /dev/null and b/img1054.png differ diff --git a/img1055.png b/img1055.png new file mode 100644 index 0000000..0d2af7b Binary files /dev/null and b/img1055.png differ diff --git a/img1056.png b/img1056.png new file mode 100644 index 0000000..457f0cc Binary files /dev/null and b/img1056.png differ diff --git a/img1057.png b/img1057.png new file mode 100644 index 0000000..58d6b40 Binary files /dev/null and b/img1057.png differ diff --git a/img1058.png b/img1058.png new file mode 100644 index 0000000..b969951 Binary files /dev/null and b/img1058.png differ diff --git a/img1059.png b/img1059.png new file mode 100644 index 0000000..9605f5f Binary files /dev/null and b/img1059.png differ diff --git a/img106.png b/img106.png new file mode 100644 index 0000000..4d53dae Binary files /dev/null and b/img106.png differ diff --git a/img1060.png b/img1060.png new file mode 100644 index 0000000..8ef3064 Binary files /dev/null and b/img1060.png differ diff --git a/img1061.png b/img1061.png new file mode 100644 index 0000000..334b603 Binary files /dev/null and b/img1061.png differ diff --git a/img1062.png b/img1062.png new file mode 100644 index 0000000..fc486b6 Binary files /dev/null and b/img1062.png differ diff --git a/img1063.png b/img1063.png new file mode 100644 index 0000000..6df2d44 Binary files /dev/null and b/img1063.png differ diff --git a/img1064.png b/img1064.png new file mode 100644 index 0000000..5eefef2 Binary files /dev/null and b/img1064.png differ diff --git a/img1065.png b/img1065.png new file mode 100644 index 0000000..2f99c98 Binary files /dev/null and b/img1065.png differ diff --git a/img1066.png b/img1066.png new file mode 100644 index 0000000..9c23ae5 Binary files /dev/null and b/img1066.png differ diff --git a/img1067.png b/img1067.png new file mode 100644 index 0000000..a67efa5 Binary files /dev/null and b/img1067.png differ diff --git a/img1068.png b/img1068.png new file mode 100644 index 0000000..1f837e2 Binary files /dev/null and b/img1068.png differ diff --git a/img1069.png b/img1069.png new file mode 100644 index 0000000..528c8c8 Binary files /dev/null and b/img1069.png differ diff --git a/img107.png b/img107.png new file mode 100644 index 0000000..52606a8 Binary files /dev/null and b/img107.png differ diff --git a/img1070.png b/img1070.png new file mode 100644 index 0000000..6a1d92f Binary files /dev/null and b/img1070.png differ diff --git a/img1071.png b/img1071.png new file mode 100644 index 0000000..c248a13 Binary files /dev/null and b/img1071.png differ diff --git a/img1072.png b/img1072.png new file mode 100644 index 0000000..c2849f4 Binary files /dev/null and b/img1072.png differ diff --git a/img1073.png b/img1073.png new file mode 100644 index 0000000..60a4b07 Binary files /dev/null and b/img1073.png differ diff --git a/img1074.png b/img1074.png new file mode 100644 index 0000000..484e6aa Binary files /dev/null and b/img1074.png differ diff --git a/img1075.png b/img1075.png new file mode 100644 index 0000000..357ce17 Binary files /dev/null and b/img1075.png differ diff --git a/img1076.png b/img1076.png new file mode 100644 index 0000000..6510ca9 Binary files /dev/null and b/img1076.png differ diff --git a/img1077.png b/img1077.png new file mode 100644 index 0000000..4519bcd Binary files /dev/null and b/img1077.png differ diff --git a/img1078.png b/img1078.png new file mode 100644 index 0000000..c4fb42a Binary files /dev/null and b/img1078.png differ diff --git a/img1079.png b/img1079.png new file mode 100644 index 0000000..d8bce11 Binary files /dev/null and b/img1079.png differ diff --git a/img108.png b/img108.png new file mode 100644 index 0000000..90c750a Binary files /dev/null and b/img108.png differ diff --git a/img1080.png b/img1080.png new file mode 100644 index 0000000..7534543 Binary files /dev/null and b/img1080.png differ diff --git a/img1081.png b/img1081.png new file mode 100644 index 0000000..e010321 Binary files /dev/null and b/img1081.png differ diff --git a/img1082.png b/img1082.png new file mode 100644 index 0000000..1c2b22b Binary files /dev/null and b/img1082.png differ diff --git a/img1083.png b/img1083.png new file mode 100644 index 0000000..e64ce91 Binary files /dev/null and b/img1083.png differ diff --git a/img1084.png b/img1084.png new file mode 100644 index 0000000..39886c4 Binary files /dev/null and b/img1084.png differ diff --git a/img1085.png b/img1085.png new file mode 100644 index 0000000..54da6c1 Binary files /dev/null and b/img1085.png differ diff --git a/img1086.png b/img1086.png new file mode 100644 index 0000000..7a21912 Binary files /dev/null and b/img1086.png differ diff --git a/img1087.png b/img1087.png new file mode 100644 index 0000000..d383816 Binary files /dev/null and b/img1087.png differ diff --git a/img1088.png b/img1088.png new file mode 100644 index 0000000..868004e Binary files /dev/null and b/img1088.png differ diff --git a/img1089.png b/img1089.png new file mode 100644 index 0000000..f177832 Binary files /dev/null and b/img1089.png differ diff --git a/img109.png b/img109.png new file mode 100644 index 0000000..4670363 Binary files /dev/null and b/img109.png differ diff --git a/img1090.png b/img1090.png new file mode 100644 index 0000000..35f878a Binary files /dev/null and b/img1090.png differ diff --git a/img1091.png b/img1091.png new file mode 100644 index 0000000..0b8ee7f Binary files /dev/null and b/img1091.png differ diff --git a/img1092.png b/img1092.png new file mode 100644 index 0000000..fcf1ef1 Binary files /dev/null and b/img1092.png differ diff --git a/img1093.png b/img1093.png new file mode 100644 index 0000000..9405e4f Binary files /dev/null and b/img1093.png differ diff --git a/img1094.png b/img1094.png new file mode 100644 index 0000000..b5382c7 Binary files /dev/null and b/img1094.png differ diff --git a/img1095.png b/img1095.png new file mode 100644 index 0000000..af01cc1 Binary files /dev/null and b/img1095.png differ diff --git a/img1096.png b/img1096.png new file mode 100644 index 0000000..eafa399 Binary files /dev/null and b/img1096.png differ diff --git a/img1097.png b/img1097.png new file mode 100644 index 0000000..b7b6ca0 Binary files /dev/null and b/img1097.png differ diff --git a/img1098.png b/img1098.png new file mode 100644 index 0000000..0c95e26 Binary files /dev/null and b/img1098.png differ diff --git a/img1099.png b/img1099.png new file mode 100644 index 0000000..39aa12f Binary files /dev/null and b/img1099.png differ diff --git a/img11.png b/img11.png new file mode 100644 index 0000000..c6dfe57 Binary files /dev/null and b/img11.png differ diff --git a/img110.png b/img110.png new file mode 100644 index 0000000..2029440 Binary files /dev/null and b/img110.png differ diff --git a/img1100.png b/img1100.png new file mode 100644 index 0000000..10fdd3c Binary files /dev/null and b/img1100.png differ diff --git a/img1101.png b/img1101.png new file mode 100644 index 0000000..922b0ab Binary files /dev/null and b/img1101.png differ diff --git a/img1102.png b/img1102.png new file mode 100644 index 0000000..b791f03 Binary files /dev/null and b/img1102.png differ diff --git a/img1103.png b/img1103.png new file mode 100644 index 0000000..a1ac2bc Binary files /dev/null and b/img1103.png differ diff --git a/img1104.png b/img1104.png new file mode 100644 index 0000000..87e8bc0 Binary files /dev/null and b/img1104.png differ diff --git a/img1105.png b/img1105.png new file mode 100644 index 0000000..035234b Binary files /dev/null and b/img1105.png differ diff --git a/img1106.png b/img1106.png new file mode 100644 index 0000000..1642d9e Binary files /dev/null and b/img1106.png differ diff --git a/img1107.png b/img1107.png new file mode 100644 index 0000000..a9635b3 Binary files /dev/null and b/img1107.png differ diff --git a/img1108.png b/img1108.png new file mode 100644 index 0000000..112edb2 Binary files /dev/null and b/img1108.png differ diff --git a/img1109.png b/img1109.png new file mode 100644 index 0000000..2a7b04d Binary files /dev/null and b/img1109.png differ diff --git a/img111.png b/img111.png new file mode 100644 index 0000000..6c07e4d Binary files /dev/null and b/img111.png differ diff --git a/img1110.png b/img1110.png new file mode 100644 index 0000000..433a7af Binary files /dev/null and b/img1110.png differ diff --git a/img1111.png b/img1111.png new file mode 100644 index 0000000..f961ee2 Binary files /dev/null and b/img1111.png differ diff --git a/img1112.png b/img1112.png new file mode 100644 index 0000000..d916df9 Binary files /dev/null and b/img1112.png differ diff --git a/img1113.png b/img1113.png new file mode 100644 index 0000000..c1c735e Binary files /dev/null and b/img1113.png differ diff --git a/img1114.png b/img1114.png new file mode 100644 index 0000000..c35dd01 Binary files /dev/null and b/img1114.png differ diff --git a/img1115.png b/img1115.png new file mode 100644 index 0000000..9dcaa08 Binary files /dev/null and b/img1115.png differ diff --git a/img1116.png b/img1116.png new file mode 100644 index 0000000..3f80b5e Binary files /dev/null and b/img1116.png differ diff --git a/img1117.png b/img1117.png new file mode 100644 index 0000000..f01e5dc Binary files /dev/null and b/img1117.png differ diff --git a/img1118.png b/img1118.png new file mode 100644 index 0000000..ff33a53 Binary files /dev/null and b/img1118.png differ diff --git a/img1119.png b/img1119.png new file mode 100644 index 0000000..24be440 Binary files /dev/null and b/img1119.png differ diff --git a/img112.png b/img112.png new file mode 100644 index 0000000..5827e03 Binary files /dev/null and b/img112.png differ diff --git a/img1120.png b/img1120.png new file mode 100644 index 0000000..bb93ced Binary files /dev/null and b/img1120.png differ diff --git a/img1121.png b/img1121.png new file mode 100644 index 0000000..899ea4d Binary files /dev/null and b/img1121.png differ diff --git a/img1122.png b/img1122.png new file mode 100644 index 0000000..a20d916 Binary files /dev/null and b/img1122.png differ diff --git a/img1123.png b/img1123.png new file mode 100644 index 0000000..4321490 Binary files /dev/null and b/img1123.png differ diff --git a/img1124.png b/img1124.png new file mode 100644 index 0000000..91f7763 Binary files /dev/null and b/img1124.png differ diff --git a/img1125.png b/img1125.png new file mode 100644 index 0000000..c4aeaeb Binary files /dev/null and b/img1125.png differ diff --git a/img1126.png b/img1126.png new file mode 100644 index 0000000..1b46a46 Binary files /dev/null and b/img1126.png differ diff --git a/img1127.png b/img1127.png new file mode 100644 index 0000000..52e4890 Binary files /dev/null and b/img1127.png differ diff --git a/img1128.png b/img1128.png new file mode 100644 index 0000000..47cf455 Binary files /dev/null and b/img1128.png differ diff --git a/img1129.png b/img1129.png new file mode 100644 index 0000000..628f35c Binary files /dev/null and b/img1129.png differ diff --git a/img113.png b/img113.png new file mode 100644 index 0000000..d7d4858 Binary files /dev/null and b/img113.png differ diff --git a/img1130.png b/img1130.png new file mode 100644 index 0000000..df77379 Binary files /dev/null and b/img1130.png differ diff --git a/img1131.png b/img1131.png new file mode 100644 index 0000000..ea8eca1 Binary files /dev/null and b/img1131.png differ diff --git a/img1132.png b/img1132.png new file mode 100644 index 0000000..cb2d539 Binary files /dev/null and b/img1132.png differ diff --git a/img1133.png b/img1133.png new file mode 100644 index 0000000..558f0a1 Binary files /dev/null and b/img1133.png differ diff --git a/img1134.png b/img1134.png new file mode 100644 index 0000000..2ca6bd9 Binary files /dev/null and b/img1134.png differ diff --git a/img1135.png b/img1135.png new file mode 100644 index 0000000..760fb59 Binary files /dev/null and b/img1135.png differ diff --git a/img1136.png b/img1136.png new file mode 100644 index 0000000..4314c4e Binary files /dev/null and b/img1136.png differ diff --git a/img1137.png b/img1137.png new file mode 100644 index 0000000..d0b3bff Binary files /dev/null and b/img1137.png differ diff --git a/img1138.png b/img1138.png new file mode 100644 index 0000000..e7ad1d8 Binary files /dev/null and b/img1138.png differ diff --git a/img1139.png b/img1139.png new file mode 100644 index 0000000..e28d33d Binary files /dev/null and b/img1139.png differ diff --git a/img114.png b/img114.png new file mode 100644 index 0000000..4f84173 Binary files /dev/null and b/img114.png differ diff --git a/img1140.png b/img1140.png new file mode 100644 index 0000000..b40fa04 Binary files /dev/null and b/img1140.png differ diff --git a/img1141.png b/img1141.png new file mode 100644 index 0000000..0ce3d7a Binary files /dev/null and b/img1141.png differ diff --git a/img1142.png b/img1142.png new file mode 100644 index 0000000..2525f57 Binary files /dev/null and b/img1142.png differ diff --git a/img1143.png b/img1143.png new file mode 100644 index 0000000..2f2912f Binary files /dev/null and b/img1143.png differ diff --git a/img1144.png b/img1144.png new file mode 100644 index 0000000..9419a20 Binary files /dev/null and b/img1144.png differ diff --git a/img1145.png b/img1145.png new file mode 100644 index 0000000..4844100 Binary files /dev/null and b/img1145.png differ diff --git a/img1146.png b/img1146.png new file mode 100644 index 0000000..003b62b Binary files /dev/null and b/img1146.png differ diff --git a/img1147.png b/img1147.png new file mode 100644 index 0000000..f1303d5 Binary files /dev/null and b/img1147.png differ diff --git a/img1148.png b/img1148.png new file mode 100644 index 0000000..d581006 Binary files /dev/null and b/img1148.png differ diff --git a/img1149.png b/img1149.png new file mode 100644 index 0000000..eb0ef3b Binary files /dev/null and b/img1149.png differ diff --git a/img115.png b/img115.png new file mode 100644 index 0000000..2060c89 Binary files /dev/null and b/img115.png differ diff --git a/img1150.png b/img1150.png new file mode 100644 index 0000000..1778782 Binary files /dev/null and b/img1150.png differ diff --git a/img1151.png b/img1151.png new file mode 100644 index 0000000..0287ad2 Binary files /dev/null and b/img1151.png differ diff --git a/img1152.png b/img1152.png new file mode 100644 index 0000000..6ef9f9b Binary files /dev/null and b/img1152.png differ diff --git a/img1153.png b/img1153.png new file mode 100644 index 0000000..f223f2b Binary files /dev/null and b/img1153.png differ diff --git a/img1154.png b/img1154.png new file mode 100644 index 0000000..a3e0ad3 Binary files /dev/null and b/img1154.png differ diff --git a/img1155.png b/img1155.png new file mode 100644 index 0000000..b58796d Binary files /dev/null and b/img1155.png differ diff --git a/img1156.png b/img1156.png new file mode 100644 index 0000000..96a5c71 Binary files /dev/null and b/img1156.png differ diff --git a/img1157.png b/img1157.png new file mode 100644 index 0000000..3dc1e61 Binary files /dev/null and b/img1157.png differ diff --git a/img1158.png b/img1158.png new file mode 100644 index 0000000..c158f7d Binary files /dev/null and b/img1158.png differ diff --git a/img1159.png b/img1159.png new file mode 100644 index 0000000..93a5cf4 Binary files /dev/null and b/img1159.png differ diff --git a/img116.png b/img116.png new file mode 100644 index 0000000..2d5df67 Binary files /dev/null and b/img116.png differ diff --git a/img1160.png b/img1160.png new file mode 100644 index 0000000..a8378f9 Binary files /dev/null and b/img1160.png differ diff --git a/img1161.png b/img1161.png new file mode 100644 index 0000000..c816148 Binary files /dev/null and b/img1161.png differ diff --git a/img1162.png b/img1162.png new file mode 100644 index 0000000..46d3157 Binary files /dev/null and b/img1162.png differ diff --git a/img1163.png b/img1163.png new file mode 100644 index 0000000..368b2db Binary files /dev/null and b/img1163.png differ diff --git a/img1164.png b/img1164.png new file mode 100644 index 0000000..590ae2e Binary files /dev/null and b/img1164.png differ diff --git a/img1165.png b/img1165.png new file mode 100644 index 0000000..3d8b1e0 Binary files /dev/null and b/img1165.png differ diff --git a/img1166.png b/img1166.png new file mode 100644 index 0000000..fff0dac Binary files /dev/null and b/img1166.png differ diff --git a/img1167.png b/img1167.png new file mode 100644 index 0000000..dfcedc8 Binary files /dev/null and b/img1167.png differ diff --git a/img1168.png b/img1168.png new file mode 100644 index 0000000..492c8e6 Binary files /dev/null and b/img1168.png differ diff --git a/img1169.png b/img1169.png new file mode 100644 index 0000000..9bc6e63 Binary files /dev/null and b/img1169.png differ diff --git a/img117.png b/img117.png new file mode 100644 index 0000000..1de0a94 Binary files /dev/null and b/img117.png differ diff --git a/img1170.png b/img1170.png new file mode 100644 index 0000000..278f1de Binary files /dev/null and b/img1170.png differ diff --git a/img1171.png b/img1171.png new file mode 100644 index 0000000..7bb395f Binary files /dev/null and b/img1171.png differ diff --git a/img1172.png b/img1172.png new file mode 100644 index 0000000..6633942 Binary files /dev/null and b/img1172.png differ diff --git a/img1173.png b/img1173.png new file mode 100644 index 0000000..abacd06 Binary files /dev/null and b/img1173.png differ diff --git a/img1174.png b/img1174.png new file mode 100644 index 0000000..359dad1 Binary files /dev/null and b/img1174.png differ diff --git a/img1175.png b/img1175.png new file mode 100644 index 0000000..e8b12c2 Binary files /dev/null and b/img1175.png differ diff --git a/img1176.png b/img1176.png new file mode 100644 index 0000000..9a12fe8 Binary files /dev/null and b/img1176.png differ diff --git a/img1177.png b/img1177.png new file mode 100644 index 0000000..3d9ba27 Binary files /dev/null and b/img1177.png differ diff --git a/img1178.png b/img1178.png new file mode 100644 index 0000000..e94db7e Binary files /dev/null and b/img1178.png differ diff --git a/img1179.png b/img1179.png new file mode 100644 index 0000000..161c6d4 Binary files /dev/null and b/img1179.png differ diff --git a/img118.png b/img118.png new file mode 100644 index 0000000..c979d70 Binary files /dev/null and b/img118.png differ diff --git a/img1180.png b/img1180.png new file mode 100644 index 0000000..946a34d Binary files /dev/null and b/img1180.png differ diff --git a/img1181.png b/img1181.png new file mode 100644 index 0000000..bafb137 Binary files /dev/null and b/img1181.png differ diff --git a/img1182.png b/img1182.png new file mode 100644 index 0000000..7e14795 Binary files /dev/null and b/img1182.png differ diff --git a/img1183.png b/img1183.png new file mode 100644 index 0000000..e7f29f1 Binary files /dev/null and b/img1183.png differ diff --git a/img1184.png b/img1184.png new file mode 100644 index 0000000..2516ba9 Binary files /dev/null and b/img1184.png differ diff --git a/img1185.png b/img1185.png new file mode 100644 index 0000000..fadcca5 Binary files /dev/null and b/img1185.png differ diff --git a/img1186.png b/img1186.png new file mode 100644 index 0000000..bcbb356 Binary files /dev/null and b/img1186.png differ diff --git a/img1187.png b/img1187.png new file mode 100644 index 0000000..621d9bc Binary files /dev/null and b/img1187.png differ diff --git a/img1188.png b/img1188.png new file mode 100644 index 0000000..c898677 Binary files /dev/null and b/img1188.png differ diff --git a/img1189.png b/img1189.png new file mode 100644 index 0000000..cd1b888 Binary files /dev/null and b/img1189.png differ diff --git a/img119.png b/img119.png new file mode 100644 index 0000000..ca40d43 Binary files /dev/null and b/img119.png differ diff --git a/img1190.png b/img1190.png new file mode 100644 index 0000000..9a40b4b Binary files /dev/null and b/img1190.png differ diff --git a/img1191.png b/img1191.png new file mode 100644 index 0000000..462bd35 Binary files /dev/null and b/img1191.png differ diff --git a/img1192.png b/img1192.png new file mode 100644 index 0000000..e190389 Binary files /dev/null and b/img1192.png differ diff --git a/img1193.png b/img1193.png new file mode 100644 index 0000000..25f78bd Binary files /dev/null and b/img1193.png differ diff --git a/img1194.png b/img1194.png new file mode 100644 index 0000000..60443c4 Binary files /dev/null and b/img1194.png differ diff --git a/img1195.png b/img1195.png new file mode 100644 index 0000000..63f77bc Binary files /dev/null and b/img1195.png differ diff --git a/img1196.png b/img1196.png new file mode 100644 index 0000000..5e00155 Binary files /dev/null and b/img1196.png differ diff --git a/img1197.png b/img1197.png new file mode 100644 index 0000000..3ca6390 Binary files /dev/null and b/img1197.png differ diff --git a/img1198.png b/img1198.png new file mode 100644 index 0000000..9f22154 Binary files /dev/null and b/img1198.png differ diff --git a/img1199.png b/img1199.png new file mode 100644 index 0000000..09e55d5 Binary files /dev/null and b/img1199.png differ diff --git a/img12.png b/img12.png new file mode 100644 index 0000000..4362f5b Binary files /dev/null and b/img12.png differ diff --git a/img120.png b/img120.png new file mode 100644 index 0000000..8f7e971 Binary files /dev/null and b/img120.png differ diff --git a/img1200.png b/img1200.png new file mode 100644 index 0000000..ac40ac5 Binary files /dev/null and b/img1200.png differ diff --git a/img1201.png b/img1201.png new file mode 100644 index 0000000..a81cd5b Binary files /dev/null and b/img1201.png differ diff --git a/img1202.png b/img1202.png new file mode 100644 index 0000000..5c2bfbb Binary files /dev/null and b/img1202.png differ diff --git a/img1203.png b/img1203.png new file mode 100644 index 0000000..a387e97 Binary files /dev/null and b/img1203.png differ diff --git a/img1204.png b/img1204.png new file mode 100644 index 0000000..f14f539 Binary files /dev/null and b/img1204.png differ diff --git a/img1205.png b/img1205.png new file mode 100644 index 0000000..f827d7e Binary files /dev/null and b/img1205.png differ diff --git a/img1206.png b/img1206.png new file mode 100644 index 0000000..7e4c773 Binary files /dev/null and b/img1206.png differ diff --git a/img1207.png b/img1207.png new file mode 100644 index 0000000..3d96797 Binary files /dev/null and b/img1207.png differ diff --git a/img1208.png b/img1208.png new file mode 100644 index 0000000..5eb56f0 Binary files /dev/null and b/img1208.png differ diff --git a/img1209.png b/img1209.png new file mode 100644 index 0000000..b739e64 Binary files /dev/null and b/img1209.png differ diff --git a/img121.png b/img121.png new file mode 100644 index 0000000..4db44f8 Binary files /dev/null and b/img121.png differ diff --git a/img1210.png b/img1210.png new file mode 100644 index 0000000..27cbae6 Binary files /dev/null and b/img1210.png differ diff --git a/img1211.png b/img1211.png new file mode 100644 index 0000000..c18e7d5 Binary files /dev/null and b/img1211.png differ diff --git a/img1212.png b/img1212.png new file mode 100644 index 0000000..d30d1fd Binary files /dev/null and b/img1212.png differ diff --git a/img1213.png b/img1213.png new file mode 100644 index 0000000..11a44d6 Binary files /dev/null and b/img1213.png differ diff --git a/img1214.png b/img1214.png new file mode 100644 index 0000000..60f6352 Binary files /dev/null and b/img1214.png differ diff --git a/img1215.png b/img1215.png new file mode 100644 index 0000000..38ee6ec Binary files /dev/null and b/img1215.png differ diff --git a/img1216.png b/img1216.png new file mode 100644 index 0000000..2661857 Binary files /dev/null and b/img1216.png differ diff --git a/img1217.png b/img1217.png new file mode 100644 index 0000000..419fb2b Binary files /dev/null and b/img1217.png differ diff --git a/img1218.png b/img1218.png new file mode 100644 index 0000000..f4cbcb5 Binary files /dev/null and b/img1218.png differ diff --git a/img1219.png b/img1219.png new file mode 100644 index 0000000..ae11f86 Binary files /dev/null and b/img1219.png differ diff --git a/img122.png b/img122.png new file mode 100644 index 0000000..46eaa08 Binary files /dev/null and b/img122.png differ diff --git a/img1220.png b/img1220.png new file mode 100644 index 0000000..1f918fc Binary files /dev/null and b/img1220.png differ diff --git a/img1221.png b/img1221.png new file mode 100644 index 0000000..754f3a2 Binary files /dev/null and b/img1221.png differ diff --git a/img1222.png b/img1222.png new file mode 100644 index 0000000..3b3e8db Binary files /dev/null and b/img1222.png differ diff --git a/img1223.png b/img1223.png new file mode 100644 index 0000000..ab475b5 Binary files /dev/null and b/img1223.png differ diff --git a/img1224.png b/img1224.png new file mode 100644 index 0000000..5a354af Binary files /dev/null and b/img1224.png differ diff --git a/img1225.png b/img1225.png new file mode 100644 index 0000000..8881bd3 Binary files /dev/null and b/img1225.png differ diff --git a/img1226.png b/img1226.png new file mode 100644 index 0000000..9c16fa8 Binary files /dev/null and b/img1226.png differ diff --git a/img1227.png b/img1227.png new file mode 100644 index 0000000..8183915 Binary files /dev/null and b/img1227.png differ diff --git a/img1228.png b/img1228.png new file mode 100644 index 0000000..84adade Binary files /dev/null and b/img1228.png differ diff --git a/img1229.png b/img1229.png new file mode 100644 index 0000000..af71dde Binary files /dev/null and b/img1229.png differ diff --git a/img123.png b/img123.png new file mode 100644 index 0000000..3065147 Binary files /dev/null and b/img123.png differ diff --git a/img1230.png b/img1230.png new file mode 100644 index 0000000..6a4308d Binary files /dev/null and b/img1230.png differ diff --git a/img1231.png b/img1231.png new file mode 100644 index 0000000..41b40e0 Binary files /dev/null and b/img1231.png differ diff --git a/img1232.png b/img1232.png new file mode 100644 index 0000000..b0aa27b Binary files /dev/null and b/img1232.png differ diff --git a/img1233.png b/img1233.png new file mode 100644 index 0000000..c6fba60 Binary files /dev/null and b/img1233.png differ diff --git a/img1234.png b/img1234.png new file mode 100644 index 0000000..bc85224 Binary files /dev/null and b/img1234.png differ diff --git a/img1235.png b/img1235.png new file mode 100644 index 0000000..0544d43 Binary files /dev/null and b/img1235.png differ diff --git a/img1236.png b/img1236.png new file mode 100644 index 0000000..7540a0e Binary files /dev/null and b/img1236.png differ diff --git a/img1237.png b/img1237.png new file mode 100644 index 0000000..5f1ca81 Binary files /dev/null and b/img1237.png differ diff --git a/img1238.png b/img1238.png new file mode 100644 index 0000000..3f85864 Binary files /dev/null and b/img1238.png differ diff --git a/img1239.png b/img1239.png new file mode 100644 index 0000000..d63a242 Binary files /dev/null and b/img1239.png differ diff --git a/img124.png b/img124.png new file mode 100644 index 0000000..db38305 Binary files /dev/null and b/img124.png differ diff --git a/img1240.png b/img1240.png new file mode 100644 index 0000000..0f24cc0 Binary files /dev/null and b/img1240.png differ diff --git a/img1241.png b/img1241.png new file mode 100644 index 0000000..5fdb465 Binary files /dev/null and b/img1241.png differ diff --git a/img1242.png b/img1242.png new file mode 100644 index 0000000..c89cd18 Binary files /dev/null and b/img1242.png differ diff --git a/img1243.png b/img1243.png new file mode 100644 index 0000000..e33c72c Binary files /dev/null and b/img1243.png differ diff --git a/img1244.png b/img1244.png new file mode 100644 index 0000000..862ad20 Binary files /dev/null and b/img1244.png differ diff --git a/img1245.png b/img1245.png new file mode 100644 index 0000000..6d7df34 Binary files /dev/null and b/img1245.png differ diff --git a/img1246.png b/img1246.png new file mode 100644 index 0000000..d39b7b5 Binary files /dev/null and b/img1246.png differ diff --git a/img1247.png b/img1247.png new file mode 100644 index 0000000..0dfeb94 Binary files /dev/null and b/img1247.png differ diff --git a/img1248.png b/img1248.png new file mode 100644 index 0000000..22a03ee Binary files /dev/null and b/img1248.png differ diff --git a/img1249.png b/img1249.png new file mode 100644 index 0000000..e7a6638 Binary files /dev/null and b/img1249.png differ diff --git a/img125.png b/img125.png new file mode 100644 index 0000000..1ecdb9d Binary files /dev/null and b/img125.png differ diff --git a/img1250.png b/img1250.png new file mode 100644 index 0000000..3c8cc7f Binary files /dev/null and b/img1250.png differ diff --git a/img1251.png b/img1251.png new file mode 100644 index 0000000..5f69e35 Binary files /dev/null and b/img1251.png differ diff --git a/img1252.png b/img1252.png new file mode 100644 index 0000000..ce32a3e Binary files /dev/null and b/img1252.png differ diff --git a/img1253.png b/img1253.png new file mode 100644 index 0000000..7bd1e0b Binary files /dev/null and b/img1253.png differ diff --git a/img1254.png b/img1254.png new file mode 100644 index 0000000..99bddb5 Binary files /dev/null and b/img1254.png differ diff --git a/img1255.png b/img1255.png new file mode 100644 index 0000000..99008e7 Binary files /dev/null and b/img1255.png differ diff --git a/img1256.png b/img1256.png new file mode 100644 index 0000000..e295c82 Binary files /dev/null and b/img1256.png differ diff --git a/img1257.png b/img1257.png new file mode 100644 index 0000000..707ad2a Binary files /dev/null and b/img1257.png differ diff --git a/img1258.png b/img1258.png new file mode 100644 index 0000000..bb1ed3f Binary files /dev/null and b/img1258.png differ diff --git a/img1259.png b/img1259.png new file mode 100644 index 0000000..4d34dfe Binary files /dev/null and b/img1259.png differ diff --git a/img126.png b/img126.png new file mode 100644 index 0000000..6cdca40 Binary files /dev/null and b/img126.png differ diff --git a/img1260.png b/img1260.png new file mode 100644 index 0000000..aabd52a Binary files /dev/null and b/img1260.png differ diff --git a/img1261.png b/img1261.png new file mode 100644 index 0000000..b2a8dc0 Binary files /dev/null and b/img1261.png differ diff --git a/img1262.png b/img1262.png new file mode 100644 index 0000000..d4e0fe2 Binary files /dev/null and b/img1262.png differ diff --git a/img1263.png b/img1263.png new file mode 100644 index 0000000..6cfe9d8 Binary files /dev/null and b/img1263.png differ diff --git a/img1264.png b/img1264.png new file mode 100644 index 0000000..1762764 Binary files /dev/null and b/img1264.png differ diff --git a/img1265.png b/img1265.png new file mode 100644 index 0000000..cc9dfcd Binary files /dev/null and b/img1265.png differ diff --git a/img1266.png b/img1266.png new file mode 100644 index 0000000..d567a85 Binary files /dev/null and b/img1266.png differ diff --git a/img1267.png b/img1267.png new file mode 100644 index 0000000..bab4e3c Binary files /dev/null and b/img1267.png differ diff --git a/img1268.png b/img1268.png new file mode 100644 index 0000000..852d4e9 Binary files /dev/null and b/img1268.png differ diff --git a/img1269.png b/img1269.png new file mode 100644 index 0000000..636c73b Binary files /dev/null and b/img1269.png differ diff --git a/img127.png b/img127.png new file mode 100644 index 0000000..124f1c9 Binary files /dev/null and b/img127.png differ diff --git a/img1270.png b/img1270.png new file mode 100644 index 0000000..5b6e4c5 Binary files /dev/null and b/img1270.png differ diff --git a/img1271.png b/img1271.png new file mode 100644 index 0000000..fc9eed8 Binary files /dev/null and b/img1271.png differ diff --git a/img1272.png b/img1272.png new file mode 100644 index 0000000..cfb9962 Binary files /dev/null and b/img1272.png differ diff --git a/img1273.png b/img1273.png new file mode 100644 index 0000000..1ce8d97 Binary files /dev/null and b/img1273.png differ diff --git a/img1274.png b/img1274.png new file mode 100644 index 0000000..d951aa6 Binary files /dev/null and b/img1274.png differ diff --git a/img1275.png b/img1275.png new file mode 100644 index 0000000..fab05b1 Binary files /dev/null and b/img1275.png differ diff --git a/img1276.png b/img1276.png new file mode 100644 index 0000000..1dd3630 Binary files /dev/null and b/img1276.png differ diff --git a/img1277.png b/img1277.png new file mode 100644 index 0000000..0ca315f Binary files /dev/null and b/img1277.png differ diff --git a/img1278.png b/img1278.png new file mode 100644 index 0000000..f7f524d Binary files /dev/null and b/img1278.png differ diff --git a/img1279.png b/img1279.png new file mode 100644 index 0000000..493fbfb Binary files /dev/null and b/img1279.png differ diff --git a/img128.png b/img128.png new file mode 100644 index 0000000..f2d687f Binary files /dev/null and b/img128.png differ diff --git a/img1280.png b/img1280.png new file mode 100644 index 0000000..57397f6 Binary files /dev/null and b/img1280.png differ diff --git a/img1281.png b/img1281.png new file mode 100644 index 0000000..aadf311 Binary files /dev/null and b/img1281.png differ diff --git a/img1282.png b/img1282.png new file mode 100644 index 0000000..9bbec95 Binary files /dev/null and b/img1282.png differ diff --git a/img1283.png b/img1283.png new file mode 100644 index 0000000..e51fd65 Binary files /dev/null and b/img1283.png differ diff --git a/img1284.png b/img1284.png new file mode 100644 index 0000000..6371445 Binary files /dev/null and b/img1284.png differ diff --git a/img1285.png b/img1285.png new file mode 100644 index 0000000..3e7c9da Binary files /dev/null and b/img1285.png differ diff --git a/img1286.png b/img1286.png new file mode 100644 index 0000000..df5da5b Binary files /dev/null and b/img1286.png differ diff --git a/img1287.png b/img1287.png new file mode 100644 index 0000000..fa2a20d Binary files /dev/null and b/img1287.png differ diff --git a/img1288.png b/img1288.png new file mode 100644 index 0000000..2dd5526 Binary files /dev/null and b/img1288.png differ diff --git a/img1289.png b/img1289.png new file mode 100644 index 0000000..2c06697 Binary files /dev/null and b/img1289.png differ diff --git a/img129.png b/img129.png new file mode 100644 index 0000000..25249dd Binary files /dev/null and b/img129.png differ diff --git a/img1290.png b/img1290.png new file mode 100644 index 0000000..20b2fb2 Binary files /dev/null and b/img1290.png differ diff --git a/img1291.png b/img1291.png new file mode 100644 index 0000000..83c80b8 Binary files /dev/null and b/img1291.png differ diff --git a/img1292.png b/img1292.png new file mode 100644 index 0000000..5c17182 Binary files /dev/null and b/img1292.png differ diff --git a/img1293.png b/img1293.png new file mode 100644 index 0000000..cd58858 Binary files /dev/null and b/img1293.png differ diff --git a/img1294.png b/img1294.png new file mode 100644 index 0000000..cbbef8f Binary files /dev/null and b/img1294.png differ diff --git a/img1295.png b/img1295.png new file mode 100644 index 0000000..b496321 Binary files /dev/null and b/img1295.png differ diff --git a/img1296.png b/img1296.png new file mode 100644 index 0000000..4c8db0d Binary files /dev/null and b/img1296.png differ diff --git a/img1297.png b/img1297.png new file mode 100644 index 0000000..7f66270 Binary files /dev/null and b/img1297.png differ diff --git a/img1298.png b/img1298.png new file mode 100644 index 0000000..730fa4e Binary files /dev/null and b/img1298.png differ diff --git a/img1299.png b/img1299.png new file mode 100644 index 0000000..e2319b3 Binary files /dev/null and b/img1299.png differ diff --git a/img13.png b/img13.png new file mode 100644 index 0000000..5c25cda Binary files /dev/null and b/img13.png differ diff --git a/img130.png b/img130.png new file mode 100644 index 0000000..cc3f484 Binary files /dev/null and b/img130.png differ diff --git a/img1300.png b/img1300.png new file mode 100644 index 0000000..771bde3 Binary files /dev/null and b/img1300.png differ diff --git a/img1301.png b/img1301.png new file mode 100644 index 0000000..d363b24 Binary files /dev/null and b/img1301.png differ diff --git a/img1302.png b/img1302.png new file mode 100644 index 0000000..82bc6f5 Binary files /dev/null and b/img1302.png differ diff --git a/img1303.png b/img1303.png new file mode 100644 index 0000000..70ffc89 Binary files /dev/null and b/img1303.png differ diff --git a/img1304.png b/img1304.png new file mode 100644 index 0000000..608efe1 Binary files /dev/null and b/img1304.png differ diff --git a/img1305.png b/img1305.png new file mode 100644 index 0000000..f81bc1a Binary files /dev/null and b/img1305.png differ diff --git a/img1306.png b/img1306.png new file mode 100644 index 0000000..2644697 Binary files /dev/null and b/img1306.png differ diff --git a/img1307.png b/img1307.png new file mode 100644 index 0000000..a3443ba Binary files /dev/null and b/img1307.png differ diff --git a/img1308.png b/img1308.png new file mode 100644 index 0000000..6c8cc0b Binary files /dev/null and b/img1308.png differ diff --git a/img1309.png b/img1309.png new file mode 100644 index 0000000..363221d Binary files /dev/null and b/img1309.png differ diff --git a/img131.png b/img131.png new file mode 100644 index 0000000..97868a0 Binary files /dev/null and b/img131.png differ diff --git a/img1310.png b/img1310.png new file mode 100644 index 0000000..e34750a Binary files /dev/null and b/img1310.png differ diff --git a/img1311.png b/img1311.png new file mode 100644 index 0000000..6f00cec Binary files /dev/null and b/img1311.png differ diff --git a/img1312.png b/img1312.png new file mode 100644 index 0000000..57914a9 Binary files /dev/null and b/img1312.png differ diff --git a/img1313.png b/img1313.png new file mode 100644 index 0000000..059b3de Binary files /dev/null and b/img1313.png differ diff --git a/img1314.png b/img1314.png new file mode 100644 index 0000000..f78ed99 Binary files /dev/null and b/img1314.png differ diff --git a/img1315.png b/img1315.png new file mode 100644 index 0000000..9d32ab2 Binary files /dev/null and b/img1315.png differ diff --git a/img1316.png b/img1316.png new file mode 100644 index 0000000..9caf2f1 Binary files /dev/null and b/img1316.png differ diff --git a/img1317.png b/img1317.png new file mode 100644 index 0000000..9437925 Binary files /dev/null and b/img1317.png differ diff --git a/img1318.png b/img1318.png new file mode 100644 index 0000000..9487aec Binary files /dev/null and b/img1318.png differ diff --git a/img1319.png b/img1319.png new file mode 100644 index 0000000..2de1fe5 Binary files /dev/null and b/img1319.png differ diff --git a/img132.png b/img132.png new file mode 100644 index 0000000..1d9476e Binary files /dev/null and b/img132.png differ diff --git a/img1320.png b/img1320.png new file mode 100644 index 0000000..1077a1a Binary files /dev/null and b/img1320.png differ diff --git a/img1321.png b/img1321.png new file mode 100644 index 0000000..d16787f Binary files /dev/null and b/img1321.png differ diff --git a/img1322.png b/img1322.png new file mode 100644 index 0000000..13b2d2f Binary files /dev/null and b/img1322.png differ diff --git a/img1323.png b/img1323.png new file mode 100644 index 0000000..668642f Binary files /dev/null and b/img1323.png differ diff --git a/img1324.png b/img1324.png new file mode 100644 index 0000000..ea8c55a Binary files /dev/null and b/img1324.png differ diff --git a/img1325.png b/img1325.png new file mode 100644 index 0000000..6c67144 Binary files /dev/null and b/img1325.png differ diff --git a/img1326.png b/img1326.png new file mode 100644 index 0000000..4e6a148 Binary files /dev/null and b/img1326.png differ diff --git a/img1327.png b/img1327.png new file mode 100644 index 0000000..6e3a3ec Binary files /dev/null and b/img1327.png differ diff --git a/img1328.png b/img1328.png new file mode 100644 index 0000000..5115ef9 Binary files /dev/null and b/img1328.png differ diff --git a/img1329.png b/img1329.png new file mode 100644 index 0000000..f8d5f9a Binary files /dev/null and b/img1329.png differ diff --git a/img133.png b/img133.png new file mode 100644 index 0000000..9945ec4 Binary files /dev/null and b/img133.png differ diff --git a/img1330.png b/img1330.png new file mode 100644 index 0000000..16f7f59 Binary files /dev/null and b/img1330.png differ diff --git a/img1331.png b/img1331.png new file mode 100644 index 0000000..e67cd54 Binary files /dev/null and b/img1331.png differ diff --git a/img1332.png b/img1332.png new file mode 100644 index 0000000..29975df Binary files /dev/null and b/img1332.png differ diff --git a/img1333.png b/img1333.png new file mode 100644 index 0000000..3eb9269 Binary files /dev/null and b/img1333.png differ diff --git a/img1334.png b/img1334.png new file mode 100644 index 0000000..5567c1e Binary files /dev/null and b/img1334.png differ diff --git a/img1335.png b/img1335.png new file mode 100644 index 0000000..9ef6736 Binary files /dev/null and b/img1335.png differ diff --git a/img1336.png b/img1336.png new file mode 100644 index 0000000..54f26c0 Binary files /dev/null and b/img1336.png differ diff --git a/img1337.png b/img1337.png new file mode 100644 index 0000000..0f9b4f9 Binary files /dev/null and b/img1337.png differ diff --git a/img1338.png b/img1338.png new file mode 100644 index 0000000..dc43561 Binary files /dev/null and b/img1338.png differ diff --git a/img1339.png b/img1339.png new file mode 100644 index 0000000..3738515 Binary files /dev/null and b/img1339.png differ diff --git a/img134.png b/img134.png new file mode 100644 index 0000000..7d151d4 Binary files /dev/null and b/img134.png differ diff --git a/img1340.png b/img1340.png new file mode 100644 index 0000000..901e202 Binary files /dev/null and b/img1340.png differ diff --git a/img1341.png b/img1341.png new file mode 100644 index 0000000..4fbd276 Binary files /dev/null and b/img1341.png differ diff --git a/img1342.png b/img1342.png new file mode 100644 index 0000000..db16ade Binary files /dev/null and b/img1342.png differ diff --git a/img1343.png b/img1343.png new file mode 100644 index 0000000..17a4d7e Binary files /dev/null and b/img1343.png differ diff --git a/img1344.png b/img1344.png new file mode 100644 index 0000000..8b34748 Binary files /dev/null and b/img1344.png differ diff --git a/img1345.png b/img1345.png new file mode 100644 index 0000000..ca43d10 Binary files /dev/null and b/img1345.png differ diff --git a/img1346.png b/img1346.png new file mode 100644 index 0000000..2240a24 Binary files /dev/null and b/img1346.png differ diff --git a/img1347.png b/img1347.png new file mode 100644 index 0000000..8f5d822 Binary files /dev/null and b/img1347.png differ diff --git a/img1348.png b/img1348.png new file mode 100644 index 0000000..cba8785 Binary files /dev/null and b/img1348.png differ diff --git a/img1349.png b/img1349.png new file mode 100644 index 0000000..93d505d Binary files /dev/null and b/img1349.png differ diff --git a/img135.png b/img135.png new file mode 100644 index 0000000..32648df Binary files /dev/null and b/img135.png differ diff --git a/img1350.png b/img1350.png new file mode 100644 index 0000000..e184978 Binary files /dev/null and b/img1350.png differ diff --git a/img1351.png b/img1351.png new file mode 100644 index 0000000..23b30a7 Binary files /dev/null and b/img1351.png differ diff --git a/img1352.png b/img1352.png new file mode 100644 index 0000000..64bf3b8 Binary files /dev/null and b/img1352.png differ diff --git a/img1353.png b/img1353.png new file mode 100644 index 0000000..91fb8fe Binary files /dev/null and b/img1353.png differ diff --git a/img1354.png b/img1354.png new file mode 100644 index 0000000..04d130f Binary files /dev/null and b/img1354.png differ diff --git a/img1355.png b/img1355.png new file mode 100644 index 0000000..8d67339 Binary files /dev/null and b/img1355.png differ diff --git a/img1356.png b/img1356.png new file mode 100644 index 0000000..e1dc42f Binary files /dev/null and b/img1356.png differ diff --git a/img1357.png b/img1357.png new file mode 100644 index 0000000..9928e9f Binary files /dev/null and b/img1357.png differ diff --git a/img1358.png b/img1358.png new file mode 100644 index 0000000..66f3089 Binary files /dev/null and b/img1358.png differ diff --git a/img1359.png b/img1359.png new file mode 100644 index 0000000..d793daf Binary files /dev/null and b/img1359.png differ diff --git a/img136.png b/img136.png new file mode 100644 index 0000000..a95cd41 Binary files /dev/null and b/img136.png differ diff --git a/img1360.png b/img1360.png new file mode 100644 index 0000000..e77add8 Binary files /dev/null and b/img1360.png differ diff --git a/img1361.png b/img1361.png new file mode 100644 index 0000000..77c69dc Binary files /dev/null and b/img1361.png differ diff --git a/img1362.png b/img1362.png new file mode 100644 index 0000000..60108ba Binary files /dev/null and b/img1362.png differ diff --git a/img1363.png b/img1363.png new file mode 100644 index 0000000..baeec02 Binary files /dev/null and b/img1363.png differ diff --git a/img1364.png b/img1364.png new file mode 100644 index 0000000..c0fa7cb Binary files /dev/null and b/img1364.png differ diff --git a/img1365.png b/img1365.png new file mode 100644 index 0000000..48fa9cb Binary files /dev/null and b/img1365.png differ diff --git a/img1366.png b/img1366.png new file mode 100644 index 0000000..66dab6b Binary files /dev/null and b/img1366.png differ diff --git a/img1367.png b/img1367.png new file mode 100644 index 0000000..fea1c89 Binary files /dev/null and b/img1367.png differ diff --git a/img1368.png b/img1368.png new file mode 100644 index 0000000..384b92b Binary files /dev/null and b/img1368.png differ diff --git a/img1369.png b/img1369.png new file mode 100644 index 0000000..64cf745 Binary files /dev/null and b/img1369.png differ diff --git a/img137.png b/img137.png new file mode 100644 index 0000000..bf32256 Binary files /dev/null and b/img137.png differ diff --git a/img1370.png b/img1370.png new file mode 100644 index 0000000..b8a972a Binary files /dev/null and b/img1370.png differ diff --git a/img1371.png b/img1371.png new file mode 100644 index 0000000..d9293fa Binary files /dev/null and b/img1371.png differ diff --git a/img1372.png b/img1372.png new file mode 100644 index 0000000..ce421ef Binary files /dev/null and b/img1372.png differ diff --git a/img1373.png b/img1373.png new file mode 100644 index 0000000..c783c7d Binary files /dev/null and b/img1373.png differ diff --git a/img1374.png b/img1374.png new file mode 100644 index 0000000..b3c03c2 Binary files /dev/null and b/img1374.png differ diff --git a/img1375.png b/img1375.png new file mode 100644 index 0000000..083b128 Binary files /dev/null and b/img1375.png differ diff --git a/img1376.png b/img1376.png new file mode 100644 index 0000000..924d91a Binary files /dev/null and b/img1376.png differ diff --git a/img1377.png b/img1377.png new file mode 100644 index 0000000..0ee989c Binary files /dev/null and b/img1377.png differ diff --git a/img1378.png b/img1378.png new file mode 100644 index 0000000..9bada2c Binary files /dev/null and b/img1378.png differ diff --git a/img138.png b/img138.png new file mode 100644 index 0000000..7d0f152 Binary files /dev/null and b/img138.png differ diff --git a/img139.png b/img139.png new file mode 100644 index 0000000..854b522 Binary files /dev/null and b/img139.png differ diff --git a/img14.png b/img14.png new file mode 100644 index 0000000..9643135 Binary files /dev/null and b/img14.png differ diff --git a/img140.png b/img140.png new file mode 100644 index 0000000..54bcc3e Binary files /dev/null and b/img140.png differ diff --git a/img141.png b/img141.png new file mode 100644 index 0000000..822840f Binary files /dev/null and b/img141.png differ diff --git a/img142.png b/img142.png new file mode 100644 index 0000000..54246be Binary files /dev/null and b/img142.png differ diff --git a/img143.png b/img143.png new file mode 100644 index 0000000..8bddfa7 Binary files /dev/null and b/img143.png differ diff --git a/img144.png b/img144.png new file mode 100644 index 0000000..5caefba Binary files /dev/null and b/img144.png differ diff --git a/img145.png b/img145.png new file mode 100644 index 0000000..e253be2 Binary files /dev/null and b/img145.png differ diff --git a/img146.png b/img146.png new file mode 100644 index 0000000..1f1570a Binary files /dev/null and b/img146.png differ diff --git a/img147.png b/img147.png new file mode 100644 index 0000000..34dea5f Binary files /dev/null and b/img147.png differ diff --git a/img148.png b/img148.png new file mode 100644 index 0000000..2d555a6 Binary files /dev/null and b/img148.png differ diff --git a/img149.png b/img149.png new file mode 100644 index 0000000..10390a1 Binary files /dev/null and b/img149.png differ diff --git a/img15.png b/img15.png new file mode 100644 index 0000000..6e23faa Binary files /dev/null and b/img15.png differ diff --git a/img150.png b/img150.png new file mode 100644 index 0000000..5aae773 Binary files /dev/null and b/img150.png differ diff --git a/img151.png b/img151.png new file mode 100644 index 0000000..4192e90 Binary files /dev/null and b/img151.png differ diff --git a/img152.png b/img152.png new file mode 100644 index 0000000..0d7d0b1 Binary files /dev/null and b/img152.png differ diff --git a/img153.png b/img153.png new file mode 100644 index 0000000..49f85dd Binary files /dev/null and b/img153.png differ diff --git a/img154.png b/img154.png new file mode 100644 index 0000000..30e500a Binary files /dev/null and b/img154.png differ diff --git a/img155.png b/img155.png new file mode 100644 index 0000000..b627220 Binary files /dev/null and b/img155.png differ diff --git a/img156.png b/img156.png new file mode 100644 index 0000000..4c47c4b Binary files /dev/null and b/img156.png differ diff --git a/img157.png b/img157.png new file mode 100644 index 0000000..fc9c9ba Binary files /dev/null and b/img157.png differ diff --git a/img158.png b/img158.png new file mode 100644 index 0000000..566e6a7 Binary files /dev/null and b/img158.png differ diff --git a/img159.png b/img159.png new file mode 100644 index 0000000..d6c2433 Binary files /dev/null and b/img159.png differ diff --git a/img16.png b/img16.png new file mode 100644 index 0000000..da38d4b Binary files /dev/null and b/img16.png differ diff --git a/img160.png b/img160.png new file mode 100644 index 0000000..7e37982 Binary files /dev/null and b/img160.png differ diff --git a/img161.png b/img161.png new file mode 100644 index 0000000..6455848 Binary files /dev/null and b/img161.png differ diff --git a/img162.png b/img162.png new file mode 100644 index 0000000..cf19741 Binary files /dev/null and b/img162.png differ diff --git a/img163.png b/img163.png new file mode 100644 index 0000000..d514989 Binary files /dev/null and b/img163.png differ diff --git a/img164.png b/img164.png new file mode 100644 index 0000000..ec42605 Binary files /dev/null and b/img164.png differ diff --git a/img165.png b/img165.png new file mode 100644 index 0000000..c24b494 Binary files /dev/null and b/img165.png differ diff --git a/img166.png b/img166.png new file mode 100644 index 0000000..fc4bef8 Binary files /dev/null and b/img166.png differ diff --git a/img167.png b/img167.png new file mode 100644 index 0000000..ad74a37 Binary files /dev/null and b/img167.png differ diff --git a/img168.png b/img168.png new file mode 100644 index 0000000..58e0e95 Binary files /dev/null and b/img168.png differ diff --git a/img169.png b/img169.png new file mode 100644 index 0000000..11d50f5 Binary files /dev/null and b/img169.png differ diff --git a/img17.png b/img17.png new file mode 100644 index 0000000..66ab393 Binary files /dev/null and b/img17.png differ diff --git a/img170.png b/img170.png new file mode 100644 index 0000000..666fae8 Binary files /dev/null and b/img170.png differ diff --git a/img171.png b/img171.png new file mode 100644 index 0000000..5e1a016 Binary files /dev/null and b/img171.png differ diff --git a/img172.png b/img172.png new file mode 100644 index 0000000..a17d17d Binary files /dev/null and b/img172.png differ diff --git a/img173.png b/img173.png new file mode 100644 index 0000000..09cde5e Binary files /dev/null and b/img173.png differ diff --git a/img174.png b/img174.png new file mode 100644 index 0000000..61ffb5d Binary files /dev/null and b/img174.png differ diff --git a/img175.png b/img175.png new file mode 100644 index 0000000..b48bfdc Binary files /dev/null and b/img175.png differ diff --git a/img176.png b/img176.png new file mode 100644 index 0000000..f31f0d3 Binary files /dev/null and b/img176.png differ diff --git a/img177.png b/img177.png new file mode 100644 index 0000000..c283e1e Binary files /dev/null and b/img177.png differ diff --git a/img178.png b/img178.png new file mode 100644 index 0000000..db9c89f Binary files /dev/null and b/img178.png differ diff --git a/img179.png b/img179.png new file mode 100644 index 0000000..1849517 Binary files /dev/null and b/img179.png differ diff --git a/img18.png b/img18.png new file mode 100644 index 0000000..d30a513 Binary files /dev/null and b/img18.png differ diff --git a/img180.png b/img180.png new file mode 100644 index 0000000..d52695f Binary files /dev/null and b/img180.png differ diff --git a/img181.png b/img181.png new file mode 100644 index 0000000..f932d53 Binary files /dev/null and b/img181.png differ diff --git a/img182.png b/img182.png new file mode 100644 index 0000000..9a59b1c Binary files /dev/null and b/img182.png differ diff --git a/img183.png b/img183.png new file mode 100644 index 0000000..35da8c1 Binary files /dev/null and b/img183.png differ diff --git a/img184.png b/img184.png new file mode 100644 index 0000000..25deda1 Binary files /dev/null and b/img184.png differ diff --git a/img185.png b/img185.png new file mode 100644 index 0000000..1945bb6 Binary files /dev/null and b/img185.png differ diff --git a/img186.png b/img186.png new file mode 100644 index 0000000..ae8b308 Binary files /dev/null and b/img186.png differ diff --git a/img187.png b/img187.png new file mode 100644 index 0000000..13e58da Binary files /dev/null and b/img187.png differ diff --git a/img188.png b/img188.png new file mode 100644 index 0000000..bafefab Binary files /dev/null and b/img188.png differ diff --git a/img189.png b/img189.png new file mode 100644 index 0000000..f8bd61f Binary files /dev/null and b/img189.png differ diff --git a/img19.png b/img19.png new file mode 100644 index 0000000..008e96b Binary files /dev/null and b/img19.png differ diff --git a/img190.png b/img190.png new file mode 100644 index 0000000..4f7a65d Binary files /dev/null and b/img190.png differ diff --git a/img191.png b/img191.png new file mode 100644 index 0000000..5b66931 Binary files /dev/null and b/img191.png differ diff --git a/img192.png b/img192.png new file mode 100644 index 0000000..e9cc0cd Binary files /dev/null and b/img192.png differ diff --git a/img193.png b/img193.png new file mode 100644 index 0000000..4f44e1f Binary files /dev/null and b/img193.png differ diff --git a/img194.png b/img194.png new file mode 100644 index 0000000..07dabc4 Binary files /dev/null and b/img194.png differ diff --git a/img195.png b/img195.png new file mode 100644 index 0000000..29e479a Binary files /dev/null and b/img195.png differ diff --git a/img196.png b/img196.png new file mode 100644 index 0000000..3242fd8 Binary files /dev/null and b/img196.png differ diff --git a/img197.png b/img197.png new file mode 100644 index 0000000..7dfedba Binary files /dev/null and b/img197.png differ diff --git a/img198.png b/img198.png new file mode 100644 index 0000000..9286f75 Binary files /dev/null and b/img198.png differ diff --git a/img199.png b/img199.png new file mode 100644 index 0000000..b56ac76 Binary files /dev/null and b/img199.png differ diff --git a/img2.png b/img2.png new file mode 100644 index 0000000..b7d0a5c Binary files /dev/null and b/img2.png differ diff --git a/img20.png b/img20.png new file mode 100644 index 0000000..8e76cd0 Binary files /dev/null and b/img20.png differ diff --git a/img200.png b/img200.png new file mode 100644 index 0000000..1ae224f Binary files /dev/null and b/img200.png differ diff --git a/img201.png b/img201.png new file mode 100644 index 0000000..122b764 Binary files /dev/null and b/img201.png differ diff --git a/img202.png b/img202.png new file mode 100644 index 0000000..a1240e0 Binary files /dev/null and b/img202.png differ diff --git a/img203.png b/img203.png new file mode 100644 index 0000000..db648cd Binary files /dev/null and b/img203.png differ diff --git a/img204.png b/img204.png new file mode 100644 index 0000000..8824a17 Binary files /dev/null and b/img204.png differ diff --git a/img205.png b/img205.png new file mode 100644 index 0000000..3a2e184 Binary files /dev/null and b/img205.png differ diff --git a/img206.png b/img206.png new file mode 100644 index 0000000..2edb7db Binary files /dev/null and b/img206.png differ diff --git a/img207.png b/img207.png new file mode 100644 index 0000000..e0725ea Binary files /dev/null and b/img207.png differ diff --git a/img208.png b/img208.png new file mode 100644 index 0000000..54ff21b Binary files /dev/null and b/img208.png differ diff --git a/img209.png b/img209.png new file mode 100644 index 0000000..7133cea Binary files /dev/null and b/img209.png differ diff --git a/img21.png b/img21.png new file mode 100644 index 0000000..42ea97b Binary files /dev/null and b/img21.png differ diff --git a/img210.png b/img210.png new file mode 100644 index 0000000..379d3ce Binary files /dev/null and b/img210.png differ diff --git a/img211.png b/img211.png new file mode 100644 index 0000000..2afbf73 Binary files /dev/null and b/img211.png differ diff --git a/img212.png b/img212.png new file mode 100644 index 0000000..f713a46 Binary files /dev/null and b/img212.png differ diff --git a/img213.png b/img213.png new file mode 100644 index 0000000..0db34de Binary files /dev/null and b/img213.png differ diff --git a/img214.png b/img214.png new file mode 100644 index 0000000..c910d77 Binary files /dev/null and b/img214.png differ diff --git a/img215.png b/img215.png new file mode 100644 index 0000000..2541eb5 Binary files /dev/null and b/img215.png differ diff --git a/img216.png b/img216.png new file mode 100644 index 0000000..8e274d9 Binary files /dev/null and b/img216.png differ diff --git a/img217.png b/img217.png new file mode 100644 index 0000000..b601fb4 Binary files /dev/null and b/img217.png differ diff --git a/img218.png b/img218.png new file mode 100644 index 0000000..2dac367 Binary files /dev/null and b/img218.png differ diff --git a/img219.png b/img219.png new file mode 100644 index 0000000..78a5d7c Binary files /dev/null and b/img219.png differ diff --git a/img22.png b/img22.png new file mode 100644 index 0000000..074bf74 Binary files /dev/null and b/img22.png differ diff --git a/img220.png b/img220.png new file mode 100644 index 0000000..1332e3f Binary files /dev/null and b/img220.png differ diff --git a/img221.png b/img221.png new file mode 100644 index 0000000..145b323 Binary files /dev/null and b/img221.png differ diff --git a/img222.png b/img222.png new file mode 100644 index 0000000..74be761 Binary files /dev/null and b/img222.png differ diff --git a/img223.png b/img223.png new file mode 100644 index 0000000..be73574 Binary files /dev/null and b/img223.png differ diff --git a/img224.png b/img224.png new file mode 100644 index 0000000..072b33b Binary files /dev/null and b/img224.png differ diff --git a/img225.png b/img225.png new file mode 100644 index 0000000..4be4f54 Binary files /dev/null and b/img225.png differ diff --git a/img226.png b/img226.png new file mode 100644 index 0000000..6b1a75d Binary files /dev/null and b/img226.png differ diff --git a/img227.png b/img227.png new file mode 100644 index 0000000..823fcfc Binary files /dev/null and b/img227.png differ diff --git a/img228.png b/img228.png new file mode 100644 index 0000000..377e978 Binary files /dev/null and b/img228.png differ diff --git a/img229.png b/img229.png new file mode 100644 index 0000000..b010126 Binary files /dev/null and b/img229.png differ diff --git a/img23.png b/img23.png new file mode 100644 index 0000000..09a815f Binary files /dev/null and b/img23.png differ diff --git a/img230.png b/img230.png new file mode 100644 index 0000000..5ecba90 Binary files /dev/null and b/img230.png differ diff --git a/img231.png b/img231.png new file mode 100644 index 0000000..82a2e47 Binary files /dev/null and b/img231.png differ diff --git a/img232.png b/img232.png new file mode 100644 index 0000000..cc73648 Binary files /dev/null and b/img232.png differ diff --git a/img233.png b/img233.png new file mode 100644 index 0000000..4c9150c Binary files /dev/null and b/img233.png differ diff --git a/img234.png b/img234.png new file mode 100644 index 0000000..62eef32 Binary files /dev/null and b/img234.png differ diff --git a/img235.png b/img235.png new file mode 100644 index 0000000..a7c0dee Binary files /dev/null and b/img235.png differ diff --git a/img236.png b/img236.png new file mode 100644 index 0000000..0459b39 Binary files /dev/null and b/img236.png differ diff --git a/img237.png b/img237.png new file mode 100644 index 0000000..37e6f62 Binary files /dev/null and b/img237.png differ diff --git a/img238.png b/img238.png new file mode 100644 index 0000000..5fcc52d Binary files /dev/null and b/img238.png differ diff --git a/img239.png b/img239.png new file mode 100644 index 0000000..ebaf14a Binary files /dev/null and b/img239.png differ diff --git a/img24.png b/img24.png new file mode 100644 index 0000000..60e6798 Binary files /dev/null and b/img24.png differ diff --git a/img240.png b/img240.png new file mode 100644 index 0000000..880ffed Binary files /dev/null and b/img240.png differ diff --git a/img241.png b/img241.png new file mode 100644 index 0000000..df1488b Binary files /dev/null and b/img241.png differ diff --git a/img242.png b/img242.png new file mode 100644 index 0000000..094a7a9 Binary files /dev/null and b/img242.png differ diff --git a/img243.png b/img243.png new file mode 100644 index 0000000..5054c5e Binary files /dev/null and b/img243.png differ diff --git a/img244.png b/img244.png new file mode 100644 index 0000000..2eea8d3 Binary files /dev/null and b/img244.png differ diff --git a/img245.png b/img245.png new file mode 100644 index 0000000..e711141 Binary files /dev/null and b/img245.png differ diff --git a/img246.png b/img246.png new file mode 100644 index 0000000..3038f96 Binary files /dev/null and b/img246.png differ diff --git a/img247.png b/img247.png new file mode 100644 index 0000000..2eea8d3 Binary files /dev/null and b/img247.png differ diff --git a/img248.png b/img248.png new file mode 100644 index 0000000..0bbad82 Binary files /dev/null and b/img248.png differ diff --git a/img249.png b/img249.png new file mode 100644 index 0000000..0eddfbc Binary files /dev/null and b/img249.png differ diff --git a/img25.png b/img25.png new file mode 100644 index 0000000..2ed6ee8 Binary files /dev/null and b/img25.png differ diff --git a/img250.png b/img250.png new file mode 100644 index 0000000..f536949 Binary files /dev/null and b/img250.png differ diff --git a/img251.png b/img251.png new file mode 100644 index 0000000..f55187d Binary files /dev/null and b/img251.png differ diff --git a/img252.png b/img252.png new file mode 100644 index 0000000..612c54c Binary files /dev/null and b/img252.png differ diff --git a/img253.png b/img253.png new file mode 100644 index 0000000..4070950 Binary files /dev/null and b/img253.png differ diff --git a/img254.png b/img254.png new file mode 100644 index 0000000..f988e99 Binary files /dev/null and b/img254.png differ diff --git a/img255.png b/img255.png new file mode 100644 index 0000000..d7cc224 Binary files /dev/null and b/img255.png differ diff --git a/img256.png b/img256.png new file mode 100644 index 0000000..f352038 Binary files /dev/null and b/img256.png differ diff --git a/img257.png b/img257.png new file mode 100644 index 0000000..77e3206 Binary files /dev/null and b/img257.png differ diff --git a/img258.png b/img258.png new file mode 100644 index 0000000..565b939 Binary files /dev/null and b/img258.png differ diff --git a/img259.png b/img259.png new file mode 100644 index 0000000..c7decb4 Binary files /dev/null and b/img259.png differ diff --git a/img26.png b/img26.png new file mode 100644 index 0000000..fe15ea1 Binary files /dev/null and b/img26.png differ diff --git a/img260.png b/img260.png new file mode 100644 index 0000000..a9bd1d2 Binary files /dev/null and b/img260.png differ diff --git a/img261.png b/img261.png new file mode 100644 index 0000000..4b25195 Binary files /dev/null and b/img261.png differ diff --git a/img262.png b/img262.png new file mode 100644 index 0000000..8b8cda2 Binary files /dev/null and b/img262.png differ diff --git a/img263.png b/img263.png new file mode 100644 index 0000000..1b20dc1 Binary files /dev/null and b/img263.png differ diff --git a/img264.png b/img264.png new file mode 100644 index 0000000..82cb2cd Binary files /dev/null and b/img264.png differ diff --git a/img265.png b/img265.png new file mode 100644 index 0000000..dd52ed1 Binary files /dev/null and b/img265.png differ diff --git a/img266.png b/img266.png new file mode 100644 index 0000000..48b3b47 Binary files /dev/null and b/img266.png differ diff --git a/img267.png b/img267.png new file mode 100644 index 0000000..53908cc Binary files /dev/null and b/img267.png differ diff --git a/img268.png b/img268.png new file mode 100644 index 0000000..c4bf2ee Binary files /dev/null and b/img268.png differ diff --git a/img269.png b/img269.png new file mode 100644 index 0000000..033494b Binary files /dev/null and b/img269.png differ diff --git a/img27.png b/img27.png new file mode 100644 index 0000000..0987c18 Binary files /dev/null and b/img27.png differ diff --git a/img270.png b/img270.png new file mode 100644 index 0000000..d06d6f8 Binary files /dev/null and b/img270.png differ diff --git a/img271.png b/img271.png new file mode 100644 index 0000000..af3e056 Binary files /dev/null and b/img271.png differ diff --git a/img272.png b/img272.png new file mode 100644 index 0000000..4516ec8 Binary files /dev/null and b/img272.png differ diff --git a/img273.png b/img273.png new file mode 100644 index 0000000..19c7c55 Binary files /dev/null and b/img273.png differ diff --git a/img274.png b/img274.png new file mode 100644 index 0000000..80861a9 Binary files /dev/null and b/img274.png differ diff --git a/img275.png b/img275.png new file mode 100644 index 0000000..3d56dde Binary files /dev/null and b/img275.png differ diff --git a/img276.png b/img276.png new file mode 100644 index 0000000..e2d39d7 Binary files /dev/null and b/img276.png differ diff --git a/img277.png b/img277.png new file mode 100644 index 0000000..fda3cbc Binary files /dev/null and b/img277.png differ diff --git a/img278.png b/img278.png new file mode 100644 index 0000000..2d1ccdc Binary files /dev/null and b/img278.png differ diff --git a/img279.png b/img279.png new file mode 100644 index 0000000..d334575 Binary files /dev/null and b/img279.png differ diff --git a/img28.png b/img28.png new file mode 100644 index 0000000..044dc1e Binary files /dev/null and b/img28.png differ diff --git a/img280.png b/img280.png new file mode 100644 index 0000000..e369fbc Binary files /dev/null and b/img280.png differ diff --git a/img281.png b/img281.png new file mode 100644 index 0000000..6dfa596 Binary files /dev/null and b/img281.png differ diff --git a/img282.png b/img282.png new file mode 100644 index 0000000..d6a1e47 Binary files /dev/null and b/img282.png differ diff --git a/img283.png b/img283.png new file mode 100644 index 0000000..ff2973c Binary files /dev/null and b/img283.png differ diff --git a/img284.png b/img284.png new file mode 100644 index 0000000..58c89ff Binary files /dev/null and b/img284.png differ diff --git a/img285.png b/img285.png new file mode 100644 index 0000000..24c3eaa Binary files /dev/null and b/img285.png differ diff --git a/img286.png b/img286.png new file mode 100644 index 0000000..dc989a5 Binary files /dev/null and b/img286.png differ diff --git a/img287.png b/img287.png new file mode 100644 index 0000000..d930623 Binary files /dev/null and b/img287.png differ diff --git a/img288.png b/img288.png new file mode 100644 index 0000000..13e7aef Binary files /dev/null and b/img288.png differ diff --git a/img289.png b/img289.png new file mode 100644 index 0000000..70b1720 Binary files /dev/null and b/img289.png differ diff --git a/img29.png b/img29.png new file mode 100644 index 0000000..0cbc480 Binary files /dev/null and b/img29.png differ diff --git a/img290.png b/img290.png new file mode 100644 index 0000000..5ed18b4 Binary files /dev/null and b/img290.png differ diff --git a/img291.png b/img291.png new file mode 100644 index 0000000..d24a8f9 Binary files /dev/null and b/img291.png differ diff --git a/img292.png b/img292.png new file mode 100644 index 0000000..77a4236 Binary files /dev/null and b/img292.png differ diff --git a/img293.png b/img293.png new file mode 100644 index 0000000..ec84774 Binary files /dev/null and b/img293.png differ diff --git a/img294.png b/img294.png new file mode 100644 index 0000000..4caa566 Binary files /dev/null and b/img294.png differ diff --git a/img295.png b/img295.png new file mode 100644 index 0000000..39f3add Binary files /dev/null and b/img295.png differ diff --git a/img296.png b/img296.png new file mode 100644 index 0000000..9985443 Binary files /dev/null and b/img296.png differ diff --git a/img297.png b/img297.png new file mode 100644 index 0000000..db6040f Binary files /dev/null and b/img297.png differ diff --git a/img298.png b/img298.png new file mode 100644 index 0000000..405adca Binary files /dev/null and b/img298.png differ diff --git a/img299.png b/img299.png new file mode 100644 index 0000000..aae7f57 Binary files /dev/null and b/img299.png differ diff --git a/img3.png b/img3.png new file mode 100644 index 0000000..c5caa59 Binary files /dev/null and b/img3.png differ diff --git a/img30.png b/img30.png new file mode 100644 index 0000000..8d5ffda Binary files /dev/null and b/img30.png differ diff --git a/img300.png b/img300.png new file mode 100644 index 0000000..2498109 Binary files /dev/null and b/img300.png differ diff --git a/img301.png b/img301.png new file mode 100644 index 0000000..9c1fd6f Binary files /dev/null and b/img301.png differ diff --git a/img302.png b/img302.png new file mode 100644 index 0000000..aae2ce5 Binary files /dev/null and b/img302.png differ diff --git a/img303.png b/img303.png new file mode 100644 index 0000000..ff3952e Binary files /dev/null and b/img303.png differ diff --git a/img304.png b/img304.png new file mode 100644 index 0000000..47fc728 Binary files /dev/null and b/img304.png differ diff --git a/img305.png b/img305.png new file mode 100644 index 0000000..4721951 Binary files /dev/null and b/img305.png differ diff --git a/img306.png b/img306.png new file mode 100644 index 0000000..416a3e6 Binary files /dev/null and b/img306.png differ diff --git a/img307.png b/img307.png new file mode 100644 index 0000000..9a1ecf9 Binary files /dev/null and b/img307.png differ diff --git a/img308.png b/img308.png new file mode 100644 index 0000000..c10ff01 Binary files /dev/null and b/img308.png differ diff --git a/img309.png b/img309.png new file mode 100644 index 0000000..0a04cbe Binary files /dev/null and b/img309.png differ diff --git a/img31.png b/img31.png new file mode 100644 index 0000000..50a8bde Binary files /dev/null and b/img31.png differ diff --git a/img310.png b/img310.png new file mode 100644 index 0000000..1e9a8cc Binary files /dev/null and b/img310.png differ diff --git a/img311.png b/img311.png new file mode 100644 index 0000000..86a1155 Binary files /dev/null and b/img311.png differ diff --git a/img312.png b/img312.png new file mode 100644 index 0000000..67a4cb9 Binary files /dev/null and b/img312.png differ diff --git a/img313.png b/img313.png new file mode 100644 index 0000000..f437a5a Binary files /dev/null and b/img313.png differ diff --git a/img314.png b/img314.png new file mode 100644 index 0000000..7569103 Binary files /dev/null and b/img314.png differ diff --git a/img315.png b/img315.png new file mode 100644 index 0000000..eda95da Binary files /dev/null and b/img315.png differ diff --git a/img316.png b/img316.png new file mode 100644 index 0000000..7394b46 Binary files /dev/null and b/img316.png differ diff --git a/img317.png b/img317.png new file mode 100644 index 0000000..fa514c8 Binary files /dev/null and b/img317.png differ diff --git a/img318.png b/img318.png new file mode 100644 index 0000000..b2048e8 Binary files /dev/null and b/img318.png differ diff --git a/img319.png b/img319.png new file mode 100644 index 0000000..ca05a2b Binary files /dev/null and b/img319.png differ diff --git a/img32.png b/img32.png new file mode 100644 index 0000000..d768b23 Binary files /dev/null and b/img32.png differ diff --git a/img320.png b/img320.png new file mode 100644 index 0000000..43ccbe8 Binary files /dev/null and b/img320.png differ diff --git a/img321.png b/img321.png new file mode 100644 index 0000000..aa9a15c Binary files /dev/null and b/img321.png differ diff --git a/img322.png b/img322.png new file mode 100644 index 0000000..f4d1651 Binary files /dev/null and b/img322.png differ diff --git a/img323.png b/img323.png new file mode 100644 index 0000000..ed823c9 Binary files /dev/null and b/img323.png differ diff --git a/img324.png b/img324.png new file mode 100644 index 0000000..5f3a485 Binary files /dev/null and b/img324.png differ diff --git a/img325.png b/img325.png new file mode 100644 index 0000000..a08b7bf Binary files /dev/null and b/img325.png differ diff --git a/img326.png b/img326.png new file mode 100644 index 0000000..d7296d0 Binary files /dev/null and b/img326.png differ diff --git a/img327.png b/img327.png new file mode 100644 index 0000000..3533933 Binary files /dev/null and b/img327.png differ diff --git a/img328.png b/img328.png new file mode 100644 index 0000000..7834e06 Binary files /dev/null and b/img328.png differ diff --git a/img329.png b/img329.png new file mode 100644 index 0000000..f48a433 Binary files /dev/null and b/img329.png differ diff --git a/img33.png b/img33.png new file mode 100644 index 0000000..d55f444 Binary files /dev/null and b/img33.png differ diff --git a/img330.png b/img330.png new file mode 100644 index 0000000..8192ae0 Binary files /dev/null and b/img330.png differ diff --git a/img331.png b/img331.png new file mode 100644 index 0000000..2a0758b Binary files /dev/null and b/img331.png differ diff --git a/img332.png b/img332.png new file mode 100644 index 0000000..575ba8c Binary files /dev/null and b/img332.png differ diff --git a/img333.png b/img333.png new file mode 100644 index 0000000..98783e2 Binary files /dev/null and b/img333.png differ diff --git a/img334.png b/img334.png new file mode 100644 index 0000000..f80e5af Binary files /dev/null and b/img334.png differ diff --git a/img335.png b/img335.png new file mode 100644 index 0000000..d7444ef Binary files /dev/null and b/img335.png differ diff --git a/img336.png b/img336.png new file mode 100644 index 0000000..4acb3cb Binary files /dev/null and b/img336.png differ diff --git a/img337.png b/img337.png new file mode 100644 index 0000000..5b1d493 Binary files /dev/null and b/img337.png differ diff --git a/img338.png b/img338.png new file mode 100644 index 0000000..844d07c Binary files /dev/null and b/img338.png differ diff --git a/img339.png b/img339.png new file mode 100644 index 0000000..520eb20 Binary files /dev/null and b/img339.png differ diff --git a/img34.png b/img34.png new file mode 100644 index 0000000..fdc6fd0 Binary files /dev/null and b/img34.png differ diff --git a/img340.png b/img340.png new file mode 100644 index 0000000..3251715 Binary files /dev/null and b/img340.png differ diff --git a/img341.png b/img341.png new file mode 100644 index 0000000..e0393a6 Binary files /dev/null and b/img341.png differ diff --git a/img342.png b/img342.png new file mode 100644 index 0000000..e94076c Binary files /dev/null and b/img342.png differ diff --git a/img343.png b/img343.png new file mode 100644 index 0000000..fd10c3b Binary files /dev/null and b/img343.png differ diff --git a/img344.png b/img344.png new file mode 100644 index 0000000..0408d84 Binary files /dev/null and b/img344.png differ diff --git a/img345.png b/img345.png new file mode 100644 index 0000000..0ec88d8 Binary files /dev/null and b/img345.png differ diff --git a/img346.png b/img346.png new file mode 100644 index 0000000..0cf7c16 Binary files /dev/null and b/img346.png differ diff --git a/img347.png b/img347.png new file mode 100644 index 0000000..12d2996 Binary files /dev/null and b/img347.png differ diff --git a/img348.png b/img348.png new file mode 100644 index 0000000..a80037d Binary files /dev/null and b/img348.png differ diff --git a/img349.png b/img349.png new file mode 100644 index 0000000..10298a2 Binary files /dev/null and b/img349.png differ diff --git a/img35.png b/img35.png new file mode 100644 index 0000000..93765b2 Binary files /dev/null and b/img35.png differ diff --git a/img350.png b/img350.png new file mode 100644 index 0000000..12db724 Binary files /dev/null and b/img350.png differ diff --git a/img351.png b/img351.png new file mode 100644 index 0000000..0020254 Binary files /dev/null and b/img351.png differ diff --git a/img352.png b/img352.png new file mode 100644 index 0000000..842f5e1 Binary files /dev/null and b/img352.png differ diff --git a/img353.png b/img353.png new file mode 100644 index 0000000..af850dc Binary files /dev/null and b/img353.png differ diff --git a/img354.png b/img354.png new file mode 100644 index 0000000..4b47527 Binary files /dev/null and b/img354.png differ diff --git a/img355.png b/img355.png new file mode 100644 index 0000000..eb887df Binary files /dev/null and b/img355.png differ diff --git a/img356.png b/img356.png new file mode 100644 index 0000000..18b1846 Binary files /dev/null and b/img356.png differ diff --git a/img357.png b/img357.png new file mode 100644 index 0000000..a81eac9 Binary files /dev/null and b/img357.png differ diff --git a/img358.png b/img358.png new file mode 100644 index 0000000..92e6d0e Binary files /dev/null and b/img358.png differ diff --git a/img359.png b/img359.png new file mode 100644 index 0000000..e5f5901 Binary files /dev/null and b/img359.png differ diff --git a/img36.png b/img36.png new file mode 100644 index 0000000..bf6a805 Binary files /dev/null and b/img36.png differ diff --git a/img360.png b/img360.png new file mode 100644 index 0000000..aaca998 Binary files /dev/null and b/img360.png differ diff --git a/img361.png b/img361.png new file mode 100644 index 0000000..8f041a1 Binary files /dev/null and b/img361.png differ diff --git a/img362.png b/img362.png new file mode 100644 index 0000000..5671e03 Binary files /dev/null and b/img362.png differ diff --git a/img363.png b/img363.png new file mode 100644 index 0000000..ab9db08 Binary files /dev/null and b/img363.png differ diff --git a/img364.png b/img364.png new file mode 100644 index 0000000..ef39a59 Binary files /dev/null and b/img364.png differ diff --git a/img365.png b/img365.png new file mode 100644 index 0000000..e16725b Binary files /dev/null and b/img365.png differ diff --git a/img366.png b/img366.png new file mode 100644 index 0000000..3e77777 Binary files /dev/null and b/img366.png differ diff --git a/img367.png b/img367.png new file mode 100644 index 0000000..a7e30ea Binary files /dev/null and b/img367.png differ diff --git a/img368.png b/img368.png new file mode 100644 index 0000000..7187ffe Binary files /dev/null and b/img368.png differ diff --git a/img369.png b/img369.png new file mode 100644 index 0000000..59f78b8 Binary files /dev/null and b/img369.png differ diff --git a/img37.png b/img37.png new file mode 100644 index 0000000..1206511 Binary files /dev/null and b/img37.png differ diff --git a/img370.png b/img370.png new file mode 100644 index 0000000..9c620da Binary files /dev/null and b/img370.png differ diff --git a/img371.png b/img371.png new file mode 100644 index 0000000..3b80bbe Binary files /dev/null and b/img371.png differ diff --git a/img372.png b/img372.png new file mode 100644 index 0000000..2ac7433 Binary files /dev/null and b/img372.png differ diff --git a/img373.png b/img373.png new file mode 100644 index 0000000..ce96e6a Binary files /dev/null and b/img373.png differ diff --git a/img374.png b/img374.png new file mode 100644 index 0000000..6c6b333 Binary files /dev/null and b/img374.png differ diff --git a/img375.png b/img375.png new file mode 100644 index 0000000..1c09a60 Binary files /dev/null and b/img375.png differ diff --git a/img376.png b/img376.png new file mode 100644 index 0000000..0b2c98c Binary files /dev/null and b/img376.png differ diff --git a/img377.png b/img377.png new file mode 100644 index 0000000..486e8b7 Binary files /dev/null and b/img377.png differ diff --git a/img378.png b/img378.png new file mode 100644 index 0000000..10692de Binary files /dev/null and b/img378.png differ diff --git a/img379.png b/img379.png new file mode 100644 index 0000000..af67e78 Binary files /dev/null and b/img379.png differ diff --git a/img38.png b/img38.png new file mode 100644 index 0000000..45aa290 Binary files /dev/null and b/img38.png differ diff --git a/img380.png b/img380.png new file mode 100644 index 0000000..3b9d7a1 Binary files /dev/null and b/img380.png differ diff --git a/img381.png b/img381.png new file mode 100644 index 0000000..c111e13 Binary files /dev/null and b/img381.png differ diff --git a/img382.png b/img382.png new file mode 100644 index 0000000..7bf7862 Binary files /dev/null and b/img382.png differ diff --git a/img383.png b/img383.png new file mode 100644 index 0000000..91b4b69 Binary files /dev/null and b/img383.png differ diff --git a/img384.png b/img384.png new file mode 100644 index 0000000..3bdaaf6 Binary files /dev/null and b/img384.png differ diff --git a/img385.png b/img385.png new file mode 100644 index 0000000..a0bf12d Binary files /dev/null and b/img385.png differ diff --git a/img386.png b/img386.png new file mode 100644 index 0000000..e0f4be4 Binary files /dev/null and b/img386.png differ diff --git a/img387.png b/img387.png new file mode 100644 index 0000000..023a821 Binary files /dev/null and b/img387.png differ diff --git a/img388.png b/img388.png new file mode 100644 index 0000000..651876a Binary files /dev/null and b/img388.png differ diff --git a/img389.png b/img389.png new file mode 100644 index 0000000..1055205 Binary files /dev/null and b/img389.png differ diff --git a/img39.png b/img39.png new file mode 100644 index 0000000..531ed44 Binary files /dev/null and b/img39.png differ diff --git a/img390.png b/img390.png new file mode 100644 index 0000000..fee1a55 Binary files /dev/null and b/img390.png differ diff --git a/img391.png b/img391.png new file mode 100644 index 0000000..94f0c82 Binary files /dev/null and b/img391.png differ diff --git a/img392.png b/img392.png new file mode 100644 index 0000000..1e3e253 Binary files /dev/null and b/img392.png differ diff --git a/img393.png b/img393.png new file mode 100644 index 0000000..606687f Binary files /dev/null and b/img393.png differ diff --git a/img394.png b/img394.png new file mode 100644 index 0000000..5d4146a Binary files /dev/null and b/img394.png differ diff --git a/img395.png b/img395.png new file mode 100644 index 0000000..5f0b490 Binary files /dev/null and b/img395.png differ diff --git a/img396.png b/img396.png new file mode 100644 index 0000000..bf816cf Binary files /dev/null and b/img396.png differ diff --git a/img397.png b/img397.png new file mode 100644 index 0000000..c1d9981 Binary files /dev/null and b/img397.png differ diff --git a/img398.png b/img398.png new file mode 100644 index 0000000..6e38eb2 Binary files /dev/null and b/img398.png differ diff --git a/img399.png b/img399.png new file mode 100644 index 0000000..473f78f Binary files /dev/null and b/img399.png differ diff --git a/img4.png b/img4.png new file mode 100644 index 0000000..4a57027 Binary files /dev/null and b/img4.png differ diff --git a/img40.png b/img40.png new file mode 100644 index 0000000..be231f4 Binary files /dev/null and b/img40.png differ diff --git a/img400.png b/img400.png new file mode 100644 index 0000000..1cbdec2 Binary files /dev/null and b/img400.png differ diff --git a/img401.png b/img401.png new file mode 100644 index 0000000..9b13223 Binary files /dev/null and b/img401.png differ diff --git a/img402.png b/img402.png new file mode 100644 index 0000000..396a03c Binary files /dev/null and b/img402.png differ diff --git a/img403.png b/img403.png new file mode 100644 index 0000000..c7828f3 Binary files /dev/null and b/img403.png differ diff --git a/img404.png b/img404.png new file mode 100644 index 0000000..7638918 Binary files /dev/null and b/img404.png differ diff --git a/img405.png b/img405.png new file mode 100644 index 0000000..ac6bf8d Binary files /dev/null and b/img405.png differ diff --git a/img406.png b/img406.png new file mode 100644 index 0000000..fee603b Binary files /dev/null and b/img406.png differ diff --git a/img407.png b/img407.png new file mode 100644 index 0000000..8b6d839 Binary files /dev/null and b/img407.png differ diff --git a/img408.png b/img408.png new file mode 100644 index 0000000..01ddd2c Binary files /dev/null and b/img408.png differ diff --git a/img409.png b/img409.png new file mode 100644 index 0000000..77db28c Binary files /dev/null and b/img409.png differ diff --git a/img41.png b/img41.png new file mode 100644 index 0000000..6906246 Binary files /dev/null and b/img41.png differ diff --git a/img410.png b/img410.png new file mode 100644 index 0000000..3003f1c Binary files /dev/null and b/img410.png differ diff --git a/img411.png b/img411.png new file mode 100644 index 0000000..5d37df8 Binary files /dev/null and b/img411.png differ diff --git a/img412.png b/img412.png new file mode 100644 index 0000000..0796c43 Binary files /dev/null and b/img412.png differ diff --git a/img413.png b/img413.png new file mode 100644 index 0000000..4d88d51 Binary files /dev/null and b/img413.png differ diff --git a/img414.png b/img414.png new file mode 100644 index 0000000..541b01f Binary files /dev/null and b/img414.png differ diff --git a/img415.png b/img415.png new file mode 100644 index 0000000..7c4c79c Binary files /dev/null and b/img415.png differ diff --git a/img416.png b/img416.png new file mode 100644 index 0000000..a8ca593 Binary files /dev/null and b/img416.png differ diff --git a/img417.png b/img417.png new file mode 100644 index 0000000..1de517f Binary files /dev/null and b/img417.png differ diff --git a/img418.png b/img418.png new file mode 100644 index 0000000..9d4c90a Binary files /dev/null and b/img418.png differ diff --git a/img419.png b/img419.png new file mode 100644 index 0000000..cbad174 Binary files /dev/null and b/img419.png differ diff --git a/img42.png b/img42.png new file mode 100644 index 0000000..4e0f52b Binary files /dev/null and b/img42.png differ diff --git a/img420.png b/img420.png new file mode 100644 index 0000000..f43246e Binary files /dev/null and b/img420.png differ diff --git a/img421.png b/img421.png new file mode 100644 index 0000000..0629f69 Binary files /dev/null and b/img421.png differ diff --git a/img422.png b/img422.png new file mode 100644 index 0000000..ebb98b3 Binary files /dev/null and b/img422.png differ diff --git a/img423.png b/img423.png new file mode 100644 index 0000000..683bdd4 Binary files /dev/null and b/img423.png differ diff --git a/img424.png b/img424.png new file mode 100644 index 0000000..acf06b6 Binary files /dev/null and b/img424.png differ diff --git a/img425.png b/img425.png new file mode 100644 index 0000000..32ca269 Binary files /dev/null and b/img425.png differ diff --git a/img426.png b/img426.png new file mode 100644 index 0000000..42a621e Binary files /dev/null and b/img426.png differ diff --git a/img427.png b/img427.png new file mode 100644 index 0000000..5c8e170 Binary files /dev/null and b/img427.png differ diff --git a/img428.png b/img428.png new file mode 100644 index 0000000..4b43ecc Binary files /dev/null and b/img428.png differ diff --git a/img429.png b/img429.png new file mode 100644 index 0000000..62caa99 Binary files /dev/null and b/img429.png differ diff --git a/img43.png b/img43.png new file mode 100644 index 0000000..dcadcc3 Binary files /dev/null and b/img43.png differ diff --git a/img430.png b/img430.png new file mode 100644 index 0000000..035aeec Binary files /dev/null and b/img430.png differ diff --git a/img431.png b/img431.png new file mode 100644 index 0000000..98db953 Binary files /dev/null and b/img431.png differ diff --git a/img432.png b/img432.png new file mode 100644 index 0000000..36e6a14 Binary files /dev/null and b/img432.png differ diff --git a/img433.png b/img433.png new file mode 100644 index 0000000..f59c304 Binary files /dev/null and b/img433.png differ diff --git a/img434.png b/img434.png new file mode 100644 index 0000000..174236b Binary files /dev/null and b/img434.png differ diff --git a/img435.png b/img435.png new file mode 100644 index 0000000..2c04fcb Binary files /dev/null and b/img435.png differ diff --git a/img436.png b/img436.png new file mode 100644 index 0000000..9aaacc7 Binary files /dev/null and b/img436.png differ diff --git a/img437.png b/img437.png new file mode 100644 index 0000000..e7b2ba1 Binary files /dev/null and b/img437.png differ diff --git a/img438.png b/img438.png new file mode 100644 index 0000000..afa8623 Binary files /dev/null and b/img438.png differ diff --git a/img439.png b/img439.png new file mode 100644 index 0000000..842af12 Binary files /dev/null and b/img439.png differ diff --git a/img44.png b/img44.png new file mode 100644 index 0000000..11f9f63 Binary files /dev/null and b/img44.png differ diff --git a/img440.png b/img440.png new file mode 100644 index 0000000..6812518 Binary files /dev/null and b/img440.png differ diff --git a/img441.png b/img441.png new file mode 100644 index 0000000..52e106c Binary files /dev/null and b/img441.png differ diff --git a/img442.png b/img442.png new file mode 100644 index 0000000..452a734 Binary files /dev/null and b/img442.png differ diff --git a/img443.png b/img443.png new file mode 100644 index 0000000..bd6f2e2 Binary files /dev/null and b/img443.png differ diff --git a/img444.png b/img444.png new file mode 100644 index 0000000..766c239 Binary files /dev/null and b/img444.png differ diff --git a/img445.png b/img445.png new file mode 100644 index 0000000..8e04960 Binary files /dev/null and b/img445.png differ diff --git a/img446.png b/img446.png new file mode 100644 index 0000000..963b770 Binary files /dev/null and b/img446.png differ diff --git a/img447.png b/img447.png new file mode 100644 index 0000000..15b6bec Binary files /dev/null and b/img447.png differ diff --git a/img448.png b/img448.png new file mode 100644 index 0000000..2468729 Binary files /dev/null and b/img448.png differ diff --git a/img449.png b/img449.png new file mode 100644 index 0000000..71a992f Binary files /dev/null and b/img449.png differ diff --git a/img45.png b/img45.png new file mode 100644 index 0000000..955a97b Binary files /dev/null and b/img45.png differ diff --git a/img450.png b/img450.png new file mode 100644 index 0000000..cd50791 Binary files /dev/null and b/img450.png differ diff --git a/img451.png b/img451.png new file mode 100644 index 0000000..c132a3e Binary files /dev/null and b/img451.png differ diff --git a/img452.png b/img452.png new file mode 100644 index 0000000..6b6f0b2 Binary files /dev/null and b/img452.png differ diff --git a/img453.png b/img453.png new file mode 100644 index 0000000..e71a608 Binary files /dev/null and b/img453.png differ diff --git a/img454.png b/img454.png new file mode 100644 index 0000000..d766485 Binary files /dev/null and b/img454.png differ diff --git a/img455.png b/img455.png new file mode 100644 index 0000000..77a8449 Binary files /dev/null and b/img455.png differ diff --git a/img456.png b/img456.png new file mode 100644 index 0000000..61f5ce7 Binary files /dev/null and b/img456.png differ diff --git a/img457.png b/img457.png new file mode 100644 index 0000000..ecfc9ec Binary files /dev/null and b/img457.png differ diff --git a/img458.png b/img458.png new file mode 100644 index 0000000..d4792c8 Binary files /dev/null and b/img458.png differ diff --git a/img459.png b/img459.png new file mode 100644 index 0000000..e7a821c Binary files /dev/null and b/img459.png differ diff --git a/img46.png b/img46.png new file mode 100644 index 0000000..5b04a4d Binary files /dev/null and b/img46.png differ diff --git a/img460.png b/img460.png new file mode 100644 index 0000000..d1d2b96 Binary files /dev/null and b/img460.png differ diff --git a/img461.png b/img461.png new file mode 100644 index 0000000..41bb94b Binary files /dev/null and b/img461.png differ diff --git a/img462.png b/img462.png new file mode 100644 index 0000000..f88767e Binary files /dev/null and b/img462.png differ diff --git a/img463.png b/img463.png new file mode 100644 index 0000000..d8b3df1 Binary files /dev/null and b/img463.png differ diff --git a/img464.png b/img464.png new file mode 100644 index 0000000..e8afd0b Binary files /dev/null and b/img464.png differ diff --git a/img465.png b/img465.png new file mode 100644 index 0000000..dced4f9 Binary files /dev/null and b/img465.png differ diff --git a/img466.png b/img466.png new file mode 100644 index 0000000..61ff663 Binary files /dev/null and b/img466.png differ diff --git a/img467.png b/img467.png new file mode 100644 index 0000000..05f73c4 Binary files /dev/null and b/img467.png differ diff --git a/img468.png b/img468.png new file mode 100644 index 0000000..3ecf2f3 Binary files /dev/null and b/img468.png differ diff --git a/img469.png b/img469.png new file mode 100644 index 0000000..be9bd88 Binary files /dev/null and b/img469.png differ diff --git a/img47.png b/img47.png new file mode 100644 index 0000000..71228d5 Binary files /dev/null and b/img47.png differ diff --git a/img470.png b/img470.png new file mode 100644 index 0000000..161c249 Binary files /dev/null and b/img470.png differ diff --git a/img471.png b/img471.png new file mode 100644 index 0000000..12e5ece Binary files /dev/null and b/img471.png differ diff --git a/img472.png b/img472.png new file mode 100644 index 0000000..26218a5 Binary files /dev/null and b/img472.png differ diff --git a/img473.png b/img473.png new file mode 100644 index 0000000..9a3bcdf Binary files /dev/null and b/img473.png differ diff --git a/img474.png b/img474.png new file mode 100644 index 0000000..467fb85 Binary files /dev/null and b/img474.png differ diff --git a/img475.png b/img475.png new file mode 100644 index 0000000..112f99a Binary files /dev/null and b/img475.png differ diff --git a/img476.png b/img476.png new file mode 100644 index 0000000..692eb07 Binary files /dev/null and b/img476.png differ diff --git a/img477.png b/img477.png new file mode 100644 index 0000000..d5d162d Binary files /dev/null and b/img477.png differ diff --git a/img478.png b/img478.png new file mode 100644 index 0000000..638fae7 Binary files /dev/null and b/img478.png differ diff --git a/img479.png b/img479.png new file mode 100644 index 0000000..3a5cd25 Binary files /dev/null and b/img479.png differ diff --git a/img48.png b/img48.png new file mode 100644 index 0000000..d3108e2 Binary files /dev/null and b/img48.png differ diff --git a/img480.png b/img480.png new file mode 100644 index 0000000..ed26c79 Binary files /dev/null and b/img480.png differ diff --git a/img481.png b/img481.png new file mode 100644 index 0000000..397b605 Binary files /dev/null and b/img481.png differ diff --git a/img482.png b/img482.png new file mode 100644 index 0000000..c8b20fa Binary files /dev/null and b/img482.png differ diff --git a/img483.png b/img483.png new file mode 100644 index 0000000..2cbc191 Binary files /dev/null and b/img483.png differ diff --git a/img484.png b/img484.png new file mode 100644 index 0000000..c7f7eea Binary files /dev/null and b/img484.png differ diff --git a/img485.png b/img485.png new file mode 100644 index 0000000..596c469 Binary files /dev/null and b/img485.png differ diff --git a/img486.png b/img486.png new file mode 100644 index 0000000..44e8a34 Binary files /dev/null and b/img486.png differ diff --git a/img487.png b/img487.png new file mode 100644 index 0000000..39ba414 Binary files /dev/null and b/img487.png differ diff --git a/img488.png b/img488.png new file mode 100644 index 0000000..02381ee Binary files /dev/null and b/img488.png differ diff --git a/img489.png b/img489.png new file mode 100644 index 0000000..e2e50bd Binary files /dev/null and b/img489.png differ diff --git a/img49.png b/img49.png new file mode 100644 index 0000000..3370c42 Binary files /dev/null and b/img49.png differ diff --git a/img490.png b/img490.png new file mode 100644 index 0000000..913a15d Binary files /dev/null and b/img490.png differ diff --git a/img491.png b/img491.png new file mode 100644 index 0000000..9965c8b Binary files /dev/null and b/img491.png differ diff --git a/img492.png b/img492.png new file mode 100644 index 0000000..d3fee23 Binary files /dev/null and b/img492.png differ diff --git a/img493.png b/img493.png new file mode 100644 index 0000000..b20debc Binary files /dev/null and b/img493.png differ diff --git a/img494.png b/img494.png new file mode 100644 index 0000000..2d1ee36 Binary files /dev/null and b/img494.png differ diff --git a/img495.png b/img495.png new file mode 100644 index 0000000..16277d5 Binary files /dev/null and b/img495.png differ diff --git a/img496.png b/img496.png new file mode 100644 index 0000000..73dc902 Binary files /dev/null and b/img496.png differ diff --git a/img497.png b/img497.png new file mode 100644 index 0000000..b75528e Binary files /dev/null and b/img497.png differ diff --git a/img498.png b/img498.png new file mode 100644 index 0000000..b169be2 Binary files /dev/null and b/img498.png differ diff --git a/img499.png b/img499.png new file mode 100644 index 0000000..67e0217 Binary files /dev/null and b/img499.png differ diff --git a/img5.png b/img5.png new file mode 100644 index 0000000..5a78908 Binary files /dev/null and b/img5.png differ diff --git a/img50.png b/img50.png new file mode 100644 index 0000000..1bd2bf1 Binary files /dev/null and b/img50.png differ diff --git a/img500.png b/img500.png new file mode 100644 index 0000000..304b731 Binary files /dev/null and b/img500.png differ diff --git a/img501.png b/img501.png new file mode 100644 index 0000000..178ca80 Binary files /dev/null and b/img501.png differ diff --git a/img502.png b/img502.png new file mode 100644 index 0000000..6c6500e Binary files /dev/null and b/img502.png differ diff --git a/img503.png b/img503.png new file mode 100644 index 0000000..a07f933 Binary files /dev/null and b/img503.png differ diff --git a/img504.png b/img504.png new file mode 100644 index 0000000..0eb32a6 Binary files /dev/null and b/img504.png differ diff --git a/img505.png b/img505.png new file mode 100644 index 0000000..e77f6f6 Binary files /dev/null and b/img505.png differ diff --git a/img506.png b/img506.png new file mode 100644 index 0000000..bae987e Binary files /dev/null and b/img506.png differ diff --git a/img507.png b/img507.png new file mode 100644 index 0000000..a2f6e31 Binary files /dev/null and b/img507.png differ diff --git a/img508.png b/img508.png new file mode 100644 index 0000000..d8a2792 Binary files /dev/null and b/img508.png differ diff --git a/img509.png b/img509.png new file mode 100644 index 0000000..11047ba Binary files /dev/null and b/img509.png differ diff --git a/img51.png b/img51.png new file mode 100644 index 0000000..1b2f72e Binary files /dev/null and b/img51.png differ diff --git a/img510.png b/img510.png new file mode 100644 index 0000000..3a17b38 Binary files /dev/null and b/img510.png differ diff --git a/img511.png b/img511.png new file mode 100644 index 0000000..aea63ed Binary files /dev/null and b/img511.png differ diff --git a/img512.png b/img512.png new file mode 100644 index 0000000..5dcf431 Binary files /dev/null and b/img512.png differ diff --git a/img513.png b/img513.png new file mode 100644 index 0000000..6c80711 Binary files /dev/null and b/img513.png differ diff --git a/img514.png b/img514.png new file mode 100644 index 0000000..b88e046 Binary files /dev/null and b/img514.png differ diff --git a/img515.png b/img515.png new file mode 100644 index 0000000..3830e6b Binary files /dev/null and b/img515.png differ diff --git a/img516.png b/img516.png new file mode 100644 index 0000000..0987c45 Binary files /dev/null and b/img516.png differ diff --git a/img517.png b/img517.png new file mode 100644 index 0000000..6350148 Binary files /dev/null and b/img517.png differ diff --git a/img518.png b/img518.png new file mode 100644 index 0000000..fd485e3 Binary files /dev/null and b/img518.png differ diff --git a/img519.png b/img519.png new file mode 100644 index 0000000..716942a Binary files /dev/null and b/img519.png differ diff --git a/img52.png b/img52.png new file mode 100644 index 0000000..f3f4267 Binary files /dev/null and b/img52.png differ diff --git a/img520.png b/img520.png new file mode 100644 index 0000000..d8dd39d Binary files /dev/null and b/img520.png differ diff --git a/img521.png b/img521.png new file mode 100644 index 0000000..429b61d Binary files /dev/null and b/img521.png differ diff --git a/img522.png b/img522.png new file mode 100644 index 0000000..7d9c67d Binary files /dev/null and b/img522.png differ diff --git a/img523.png b/img523.png new file mode 100644 index 0000000..89f327f Binary files /dev/null and b/img523.png differ diff --git a/img524.png b/img524.png new file mode 100644 index 0000000..1b391b6 Binary files /dev/null and b/img524.png differ diff --git a/img525.png b/img525.png new file mode 100644 index 0000000..e01dfc6 Binary files /dev/null and b/img525.png differ diff --git a/img526.png b/img526.png new file mode 100644 index 0000000..4ca6440 Binary files /dev/null and b/img526.png differ diff --git a/img527.png b/img527.png new file mode 100644 index 0000000..99ea05a Binary files /dev/null and b/img527.png differ diff --git a/img528.png b/img528.png new file mode 100644 index 0000000..b861b92 Binary files /dev/null and b/img528.png differ diff --git a/img529.png b/img529.png new file mode 100644 index 0000000..13cab34 Binary files /dev/null and b/img529.png differ diff --git a/img53.png b/img53.png new file mode 100644 index 0000000..fc0fce5 Binary files /dev/null and b/img53.png differ diff --git a/img530.png b/img530.png new file mode 100644 index 0000000..5c7a391 Binary files /dev/null and b/img530.png differ diff --git a/img531.png b/img531.png new file mode 100644 index 0000000..417ea2a Binary files /dev/null and b/img531.png differ diff --git a/img532.png b/img532.png new file mode 100644 index 0000000..eac0e2a Binary files /dev/null and b/img532.png differ diff --git a/img533.png b/img533.png new file mode 100644 index 0000000..88ccd3c Binary files /dev/null and b/img533.png differ diff --git a/img534.png b/img534.png new file mode 100644 index 0000000..b689df8 Binary files /dev/null and b/img534.png differ diff --git a/img535.png b/img535.png new file mode 100644 index 0000000..2826d6c Binary files /dev/null and b/img535.png differ diff --git a/img536.png b/img536.png new file mode 100644 index 0000000..ded7667 Binary files /dev/null and b/img536.png differ diff --git a/img537.png b/img537.png new file mode 100644 index 0000000..22327d3 Binary files /dev/null and b/img537.png differ diff --git a/img538.png b/img538.png new file mode 100644 index 0000000..8f78bc7 Binary files /dev/null and b/img538.png differ diff --git a/img539.png b/img539.png new file mode 100644 index 0000000..a7ce62e Binary files /dev/null and b/img539.png differ diff --git a/img54.png b/img54.png new file mode 100644 index 0000000..56ede6e Binary files /dev/null and b/img54.png differ diff --git a/img540.png b/img540.png new file mode 100644 index 0000000..f11b335 Binary files /dev/null and b/img540.png differ diff --git a/img541.png b/img541.png new file mode 100644 index 0000000..56a5235 Binary files /dev/null and b/img541.png differ diff --git a/img542.png b/img542.png new file mode 100644 index 0000000..63d8668 Binary files /dev/null and b/img542.png differ diff --git a/img543.png b/img543.png new file mode 100644 index 0000000..fbefc65 Binary files /dev/null and b/img543.png differ diff --git a/img544.png b/img544.png new file mode 100644 index 0000000..452d7f5 Binary files /dev/null and b/img544.png differ diff --git a/img545.png b/img545.png new file mode 100644 index 0000000..d536fb1 Binary files /dev/null and b/img545.png differ diff --git a/img546.png b/img546.png new file mode 100644 index 0000000..380fd68 Binary files /dev/null and b/img546.png differ diff --git a/img547.png b/img547.png new file mode 100644 index 0000000..03efa46 Binary files /dev/null and b/img547.png differ diff --git a/img548.png b/img548.png new file mode 100644 index 0000000..a67dcae Binary files /dev/null and b/img548.png differ diff --git a/img549.png b/img549.png new file mode 100644 index 0000000..3c92545 Binary files /dev/null and b/img549.png differ diff --git a/img55.png b/img55.png new file mode 100644 index 0000000..7447081 Binary files /dev/null and b/img55.png differ diff --git a/img550.png b/img550.png new file mode 100644 index 0000000..15ffa53 Binary files /dev/null and b/img550.png differ diff --git a/img551.png b/img551.png new file mode 100644 index 0000000..1ddce68 Binary files /dev/null and b/img551.png differ diff --git a/img552.png b/img552.png new file mode 100644 index 0000000..4bbc36a Binary files /dev/null and b/img552.png differ diff --git a/img553.png b/img553.png new file mode 100644 index 0000000..29a5989 Binary files /dev/null and b/img553.png differ diff --git a/img554.png b/img554.png new file mode 100644 index 0000000..2aeb50b Binary files /dev/null and b/img554.png differ diff --git a/img555.png b/img555.png new file mode 100644 index 0000000..b30925e Binary files /dev/null and b/img555.png differ diff --git a/img556.png b/img556.png new file mode 100644 index 0000000..4224bf4 Binary files /dev/null and b/img556.png differ diff --git a/img557.png b/img557.png new file mode 100644 index 0000000..522b8ee Binary files /dev/null and b/img557.png differ diff --git a/img558.png b/img558.png new file mode 100644 index 0000000..a2c0366 Binary files /dev/null and b/img558.png differ diff --git a/img559.png b/img559.png new file mode 100644 index 0000000..feb1b22 Binary files /dev/null and b/img559.png differ diff --git a/img56.png b/img56.png new file mode 100644 index 0000000..5706c89 Binary files /dev/null and b/img56.png differ diff --git a/img560.png b/img560.png new file mode 100644 index 0000000..7ee740f Binary files /dev/null and b/img560.png differ diff --git a/img561.png b/img561.png new file mode 100644 index 0000000..9e3e722 Binary files /dev/null and b/img561.png differ diff --git a/img562.png b/img562.png new file mode 100644 index 0000000..b739da4 Binary files /dev/null and b/img562.png differ diff --git a/img563.png b/img563.png new file mode 100644 index 0000000..75f7071 Binary files /dev/null and b/img563.png differ diff --git a/img564.png b/img564.png new file mode 100644 index 0000000..20ff88b Binary files /dev/null and b/img564.png differ diff --git a/img565.png b/img565.png new file mode 100644 index 0000000..ad6ea9f Binary files /dev/null and b/img565.png differ diff --git a/img566.png b/img566.png new file mode 100644 index 0000000..54ab57c Binary files /dev/null and b/img566.png differ diff --git a/img567.png b/img567.png new file mode 100644 index 0000000..c5e1a36 Binary files /dev/null and b/img567.png differ diff --git a/img568.png b/img568.png new file mode 100644 index 0000000..1221e75 Binary files /dev/null and b/img568.png differ diff --git a/img569.png b/img569.png new file mode 100644 index 0000000..48eef36 Binary files /dev/null and b/img569.png differ diff --git a/img57.png b/img57.png new file mode 100644 index 0000000..5520cbb Binary files /dev/null and b/img57.png differ diff --git a/img570.png b/img570.png new file mode 100644 index 0000000..42af328 Binary files /dev/null and b/img570.png differ diff --git a/img571.png b/img571.png new file mode 100644 index 0000000..8993a30 Binary files /dev/null and b/img571.png differ diff --git a/img572.png b/img572.png new file mode 100644 index 0000000..6ffb809 Binary files /dev/null and b/img572.png differ diff --git a/img573.png b/img573.png new file mode 100644 index 0000000..34b13f9 Binary files /dev/null and b/img573.png differ diff --git a/img574.png b/img574.png new file mode 100644 index 0000000..48c37a4 Binary files /dev/null and b/img574.png differ diff --git a/img575.png b/img575.png new file mode 100644 index 0000000..9febd1b Binary files /dev/null and b/img575.png differ diff --git a/img576.png b/img576.png new file mode 100644 index 0000000..fa8b060 Binary files /dev/null and b/img576.png differ diff --git a/img577.png b/img577.png new file mode 100644 index 0000000..5e81df7 Binary files /dev/null and b/img577.png differ diff --git a/img578.png b/img578.png new file mode 100644 index 0000000..66ab393 Binary files /dev/null and b/img578.png differ diff --git a/img579.png b/img579.png new file mode 100644 index 0000000..9baa700 Binary files /dev/null and b/img579.png differ diff --git a/img58.png b/img58.png new file mode 100644 index 0000000..3820702 Binary files /dev/null and b/img58.png differ diff --git a/img580.png b/img580.png new file mode 100644 index 0000000..7e06592 Binary files /dev/null and b/img580.png differ diff --git a/img581.png b/img581.png new file mode 100644 index 0000000..5ccc501 Binary files /dev/null and b/img581.png differ diff --git a/img582.png b/img582.png new file mode 100644 index 0000000..f7b6252 Binary files /dev/null and b/img582.png differ diff --git a/img583.png b/img583.png new file mode 100644 index 0000000..b7fb8e5 Binary files /dev/null and b/img583.png differ diff --git a/img584.png b/img584.png new file mode 100644 index 0000000..070b6dd Binary files /dev/null and b/img584.png differ diff --git a/img585.png b/img585.png new file mode 100644 index 0000000..9af3b7a Binary files /dev/null and b/img585.png differ diff --git a/img586.png b/img586.png new file mode 100644 index 0000000..def92cf Binary files /dev/null and b/img586.png differ diff --git a/img587.png b/img587.png new file mode 100644 index 0000000..c7abd76 Binary files /dev/null and b/img587.png differ diff --git a/img588.png b/img588.png new file mode 100644 index 0000000..d9bfb28 Binary files /dev/null and b/img588.png differ diff --git a/img589.png b/img589.png new file mode 100644 index 0000000..0fddc03 Binary files /dev/null and b/img589.png differ diff --git a/img59.png b/img59.png new file mode 100644 index 0000000..dbdfcc1 Binary files /dev/null and b/img59.png differ diff --git a/img590.png b/img590.png new file mode 100644 index 0000000..88f5384 Binary files /dev/null and b/img590.png differ diff --git a/img591.png b/img591.png new file mode 100644 index 0000000..1a9b097 Binary files /dev/null and b/img591.png differ diff --git a/img592.png b/img592.png new file mode 100644 index 0000000..7304bf3 Binary files /dev/null and b/img592.png differ diff --git a/img593.png b/img593.png new file mode 100644 index 0000000..c7abd76 Binary files /dev/null and b/img593.png differ diff --git a/img594.png b/img594.png new file mode 100644 index 0000000..8382243 Binary files /dev/null and b/img594.png differ diff --git a/img595.png b/img595.png new file mode 100644 index 0000000..e1f42c4 Binary files /dev/null and b/img595.png differ diff --git a/img596.png b/img596.png new file mode 100644 index 0000000..462c63e Binary files /dev/null and b/img596.png differ diff --git a/img597.png b/img597.png new file mode 100644 index 0000000..38764ea Binary files /dev/null and b/img597.png differ diff --git a/img598.png b/img598.png new file mode 100644 index 0000000..b49b536 Binary files /dev/null and b/img598.png differ diff --git a/img599.png b/img599.png new file mode 100644 index 0000000..e619abd Binary files /dev/null and b/img599.png differ diff --git a/img6.png b/img6.png new file mode 100644 index 0000000..9db6e36 Binary files /dev/null and b/img6.png differ diff --git a/img60.png b/img60.png new file mode 100644 index 0000000..2ce6d73 Binary files /dev/null and b/img60.png differ diff --git a/img600.png b/img600.png new file mode 100644 index 0000000..71b3662 Binary files /dev/null and b/img600.png differ diff --git a/img601.png b/img601.png new file mode 100644 index 0000000..eb3f85a Binary files /dev/null and b/img601.png differ diff --git a/img602.png b/img602.png new file mode 100644 index 0000000..6e1d6bf Binary files /dev/null and b/img602.png differ diff --git a/img603.png b/img603.png new file mode 100644 index 0000000..b3eb160 Binary files /dev/null and b/img603.png differ diff --git a/img604.png b/img604.png new file mode 100644 index 0000000..575921c Binary files /dev/null and b/img604.png differ diff --git a/img605.png b/img605.png new file mode 100644 index 0000000..2709f6e Binary files /dev/null and b/img605.png differ diff --git a/img606.png b/img606.png new file mode 100644 index 0000000..ebfee4c Binary files /dev/null and b/img606.png differ diff --git a/img607.png b/img607.png new file mode 100644 index 0000000..df02118 Binary files /dev/null and b/img607.png differ diff --git a/img608.png b/img608.png new file mode 100644 index 0000000..6d56c94 Binary files /dev/null and b/img608.png differ diff --git a/img609.png b/img609.png new file mode 100644 index 0000000..f5ea329 Binary files /dev/null and b/img609.png differ diff --git a/img61.png b/img61.png new file mode 100644 index 0000000..1b59ec5 Binary files /dev/null and b/img61.png differ diff --git a/img610.png b/img610.png new file mode 100644 index 0000000..d361c21 Binary files /dev/null and b/img610.png differ diff --git a/img611.png b/img611.png new file mode 100644 index 0000000..641874a Binary files /dev/null and b/img611.png differ diff --git a/img612.png b/img612.png new file mode 100644 index 0000000..b489671 Binary files /dev/null and b/img612.png differ diff --git a/img613.png b/img613.png new file mode 100644 index 0000000..514f282 Binary files /dev/null and b/img613.png differ diff --git a/img614.png b/img614.png new file mode 100644 index 0000000..013203a Binary files /dev/null and b/img614.png differ diff --git a/img615.png b/img615.png new file mode 100644 index 0000000..cd90f4d Binary files /dev/null and b/img615.png differ diff --git a/img616.png b/img616.png new file mode 100644 index 0000000..d080094 Binary files /dev/null and b/img616.png differ diff --git a/img617.png b/img617.png new file mode 100644 index 0000000..6f1ea88 Binary files /dev/null and b/img617.png differ diff --git a/img618.png b/img618.png new file mode 100644 index 0000000..cfe4e6a Binary files /dev/null and b/img618.png differ diff --git a/img619.png b/img619.png new file mode 100644 index 0000000..7f9e540 Binary files /dev/null and b/img619.png differ diff --git a/img62.png b/img62.png new file mode 100644 index 0000000..ff33a53 Binary files /dev/null and b/img62.png differ diff --git a/img620.png b/img620.png new file mode 100644 index 0000000..8130486 Binary files /dev/null and b/img620.png differ diff --git a/img621.png b/img621.png new file mode 100644 index 0000000..2890e4d Binary files /dev/null and b/img621.png differ diff --git a/img622.png b/img622.png new file mode 100644 index 0000000..ddcbd5f Binary files /dev/null and b/img622.png differ diff --git a/img623.png b/img623.png new file mode 100644 index 0000000..5b83073 Binary files /dev/null and b/img623.png differ diff --git a/img624.png b/img624.png new file mode 100644 index 0000000..7b926d1 Binary files /dev/null and b/img624.png differ diff --git a/img625.png b/img625.png new file mode 100644 index 0000000..7965bd4 Binary files /dev/null and b/img625.png differ diff --git a/img626.png b/img626.png new file mode 100644 index 0000000..808f4f6 Binary files /dev/null and b/img626.png differ diff --git a/img627.png b/img627.png new file mode 100644 index 0000000..6bad110 Binary files /dev/null and b/img627.png differ diff --git a/img628.png b/img628.png new file mode 100644 index 0000000..39ebd7b Binary files /dev/null and b/img628.png differ diff --git a/img629.png b/img629.png new file mode 100644 index 0000000..b42cd07 Binary files /dev/null and b/img629.png differ diff --git a/img63.png b/img63.png new file mode 100644 index 0000000..f463795 Binary files /dev/null and b/img63.png differ diff --git a/img630.png b/img630.png new file mode 100644 index 0000000..f289707 Binary files /dev/null and b/img630.png differ diff --git a/img631.png b/img631.png new file mode 100644 index 0000000..7e33513 Binary files /dev/null and b/img631.png differ diff --git a/img632.png b/img632.png new file mode 100644 index 0000000..f1f33b3 Binary files /dev/null and b/img632.png differ diff --git a/img633.png b/img633.png new file mode 100644 index 0000000..88c9c90 Binary files /dev/null and b/img633.png differ diff --git a/img634.png b/img634.png new file mode 100644 index 0000000..56af8b3 Binary files /dev/null and b/img634.png differ diff --git a/img635.png b/img635.png new file mode 100644 index 0000000..fa2106d Binary files /dev/null and b/img635.png differ diff --git a/img636.png b/img636.png new file mode 100644 index 0000000..8241733 Binary files /dev/null and b/img636.png differ diff --git a/img637.png b/img637.png new file mode 100644 index 0000000..c8be6c7 Binary files /dev/null and b/img637.png differ diff --git a/img638.png b/img638.png new file mode 100644 index 0000000..a8925d5 Binary files /dev/null and b/img638.png differ diff --git a/img639.png b/img639.png new file mode 100644 index 0000000..41294ce Binary files /dev/null and b/img639.png differ diff --git a/img64.png b/img64.png new file mode 100644 index 0000000..19b00b5 Binary files /dev/null and b/img64.png differ diff --git a/img640.png b/img640.png new file mode 100644 index 0000000..3d7aca0 Binary files /dev/null and b/img640.png differ diff --git a/img641.png b/img641.png new file mode 100644 index 0000000..cf2015d Binary files /dev/null and b/img641.png differ diff --git a/img642.png b/img642.png new file mode 100644 index 0000000..818597d Binary files /dev/null and b/img642.png differ diff --git a/img643.png b/img643.png new file mode 100644 index 0000000..5227ec0 Binary files /dev/null and b/img643.png differ diff --git a/img644.png b/img644.png new file mode 100644 index 0000000..f75f805 Binary files /dev/null and b/img644.png differ diff --git a/img645.png b/img645.png new file mode 100644 index 0000000..767ba17 Binary files /dev/null and b/img645.png differ diff --git a/img646.png b/img646.png new file mode 100644 index 0000000..a58fdd9 Binary files /dev/null and b/img646.png differ diff --git a/img647.png b/img647.png new file mode 100644 index 0000000..422da0d Binary files /dev/null and b/img647.png differ diff --git a/img648.png b/img648.png new file mode 100644 index 0000000..a5735f2 Binary files /dev/null and b/img648.png differ diff --git a/img649.png b/img649.png new file mode 100644 index 0000000..3f5c6b5 Binary files /dev/null and b/img649.png differ diff --git a/img65.png b/img65.png new file mode 100644 index 0000000..ed005ae Binary files /dev/null and b/img65.png differ diff --git a/img650.png b/img650.png new file mode 100644 index 0000000..0db56f0 Binary files /dev/null and b/img650.png differ diff --git a/img651.png b/img651.png new file mode 100644 index 0000000..621bfab Binary files /dev/null and b/img651.png differ diff --git a/img652.png b/img652.png new file mode 100644 index 0000000..f4f4695 Binary files /dev/null and b/img652.png differ diff --git a/img653.png b/img653.png new file mode 100644 index 0000000..9dcaa08 Binary files /dev/null and b/img653.png differ diff --git a/img654.png b/img654.png new file mode 100644 index 0000000..bb23850 Binary files /dev/null and b/img654.png differ diff --git a/img655.png b/img655.png new file mode 100644 index 0000000..4746d02 Binary files /dev/null and b/img655.png differ diff --git a/img656.png b/img656.png new file mode 100644 index 0000000..c512183 Binary files /dev/null and b/img656.png differ diff --git a/img657.png b/img657.png new file mode 100644 index 0000000..530abc2 Binary files /dev/null and b/img657.png differ diff --git a/img658.png b/img658.png new file mode 100644 index 0000000..252e2c9 Binary files /dev/null and b/img658.png differ diff --git a/img659.png b/img659.png new file mode 100644 index 0000000..84211ac Binary files /dev/null and b/img659.png differ diff --git a/img66.png b/img66.png new file mode 100644 index 0000000..26ebd92 Binary files /dev/null and b/img66.png differ diff --git a/img660.png b/img660.png new file mode 100644 index 0000000..10afadd Binary files /dev/null and b/img660.png differ diff --git a/img661.png b/img661.png new file mode 100644 index 0000000..b282a54 Binary files /dev/null and b/img661.png differ diff --git a/img662.png b/img662.png new file mode 100644 index 0000000..d33e182 Binary files /dev/null and b/img662.png differ diff --git a/img663.png b/img663.png new file mode 100644 index 0000000..c8a4502 Binary files /dev/null and b/img663.png differ diff --git a/img664.png b/img664.png new file mode 100644 index 0000000..282540f Binary files /dev/null and b/img664.png differ diff --git a/img665.png b/img665.png new file mode 100644 index 0000000..d5615f4 Binary files /dev/null and b/img665.png differ diff --git a/img666.png b/img666.png new file mode 100644 index 0000000..87007cd Binary files /dev/null and b/img666.png differ diff --git a/img667.png b/img667.png new file mode 100644 index 0000000..6a6b575 Binary files /dev/null and b/img667.png differ diff --git a/img668.png b/img668.png new file mode 100644 index 0000000..054a820 Binary files /dev/null and b/img668.png differ diff --git a/img669.png b/img669.png new file mode 100644 index 0000000..38079b3 Binary files /dev/null and b/img669.png differ diff --git a/img67.png b/img67.png new file mode 100644 index 0000000..96ec495 Binary files /dev/null and b/img67.png differ diff --git a/img670.png b/img670.png new file mode 100644 index 0000000..241e974 Binary files /dev/null and b/img670.png differ diff --git a/img671.png b/img671.png new file mode 100644 index 0000000..c80730d Binary files /dev/null and b/img671.png differ diff --git a/img672.png b/img672.png new file mode 100644 index 0000000..9395c33 Binary files /dev/null and b/img672.png differ diff --git a/img673.png b/img673.png new file mode 100644 index 0000000..1347908 Binary files /dev/null and b/img673.png differ diff --git a/img674.png b/img674.png new file mode 100644 index 0000000..fb4dd59 Binary files /dev/null and b/img674.png differ diff --git a/img675.png b/img675.png new file mode 100644 index 0000000..d7d0270 Binary files /dev/null and b/img675.png differ diff --git a/img676.png b/img676.png new file mode 100644 index 0000000..51c5ff2 Binary files /dev/null and b/img676.png differ diff --git a/img677.png b/img677.png new file mode 100644 index 0000000..95c2178 Binary files /dev/null and b/img677.png differ diff --git a/img678.png b/img678.png new file mode 100644 index 0000000..7a2054f Binary files /dev/null and b/img678.png differ diff --git a/img679.png b/img679.png new file mode 100644 index 0000000..dec38cc Binary files /dev/null and b/img679.png differ diff --git a/img68.png b/img68.png new file mode 100644 index 0000000..3b298c1 Binary files /dev/null and b/img68.png differ diff --git a/img680.png b/img680.png new file mode 100644 index 0000000..d9818c4 Binary files /dev/null and b/img680.png differ diff --git a/img681.png b/img681.png new file mode 100644 index 0000000..2b22dbb Binary files /dev/null and b/img681.png differ diff --git a/img682.png b/img682.png new file mode 100644 index 0000000..babe3fb Binary files /dev/null and b/img682.png differ diff --git a/img683.png b/img683.png new file mode 100644 index 0000000..41ff1f5 Binary files /dev/null and b/img683.png differ diff --git a/img684.png b/img684.png new file mode 100644 index 0000000..a0cea60 Binary files /dev/null and b/img684.png differ diff --git a/img685.png b/img685.png new file mode 100644 index 0000000..05c23c3 Binary files /dev/null and b/img685.png differ diff --git a/img686.png b/img686.png new file mode 100644 index 0000000..06615c2 Binary files /dev/null and b/img686.png differ diff --git a/img687.png b/img687.png new file mode 100644 index 0000000..4d78562 Binary files /dev/null and b/img687.png differ diff --git a/img688.png b/img688.png new file mode 100644 index 0000000..581a972 Binary files /dev/null and b/img688.png differ diff --git a/img689.png b/img689.png new file mode 100644 index 0000000..0c22cbb Binary files /dev/null and b/img689.png differ diff --git a/img69.png b/img69.png new file mode 100644 index 0000000..5e5c471 Binary files /dev/null and b/img69.png differ diff --git a/img690.png b/img690.png new file mode 100644 index 0000000..5a1e52e Binary files /dev/null and b/img690.png differ diff --git a/img691.png b/img691.png new file mode 100644 index 0000000..8e4504f Binary files /dev/null and b/img691.png differ diff --git a/img692.png b/img692.png new file mode 100644 index 0000000..89cd8f8 Binary files /dev/null and b/img692.png differ diff --git a/img693.png b/img693.png new file mode 100644 index 0000000..08a66ed Binary files /dev/null and b/img693.png differ diff --git a/img694.png b/img694.png new file mode 100644 index 0000000..51c5ff2 Binary files /dev/null and b/img694.png differ diff --git a/img695.png b/img695.png new file mode 100644 index 0000000..08a66ed Binary files /dev/null and b/img695.png differ diff --git a/img696.png b/img696.png new file mode 100644 index 0000000..9e5d917 Binary files /dev/null and b/img696.png differ diff --git a/img697.png b/img697.png new file mode 100644 index 0000000..6fa70da Binary files /dev/null and b/img697.png differ diff --git a/img698.png b/img698.png new file mode 100644 index 0000000..e2a6a02 Binary files /dev/null and b/img698.png differ diff --git a/img699.png b/img699.png new file mode 100644 index 0000000..893e471 Binary files /dev/null and b/img699.png differ diff --git a/img7.png b/img7.png new file mode 100644 index 0000000..5afd61a Binary files /dev/null and b/img7.png differ diff --git a/img70.png b/img70.png new file mode 100644 index 0000000..983c671 Binary files /dev/null and b/img70.png differ diff --git a/img700.png b/img700.png new file mode 100644 index 0000000..a0acf71 Binary files /dev/null and b/img700.png differ diff --git a/img701.png b/img701.png new file mode 100644 index 0000000..b97a9ff Binary files /dev/null and b/img701.png differ diff --git a/img702.png b/img702.png new file mode 100644 index 0000000..9809fce Binary files /dev/null and b/img702.png differ diff --git a/img703.png b/img703.png new file mode 100644 index 0000000..2101027 Binary files /dev/null and b/img703.png differ diff --git a/img704.png b/img704.png new file mode 100644 index 0000000..512ed85 Binary files /dev/null and b/img704.png differ diff --git a/img705.png b/img705.png new file mode 100644 index 0000000..db271f4 Binary files /dev/null and b/img705.png differ diff --git a/img706.png b/img706.png new file mode 100644 index 0000000..a88ec72 Binary files /dev/null and b/img706.png differ diff --git a/img707.png b/img707.png new file mode 100644 index 0000000..671d87a Binary files /dev/null and b/img707.png differ diff --git a/img708.png b/img708.png new file mode 100644 index 0000000..4ee2967 Binary files /dev/null and b/img708.png differ diff --git a/img709.png b/img709.png new file mode 100644 index 0000000..6bc9362 Binary files /dev/null and b/img709.png differ diff --git a/img71.png b/img71.png new file mode 100644 index 0000000..8253924 Binary files /dev/null and b/img71.png differ diff --git a/img710.png b/img710.png new file mode 100644 index 0000000..a0cea60 Binary files /dev/null and b/img710.png differ diff --git a/img711.png b/img711.png new file mode 100644 index 0000000..29be617 Binary files /dev/null and b/img711.png differ diff --git a/img712.png b/img712.png new file mode 100644 index 0000000..173d0ea Binary files /dev/null and b/img712.png differ diff --git a/img713.png b/img713.png new file mode 100644 index 0000000..27c5bbe Binary files /dev/null and b/img713.png differ diff --git a/img714.png b/img714.png new file mode 100644 index 0000000..0a020a1 Binary files /dev/null and b/img714.png differ diff --git a/img715.png b/img715.png new file mode 100644 index 0000000..c4f4feb Binary files /dev/null and b/img715.png differ diff --git a/img716.png b/img716.png new file mode 100644 index 0000000..f2d962a Binary files /dev/null and b/img716.png differ diff --git a/img717.png b/img717.png new file mode 100644 index 0000000..0138795 Binary files /dev/null and b/img717.png differ diff --git a/img718.png b/img718.png new file mode 100644 index 0000000..cde02bc Binary files /dev/null and b/img718.png differ diff --git a/img719.png b/img719.png new file mode 100644 index 0000000..1adabf8 Binary files /dev/null and b/img719.png differ diff --git a/img72.png b/img72.png new file mode 100644 index 0000000..c3d2dfc Binary files /dev/null and b/img72.png differ diff --git a/img720.png b/img720.png new file mode 100644 index 0000000..1d66045 Binary files /dev/null and b/img720.png differ diff --git a/img721.png b/img721.png new file mode 100644 index 0000000..c8180c2 Binary files /dev/null and b/img721.png differ diff --git a/img722.png b/img722.png new file mode 100644 index 0000000..cbea259 Binary files /dev/null and b/img722.png differ diff --git a/img723.png b/img723.png new file mode 100644 index 0000000..40ed0af Binary files /dev/null and b/img723.png differ diff --git a/img724.png b/img724.png new file mode 100644 index 0000000..2aa4d70 Binary files /dev/null and b/img724.png differ diff --git a/img725.png b/img725.png new file mode 100644 index 0000000..c184cdd Binary files /dev/null and b/img725.png differ diff --git a/img726.png b/img726.png new file mode 100644 index 0000000..26c081f Binary files /dev/null and b/img726.png differ diff --git a/img727.png b/img727.png new file mode 100644 index 0000000..c04a39b Binary files /dev/null and b/img727.png differ diff --git a/img728.png b/img728.png new file mode 100644 index 0000000..bc72978 Binary files /dev/null and b/img728.png differ diff --git a/img729.png b/img729.png new file mode 100644 index 0000000..1c69601 Binary files /dev/null and b/img729.png differ diff --git a/img73.png b/img73.png new file mode 100644 index 0000000..414fda4 Binary files /dev/null and b/img73.png differ diff --git a/img730.png b/img730.png new file mode 100644 index 0000000..56596c5 Binary files /dev/null and b/img730.png differ diff --git a/img731.png b/img731.png new file mode 100644 index 0000000..2518d3d Binary files /dev/null and b/img731.png differ diff --git a/img732.png b/img732.png new file mode 100644 index 0000000..b0e7794 Binary files /dev/null and b/img732.png differ diff --git a/img733.png b/img733.png new file mode 100644 index 0000000..55f850d Binary files /dev/null and b/img733.png differ diff --git a/img734.png b/img734.png new file mode 100644 index 0000000..3504b4e Binary files /dev/null and b/img734.png differ diff --git a/img735.png b/img735.png new file mode 100644 index 0000000..b67b01e Binary files /dev/null and b/img735.png differ diff --git a/img736.png b/img736.png new file mode 100644 index 0000000..4865202 Binary files /dev/null and b/img736.png differ diff --git a/img737.png b/img737.png new file mode 100644 index 0000000..0d92553 Binary files /dev/null and b/img737.png differ diff --git a/img738.png b/img738.png new file mode 100644 index 0000000..d75cfff Binary files /dev/null and b/img738.png differ diff --git a/img739.png b/img739.png new file mode 100644 index 0000000..d841f92 Binary files /dev/null and b/img739.png differ diff --git a/img74.png b/img74.png new file mode 100644 index 0000000..a37581f Binary files /dev/null and b/img74.png differ diff --git a/img740.png b/img740.png new file mode 100644 index 0000000..745a12c Binary files /dev/null and b/img740.png differ diff --git a/img741.png b/img741.png new file mode 100644 index 0000000..a124031 Binary files /dev/null and b/img741.png differ diff --git a/img742.png b/img742.png new file mode 100644 index 0000000..c7c0600 Binary files /dev/null and b/img742.png differ diff --git a/img743.png b/img743.png new file mode 100644 index 0000000..d913468 Binary files /dev/null and b/img743.png differ diff --git a/img744.png b/img744.png new file mode 100644 index 0000000..97464b1 Binary files /dev/null and b/img744.png differ diff --git a/img745.png b/img745.png new file mode 100644 index 0000000..4787504 Binary files /dev/null and b/img745.png differ diff --git a/img746.png b/img746.png new file mode 100644 index 0000000..d1a97bc Binary files /dev/null and b/img746.png differ diff --git a/img747.png b/img747.png new file mode 100644 index 0000000..327fe45 Binary files /dev/null and b/img747.png differ diff --git a/img748.png b/img748.png new file mode 100644 index 0000000..7573781 Binary files /dev/null and b/img748.png differ diff --git a/img749.png b/img749.png new file mode 100644 index 0000000..465037a Binary files /dev/null and b/img749.png differ diff --git a/img75.png b/img75.png new file mode 100644 index 0000000..bdab175 Binary files /dev/null and b/img75.png differ diff --git a/img750.png b/img750.png new file mode 100644 index 0000000..1370729 Binary files /dev/null and b/img750.png differ diff --git a/img751.png b/img751.png new file mode 100644 index 0000000..4e3c05b Binary files /dev/null and b/img751.png differ diff --git a/img752.png b/img752.png new file mode 100644 index 0000000..96144f1 Binary files /dev/null and b/img752.png differ diff --git a/img753.png b/img753.png new file mode 100644 index 0000000..1ace6f7 Binary files /dev/null and b/img753.png differ diff --git a/img754.png b/img754.png new file mode 100644 index 0000000..6fb7be1 Binary files /dev/null and b/img754.png differ diff --git a/img755.png b/img755.png new file mode 100644 index 0000000..a6915d8 Binary files /dev/null and b/img755.png differ diff --git a/img756.png b/img756.png new file mode 100644 index 0000000..ed040e2 Binary files /dev/null and b/img756.png differ diff --git a/img757.png b/img757.png new file mode 100644 index 0000000..8ee7860 Binary files /dev/null and b/img757.png differ diff --git a/img758.png b/img758.png new file mode 100644 index 0000000..6c9a2e0 Binary files /dev/null and b/img758.png differ diff --git a/img759.png b/img759.png new file mode 100644 index 0000000..451c569 Binary files /dev/null and b/img759.png differ diff --git a/img76.png b/img76.png new file mode 100644 index 0000000..e7918b9 Binary files /dev/null and b/img76.png differ diff --git a/img760.png b/img760.png new file mode 100644 index 0000000..9ec9be2 Binary files /dev/null and b/img760.png differ diff --git a/img761.png b/img761.png new file mode 100644 index 0000000..dd2a7cf Binary files /dev/null and b/img761.png differ diff --git a/img762.png b/img762.png new file mode 100644 index 0000000..375ebb4 Binary files /dev/null and b/img762.png differ diff --git a/img763.png b/img763.png new file mode 100644 index 0000000..93765b2 Binary files /dev/null and b/img763.png differ diff --git a/img764.png b/img764.png new file mode 100644 index 0000000..b90edff Binary files /dev/null and b/img764.png differ diff --git a/img765.png b/img765.png new file mode 100644 index 0000000..ef54135 Binary files /dev/null and b/img765.png differ diff --git a/img766.png b/img766.png new file mode 100644 index 0000000..cfa7f15 Binary files /dev/null and b/img766.png differ diff --git a/img767.png b/img767.png new file mode 100644 index 0000000..fc58926 Binary files /dev/null and b/img767.png differ diff --git a/img768.png b/img768.png new file mode 100644 index 0000000..2c6e985 Binary files /dev/null and b/img768.png differ diff --git a/img769.png b/img769.png new file mode 100644 index 0000000..4511b15 Binary files /dev/null and b/img769.png differ diff --git a/img77.png b/img77.png new file mode 100644 index 0000000..8eea080 Binary files /dev/null and b/img77.png differ diff --git a/img770.png b/img770.png new file mode 100644 index 0000000..8807848 Binary files /dev/null and b/img770.png differ diff --git a/img771.png b/img771.png new file mode 100644 index 0000000..5bd742a Binary files /dev/null and b/img771.png differ diff --git a/img772.png b/img772.png new file mode 100644 index 0000000..32cb728 Binary files /dev/null and b/img772.png differ diff --git a/img773.png b/img773.png new file mode 100644 index 0000000..95fa6f3 Binary files /dev/null and b/img773.png differ diff --git a/img774.png b/img774.png new file mode 100644 index 0000000..34fb7e1 Binary files /dev/null and b/img774.png differ diff --git a/img775.png b/img775.png new file mode 100644 index 0000000..ee0046b Binary files /dev/null and b/img775.png differ diff --git a/img776.png b/img776.png new file mode 100644 index 0000000..0d9b8e2 Binary files /dev/null and b/img776.png differ diff --git a/img777.png b/img777.png new file mode 100644 index 0000000..9e79916 Binary files /dev/null and b/img777.png differ diff --git a/img778.png b/img778.png new file mode 100644 index 0000000..019eb22 Binary files /dev/null and b/img778.png differ diff --git a/img779.png b/img779.png new file mode 100644 index 0000000..8aa836e Binary files /dev/null and b/img779.png differ diff --git a/img78.png b/img78.png new file mode 100644 index 0000000..12148d6 Binary files /dev/null and b/img78.png differ diff --git a/img780.png b/img780.png new file mode 100644 index 0000000..fd8ca5b Binary files /dev/null and b/img780.png differ diff --git a/img781.png b/img781.png new file mode 100644 index 0000000..c268465 Binary files /dev/null and b/img781.png differ diff --git a/img782.png b/img782.png new file mode 100644 index 0000000..8643132 Binary files /dev/null and b/img782.png differ diff --git a/img783.png b/img783.png new file mode 100644 index 0000000..243c2d8 Binary files /dev/null and b/img783.png differ diff --git a/img784.png b/img784.png new file mode 100644 index 0000000..a455a60 Binary files /dev/null and b/img784.png differ diff --git a/img785.png b/img785.png new file mode 100644 index 0000000..991353c Binary files /dev/null and b/img785.png differ diff --git a/img786.png b/img786.png new file mode 100644 index 0000000..84dc3f7 Binary files /dev/null and b/img786.png differ diff --git a/img787.png b/img787.png new file mode 100644 index 0000000..71b67d8 Binary files /dev/null and b/img787.png differ diff --git a/img788.png b/img788.png new file mode 100644 index 0000000..7c6fddc Binary files /dev/null and b/img788.png differ diff --git a/img789.png b/img789.png new file mode 100644 index 0000000..cd73303 Binary files /dev/null and b/img789.png differ diff --git a/img79.png b/img79.png new file mode 100644 index 0000000..bd3afaa Binary files /dev/null and b/img79.png differ diff --git a/img790.png b/img790.png new file mode 100644 index 0000000..839727c Binary files /dev/null and b/img790.png differ diff --git a/img791.png b/img791.png new file mode 100644 index 0000000..841e76a Binary files /dev/null and b/img791.png differ diff --git a/img792.png b/img792.png new file mode 100644 index 0000000..c810953 Binary files /dev/null and b/img792.png differ diff --git a/img793.png b/img793.png new file mode 100644 index 0000000..54740a4 Binary files /dev/null and b/img793.png differ diff --git a/img794.png b/img794.png new file mode 100644 index 0000000..9c5b2d0 Binary files /dev/null and b/img794.png differ diff --git a/img795.png b/img795.png new file mode 100644 index 0000000..cb7cde3 Binary files /dev/null and b/img795.png differ diff --git a/img796.png b/img796.png new file mode 100644 index 0000000..1fb4072 Binary files /dev/null and b/img796.png differ diff --git a/img797.png b/img797.png new file mode 100644 index 0000000..7394bc1 Binary files /dev/null and b/img797.png differ diff --git a/img798.png b/img798.png new file mode 100644 index 0000000..c2e1520 Binary files /dev/null and b/img798.png differ diff --git a/img799.png b/img799.png new file mode 100644 index 0000000..c867948 Binary files /dev/null and b/img799.png differ diff --git a/img8.png b/img8.png new file mode 100644 index 0000000..3260fcc Binary files /dev/null and b/img8.png differ diff --git a/img80.png b/img80.png new file mode 100644 index 0000000..67b83fa Binary files /dev/null and b/img80.png differ diff --git a/img800.png b/img800.png new file mode 100644 index 0000000..6135845 Binary files /dev/null and b/img800.png differ diff --git a/img801.png b/img801.png new file mode 100644 index 0000000..6109677 Binary files /dev/null and b/img801.png differ diff --git a/img802.png b/img802.png new file mode 100644 index 0000000..c86bb5c Binary files /dev/null and b/img802.png differ diff --git a/img803.png b/img803.png new file mode 100644 index 0000000..1e02372 Binary files /dev/null and b/img803.png differ diff --git a/img804.png b/img804.png new file mode 100644 index 0000000..f2b2a51 Binary files /dev/null and b/img804.png differ diff --git a/img805.png b/img805.png new file mode 100644 index 0000000..d698209 Binary files /dev/null and b/img805.png differ diff --git a/img806.png b/img806.png new file mode 100644 index 0000000..d13bd3b Binary files /dev/null and b/img806.png differ diff --git a/img807.png b/img807.png new file mode 100644 index 0000000..6109677 Binary files /dev/null and b/img807.png differ diff --git a/img808.png b/img808.png new file mode 100644 index 0000000..f701b83 Binary files /dev/null and b/img808.png differ diff --git a/img809.png b/img809.png new file mode 100644 index 0000000..a0cb12f Binary files /dev/null and b/img809.png differ diff --git a/img81.png b/img81.png new file mode 100644 index 0000000..ade427b Binary files /dev/null and b/img81.png differ diff --git a/img810.png b/img810.png new file mode 100644 index 0000000..5fc399a Binary files /dev/null and b/img810.png differ diff --git a/img811.png b/img811.png new file mode 100644 index 0000000..4f61773 Binary files /dev/null and b/img811.png differ diff --git a/img812.png b/img812.png new file mode 100644 index 0000000..70f3205 Binary files /dev/null and b/img812.png differ diff --git a/img813.png b/img813.png new file mode 100644 index 0000000..64b2deb Binary files /dev/null and b/img813.png differ diff --git a/img814.png b/img814.png new file mode 100644 index 0000000..ef64c36 Binary files /dev/null and b/img814.png differ diff --git a/img815.png b/img815.png new file mode 100644 index 0000000..14bcf15 Binary files /dev/null and b/img815.png differ diff --git a/img816.png b/img816.png new file mode 100644 index 0000000..dc398d8 Binary files /dev/null and b/img816.png differ diff --git a/img817.png b/img817.png new file mode 100644 index 0000000..56850cc Binary files /dev/null and b/img817.png differ diff --git a/img818.png b/img818.png new file mode 100644 index 0000000..ba53bc5 Binary files /dev/null and b/img818.png differ diff --git a/img819.png b/img819.png new file mode 100644 index 0000000..6dfe37e Binary files /dev/null and b/img819.png differ diff --git a/img82.png b/img82.png new file mode 100644 index 0000000..71460e6 Binary files /dev/null and b/img82.png differ diff --git a/img820.png b/img820.png new file mode 100644 index 0000000..68b570f Binary files /dev/null and b/img820.png differ diff --git a/img821.png b/img821.png new file mode 100644 index 0000000..d10ace1 Binary files /dev/null and b/img821.png differ diff --git a/img822.png b/img822.png new file mode 100644 index 0000000..1e3cfc1 Binary files /dev/null and b/img822.png differ diff --git a/img823.png b/img823.png new file mode 100644 index 0000000..d23140c Binary files /dev/null and b/img823.png differ diff --git a/img824.png b/img824.png new file mode 100644 index 0000000..3ab9ba0 Binary files /dev/null and b/img824.png differ diff --git a/img825.png b/img825.png new file mode 100644 index 0000000..b7213ef Binary files /dev/null and b/img825.png differ diff --git a/img826.png b/img826.png new file mode 100644 index 0000000..053a0a8 Binary files /dev/null and b/img826.png differ diff --git a/img827.png b/img827.png new file mode 100644 index 0000000..cd1c244 Binary files /dev/null and b/img827.png differ diff --git a/img828.png b/img828.png new file mode 100644 index 0000000..a62eab0 Binary files /dev/null and b/img828.png differ diff --git a/img829.png b/img829.png new file mode 100644 index 0000000..7b71e55 Binary files /dev/null and b/img829.png differ diff --git a/img83.png b/img83.png new file mode 100644 index 0000000..39d1fe1 Binary files /dev/null and b/img83.png differ diff --git a/img830.png b/img830.png new file mode 100644 index 0000000..5284fce Binary files /dev/null and b/img830.png differ diff --git a/img831.png b/img831.png new file mode 100644 index 0000000..5064924 Binary files /dev/null and b/img831.png differ diff --git a/img832.png b/img832.png new file mode 100644 index 0000000..f900e32 Binary files /dev/null and b/img832.png differ diff --git a/img833.png b/img833.png new file mode 100644 index 0000000..c3ce89c Binary files /dev/null and b/img833.png differ diff --git a/img834.png b/img834.png new file mode 100644 index 0000000..ea3bebf Binary files /dev/null and b/img834.png differ diff --git a/img835.png b/img835.png new file mode 100644 index 0000000..2bafa08 Binary files /dev/null and b/img835.png differ diff --git a/img836.png b/img836.png new file mode 100644 index 0000000..1ae5bea Binary files /dev/null and b/img836.png differ diff --git a/img837.png b/img837.png new file mode 100644 index 0000000..fa3700a Binary files /dev/null and b/img837.png differ diff --git a/img838.png b/img838.png new file mode 100644 index 0000000..d8555e7 Binary files /dev/null and b/img838.png differ diff --git a/img839.png b/img839.png new file mode 100644 index 0000000..4ecb866 Binary files /dev/null and b/img839.png differ diff --git a/img84.png b/img84.png new file mode 100644 index 0000000..c6f7bfa Binary files /dev/null and b/img84.png differ diff --git a/img840.png b/img840.png new file mode 100644 index 0000000..c9994da Binary files /dev/null and b/img840.png differ diff --git a/img841.png b/img841.png new file mode 100644 index 0000000..73e4a07 Binary files /dev/null and b/img841.png differ diff --git a/img842.png b/img842.png new file mode 100644 index 0000000..c3e65e9 Binary files /dev/null and b/img842.png differ diff --git a/img843.png b/img843.png new file mode 100644 index 0000000..290763c Binary files /dev/null and b/img843.png differ diff --git a/img844.png b/img844.png new file mode 100644 index 0000000..e7b82a8 Binary files /dev/null and b/img844.png differ diff --git a/img845.png b/img845.png new file mode 100644 index 0000000..958d71b Binary files /dev/null and b/img845.png differ diff --git a/img846.png b/img846.png new file mode 100644 index 0000000..81ad781 Binary files /dev/null and b/img846.png differ diff --git a/img847.png b/img847.png new file mode 100644 index 0000000..df4afdf Binary files /dev/null and b/img847.png differ diff --git a/img848.png b/img848.png new file mode 100644 index 0000000..7b03710 Binary files /dev/null and b/img848.png differ diff --git a/img849.png b/img849.png new file mode 100644 index 0000000..388db82 Binary files /dev/null and b/img849.png differ diff --git a/img85.png b/img85.png new file mode 100644 index 0000000..3e6cb73 Binary files /dev/null and b/img85.png differ diff --git a/img850.png b/img850.png new file mode 100644 index 0000000..cbf1eba Binary files /dev/null and b/img850.png differ diff --git a/img851.png b/img851.png new file mode 100644 index 0000000..8494792 Binary files /dev/null and b/img851.png differ diff --git a/img852.png b/img852.png new file mode 100644 index 0000000..2c177ed Binary files /dev/null and b/img852.png differ diff --git a/img853.png b/img853.png new file mode 100644 index 0000000..5ec0077 Binary files /dev/null and b/img853.png differ diff --git a/img854.png b/img854.png new file mode 100644 index 0000000..ea09fd6 Binary files /dev/null and b/img854.png differ diff --git a/img855.png b/img855.png new file mode 100644 index 0000000..77cb861 Binary files /dev/null and b/img855.png differ diff --git a/img856.png b/img856.png new file mode 100644 index 0000000..a684fb2 Binary files /dev/null and b/img856.png differ diff --git a/img857.png b/img857.png new file mode 100644 index 0000000..e89baad Binary files /dev/null and b/img857.png differ diff --git a/img858.png b/img858.png new file mode 100644 index 0000000..5106cfe Binary files /dev/null and b/img858.png differ diff --git a/img859.png b/img859.png new file mode 100644 index 0000000..66cb6bb Binary files /dev/null and b/img859.png differ diff --git a/img86.png b/img86.png new file mode 100644 index 0000000..84b6607 Binary files /dev/null and b/img86.png differ diff --git a/img860.png b/img860.png new file mode 100644 index 0000000..e087b90 Binary files /dev/null and b/img860.png differ diff --git a/img861.png b/img861.png new file mode 100644 index 0000000..feb87ab Binary files /dev/null and b/img861.png differ diff --git a/img862.png b/img862.png new file mode 100644 index 0000000..db0ac87 Binary files /dev/null and b/img862.png differ diff --git a/img863.png b/img863.png new file mode 100644 index 0000000..264c0bb Binary files /dev/null and b/img863.png differ diff --git a/img864.png b/img864.png new file mode 100644 index 0000000..90e95a2 Binary files /dev/null and b/img864.png differ diff --git a/img865.png b/img865.png new file mode 100644 index 0000000..af6b757 Binary files /dev/null and b/img865.png differ diff --git a/img866.png b/img866.png new file mode 100644 index 0000000..4c1d90c Binary files /dev/null and b/img866.png differ diff --git a/img867.png b/img867.png new file mode 100644 index 0000000..7acfec8 Binary files /dev/null and b/img867.png differ diff --git a/img868.png b/img868.png new file mode 100644 index 0000000..fab0662 Binary files /dev/null and b/img868.png differ diff --git a/img869.png b/img869.png new file mode 100644 index 0000000..dfae7ed Binary files /dev/null and b/img869.png differ diff --git a/img87.png b/img87.png new file mode 100644 index 0000000..5e78a9f Binary files /dev/null and b/img87.png differ diff --git a/img870.png b/img870.png new file mode 100644 index 0000000..bfd8201 Binary files /dev/null and b/img870.png differ diff --git a/img871.png b/img871.png new file mode 100644 index 0000000..e473f5f Binary files /dev/null and b/img871.png differ diff --git a/img872.png b/img872.png new file mode 100644 index 0000000..4a6eb10 Binary files /dev/null and b/img872.png differ diff --git a/img873.png b/img873.png new file mode 100644 index 0000000..0df4e10 Binary files /dev/null and b/img873.png differ diff --git a/img874.png b/img874.png new file mode 100644 index 0000000..6265c6e Binary files /dev/null and b/img874.png differ diff --git a/img875.png b/img875.png new file mode 100644 index 0000000..541759e Binary files /dev/null and b/img875.png differ diff --git a/img876.png b/img876.png new file mode 100644 index 0000000..a746c4d Binary files /dev/null and b/img876.png differ diff --git a/img877.png b/img877.png new file mode 100644 index 0000000..5d27879 Binary files /dev/null and b/img877.png differ diff --git a/img878.png b/img878.png new file mode 100644 index 0000000..8efcecf Binary files /dev/null and b/img878.png differ diff --git a/img879.png b/img879.png new file mode 100644 index 0000000..5818776 Binary files /dev/null and b/img879.png differ diff --git a/img88.png b/img88.png new file mode 100644 index 0000000..9942e33 Binary files /dev/null and b/img88.png differ diff --git a/img880.png b/img880.png new file mode 100644 index 0000000..c0b6ed0 Binary files /dev/null and b/img880.png differ diff --git a/img881.png b/img881.png new file mode 100644 index 0000000..f4f85d8 Binary files /dev/null and b/img881.png differ diff --git a/img882.png b/img882.png new file mode 100644 index 0000000..a765b9c Binary files /dev/null and b/img882.png differ diff --git a/img883.png b/img883.png new file mode 100644 index 0000000..e3b1220 Binary files /dev/null and b/img883.png differ diff --git a/img884.png b/img884.png new file mode 100644 index 0000000..62e34f7 Binary files /dev/null and b/img884.png differ diff --git a/img885.png b/img885.png new file mode 100644 index 0000000..c6a4f80 Binary files /dev/null and b/img885.png differ diff --git a/img886.png b/img886.png new file mode 100644 index 0000000..88dce8a Binary files /dev/null and b/img886.png differ diff --git a/img887.png b/img887.png new file mode 100644 index 0000000..d12fd04 Binary files /dev/null and b/img887.png differ diff --git a/img888.png b/img888.png new file mode 100644 index 0000000..4bb2236 Binary files /dev/null and b/img888.png differ diff --git a/img889.png b/img889.png new file mode 100644 index 0000000..6f59159 Binary files /dev/null and b/img889.png differ diff --git a/img89.png b/img89.png new file mode 100644 index 0000000..b3aa645 Binary files /dev/null and b/img89.png differ diff --git a/img890.png b/img890.png new file mode 100644 index 0000000..bb69a90 Binary files /dev/null and b/img890.png differ diff --git a/img891.png b/img891.png new file mode 100644 index 0000000..8122b04 Binary files /dev/null and b/img891.png differ diff --git a/img892.png b/img892.png new file mode 100644 index 0000000..6434207 Binary files /dev/null and b/img892.png differ diff --git a/img893.png b/img893.png new file mode 100644 index 0000000..86a9508 Binary files /dev/null and b/img893.png differ diff --git a/img894.png b/img894.png new file mode 100644 index 0000000..f3b05b5 Binary files /dev/null and b/img894.png differ diff --git a/img895.png b/img895.png new file mode 100644 index 0000000..9c41b95 Binary files /dev/null and b/img895.png differ diff --git a/img896.png b/img896.png new file mode 100644 index 0000000..ad807b4 Binary files /dev/null and b/img896.png differ diff --git a/img897.png b/img897.png new file mode 100644 index 0000000..8dd130b Binary files /dev/null and b/img897.png differ diff --git a/img898.png b/img898.png new file mode 100644 index 0000000..ade8637 Binary files /dev/null and b/img898.png differ diff --git a/img899.png b/img899.png new file mode 100644 index 0000000..124ff42 Binary files /dev/null and b/img899.png differ diff --git a/img9.png b/img9.png new file mode 100644 index 0000000..11ee390 Binary files /dev/null and b/img9.png differ diff --git a/img90.png b/img90.png new file mode 100644 index 0000000..3642635 Binary files /dev/null and b/img90.png differ diff --git a/img900.png b/img900.png new file mode 100644 index 0000000..5cf214d Binary files /dev/null and b/img900.png differ diff --git a/img901.png b/img901.png new file mode 100644 index 0000000..922f07a Binary files /dev/null and b/img901.png differ diff --git a/img902.png b/img902.png new file mode 100644 index 0000000..c6a7469 Binary files /dev/null and b/img902.png differ diff --git a/img903.png b/img903.png new file mode 100644 index 0000000..09be994 Binary files /dev/null and b/img903.png differ diff --git a/img904.png b/img904.png new file mode 100644 index 0000000..748362f Binary files /dev/null and b/img904.png differ diff --git a/img905.png b/img905.png new file mode 100644 index 0000000..694f23a Binary files /dev/null and b/img905.png differ diff --git a/img906.png b/img906.png new file mode 100644 index 0000000..8625439 Binary files /dev/null and b/img906.png differ diff --git a/img907.png b/img907.png new file mode 100644 index 0000000..4f7736f Binary files /dev/null and b/img907.png differ diff --git a/img908.png b/img908.png new file mode 100644 index 0000000..8db268f Binary files /dev/null and b/img908.png differ diff --git a/img909.png b/img909.png new file mode 100644 index 0000000..2adee36 Binary files /dev/null and b/img909.png differ diff --git a/img91.png b/img91.png new file mode 100644 index 0000000..159940c Binary files /dev/null and b/img91.png differ diff --git a/img910.png b/img910.png new file mode 100644 index 0000000..4b227ea Binary files /dev/null and b/img910.png differ diff --git a/img911.png b/img911.png new file mode 100644 index 0000000..31b32be Binary files /dev/null and b/img911.png differ diff --git a/img912.png b/img912.png new file mode 100644 index 0000000..02854fc Binary files /dev/null and b/img912.png differ diff --git a/img913.png b/img913.png new file mode 100644 index 0000000..6622d1b Binary files /dev/null and b/img913.png differ diff --git a/img914.png b/img914.png new file mode 100644 index 0000000..a615204 Binary files /dev/null and b/img914.png differ diff --git a/img915.png b/img915.png new file mode 100644 index 0000000..ec667b6 Binary files /dev/null and b/img915.png differ diff --git a/img916.png b/img916.png new file mode 100644 index 0000000..4296197 Binary files /dev/null and b/img916.png differ diff --git a/img917.png b/img917.png new file mode 100644 index 0000000..2eef7be Binary files /dev/null and b/img917.png differ diff --git a/img918.png b/img918.png new file mode 100644 index 0000000..0ace146 Binary files /dev/null and b/img918.png differ diff --git a/img919.png b/img919.png new file mode 100644 index 0000000..9ac74f2 Binary files /dev/null and b/img919.png differ diff --git a/img92.png b/img92.png new file mode 100644 index 0000000..8169417 Binary files /dev/null and b/img92.png differ diff --git a/img920.png b/img920.png new file mode 100644 index 0000000..90a386a Binary files /dev/null and b/img920.png differ diff --git a/img921.png b/img921.png new file mode 100644 index 0000000..c497973 Binary files /dev/null and b/img921.png differ diff --git a/img922.png b/img922.png new file mode 100644 index 0000000..5ed58b0 Binary files /dev/null and b/img922.png differ diff --git a/img923.png b/img923.png new file mode 100644 index 0000000..c4b2d6d Binary files /dev/null and b/img923.png differ diff --git a/img924.png b/img924.png new file mode 100644 index 0000000..23aaf16 Binary files /dev/null and b/img924.png differ diff --git a/img925.png b/img925.png new file mode 100644 index 0000000..c9be75b Binary files /dev/null and b/img925.png differ diff --git a/img926.png b/img926.png new file mode 100644 index 0000000..92a0def Binary files /dev/null and b/img926.png differ diff --git a/img927.png b/img927.png new file mode 100644 index 0000000..9f00dc1 Binary files /dev/null and b/img927.png differ diff --git a/img928.png b/img928.png new file mode 100644 index 0000000..58ff65a Binary files /dev/null and b/img928.png differ diff --git a/img929.png b/img929.png new file mode 100644 index 0000000..ba68ef7 Binary files /dev/null and b/img929.png differ diff --git a/img93.png b/img93.png new file mode 100644 index 0000000..5cac0bf Binary files /dev/null and b/img93.png differ diff --git a/img930.png b/img930.png new file mode 100644 index 0000000..eb8677d Binary files /dev/null and b/img930.png differ diff --git a/img931.png b/img931.png new file mode 100644 index 0000000..7662ea5 Binary files /dev/null and b/img931.png differ diff --git a/img932.png b/img932.png new file mode 100644 index 0000000..5b52a1e Binary files /dev/null and b/img932.png differ diff --git a/img933.png b/img933.png new file mode 100644 index 0000000..c57451a Binary files /dev/null and b/img933.png differ diff --git a/img934.png b/img934.png new file mode 100644 index 0000000..835c4b4 Binary files /dev/null and b/img934.png differ diff --git a/img935.png b/img935.png new file mode 100644 index 0000000..268c498 Binary files /dev/null and b/img935.png differ diff --git a/img936.png b/img936.png new file mode 100644 index 0000000..b8caa35 Binary files /dev/null and b/img936.png differ diff --git a/img937.png b/img937.png new file mode 100644 index 0000000..3fac8c8 Binary files /dev/null and b/img937.png differ diff --git a/img938.png b/img938.png new file mode 100644 index 0000000..39c287d Binary files /dev/null and b/img938.png differ diff --git a/img939.png b/img939.png new file mode 100644 index 0000000..71d659b Binary files /dev/null and b/img939.png differ diff --git a/img94.png b/img94.png new file mode 100644 index 0000000..7438fb4 Binary files /dev/null and b/img94.png differ diff --git a/img940.png b/img940.png new file mode 100644 index 0000000..91b7bed Binary files /dev/null and b/img940.png differ diff --git a/img941.png b/img941.png new file mode 100644 index 0000000..45d88cd Binary files /dev/null and b/img941.png differ diff --git a/img942.png b/img942.png new file mode 100644 index 0000000..cb64d21 Binary files /dev/null and b/img942.png differ diff --git a/img943.png b/img943.png new file mode 100644 index 0000000..8f1a4a3 Binary files /dev/null and b/img943.png differ diff --git a/img944.png b/img944.png new file mode 100644 index 0000000..df311c1 Binary files /dev/null and b/img944.png differ diff --git a/img945.png b/img945.png new file mode 100644 index 0000000..24d01ec Binary files /dev/null and b/img945.png differ diff --git a/img946.png b/img946.png new file mode 100644 index 0000000..d0a71f5 Binary files /dev/null and b/img946.png differ diff --git a/img947.png b/img947.png new file mode 100644 index 0000000..8c86b69 Binary files /dev/null and b/img947.png differ diff --git a/img948.png b/img948.png new file mode 100644 index 0000000..a08333c Binary files /dev/null and b/img948.png differ diff --git a/img949.png b/img949.png new file mode 100644 index 0000000..59d5c4d Binary files /dev/null and b/img949.png differ diff --git a/img95.png b/img95.png new file mode 100644 index 0000000..d57df03 Binary files /dev/null and b/img95.png differ diff --git a/img950.png b/img950.png new file mode 100644 index 0000000..192a002 Binary files /dev/null and b/img950.png differ diff --git a/img951.png b/img951.png new file mode 100644 index 0000000..e6c0dbe Binary files /dev/null and b/img951.png differ diff --git a/img952.png b/img952.png new file mode 100644 index 0000000..1b2f72e Binary files /dev/null and b/img952.png differ diff --git a/img953.png b/img953.png new file mode 100644 index 0000000..f9ce495 Binary files /dev/null and b/img953.png differ diff --git a/img954.png b/img954.png new file mode 100644 index 0000000..9099de8 Binary files /dev/null and b/img954.png differ diff --git a/img955.png b/img955.png new file mode 100644 index 0000000..9b1a552 Binary files /dev/null and b/img955.png differ diff --git a/img956.png b/img956.png new file mode 100644 index 0000000..5576753 Binary files /dev/null and b/img956.png differ diff --git a/img957.png b/img957.png new file mode 100644 index 0000000..9cbdd7b Binary files /dev/null and b/img957.png differ diff --git a/img958.png b/img958.png new file mode 100644 index 0000000..35ef738 Binary files /dev/null and b/img958.png differ diff --git a/img959.png b/img959.png new file mode 100644 index 0000000..d7a6284 Binary files /dev/null and b/img959.png differ diff --git a/img96.png b/img96.png new file mode 100644 index 0000000..cdc1e8f Binary files /dev/null and b/img96.png differ diff --git a/img960.png b/img960.png new file mode 100644 index 0000000..3a03689 Binary files /dev/null and b/img960.png differ diff --git a/img961.png b/img961.png new file mode 100644 index 0000000..03083c2 Binary files /dev/null and b/img961.png differ diff --git a/img962.png b/img962.png new file mode 100644 index 0000000..0ebe831 Binary files /dev/null and b/img962.png differ diff --git a/img963.png b/img963.png new file mode 100644 index 0000000..a373d34 Binary files /dev/null and b/img963.png differ diff --git a/img964.png b/img964.png new file mode 100644 index 0000000..f7155d0 Binary files /dev/null and b/img964.png differ diff --git a/img965.png b/img965.png new file mode 100644 index 0000000..14f7461 Binary files /dev/null and b/img965.png differ diff --git a/img966.png b/img966.png new file mode 100644 index 0000000..496f046 Binary files /dev/null and b/img966.png differ diff --git a/img967.png b/img967.png new file mode 100644 index 0000000..58fbbb8 Binary files /dev/null and b/img967.png differ diff --git a/img968.png b/img968.png new file mode 100644 index 0000000..f575e44 Binary files /dev/null and b/img968.png differ diff --git a/img969.png b/img969.png new file mode 100644 index 0000000..52a6b35 Binary files /dev/null and b/img969.png differ diff --git a/img97.png b/img97.png new file mode 100644 index 0000000..fd2a2df Binary files /dev/null and b/img97.png differ diff --git a/img970.png b/img970.png new file mode 100644 index 0000000..e9deec7 Binary files /dev/null and b/img970.png differ diff --git a/img971.png b/img971.png new file mode 100644 index 0000000..175c45e Binary files /dev/null and b/img971.png differ diff --git a/img972.png b/img972.png new file mode 100644 index 0000000..5260f8d Binary files /dev/null and b/img972.png differ diff --git a/img973.png b/img973.png new file mode 100644 index 0000000..078571d Binary files /dev/null and b/img973.png differ diff --git a/img974.png b/img974.png new file mode 100644 index 0000000..6cdeb22 Binary files /dev/null and b/img974.png differ diff --git a/img975.png b/img975.png new file mode 100644 index 0000000..a50bbcc Binary files /dev/null and b/img975.png differ diff --git a/img976.png b/img976.png new file mode 100644 index 0000000..ea878c9 Binary files /dev/null and b/img976.png differ diff --git a/img977.png b/img977.png new file mode 100644 index 0000000..c9f0db7 Binary files /dev/null and b/img977.png differ diff --git a/img978.png b/img978.png new file mode 100644 index 0000000..39aceb3 Binary files /dev/null and b/img978.png differ diff --git a/img979.png b/img979.png new file mode 100644 index 0000000..3ef96ab Binary files /dev/null and b/img979.png differ diff --git a/img98.png b/img98.png new file mode 100644 index 0000000..6a265d1 Binary files /dev/null and b/img98.png differ diff --git a/img980.png b/img980.png new file mode 100644 index 0000000..914bd39 Binary files /dev/null and b/img980.png differ diff --git a/img981.png b/img981.png new file mode 100644 index 0000000..c080a41 Binary files /dev/null and b/img981.png differ diff --git a/img982.png b/img982.png new file mode 100644 index 0000000..d5e2299 Binary files /dev/null and b/img982.png differ diff --git a/img983.png b/img983.png new file mode 100644 index 0000000..21a455c Binary files /dev/null and b/img983.png differ diff --git a/img984.png b/img984.png new file mode 100644 index 0000000..e88bf04 Binary files /dev/null and b/img984.png differ diff --git a/img985.png b/img985.png new file mode 100644 index 0000000..d6bb5bd Binary files /dev/null and b/img985.png differ diff --git a/img986.png b/img986.png new file mode 100644 index 0000000..223bec7 Binary files /dev/null and b/img986.png differ diff --git a/img987.png b/img987.png new file mode 100644 index 0000000..95468ca Binary files /dev/null and b/img987.png differ diff --git a/img988.png b/img988.png new file mode 100644 index 0000000..810d373 Binary files /dev/null and b/img988.png differ diff --git a/img989.png b/img989.png new file mode 100644 index 0000000..90ae7d5 Binary files /dev/null and b/img989.png differ diff --git a/img99.png b/img99.png new file mode 100644 index 0000000..aa6c9d7 Binary files /dev/null and b/img99.png differ diff --git a/img990.png b/img990.png new file mode 100644 index 0000000..04daca2 Binary files /dev/null and b/img990.png differ diff --git a/img991.png b/img991.png new file mode 100644 index 0000000..b690cb3 Binary files /dev/null and b/img991.png differ diff --git a/img992.png b/img992.png new file mode 100644 index 0000000..d68f1cb Binary files /dev/null and b/img992.png differ diff --git a/img993.png b/img993.png new file mode 100644 index 0000000..35f48d9 Binary files /dev/null and b/img993.png differ diff --git a/img994.png b/img994.png new file mode 100644 index 0000000..095d5d9 Binary files /dev/null and b/img994.png differ diff --git a/img995.png b/img995.png new file mode 100644 index 0000000..a4f1897 Binary files /dev/null and b/img995.png differ diff --git a/img996.png b/img996.png new file mode 100644 index 0000000..edc6b01 Binary files /dev/null and b/img996.png differ diff --git a/img997.png b/img997.png new file mode 100644 index 0000000..8461b31 Binary files /dev/null and b/img997.png differ diff --git a/img998.png b/img998.png new file mode 100644 index 0000000..cc272d1 Binary files /dev/null and b/img998.png differ diff --git a/img999.png b/img999.png new file mode 100644 index 0000000..250b556 Binary files /dev/null and b/img999.png differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..4aea402 --- /dev/null +++ b/index.html @@ -0,0 +1,560 @@ + + + + + +book + + + + + + + + + + + + + + + + +next +up +previous + +contents + +index +
+ Next: #1 +   Contents +   Index +
+
+ + +1] +

+ + + + + +

+
+Miller Puckette +2006-12-30 +
+ + diff --git a/internals.pl b/internals.pl new file mode 100644 index 0000000..bc0a547 --- /dev/null +++ b/internals.pl @@ -0,0 +1,1278 @@ +# LaTeX2HTML 2002-2-1 (1.71) +# Associate internals original text with physical files. + + +$key = q/eq-realsinusoid/; +$ref_files{$key} = "$dir".q|node7.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.12/; +$ref_files{$key} = "$dir".q|node20.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.09/; +$ref_files{$key} = "$dir".q|node96.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect2.example.overlap/; +$ref_files{$key} = "$dir".q|node37.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect3.noloopsampler/; +$ref_files{$key} = "$dir".q|node53.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-chowning73/; +$ref_files{$key} = "$dir".q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-strawn85/; +$ref_files{$key} = "$dir".q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.04/; +$ref_files{$key} = "$dir".q|node10.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.11/; +$ref_files{$key} = "$dir".q|node175.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.15/; +$ref_files{$key} = "$dir".q|node99.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect8.secondform/; +$ref_files{$key} = "$dir".q|node134.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-lebrun77/; +$ref_files{$key} = "$dir".q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.18/; +$ref_files{$key} = "$dir".q|node145.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-dolson97/; +$ref_files{$key} = "$dir".q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.14/; +$ref_files{$key} = "$dir".q|node110.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-chowning89/; +$ref_files{$key} = "$dir".q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect9.shift/; +$ref_files{$key} = "$dir".q|node169.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect8.envelopefollower/; +$ref_files{$key} = "$dir".q|node153.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.08/; +$ref_files{$key} = "$dir".q|node109.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.20/; +$ref_files{$key} = "$dir".q|node147.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.22/; +$ref_files{$key} = "$dir".q|node149.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.10/; +$ref_files{$key} = "$dir".q|node96.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.14/; +$ref_files{$key} = "$dir".q|node35.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.04/; +$ref_files{$key} = "$dir".q|node108.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.07/; +$ref_files{$key} = "$dir".q|node95.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.24/; +$ref_files{$key} = "$dir".q|node118.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.15/; +$ref_files{$key} = "$dir".q|node70.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.19/; +$ref_files{$key} = "$dir".q|node115.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect5.waveshaping/; +$ref_files{$key} = "$dir".q|node78.html|; +$noresave{$key} = "$nosave"; + +$key = q/sec1.triad/; +$ref_files{$key} = "$dir".q|node22.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.03/; +$ref_files{$key} = "$dir".q|node90.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.29/; +$ref_files{$key} = "$dir".q|node157.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.29/; +$ref_files{$key} = "$dir".q|node122.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.01/; +$ref_files{$key} = "$dir".q|node26.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.11/; +$ref_files{$key} = "$dir".q|node83.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect6.carrier/; +$ref_files{$key} = "$dir".q|node95.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.06/; +$ref_files{$key} = "$dir".q|node63.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect5.bessel/; +$ref_files{$key} = "$dir".q|node86.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.12/; +$ref_files{$key} = "$dir".q|node33.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.07/; +$ref_files{$key} = "$dir".q|node12.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.05/; +$ref_files{$key} = "$dir".q|node28.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect5-spectra/; +$ref_files{$key} = "$dir".q|node76.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect4.tags/; +$ref_files{$key} = "$dir".q|node66.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect3.control/; +$ref_files{$key} = "$dir".q|node42.html|; +$noresave{$key} = "$nosave"; + +$key = q/chapter-modulation/; +$ref_files{$key} = "$dir".q|node75.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.02/; +$ref_files{$key} = "$dir".q|node59.html|; +$noresave{$key} = "$nosave"; + +$key = q/tab02.1/; +$ref_files{$key} = "$dir".q|node31.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect7.network/; +$ref_files{$key} = "$dir".q|node108.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.19/; +$ref_files{$key} = "$dir".q|node146.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.05/; +$ref_files{$key} = "$dir".q|node131.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.15/; +$ref_files{$key} = "$dir".q|node36.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.33/; +$ref_files{$key} = "$dir".q|node161.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.04/; +$ref_files{$key} = "$dir".q|node77.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.11/; +$ref_files{$key} = "$dir".q|node19.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.30/; +$ref_files{$key} = "$dir".q|node123.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.10/; +$ref_files{$key} = "$dir".q|node134.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.16/; +$ref_files{$key} = "$dir".q|node56.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.04/; +$ref_files{$key} = "$dir".q|node93.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect4.encapsulation/; +$ref_files{$key} = "$dir".q|node67.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.15/; +$ref_files{$key} = "$dir".q|node111.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.21/; +$ref_files{$key} = "$dir".q|node73.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.05/; +$ref_files{$key} = "$dir".q|node171.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.01/; +$ref_files{$key} = "$dir".q|node127.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.15/; +$ref_files{$key} = "$dir".q|node24.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect8.twopolebandpass/; +$ref_files{$key} = "$dir".q|node143.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect9-IFT/; +$ref_files{$key} = "$dir".q|node166.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.02/; +$ref_files{$key} = "$dir".q|node26.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.09/; +$ref_files{$key} = "$dir".q|node81.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.12/; +$ref_files{$key} = "$dir".q|node49.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-chamberlin80/; +$ref_files{$key} = "$dir".q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.17/; +$ref_files{$key} = "$dir".q|node181.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-puckette95a/; +$ref_files{$key} = "$dir".q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.11/; +$ref_files{$key} = "$dir".q|node135.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.01/; +$ref_files{$key} = "$dir".q|node168.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect2.interpolation/; +$ref_files{$key} = "$dir".q|node31.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.09/; +$ref_files{$key} = "$dir".q|node47.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.12/; +$ref_files{$key} = "$dir".q|node69.html|; +$noresave{$key} = "$nosave"; + +$key = q/eq-waveshaping/; +$ref_files{$key} = "$dir".q|node78.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.04/; +$ref_files{$key} = "$dir".q|node187.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.27/; +$ref_files{$key} = "$dir".q|node153.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.07/; +$ref_files{$key} = "$dir".q|node63.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.01/; +$ref_files{$key} = "$dir".q|node76.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.01/; +$ref_files{$key} = "$dir".q|node105.html|; +$noresave{$key} = "$nosave"; + +$key = q/chapter-fourier/; +$ref_files{$key} = "$dir".q|node163.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect7.recirculatingcomb/; +$ref_files{$key} = "$dir".q|node109.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.16/; +$ref_files{$key} = "$dir".q|node71.html|; +$noresave{$key} = "$nosave"; + +$key = q/pdpack/; +$ref_files{$key} = "$dir".q|node34.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.03/; +$ref_files{$key} = "$dir".q|node108.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.06/; +$ref_files{$key} = "$dir".q|node94.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.07/; +$ref_files{$key} = "$dir".q|node109.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.32/; +$ref_files{$key} = "$dir".q|node124.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect2.oscillator/; +$ref_files{$key} = "$dir".q|node27.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.13/; +$ref_files{$key} = "$dir".q|node198.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.26/; +$ref_files{$key} = "$dir".q|node153.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect8.timevarying/; +$ref_files{$key} = "$dir".q|node148.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect5.example.expon/; +$ref_files{$key} = "$dir".q|node85.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.14/; +$ref_files{$key} = "$dir".q|node99.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.04/; +$ref_files{$key} = "$dir".q|node43.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.10/; +$ref_files{$key} = "$dir".q|node48.html|; +$noresave{$key} = "$nosave"; + +$key = q/chapter-waveforms/; +$ref_files{$key} = "$dir".q|node184.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.16/; +$ref_files{$key} = "$dir".q|node180.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect8.equalizing/; +$ref_files{$key} = "$dir".q|node131.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect1.synth/; +$ref_files{$key} = "$dir".q|node12.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect4.muting/; +$ref_files{$key} = "$dir".q|node62.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.15/; +$ref_files{$key} = "$dir".q|node143.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.09/; +$ref_files{$key} = "$dir".q|node174.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.12/; +$ref_files{$key} = "$dir".q|node175.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.11/; +$ref_files{$key} = "$dir".q|node110.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.15/; +$ref_files{$key} = "$dir".q|node87.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.25/; +$ref_files{$key} = "$dir".q|node119.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.16/; +$ref_files{$key} = "$dir".q|node112.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.31/; +$ref_files{$key} = "$dir".q|node159.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect9-bash/; +$ref_files{$key} = "$dir".q|node177.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.05/; +$ref_files{$key} = "$dir".q|node108.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.21/; +$ref_files{$key} = "$dir".q|node148.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.09/; +$ref_files{$key} = "$dir".q|node30.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect10.gentriangle/; +$ref_files{$key} = "$dir".q|node192.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.13/; +$ref_files{$key} = "$dir".q|node98.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.14/; +$ref_files{$key} = "$dir".q|node24.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.04/; +$ref_files{$key} = "$dir".q|node130.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.02/; +$ref_files{$key} = "$dir".q|node77.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.33/; +$ref_files{$key} = "$dir".q|node125.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.16/; +$ref_files{$key} = "$dir".q|node37.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.08/; +$ref_files{$key} = "$dir".q|node133.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect3.controlstreams/; +$ref_files{$key} = "$dir".q|node43.html|; +$noresave{$key} = "$nosave"; + +$key = q/eq-meanpowersum/; +$ref_files{$key} = "$dir".q|node13.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-grey77/; +$ref_files{$key} = "$dir".q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.10/; +$ref_files{$key} = "$dir".q|node82.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect1.fourier/; +$ref_files{$key} = "$dir".q|node14.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.04/; +$ref_files{$key} = "$dir".q|node170.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.12/; +$ref_files{$key} = "$dir".q|node140.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect8.singlesideband/; +$ref_files{$key} = "$dir".q|node154.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.08/; +$ref_files{$key} = "$dir".q|node47.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.05/; +$ref_files{$key} = "$dir".q|node12.html|; +$noresave{$key} = "$nosave"; + +$key = q/eq-fourierseries/; +$ref_files{$key} = "$dir".q|node14.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.08/; +$ref_files{$key} = "$dir".q|node14.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect3.sampling/; +$ref_files{$key} = "$dir".q|node41.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.06/; +$ref_files{$key} = "$dir".q|node29.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect10.spectra/; +$ref_files{$key} = "$dir".q|node188.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.10/; +$ref_files{$key} = "$dir".q|node16.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-smith03/; +$ref_files{$key} = "$dir".q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect6.pulse/; +$ref_files{$key} = "$dir".q|node91.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect4.curved/; +$ref_files{$key} = "$dir".q|node60.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.05/; +$ref_files{$key} = "$dir".q|node43.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.25/; +$ref_files{$key} = "$dir".q|node152.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-puckette95b/; +$ref_files{$key} = "$dir".q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.08/; +$ref_files{$key} = "$dir".q|node64.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.06/; +$ref_files{$key} = "$dir".q|node191.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.19/; +$ref_files{$key} = "$dir".q|node72.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.22/; +$ref_files{$key} = "$dir".q|node115.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.05/; +$ref_files{$key} = "$dir".q|node78.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.13/; +$ref_files{$key} = "$dir".q|node69.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.03/; +$ref_files{$key} = "$dir".q|node27.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.02/; +$ref_files{$key} = "$dir".q|node106.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-puckette05/; +$ref_files{$key} = "$dir".q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.18/; +$ref_files{$key} = "$dir".q|node101.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.12/; +$ref_files{$key} = "$dir".q|node198.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.05/; +$ref_files{$key} = "$dir".q|node187.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.31/; +$ref_files{$key} = "$dir".q|node124.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.10/; +$ref_files{$key} = "$dir".q|node30.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect6.model/; +$ref_files{$key} = "$dir".q|node90.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect9.phaserelationship/; +$ref_files{$key} = "$dir".q|node176.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.02/; +$ref_files{$key} = "$dir".q|node42.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.14/; +$ref_files{$key} = "$dir".q|node86.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.08/; +$ref_files{$key} = "$dir".q|node79.html|; +$noresave{$key} = "$nosave"; + +$key = q/chapter-fft/; +$ref_files{$key} = "$dir".q|node163.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect2.example.loop/; +$ref_files{$key} = "$dir".q|node36.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.20/; +$ref_files{$key} = "$dir".q|node115.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect8.heterodyning/; +$ref_files{$key} = "$dir".q|node158.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.08/; +$ref_files{$key} = "$dir".q|node173.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect5.chebychev/; +$ref_files{$key} = "$dir".q|node84.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.13/; +$ref_files{$key} = "$dir".q|node51.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.06/; +$ref_files{$key} = "$dir".q|node78.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect7.phase/; +$ref_files{$key} = "$dir".q|node107.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.09/; +$ref_files{$key} = "$dir".q|node65.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect8.recirculating/; +$ref_files{$key} = "$dir".q|node135.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect4.polyphony/; +$ref_files{$key} = "$dir".q|node64.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect7.pitchshift/; +$ref_files{$key} = "$dir".q|node115.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.17/; +$ref_files{$key} = "$dir".q|node101.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.06/; +$ref_files{$key} = "$dir".q|node108.html|; +$noresave{$key} = "$nosave"; + +$key = q/eq-cosinemultiplication/; +$ref_files{$key} = "$dir".q|node77.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-mathews69/; +$ref_files{$key} = "$dir".q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect9.phase/; +$ref_files{$key} = "$dir".q|node175.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.01/; +$ref_files{$key} = "$dir".q|node59.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.13/; +$ref_files{$key} = "$dir".q|node177.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect7.complex/; +$ref_files{$key} = "$dir".q|node105.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.26/; +$ref_files{$key} = "$dir".q|node120.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.27/; +$ref_files{$key} = "$dir".q|node120.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect2.enveloping/; +$ref_files{$key} = "$dir".q|node29.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect08.subtractive/; +$ref_files{$key} = "$dir".q|node152.html|; +$noresave{$key} = "$nosave"; + +$key = q/chapter-wavetable/; +$ref_files{$key} = "$dir".q|node26.html|; +$noresave{$key} = "$nosave"; + +$key = q/chapter-paf/; +$ref_files{$key} = "$dir".q|node89.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-blesser01/; +$ref_files{$key} = "$dir".q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.09/; +$ref_files{$key} = "$dir".q|node14.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.10/; +$ref_files{$key} = "$dir".q|node109.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.02/; +$ref_files{$key} = "$dir".q|node186.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.14/; +$ref_files{$key} = "$dir".q|node199.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect7.psformula/; +$ref_files{$key} = "$dir".q|node115.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.01/; +$ref_files{$key} = "$dir".q|node41.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.17/; +$ref_files{$key} = "$dir".q|node113.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.01/; +$ref_files{$key} = "$dir".q|node7.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.14/; +$ref_files{$key} = "$dir".q|node179.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-schottstaedt87/; +$ref_files{$key} = "$dir".q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.12/; +$ref_files{$key} = "$dir".q|node110.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect1.combine/; +$ref_files{$key} = "$dir".q|node13.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect4.adsr/; +$ref_files{$key} = "$dir".q|node59.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect5.FM/; +$ref_files{$key} = "$dir".q|node79.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.10/; +$ref_files{$key} = "$dir".q|node65.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.02/; +$ref_files{$key} = "$dir".q|node90.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-rossing02/; +$ref_files{$key} = "$dir".q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.13/; +$ref_files{$key} = "$dir".q|node34.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect5.ringmod/; +$ref_files{$key} = "$dir".q|node77.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-mitra93/; +$ref_files{$key} = "$dir".q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.11/; +$ref_files{$key} = "$dir".q|node31.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.12/; +$ref_files{$key} = "$dir".q|node98.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.03/; +$ref_files{$key} = "$dir".q|node130.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect1.amplitude/; +$ref_files{$key} = "$dir".q|node8.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.13/; +$ref_files{$key} = "$dir".q|node85.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-hartmann87/; +$ref_files{$key} = "$dir".q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect8.peaking/; +$ref_files{$key} = "$dir".q|node144.html|; +$noresave{$key} = "$nosave"; + +$key = q/eq.momentarydel/; +$ref_files{$key} = "$dir".q|node113.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.14/; +$ref_files{$key} = "$dir".q|node69.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.04/; +$ref_files{$key} = "$dir".q|node60.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.13/; +$ref_files{$key} = "$dir".q|node141.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.07/; +$ref_files{$key} = "$dir".q|node133.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect5.example.fm/; +$ref_files{$key} = "$dir".q|node87.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-dodge85/; +$ref_files{$key} = "$dir".q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.10/; +$ref_files{$key} = "$dir".q|node196.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.09/; +$ref_files{$key} = "$dir".q|node133.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect8.shelving/; +$ref_files{$key} = "$dir".q|node142.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect08.highpass/; +$ref_files{$key} = "$dir".q|node141.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-boulanger00/; +$ref_files{$key} = "$dir".q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-karplus83/; +$ref_files{$key} = "$dir".q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.07/; +$ref_files{$key} = "$dir".q|node46.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.16/; +$ref_files{$key} = "$dir".q|node144.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect6.paf/; +$ref_files{$key} = "$dir".q|node96.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.24/; +$ref_files{$key} = "$dir".q|node152.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-puckette01a/; +$ref_files{$key} = "$dir".q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.07/; +$ref_files{$key} = "$dir".q|node192.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.07/; +$ref_files{$key} = "$dir".q|node29.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.16/; +$ref_files{$key} = "$dir".q|node87.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.18/; +$ref_files{$key} = "$dir".q|node72.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect4.declick/; +$ref_files{$key} = "$dir".q|node61.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.15/; +$ref_files{$key} = "$dir".q|node179.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect3.analog/; +$ref_files{$key} = "$dir".q|node47.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.08/; +$ref_files{$key} = "$dir".q|node96.html|; +$noresave{$key} = "$nosave"; + +$key = q/r-intervals/; +$ref_files{$key} = "$dir".q|node14.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.07/; +$ref_files{$key} = "$dir".q|node172.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect8.bandpassdef/; +$ref_files{$key} = "$dir".q|node130.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect08.low-pass/; +$ref_files{$key} = "$dir".q|node140.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.05/; +$ref_files{$key} = "$dir".q|node62.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.17/; +$ref_files{$key} = "$dir".q|node71.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.06/; +$ref_files{$key} = "$dir".q|node45.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.21/; +$ref_files{$key} = "$dir".q|node115.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.13/; +$ref_files{$key} = "$dir".q|node23.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.11/; +$ref_files{$key} = "$dir".q|node67.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.04/; +$ref_files{$key} = "$dir".q|node27.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.18/; +$ref_files{$key} = "$dir".q|node114.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.14/; +$ref_files{$key} = "$dir".q|node53.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-parks87/; +$ref_files{$key} = "$dir".q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.11/; +$ref_files{$key} = "$dir".q|node96.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.16/; +$ref_files{$key} = "$dir".q|node100.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.28/; +$ref_files{$key} = "$dir".q|node121.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect1.examples/; +$ref_files{$key} = "$dir".q|node18.html|; +$noresave{$key} = "$nosave"; + +$key = q/chapter-filter/; +$ref_files{$key} = "$dir".q|node127.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.03/; +$ref_files{$key} = "$dir".q|node77.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-lebrun79/; +$ref_files{$key} = "$dir".q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.03/; +$ref_files{$key} = "$dir".q|node187.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.03/; +$ref_files{$key} = "$dir".q|node170.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.09/; +$ref_files{$key} = "$dir".q|node196.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.08/; +$ref_files{$key} = "$dir".q|node194.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-ballora03/; +$ref_files{$key} = "$dir".q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.28/; +$ref_files{$key} = "$dir".q|node156.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect7-fractional/; +$ref_files{$key} = "$dir".q|node113.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.07/; +$ref_files{$key} = "$dir".q|node78.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.17/; +$ref_files{$key} = "$dir".q|node145.html|; +$noresave{$key} = "$nosave"; + +$key = q/eq-pitchmidi/; +$ref_files{$key} = "$dir".q|node11.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.23/; +$ref_files{$key} = "$dir".q|node117.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.13/; +$ref_files{$key} = "$dir".q|node110.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect2.transpositionformula/; +$ref_files{$key} = "$dir".q|node28.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-risset69/; +$ref_files{$key} = "$dir".q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.03/; +$ref_files{$key} = "$dir".q|node9.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.18/; +$ref_files{$key} = "$dir".q|node182.html|; +$noresave{$key} = "$nosave"; + +$key = q/chapter-delay/; +$ref_files{$key} = "$dir".q|node104.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-strange72/; +$ref_files{$key} = "$dir".q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.06/; +$ref_files{$key} = "$dir".q|node171.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-moore90/; +$ref_files{$key} = "$dir".q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.06/; +$ref_files{$key} = "$dir".q|node131.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.05/; +$ref_files{$key} = "$dir".q|node94.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect2.stretching/; +$ref_files{$key} = "$dir".q|node30.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect4.voicealloc/; +$ref_files{$key} = "$dir".q|node65.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-roads01/; +$ref_files{$key} = "$dir".q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.02/; +$ref_files{$key} = "$dir".q|node8.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect1.ex.3/; +$ref_files{$key} = "$dir".q|node21.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.01/; +$ref_files{$key} = "$dir".q|node184.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.06/; +$ref_files{$key} = "$dir".q|node12.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.10/; +$ref_files{$key} = "$dir".q|node175.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect2.momentaryformula/; +$ref_files{$key} = "$dir".q|node28.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.32/; +$ref_files{$key} = "$dir".q|node160.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.23/; +$ref_files{$key} = "$dir".q|node150.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-steiglitz96/; +$ref_files{$key} = "$dir".q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.02/; +$ref_files{$key} = "$dir".q|node129.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.09/; +$ref_files{$key} = "$dir".q|node109.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect5.octave/; +$ref_files{$key} = "$dir".q|node82.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.08/; +$ref_files{$key} = "$dir".q|node29.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.15/; +$ref_files{$key} = "$dir".q|node55.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.12/; +$ref_files{$key} = "$dir".q|node84.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.11/; +$ref_files{$key} = "$dir".q|node48.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.03/; +$ref_files{$key} = "$dir".q|node43.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.11/; +$ref_files{$key} = "$dir".q|node196.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.03/; +$ref_files{$key} = "$dir".q|node60.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.20/; +$ref_files{$key} = "$dir".q|node73.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.02/; +$ref_files{$key} = "$dir".q|node168.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.30/; +$ref_files{$key} = "$dir".q|node158.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect8.nonrecirculating/; +$ref_files{$key} = "$dir".q|node133.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect2.sampling/; +$ref_files{$key} = "$dir".q|node28.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.01/; +$ref_files{$key} = "$dir".q|node89.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.14/; +$ref_files{$key} = "$dir".q|node142.html|; +$noresave{$key} = "$nosave"; + +1; + diff --git a/labels.pl b/labels.pl new file mode 100644 index 0000000..afd3619 --- /dev/null +++ b/labels.pl @@ -0,0 +1,2441 @@ +# LaTeX2HTML 2002-2-1 (1.71) +# Associate labels original text with physical files. + + +$key = q/eq-realsinusoid/; +$external_labels{$key} = "$URL/" . q|node7.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.12/; +$external_labels{$key} = "$URL/" . q|node20.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.09/; +$external_labels{$key} = "$URL/" . q|node96.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect2.example.overlap/; +$external_labels{$key} = "$URL/" . q|node37.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect3.noloopsampler/; +$external_labels{$key} = "$URL/" . q|node53.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-chowning73/; +$external_labels{$key} = "$URL/" . q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-strawn85/; +$external_labels{$key} = "$URL/" . q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.04/; +$external_labels{$key} = "$URL/" . q|node10.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.11/; +$external_labels{$key} = "$URL/" . q|node175.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.15/; +$external_labels{$key} = "$URL/" . q|node99.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect8.secondform/; +$external_labels{$key} = "$URL/" . q|node134.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-lebrun77/; +$external_labels{$key} = "$URL/" . q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.18/; +$external_labels{$key} = "$URL/" . q|node145.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-dolson97/; +$external_labels{$key} = "$URL/" . q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.14/; +$external_labels{$key} = "$URL/" . q|node110.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-chowning89/; +$external_labels{$key} = "$URL/" . q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect9.shift/; +$external_labels{$key} = "$URL/" . q|node169.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect8.envelopefollower/; +$external_labels{$key} = "$URL/" . q|node153.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.08/; +$external_labels{$key} = "$URL/" . q|node109.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.20/; +$external_labels{$key} = "$URL/" . q|node147.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.22/; +$external_labels{$key} = "$URL/" . q|node149.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.10/; +$external_labels{$key} = "$URL/" . q|node96.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.14/; +$external_labels{$key} = "$URL/" . q|node35.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.04/; +$external_labels{$key} = "$URL/" . q|node108.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.07/; +$external_labels{$key} = "$URL/" . q|node95.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.24/; +$external_labels{$key} = "$URL/" . q|node118.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.15/; +$external_labels{$key} = "$URL/" . q|node70.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.19/; +$external_labels{$key} = "$URL/" . q|node115.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect5.waveshaping/; +$external_labels{$key} = "$URL/" . q|node78.html|; +$noresave{$key} = "$nosave"; + +$key = q/sec1.triad/; +$external_labels{$key} = "$URL/" . q|node22.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.03/; +$external_labels{$key} = "$URL/" . q|node90.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.29/; +$external_labels{$key} = "$URL/" . q|node157.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.29/; +$external_labels{$key} = "$URL/" . q|node122.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.01/; +$external_labels{$key} = "$URL/" . q|node26.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.11/; +$external_labels{$key} = "$URL/" . q|node83.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect6.carrier/; +$external_labels{$key} = "$URL/" . q|node95.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.06/; +$external_labels{$key} = "$URL/" . q|node63.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect5.bessel/; +$external_labels{$key} = "$URL/" . q|node86.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.12/; +$external_labels{$key} = "$URL/" . q|node33.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.07/; +$external_labels{$key} = "$URL/" . q|node12.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.05/; +$external_labels{$key} = "$URL/" . q|node28.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect5-spectra/; +$external_labels{$key} = "$URL/" . q|node76.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect4.tags/; +$external_labels{$key} = "$URL/" . q|node66.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect3.control/; +$external_labels{$key} = "$URL/" . q|node42.html|; +$noresave{$key} = "$nosave"; + +$key = q/chapter-modulation/; +$external_labels{$key} = "$URL/" . q|node75.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.02/; +$external_labels{$key} = "$URL/" . q|node59.html|; +$noresave{$key} = "$nosave"; + +$key = q/tab02.1/; +$external_labels{$key} = "$URL/" . q|node31.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect7.network/; +$external_labels{$key} = "$URL/" . q|node108.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.19/; +$external_labels{$key} = "$URL/" . q|node146.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.05/; +$external_labels{$key} = "$URL/" . q|node131.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.15/; +$external_labels{$key} = "$URL/" . q|node36.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.33/; +$external_labels{$key} = "$URL/" . q|node161.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.04/; +$external_labels{$key} = "$URL/" . q|node77.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.11/; +$external_labels{$key} = "$URL/" . q|node19.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.30/; +$external_labels{$key} = "$URL/" . q|node123.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.10/; +$external_labels{$key} = "$URL/" . q|node134.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.16/; +$external_labels{$key} = "$URL/" . q|node56.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.04/; +$external_labels{$key} = "$URL/" . q|node93.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect4.encapsulation/; +$external_labels{$key} = "$URL/" . q|node67.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.15/; +$external_labels{$key} = "$URL/" . q|node111.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.21/; +$external_labels{$key} = "$URL/" . q|node73.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.05/; +$external_labels{$key} = "$URL/" . q|node171.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.01/; +$external_labels{$key} = "$URL/" . q|node127.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.15/; +$external_labels{$key} = "$URL/" . q|node24.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect8.twopolebandpass/; +$external_labels{$key} = "$URL/" . q|node143.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect9-IFT/; +$external_labels{$key} = "$URL/" . q|node166.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.02/; +$external_labels{$key} = "$URL/" . q|node26.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.09/; +$external_labels{$key} = "$URL/" . q|node81.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.12/; +$external_labels{$key} = "$URL/" . q|node49.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-chamberlin80/; +$external_labels{$key} = "$URL/" . q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.17/; +$external_labels{$key} = "$URL/" . q|node181.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-puckette95a/; +$external_labels{$key} = "$URL/" . q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.11/; +$external_labels{$key} = "$URL/" . q|node135.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.01/; +$external_labels{$key} = "$URL/" . q|node168.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect2.interpolation/; +$external_labels{$key} = "$URL/" . q|node31.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.09/; +$external_labels{$key} = "$URL/" . q|node47.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.12/; +$external_labels{$key} = "$URL/" . q|node69.html|; +$noresave{$key} = "$nosave"; + +$key = q/eq-waveshaping/; +$external_labels{$key} = "$URL/" . q|node78.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.04/; +$external_labels{$key} = "$URL/" . q|node187.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.27/; +$external_labels{$key} = "$URL/" . q|node153.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.07/; +$external_labels{$key} = "$URL/" . q|node63.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.01/; +$external_labels{$key} = "$URL/" . q|node76.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.01/; +$external_labels{$key} = "$URL/" . q|node105.html|; +$noresave{$key} = "$nosave"; + +$key = q/chapter-fourier/; +$external_labels{$key} = "$URL/" . q|node163.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect7.recirculatingcomb/; +$external_labels{$key} = "$URL/" . q|node109.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.16/; +$external_labels{$key} = "$URL/" . q|node71.html|; +$noresave{$key} = "$nosave"; + +$key = q/pdpack/; +$external_labels{$key} = "$URL/" . q|node34.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.03/; +$external_labels{$key} = "$URL/" . q|node108.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.06/; +$external_labels{$key} = "$URL/" . q|node94.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.07/; +$external_labels{$key} = "$URL/" . q|node109.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.32/; +$external_labels{$key} = "$URL/" . q|node124.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect2.oscillator/; +$external_labels{$key} = "$URL/" . q|node27.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.13/; +$external_labels{$key} = "$URL/" . q|node198.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.26/; +$external_labels{$key} = "$URL/" . q|node153.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect8.timevarying/; +$external_labels{$key} = "$URL/" . q|node148.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect5.example.expon/; +$external_labels{$key} = "$URL/" . q|node85.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.14/; +$external_labels{$key} = "$URL/" . q|node99.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.04/; +$external_labels{$key} = "$URL/" . q|node43.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.10/; +$external_labels{$key} = "$URL/" . q|node48.html|; +$noresave{$key} = "$nosave"; + +$key = q/chapter-waveforms/; +$external_labels{$key} = "$URL/" . q|node184.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.16/; +$external_labels{$key} = "$URL/" . q|node180.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect8.equalizing/; +$external_labels{$key} = "$URL/" . q|node131.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect1.synth/; +$external_labels{$key} = "$URL/" . q|node12.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect4.muting/; +$external_labels{$key} = "$URL/" . q|node62.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.15/; +$external_labels{$key} = "$URL/" . q|node143.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.09/; +$external_labels{$key} = "$URL/" . q|node174.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.12/; +$external_labels{$key} = "$URL/" . q|node175.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.11/; +$external_labels{$key} = "$URL/" . q|node110.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.15/; +$external_labels{$key} = "$URL/" . q|node87.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.25/; +$external_labels{$key} = "$URL/" . q|node119.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.16/; +$external_labels{$key} = "$URL/" . q|node112.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.31/; +$external_labels{$key} = "$URL/" . q|node159.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect9-bash/; +$external_labels{$key} = "$URL/" . q|node177.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.05/; +$external_labels{$key} = "$URL/" . q|node108.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.21/; +$external_labels{$key} = "$URL/" . q|node148.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.09/; +$external_labels{$key} = "$URL/" . q|node30.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect10.gentriangle/; +$external_labels{$key} = "$URL/" . q|node192.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.13/; +$external_labels{$key} = "$URL/" . q|node98.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.14/; +$external_labels{$key} = "$URL/" . q|node24.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.04/; +$external_labels{$key} = "$URL/" . q|node130.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.02/; +$external_labels{$key} = "$URL/" . q|node77.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.33/; +$external_labels{$key} = "$URL/" . q|node125.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.16/; +$external_labels{$key} = "$URL/" . q|node37.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.08/; +$external_labels{$key} = "$URL/" . q|node133.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect3.controlstreams/; +$external_labels{$key} = "$URL/" . q|node43.html|; +$noresave{$key} = "$nosave"; + +$key = q/eq-meanpowersum/; +$external_labels{$key} = "$URL/" . q|node13.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-grey77/; +$external_labels{$key} = "$URL/" . q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.10/; +$external_labels{$key} = "$URL/" . q|node82.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect1.fourier/; +$external_labels{$key} = "$URL/" . q|node14.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.04/; +$external_labels{$key} = "$URL/" . q|node170.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.12/; +$external_labels{$key} = "$URL/" . q|node140.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect8.singlesideband/; +$external_labels{$key} = "$URL/" . q|node154.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.08/; +$external_labels{$key} = "$URL/" . q|node47.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.05/; +$external_labels{$key} = "$URL/" . q|node12.html|; +$noresave{$key} = "$nosave"; + +$key = q/eq-fourierseries/; +$external_labels{$key} = "$URL/" . q|node14.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.08/; +$external_labels{$key} = "$URL/" . q|node14.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect3.sampling/; +$external_labels{$key} = "$URL/" . q|node41.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.06/; +$external_labels{$key} = "$URL/" . q|node29.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect10.spectra/; +$external_labels{$key} = "$URL/" . q|node188.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.10/; +$external_labels{$key} = "$URL/" . q|node16.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-smith03/; +$external_labels{$key} = "$URL/" . q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect6.pulse/; +$external_labels{$key} = "$URL/" . q|node91.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect4.curved/; +$external_labels{$key} = "$URL/" . q|node60.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.05/; +$external_labels{$key} = "$URL/" . q|node43.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.25/; +$external_labels{$key} = "$URL/" . q|node152.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-puckette95b/; +$external_labels{$key} = "$URL/" . q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.08/; +$external_labels{$key} = "$URL/" . q|node64.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.06/; +$external_labels{$key} = "$URL/" . q|node191.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.19/; +$external_labels{$key} = "$URL/" . q|node72.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.22/; +$external_labels{$key} = "$URL/" . q|node115.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.05/; +$external_labels{$key} = "$URL/" . q|node78.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.13/; +$external_labels{$key} = "$URL/" . q|node69.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.03/; +$external_labels{$key} = "$URL/" . q|node27.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.02/; +$external_labels{$key} = "$URL/" . q|node106.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-puckette05/; +$external_labels{$key} = "$URL/" . q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.18/; +$external_labels{$key} = "$URL/" . q|node101.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.12/; +$external_labels{$key} = "$URL/" . q|node198.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.05/; +$external_labels{$key} = "$URL/" . q|node187.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.31/; +$external_labels{$key} = "$URL/" . q|node124.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.10/; +$external_labels{$key} = "$URL/" . q|node30.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect6.model/; +$external_labels{$key} = "$URL/" . q|node90.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect9.phaserelationship/; +$external_labels{$key} = "$URL/" . q|node176.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.02/; +$external_labels{$key} = "$URL/" . q|node42.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.14/; +$external_labels{$key} = "$URL/" . q|node86.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.08/; +$external_labels{$key} = "$URL/" . q|node79.html|; +$noresave{$key} = "$nosave"; + +$key = q/chapter-fft/; +$external_labels{$key} = "$URL/" . q|node163.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect2.example.loop/; +$external_labels{$key} = "$URL/" . q|node36.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.20/; +$external_labels{$key} = "$URL/" . q|node115.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect8.heterodyning/; +$external_labels{$key} = "$URL/" . q|node158.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.08/; +$external_labels{$key} = "$URL/" . q|node173.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect5.chebychev/; +$external_labels{$key} = "$URL/" . q|node84.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.13/; +$external_labels{$key} = "$URL/" . q|node51.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.06/; +$external_labels{$key} = "$URL/" . q|node78.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect7.phase/; +$external_labels{$key} = "$URL/" . q|node107.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.09/; +$external_labels{$key} = "$URL/" . q|node65.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect8.recirculating/; +$external_labels{$key} = "$URL/" . q|node135.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect4.polyphony/; +$external_labels{$key} = "$URL/" . q|node64.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect7.pitchshift/; +$external_labels{$key} = "$URL/" . q|node115.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.17/; +$external_labels{$key} = "$URL/" . q|node101.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.06/; +$external_labels{$key} = "$URL/" . q|node108.html|; +$noresave{$key} = "$nosave"; + +$key = q/eq-cosinemultiplication/; +$external_labels{$key} = "$URL/" . q|node77.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-mathews69/; +$external_labels{$key} = "$URL/" . q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect9.phase/; +$external_labels{$key} = "$URL/" . q|node175.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.01/; +$external_labels{$key} = "$URL/" . q|node59.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.13/; +$external_labels{$key} = "$URL/" . q|node177.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect7.complex/; +$external_labels{$key} = "$URL/" . q|node105.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.26/; +$external_labels{$key} = "$URL/" . q|node120.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.27/; +$external_labels{$key} = "$URL/" . q|node120.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect2.enveloping/; +$external_labels{$key} = "$URL/" . q|node29.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect08.subtractive/; +$external_labels{$key} = "$URL/" . q|node152.html|; +$noresave{$key} = "$nosave"; + +$key = q/chapter-wavetable/; +$external_labels{$key} = "$URL/" . q|node26.html|; +$noresave{$key} = "$nosave"; + +$key = q/chapter-paf/; +$external_labels{$key} = "$URL/" . q|node89.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-blesser01/; +$external_labels{$key} = "$URL/" . q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.09/; +$external_labels{$key} = "$URL/" . q|node14.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.10/; +$external_labels{$key} = "$URL/" . q|node109.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.02/; +$external_labels{$key} = "$URL/" . q|node186.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.14/; +$external_labels{$key} = "$URL/" . q|node199.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect7.psformula/; +$external_labels{$key} = "$URL/" . q|node115.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.01/; +$external_labels{$key} = "$URL/" . q|node41.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.17/; +$external_labels{$key} = "$URL/" . q|node113.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.01/; +$external_labels{$key} = "$URL/" . q|node7.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.14/; +$external_labels{$key} = "$URL/" . q|node179.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-schottstaedt87/; +$external_labels{$key} = "$URL/" . q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.12/; +$external_labels{$key} = "$URL/" . q|node110.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect1.combine/; +$external_labels{$key} = "$URL/" . q|node13.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect4.adsr/; +$external_labels{$key} = "$URL/" . q|node59.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect5.FM/; +$external_labels{$key} = "$URL/" . q|node79.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.10/; +$external_labels{$key} = "$URL/" . q|node65.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.02/; +$external_labels{$key} = "$URL/" . q|node90.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-rossing02/; +$external_labels{$key} = "$URL/" . q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.13/; +$external_labels{$key} = "$URL/" . q|node34.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect5.ringmod/; +$external_labels{$key} = "$URL/" . q|node77.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-mitra93/; +$external_labels{$key} = "$URL/" . q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.11/; +$external_labels{$key} = "$URL/" . q|node31.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.12/; +$external_labels{$key} = "$URL/" . q|node98.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.03/; +$external_labels{$key} = "$URL/" . q|node130.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect1.amplitude/; +$external_labels{$key} = "$URL/" . q|node8.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.13/; +$external_labels{$key} = "$URL/" . q|node85.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-hartmann87/; +$external_labels{$key} = "$URL/" . q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect8.peaking/; +$external_labels{$key} = "$URL/" . q|node144.html|; +$noresave{$key} = "$nosave"; + +$key = q/eq.momentarydel/; +$external_labels{$key} = "$URL/" . q|node113.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.14/; +$external_labels{$key} = "$URL/" . q|node69.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.04/; +$external_labels{$key} = "$URL/" . q|node60.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.13/; +$external_labels{$key} = "$URL/" . q|node141.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.07/; +$external_labels{$key} = "$URL/" . q|node133.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect5.example.fm/; +$external_labels{$key} = "$URL/" . q|node87.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-dodge85/; +$external_labels{$key} = "$URL/" . q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.10/; +$external_labels{$key} = "$URL/" . q|node196.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.09/; +$external_labels{$key} = "$URL/" . q|node133.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect8.shelving/; +$external_labels{$key} = "$URL/" . q|node142.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect08.highpass/; +$external_labels{$key} = "$URL/" . q|node141.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-boulanger00/; +$external_labels{$key} = "$URL/" . q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-karplus83/; +$external_labels{$key} = "$URL/" . q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.07/; +$external_labels{$key} = "$URL/" . q|node46.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.16/; +$external_labels{$key} = "$URL/" . q|node144.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect6.paf/; +$external_labels{$key} = "$URL/" . q|node96.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.24/; +$external_labels{$key} = "$URL/" . q|node152.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-puckette01a/; +$external_labels{$key} = "$URL/" . q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.07/; +$external_labels{$key} = "$URL/" . q|node192.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.07/; +$external_labels{$key} = "$URL/" . q|node29.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.16/; +$external_labels{$key} = "$URL/" . q|node87.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.18/; +$external_labels{$key} = "$URL/" . q|node72.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect4.declick/; +$external_labels{$key} = "$URL/" . q|node61.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.15/; +$external_labels{$key} = "$URL/" . q|node179.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect3.analog/; +$external_labels{$key} = "$URL/" . q|node47.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.08/; +$external_labels{$key} = "$URL/" . q|node96.html|; +$noresave{$key} = "$nosave"; + +$key = q/r-intervals/; +$external_labels{$key} = "$URL/" . q|node14.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.07/; +$external_labels{$key} = "$URL/" . q|node172.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect8.bandpassdef/; +$external_labels{$key} = "$URL/" . q|node130.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect08.low-pass/; +$external_labels{$key} = "$URL/" . q|node140.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.05/; +$external_labels{$key} = "$URL/" . q|node62.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.17/; +$external_labels{$key} = "$URL/" . q|node71.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.06/; +$external_labels{$key} = "$URL/" . q|node45.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.21/; +$external_labels{$key} = "$URL/" . q|node115.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.13/; +$external_labels{$key} = "$URL/" . q|node23.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.11/; +$external_labels{$key} = "$URL/" . q|node67.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.04/; +$external_labels{$key} = "$URL/" . q|node27.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.18/; +$external_labels{$key} = "$URL/" . q|node114.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.14/; +$external_labels{$key} = "$URL/" . q|node53.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-parks87/; +$external_labels{$key} = "$URL/" . q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.11/; +$external_labels{$key} = "$URL/" . q|node96.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.16/; +$external_labels{$key} = "$URL/" . q|node100.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.28/; +$external_labels{$key} = "$URL/" . q|node121.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect1.examples/; +$external_labels{$key} = "$URL/" . q|node18.html|; +$noresave{$key} = "$nosave"; + +$key = q/chapter-filter/; +$external_labels{$key} = "$URL/" . q|node127.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.03/; +$external_labels{$key} = "$URL/" . q|node77.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-lebrun79/; +$external_labels{$key} = "$URL/" . q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.03/; +$external_labels{$key} = "$URL/" . q|node187.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.03/; +$external_labels{$key} = "$URL/" . q|node170.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.09/; +$external_labels{$key} = "$URL/" . q|node196.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.08/; +$external_labels{$key} = "$URL/" . q|node194.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-ballora03/; +$external_labels{$key} = "$URL/" . q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.28/; +$external_labels{$key} = "$URL/" . q|node156.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect7-fractional/; +$external_labels{$key} = "$URL/" . q|node113.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.07/; +$external_labels{$key} = "$URL/" . q|node78.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.17/; +$external_labels{$key} = "$URL/" . q|node145.html|; +$noresave{$key} = "$nosave"; + +$key = q/eq-pitchmidi/; +$external_labels{$key} = "$URL/" . q|node11.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.23/; +$external_labels{$key} = "$URL/" . q|node117.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.13/; +$external_labels{$key} = "$URL/" . q|node110.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect2.transpositionformula/; +$external_labels{$key} = "$URL/" . q|node28.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-risset69/; +$external_labels{$key} = "$URL/" . q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.03/; +$external_labels{$key} = "$URL/" . q|node9.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.18/; +$external_labels{$key} = "$URL/" . q|node182.html|; +$noresave{$key} = "$nosave"; + +$key = q/chapter-delay/; +$external_labels{$key} = "$URL/" . q|node104.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-strange72/; +$external_labels{$key} = "$URL/" . q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.06/; +$external_labels{$key} = "$URL/" . q|node171.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-moore90/; +$external_labels{$key} = "$URL/" . q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.06/; +$external_labels{$key} = "$URL/" . q|node131.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.05/; +$external_labels{$key} = "$URL/" . q|node94.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect2.stretching/; +$external_labels{$key} = "$URL/" . q|node30.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect4.voicealloc/; +$external_labels{$key} = "$URL/" . q|node65.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-roads01/; +$external_labels{$key} = "$URL/" . q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.02/; +$external_labels{$key} = "$URL/" . q|node8.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect1.ex.3/; +$external_labels{$key} = "$URL/" . q|node21.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.01/; +$external_labels{$key} = "$URL/" . q|node184.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.06/; +$external_labels{$key} = "$URL/" . q|node12.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.10/; +$external_labels{$key} = "$URL/" . q|node175.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect2.momentaryformula/; +$external_labels{$key} = "$URL/" . q|node28.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.32/; +$external_labels{$key} = "$URL/" . q|node160.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.23/; +$external_labels{$key} = "$URL/" . q|node150.html|; +$noresave{$key} = "$nosave"; + +$key = q/cite_r-steiglitz96/; +$external_labels{$key} = "$URL/" . q|node202.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.02/; +$external_labels{$key} = "$URL/" . q|node129.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.09/; +$external_labels{$key} = "$URL/" . q|node109.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect5.octave/; +$external_labels{$key} = "$URL/" . q|node82.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.08/; +$external_labels{$key} = "$URL/" . q|node29.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.15/; +$external_labels{$key} = "$URL/" . q|node55.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.12/; +$external_labels{$key} = "$URL/" . q|node84.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.11/; +$external_labels{$key} = "$URL/" . q|node48.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.03/; +$external_labels{$key} = "$URL/" . q|node43.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.11/; +$external_labels{$key} = "$URL/" . q|node196.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.03/; +$external_labels{$key} = "$URL/" . q|node60.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.20/; +$external_labels{$key} = "$URL/" . q|node73.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.02/; +$external_labels{$key} = "$URL/" . q|node168.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.30/; +$external_labels{$key} = "$URL/" . q|node158.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect8.nonrecirculating/; +$external_labels{$key} = "$URL/" . q|node133.html|; +$noresave{$key} = "$nosave"; + +$key = q/sect2.sampling/; +$external_labels{$key} = "$URL/" . q|node28.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.01/; +$external_labels{$key} = "$URL/" . q|node89.html|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.14/; +$external_labels{$key} = "$URL/" . q|node142.html|; +$noresave{$key} = "$nosave"; + +1; + + +# LaTeX2HTML 2002-2-1 (1.71) +# labels from external_latex_labels array. + + +$key = q/eq-realsinusoid/; +$external_latex_labels{$key} = q|1|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.12/; +$external_latex_labels{$key} = q|1.12|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.09/; +$external_latex_labels{$key} = q|6.9|; +$noresave{$key} = "$nosave"; + +$key = q/sect2.example.overlap/; +$external_latex_labels{$key} = q|2.6|; +$noresave{$key} = "$nosave"; + +$key = q/sect3.noloopsampler/; +$external_latex_labels{$key} = q|3.10|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.04/; +$external_latex_labels{$key} = q|1.4|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.11/; +$external_latex_labels{$key} = q|9.11|; +$noresave{$key} = "$nosave"; + +$key = q/sect8.secondform/; +$external_latex_labels{$key} = q|8.2.2|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.15/; +$external_latex_labels{$key} = q|6.16|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.18/; +$external_latex_labels{$key} = q|8.18|; +$noresave{$key} = "$nosave"; + +$key = q/sect9.shift/; +$external_latex_labels{$key} = q|9.2.2|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.14/; +$external_latex_labels{$key} = q|7.14|; +$noresave{$key} = "$nosave"; + +$key = q/sect8.envelopefollower/; +$external_latex_labels{$key} = q|8.4.2|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.20/; +$external_latex_labels{$key} = q|8.20|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.08/; +$external_latex_labels{$key} = q|7.8|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.22/; +$external_latex_labels{$key} = q|8.22|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.10/; +$external_latex_labels{$key} = q|6.10|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.14/; +$external_latex_labels{$key} = q|2.14|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.04/; +$external_latex_labels{$key} = q|7.4|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.07/; +$external_latex_labels{$key} = q|6.7|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.24/; +$external_latex_labels{$key} = q|7.24|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.15/; +$external_latex_labels{$key} = q|4.15|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.19/; +$external_latex_labels{$key} = q|7.19|; +$noresave{$key} = "$nosave"; + +$key = q/sect5.waveshaping/; +$external_latex_labels{$key} = q|5.3|; +$noresave{$key} = "$nosave"; + +$key = q/sec1.triad/; +$external_latex_labels{$key} = q|1.9|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.29/; +$external_latex_labels{$key} = q|8.29|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.29/; +$external_latex_labels{$key} = q|7.29|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.03/; +$external_latex_labels{$key} = q|6.3|; +$noresave{$key} = "$nosave"; + +$key = q/sect6.carrier/; +$external_latex_labels{$key} = q|6.3|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.11/; +$external_latex_labels{$key} = q|5.11|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.01/; +$external_latex_labels{$key} = q|2.1|; +$noresave{$key} = "$nosave"; + +$key = q/sect5.bessel/; +$external_latex_labels{$key} = q|5.5|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.06/; +$external_latex_labels{$key} = q|4.6|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.12/; +$external_latex_labels{$key} = q|2.12|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.07/; +$external_latex_labels{$key} = q|1.7|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.05/; +$external_latex_labels{$key} = q|2.5|; +$noresave{$key} = "$nosave"; + +$key = q/sect5-spectra/; +$external_latex_labels{$key} = q|5.1|; +$noresave{$key} = "$nosave"; + +$key = q/sect4.tags/; +$external_latex_labels{$key} = q|4.6|; +$noresave{$key} = "$nosave"; + +$key = q/sect3.control/; +$external_latex_labels{$key} = q|3.2|; +$noresave{$key} = "$nosave"; + +$key = q/chapter-modulation/; +$external_latex_labels{$key} = q|5|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.02/; +$external_latex_labels{$key} = q|4.2|; +$noresave{$key} = "$nosave"; + +$key = q/tab02.1/; +$external_latex_labels{$key} = q|2.1|; +$noresave{$key} = "$nosave"; + +$key = q/sect7.network/; +$external_latex_labels{$key} = q|7.3|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.19/; +$external_latex_labels{$key} = q|8.19|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.05/; +$external_latex_labels{$key} = q|8.5|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.15/; +$external_latex_labels{$key} = q|2.15|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.33/; +$external_latex_labels{$key} = q|8.33|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.04/; +$external_latex_labels{$key} = q|5.4|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.11/; +$external_latex_labels{$key} = q|1.11|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.30/; +$external_latex_labels{$key} = q|7.30|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.10/; +$external_latex_labels{$key} = q|8.10|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.16/; +$external_latex_labels{$key} = q|3.16|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.04/; +$external_latex_labels{$key} = q|6.4|; +$noresave{$key} = "$nosave"; + +$key = q/sect4.encapsulation/; +$external_latex_labels{$key} = q|4.7|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.15/; +$external_latex_labels{$key} = q|7.15|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.21/; +$external_latex_labels{$key} = q|4.21|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.05/; +$external_latex_labels{$key} = q|9.5|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.01/; +$external_latex_labels{$key} = q|8.1|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.15/; +$external_latex_labels{$key} = q|1.15|; +$noresave{$key} = "$nosave"; + +$key = q/sect9-IFT/; +$external_latex_labels{$key} = q|9.1.2|; +$noresave{$key} = "$nosave"; + +$key = q/sect8.twopolebandpass/; +$external_latex_labels{$key} = q|8.3.4|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.09/; +$external_latex_labels{$key} = q|5.9|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.02/; +$external_latex_labels{$key} = q|2.2|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.12/; +$external_latex_labels{$key} = q|3.12|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.17/; +$external_latex_labels{$key} = q|9.17|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.11/; +$external_latex_labels{$key} = q|8.11|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.01/; +$external_latex_labels{$key} = q|9.1|; +$noresave{$key} = "$nosave"; + +$key = q/sect2.interpolation/; +$external_latex_labels{$key} = q|2.5|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.09/; +$external_latex_labels{$key} = q|3.9|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.12/; +$external_latex_labels{$key} = q|4.12|; +$noresave{$key} = "$nosave"; + +$key = q/eq-waveshaping/; +$external_latex_labels{$key} = q|5.3|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.04/; +$external_latex_labels{$key} = q|10.4|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.27/; +$external_latex_labels{$key} = q|8.27|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.07/; +$external_latex_labels{$key} = q|4.7|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.01/; +$external_latex_labels{$key} = q|5.1|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.01/; +$external_latex_labels{$key} = q|7.1|; +$noresave{$key} = "$nosave"; + +$key = q/chapter-fourier/; +$external_latex_labels{$key} = q|9|; +$noresave{$key} = "$nosave"; + +$key = q/sect7.recirculatingcomb/; +$external_latex_labels{$key} = q|7.4|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.16/; +$external_latex_labels{$key} = q|4.16|; +$noresave{$key} = "$nosave"; + +$key = q/pdpack/; +$external_latex_labels{$key} = q|2.6|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.03/; +$external_latex_labels{$key} = q|7.3|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.06/; +$external_latex_labels{$key} = q|6.6|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.07/; +$external_latex_labels{$key} = q|7.7|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.32/; +$external_latex_labels{$key} = q|7.32|; +$noresave{$key} = "$nosave"; + +$key = q/sect2.oscillator/; +$external_latex_labels{$key} = q|2.1|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.13/; +$external_latex_labels{$key} = q|10.13|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.26/; +$external_latex_labels{$key} = q|8.26|; +$noresave{$key} = "$nosave"; + +$key = q/sect8.timevarying/; +$external_latex_labels{$key} = q|8.3.9|; +$noresave{$key} = "$nosave"; + +$key = q/sect5.example.expon/; +$external_latex_labels{$key} = q|5.5|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.14/; +$external_latex_labels{$key} = q|6.15|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.04/; +$external_latex_labels{$key} = q|3.4|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.10/; +$external_latex_labels{$key} = q|3.10|; +$noresave{$key} = "$nosave"; + +$key = q/chapter-waveforms/; +$external_latex_labels{$key} = q|10|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.16/; +$external_latex_labels{$key} = q|9.16|; +$noresave{$key} = "$nosave"; + +$key = q/sect8.equalizing/; +$external_latex_labels{$key} = q|8.1.3|; +$noresave{$key} = "$nosave"; + +$key = q/sect1.synth/; +$external_latex_labels{$key} = q|1.5|; +$noresave{$key} = "$nosave"; + +$key = q/sect4.muting/; +$external_latex_labels{$key} = q|4.3.1|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.15/; +$external_latex_labels{$key} = q|8.15|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.09/; +$external_latex_labels{$key} = q|9.9|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.12/; +$external_latex_labels{$key} = q|9.12|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.11/; +$external_latex_labels{$key} = q|7.11|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.15/; +$external_latex_labels{$key} = q|5.15|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.25/; +$external_latex_labels{$key} = q|7.25|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.16/; +$external_latex_labels{$key} = q|7.16|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.31/; +$external_latex_labels{$key} = q|8.31|; +$noresave{$key} = "$nosave"; + +$key = q/sect9-bash/; +$external_latex_labels{$key} = q|9.6|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.05/; +$external_latex_labels{$key} = q|7.5|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.21/; +$external_latex_labels{$key} = q|8.21|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.09/; +$external_latex_labels{$key} = q|2.9|; +$noresave{$key} = "$nosave"; + +$key = q/sect10.gentriangle/; +$external_latex_labels{$key} = q|10.3.4|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.13/; +$external_latex_labels{$key} = q|6.14|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.14/; +$external_latex_labels{$key} = q|1.14|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.04/; +$external_latex_labels{$key} = q|8.4|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.02/; +$external_latex_labels{$key} = q|5.2|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.33/; +$external_latex_labels{$key} = q|7.33|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.16/; +$external_latex_labels{$key} = q|2.16|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.08/; +$external_latex_labels{$key} = q|8.8|; +$noresave{$key} = "$nosave"; + +$key = q/sect3.controlstreams/; +$external_latex_labels{$key} = q|3.3|; +$noresave{$key} = "$nosave"; + +$key = q/eq-meanpowersum/; +$external_latex_labels{$key} = q|1.6|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.10/; +$external_latex_labels{$key} = q|5.10|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.04/; +$external_latex_labels{$key} = q|9.4|; +$noresave{$key} = "$nosave"; + +$key = q/sect1.fourier/; +$external_latex_labels{$key} = q|1.7|; +$noresave{$key} = "$nosave"; + +$key = q/sect8.singlesideband/; +$external_latex_labels{$key} = q|8.4.3|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.12/; +$external_latex_labels{$key} = q|8.12|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.08/; +$external_latex_labels{$key} = q|3.8|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.05/; +$external_latex_labels{$key} = q|1.5|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.08/; +$external_latex_labels{$key} = q|1.8|; +$noresave{$key} = "$nosave"; + +$key = q/eq-fourierseries/; +$external_latex_labels{$key} = q|1.7|; +$noresave{$key} = "$nosave"; + +$key = q/sect3.sampling/; +$external_latex_labels{$key} = q|3.1|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.06/; +$external_latex_labels{$key} = q|2.6|; +$noresave{$key} = "$nosave"; + +$key = q/sect10.spectra/; +$external_latex_labels{$key} = q|10.3|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.10/; +$external_latex_labels{$key} = q|1.10|; +$noresave{$key} = "$nosave"; + +$key = q/sect6.pulse/; +$external_latex_labels{$key} = q|6.2|; +$noresave{$key} = "$nosave"; + +$key = q/sect4.curved/; +$external_latex_labels{$key} = q|4.2|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.05/; +$external_latex_labels{$key} = q|3.5|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.25/; +$external_latex_labels{$key} = q|8.25|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.08/; +$external_latex_labels{$key} = q|4.8|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.06/; +$external_latex_labels{$key} = q|10.6|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.19/; +$external_latex_labels{$key} = q|4.19|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.22/; +$external_latex_labels{$key} = q|7.22|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.05/; +$external_latex_labels{$key} = q|5.5|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.13/; +$external_latex_labels{$key} = q|4.13|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.03/; +$external_latex_labels{$key} = q|2.3|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.02/; +$external_latex_labels{$key} = q|7.2|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.18/; +$external_latex_labels{$key} = q|6.19|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.12/; +$external_latex_labels{$key} = q|10.12|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.05/; +$external_latex_labels{$key} = q|10.5|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.31/; +$external_latex_labels{$key} = q|7.31|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.10/; +$external_latex_labels{$key} = q|2.10|; +$noresave{$key} = "$nosave"; + +$key = q/sect6.model/; +$external_latex_labels{$key} = q|6.1|; +$noresave{$key} = "$nosave"; + +$key = q/sect9.phaserelationship/; +$external_latex_labels{$key} = q|9.5.1|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.02/; +$external_latex_labels{$key} = q|3.2|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.14/; +$external_latex_labels{$key} = q|5.14|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.08/; +$external_latex_labels{$key} = q|5.8|; +$noresave{$key} = "$nosave"; + +$key = q/chapter-fft/; +$external_latex_labels{$key} = q|9|; +$noresave{$key} = "$nosave"; + +$key = q/sect2.example.loop/; +$external_latex_labels{$key} = q|2.6|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.20/; +$external_latex_labels{$key} = q|7.20|; +$noresave{$key} = "$nosave"; + +$key = q/sect8.heterodyning/; +$external_latex_labels{$key} = q|8.5|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.08/; +$external_latex_labels{$key} = q|9.8|; +$noresave{$key} = "$nosave"; + +$key = q/sect5.chebychev/; +$external_latex_labels{$key} = q|5.5|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.13/; +$external_latex_labels{$key} = q|3.13|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.06/; +$external_latex_labels{$key} = q|5.6|; +$noresave{$key} = "$nosave"; + +$key = q/sect7.phase/; +$external_latex_labels{$key} = q|7.2|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.09/; +$external_latex_labels{$key} = q|4.9|; +$noresave{$key} = "$nosave"; + +$key = q/sect8.recirculating/; +$external_latex_labels{$key} = q|8.2.3|; +$noresave{$key} = "$nosave"; + +$key = q/sect4.polyphony/; +$external_latex_labels{$key} = q|4.4|; +$noresave{$key} = "$nosave"; + +$key = q/sect7.pitchshift/; +$external_latex_labels{$key} = q|7.9|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.17/; +$external_latex_labels{$key} = q|6.18|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.06/; +$external_latex_labels{$key} = q|7.6|; +$noresave{$key} = "$nosave"; + +$key = q/eq-cosinemultiplication/; +$external_latex_labels{$key} = q|5.2|; +$noresave{$key} = "$nosave"; + +$key = q/sect9.phase/; +$external_latex_labels{$key} = q|9.5|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.01/; +$external_latex_labels{$key} = q|4.1|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.13/; +$external_latex_labels{$key} = q|9.13|; +$noresave{$key} = "$nosave"; + +$key = q/sect7.complex/; +$external_latex_labels{$key} = q|7.1|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.26/; +$external_latex_labels{$key} = q|7.26|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.27/; +$external_latex_labels{$key} = q|7.27|; +$noresave{$key} = "$nosave"; + +$key = q/sect2.enveloping/; +$external_latex_labels{$key} = q|2.3|; +$noresave{$key} = "$nosave"; + +$key = q/sect08.subtractive/; +$external_latex_labels{$key} = q|8.4.1|; +$noresave{$key} = "$nosave"; + +$key = q/chapter-wavetable/; +$external_latex_labels{$key} = q|2|; +$noresave{$key} = "$nosave"; + +$key = q/chapter-paf/; +$external_latex_labels{$key} = q|6|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.09/; +$external_latex_labels{$key} = q|1.9|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.10/; +$external_latex_labels{$key} = q|7.10|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.02/; +$external_latex_labels{$key} = q|10.2|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.14/; +$external_latex_labels{$key} = q|10.14|; +$noresave{$key} = "$nosave"; + +$key = q/sect7.psformula/; +$external_latex_labels{$key} = q|7.9|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.01/; +$external_latex_labels{$key} = q|3.1|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.17/; +$external_latex_labels{$key} = q|7.17|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.01/; +$external_latex_labels{$key} = q|1.1|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.14/; +$external_latex_labels{$key} = q|9.14|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.12/; +$external_latex_labels{$key} = q|7.12|; +$noresave{$key} = "$nosave"; + +$key = q/sect1.combine/; +$external_latex_labels{$key} = q|1.6|; +$noresave{$key} = "$nosave"; + +$key = q/sect4.adsr/; +$external_latex_labels{$key} = q|4.1|; +$noresave{$key} = "$nosave"; + +$key = q/sect5.FM/; +$external_latex_labels{$key} = q|5.4|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.10/; +$external_latex_labels{$key} = q|4.10|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.02/; +$external_latex_labels{$key} = q|6.2|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.13/; +$external_latex_labels{$key} = q|2.13|; +$noresave{$key} = "$nosave"; + +$key = q/sect5.ringmod/; +$external_latex_labels{$key} = q|5.2|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.11/; +$external_latex_labels{$key} = q|2.11|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.12/; +$external_latex_labels{$key} = q|6.13|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.03/; +$external_latex_labels{$key} = q|8.3|; +$noresave{$key} = "$nosave"; + +$key = q/sect1.amplitude/; +$external_latex_labels{$key} = q|1.1|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.13/; +$external_latex_labels{$key} = q|5.13|; +$noresave{$key} = "$nosave"; + +$key = q/sect8.peaking/; +$external_latex_labels{$key} = q|8.3.5|; +$noresave{$key} = "$nosave"; + +$key = q/eq.momentarydel/; +$external_latex_labels{$key} = q|7.7|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.14/; +$external_latex_labels{$key} = q|4.14|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.04/; +$external_latex_labels{$key} = q|4.4|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.13/; +$external_latex_labels{$key} = q|8.13|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.07/; +$external_latex_labels{$key} = q|8.7|; +$noresave{$key} = "$nosave"; + +$key = q/sect5.example.fm/; +$external_latex_labels{$key} = q|5.5|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.10/; +$external_latex_labels{$key} = q|10.10|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.09/; +$external_latex_labels{$key} = q|8.9|; +$noresave{$key} = "$nosave"; + +$key = q/sect8.shelving/; +$external_latex_labels{$key} = q|8.3.3|; +$noresave{$key} = "$nosave"; + +$key = q/sect08.highpass/; +$external_latex_labels{$key} = q|8.3.2|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.07/; +$external_latex_labels{$key} = q|3.7|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.16/; +$external_latex_labels{$key} = q|8.16|; +$noresave{$key} = "$nosave"; + +$key = q/sect6.paf/; +$external_latex_labels{$key} = q|6.4|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.24/; +$external_latex_labels{$key} = q|8.24|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.07/; +$external_latex_labels{$key} = q|10.7|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.07/; +$external_latex_labels{$key} = q|2.7|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.16/; +$external_latex_labels{$key} = q|5.16|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.18/; +$external_latex_labels{$key} = q|4.18|; +$noresave{$key} = "$nosave"; + +$key = q/sect4.declick/; +$external_latex_labels{$key} = q|4.3|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.15/; +$external_latex_labels{$key} = q|9.15|; +$noresave{$key} = "$nosave"; + +$key = q/sect3.analog/; +$external_latex_labels{$key} = q|3.7|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.08/; +$external_latex_labels{$key} = q|6.8|; +$noresave{$key} = "$nosave"; + +$key = q/r-intervals/; +$external_latex_labels{$key} = q|1.7|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.07/; +$external_latex_labels{$key} = q|9.7|; +$noresave{$key} = "$nosave"; + +$key = q/sect8.bandpassdef/; +$external_latex_labels{$key} = q|8.1.2|; +$noresave{$key} = "$nosave"; + +$key = q/sect08.low-pass/; +$external_latex_labels{$key} = q|8.3.1|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.05/; +$external_latex_labels{$key} = q|4.5|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.17/; +$external_latex_labels{$key} = q|4.17|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.06/; +$external_latex_labels{$key} = q|3.6|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.21/; +$external_latex_labels{$key} = q|7.21|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.13/; +$external_latex_labels{$key} = q|1.13|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.11/; +$external_latex_labels{$key} = q|4.11|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.04/; +$external_latex_labels{$key} = q|2.4|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.18/; +$external_latex_labels{$key} = q|7.18|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.14/; +$external_latex_labels{$key} = q|3.14|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.11/; +$external_latex_labels{$key} = q|6.12|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.16/; +$external_latex_labels{$key} = q|6.17|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.28/; +$external_latex_labels{$key} = q|7.28|; +$noresave{$key} = "$nosave"; + +$key = q/sect1.examples/; +$external_latex_labels{$key} = q|1.9|; +$noresave{$key} = "$nosave"; + +$key = q/chapter-filter/; +$external_latex_labels{$key} = q|8|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.03/; +$external_latex_labels{$key} = q|5.3|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.03/; +$external_latex_labels{$key} = q|10.3|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.09/; +$external_latex_labels{$key} = q|10.9|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.03/; +$external_latex_labels{$key} = q|9.3|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.08/; +$external_latex_labels{$key} = q|10.8|; +$noresave{$key} = "$nosave"; + +$key = q/sect7-fractional/; +$external_latex_labels{$key} = q|7.7|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.28/; +$external_latex_labels{$key} = q|8.28|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.07/; +$external_latex_labels{$key} = q|5.7|; +$noresave{$key} = "$nosave"; + +$key = q/eq-pitchmidi/; +$external_latex_labels{$key} = q|1.4|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.17/; +$external_latex_labels{$key} = q|8.17|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.23/; +$external_latex_labels{$key} = q|7.23|; +$noresave{$key} = "$nosave"; + +$key = q/sect2.transpositionformula/; +$external_latex_labels{$key} = q|2.2|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.13/; +$external_latex_labels{$key} = q|7.13|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.03/; +$external_latex_labels{$key} = q|1.3|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.18/; +$external_latex_labels{$key} = q|9.18|; +$noresave{$key} = "$nosave"; + +$key = q/chapter-delay/; +$external_latex_labels{$key} = q|7|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.06/; +$external_latex_labels{$key} = q|9.6|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.06/; +$external_latex_labels{$key} = q|8.6|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.05/; +$external_latex_labels{$key} = q|6.5|; +$noresave{$key} = "$nosave"; + +$key = q/sect2.stretching/; +$external_latex_labels{$key} = q|2.4|; +$noresave{$key} = "$nosave"; + +$key = q/sect4.voicealloc/; +$external_latex_labels{$key} = q|4.5|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.02/; +$external_latex_labels{$key} = q|1.2|; +$noresave{$key} = "$nosave"; + +$key = q/sect1.ex.3/; +$external_latex_labels{$key} = q|1.9|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.01/; +$external_latex_labels{$key} = q|10.1|; +$noresave{$key} = "$nosave"; + +$key = q/fig01.06/; +$external_latex_labels{$key} = q|1.6|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.10/; +$external_latex_labels{$key} = q|9.10|; +$noresave{$key} = "$nosave"; + +$key = q/sect2.momentaryformula/; +$external_latex_labels{$key} = q|2.2|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.32/; +$external_latex_labels{$key} = q|8.32|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.23/; +$external_latex_labels{$key} = q|8.23|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.02/; +$external_latex_labels{$key} = q|8.2|; +$noresave{$key} = "$nosave"; + +$key = q/fig07.09/; +$external_latex_labels{$key} = q|7.9|; +$noresave{$key} = "$nosave"; + +$key = q/sect5.octave/; +$external_latex_labels{$key} = q|5.5|; +$noresave{$key} = "$nosave"; + +$key = q/fig02.08/; +$external_latex_labels{$key} = q|2.8|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.15/; +$external_latex_labels{$key} = q|3.15|; +$noresave{$key} = "$nosave"; + +$key = q/fig05.12/; +$external_latex_labels{$key} = q|5.12|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.11/; +$external_latex_labels{$key} = q|3.11|; +$noresave{$key} = "$nosave"; + +$key = q/fig03.03/; +$external_latex_labels{$key} = q|3.3|; +$noresave{$key} = "$nosave"; + +$key = q/fig10.11/; +$external_latex_labels{$key} = q|10.11|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.03/; +$external_latex_labels{$key} = q|4.3|; +$noresave{$key} = "$nosave"; + +$key = q/fig04.20/; +$external_latex_labels{$key} = q|4.20|; +$noresave{$key} = "$nosave"; + +$key = q/fig09.02/; +$external_latex_labels{$key} = q|9.2|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.30/; +$external_latex_labels{$key} = q|8.30|; +$noresave{$key} = "$nosave"; + +$key = q/sect8.nonrecirculating/; +$external_latex_labels{$key} = q|8.2.1|; +$noresave{$key} = "$nosave"; + +$key = q/sect2.sampling/; +$external_latex_labels{$key} = q|2.2|; +$noresave{$key} = "$nosave"; + +$key = q/fig06.01/; +$external_latex_labels{$key} = q|6.1|; +$noresave{$key} = "$nosave"; + +$key = q/fig08.14/; +$external_latex_labels{$key} = q|8.14|; +$noresave{$key} = "$nosave"; + +1; + diff --git a/node1.html b/node1.html new file mode 100644 index 0000000..438d055 --- /dev/null +++ b/node1.html @@ -0,0 +1,83 @@ + + + + + +#1 + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: #1 + Up: book + Previous: book +   Contents +   Index +
+
+ + +

+#1 +

+ +1] +

+ +Subsections + + + +

+
+Miller Puckette +2006-12-30 +
+ + diff --git a/node10.html b/node10.html new file mode 100644 index 0000000..a04af4c --- /dev/null +++ b/node10.html @@ -0,0 +1,202 @@ + + + + + +Controlling Amplitude + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Frequency + Up: Sinusoids, amplitude and frequency + Previous: Units of Amplitude +   Contents +   Index +
+
+ + +

+Controlling Amplitude +

+ +

+Perhaps the most frequently used operation on electronic sounds is to change +their amplitudes. For example, a simple strategy for synthesizing sounds is by +combining sinusoids, which can be generated by evaluating the formula on Page +[*], sample by sample. But the sinusoid has a constant +nominal amplitude $a$, and we would like to be able to vary that in time. + +

+ +

+ + + +
Figure 1.4: +The relationship between ``MIDI" pitch and frequency in cycles per +second (Hertz). The span of 24 MIDI values on the horizontal axis represents +two octaves, over which the frequency increases by a factor of four.
\begin{figure}\psfig{file=figs/fig01.04.ps}\end{figure}
+
+ +

+In general, to multiply the amplitude of a signal $x[n]$ by a factor $y \ge
+0$, you can just multiply each sample by $y$, giving a new signal $y \cdot
+x[n]$. Any measurement of the RMS or peak amplitude of $x[n]$ will be greater +or less by the factor $y$. More generally, you can change the amplitude by an +amount $y[n]$ which varies sample by sample. If $y[n]$ is nonnegative and if +it varies slowly enough, the amplitude of the product +$y[n] \cdot x[n]$ (in a +fixed window from $M$ to $M+N-1$) will be that of $x[n]$, multiplied by the +value of $y[n]$ in the window (which we assume doesn't change much over the $N$ +samples in the window). + +

+In the more general case where both $x[n]$ and $y[n]$ are allowed to take +negative and positive values and/or to change quickly, the effect of multiplying +them can't be described as simply changing the amplitude of one of them; this is +considered later in Chapter 5. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Frequency + Up: Sinusoids, amplitude and frequency + Previous: Units of Amplitude +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node100.html b/node100.html new file mode 100644 index 0000000..fcac9c6 --- /dev/null +++ b/node100.html @@ -0,0 +1,205 @@ + + + + + +Two-cosine carrier signal + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: The PAF generator + Up: Examples + Previous: Simple formant generator +   Contents +   Index +
+
+ + +

+Two-cosine carrier signal +

+ +

+Example F08.two.cosines.pd (Figure 6.17) shows how to make a carrier signal that +cross-fades between harmonics to make continuously variable center frequencies. +The center frequency quotient +appears as the output of a line~ object. This is separated into its +fractional part (using the wrap~ object) and its integer part (by +subtracting the fractional part from the original). These are labeled as $q$ +and $k$ to agree with the treatment in Section 6.3. + +

+ +

+ + + +
Figure 6.17: +Cross-fading between sinusoids to make movable +center frequencies.
\begin{figure}\psfig{file=figs/fig06.16.ps}\end{figure}
+
+ +

+The phase--a sawtooth wave at the fundamental frequency--is multiplied by +both $k$ and $k+1$ (the latter by adding the original sawtooth into the +former), and the cosines of both are taken; they are therefore at $k$ and $k+1$ +times the fundamental frequency and have no discontinuities at phase wrapping +points. The next several objects in the patch compute the weighted sum +$p
+{c_1} + q {c_2}$, where $c_1$, $c_2$ are the two sinusoids and $p=1-q$, by +evaluating an equivalent expression, +${c_1} + q ({c_2} - {c_1})$. This gives +us the desired movable-frequency carrier signal. + +

+Example F09.declickit.pd (not shown here) shows how, by adding a +samphold~ object after the line~ object controlling center +frequency, you can avoid discontinuities in the output signal even if +the desired center frequency changes discontinuously. In the +example the center frequency quotient +alternates between 4 and 13.5. At ramp times below about 20 msec there are +audible artifacts when using the line~ object alone which disappear +when the samphold~ object is added. +(A disadvantage of sample-and-holding the frequency quotient is that, for +very low fundamental frequencies, the changes can be heard as discrete +steps. So in situations where the fundamental frequency is low and the +center frequency need not change very quickly, it may be better to omit the +sample-and-hold step.) + +

+The next two examples demonstrate using the crossfading-oscillators +carrier as part of the classic two-operator phase modulation technique. The +same modulating oscillator is added separately to the phases of the two +cosines. The resulting spectra can be made to travel up and down in frequency, +but because of the complicated phase relationships between neighboring peaks in +the phase modulation spectrum, no matter how you align two such spectra you can +never avoid getting phase cancellations where they overlap. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: The PAF generator + Up: Examples + Previous: Simple formant generator +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node101.html b/node101.html new file mode 100644 index 0000000..922cda3 --- /dev/null +++ b/node101.html @@ -0,0 +1,267 @@ + + + + + +The PAF generator + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Stretched wavetables + Up: Examples + Previous: Two-cosine carrier signal +   Contents +   Index +
+
+ + +

+The PAF generator +

+ +

+ +

+ + + +
Figure 6.18: +The phase-aligned formant (PAF) synthesis algorithm.
\begin{figure}\psfig{file=figs/fig06.17.ps}\end{figure}
+
+ +

+Example F12.paf.pd (Figure 6.18) is a realization of the PAF generator, +described in Section 6.4. +The control inputs specify the fundamental frequency, the center frequency, and +the bandwidth, all in ``MIDI" units. The first steps taken in the realization +are to divide center frequency by fundamental (to get the center frequency quotient) +and bandwidth by fundamental to get the index of modulation for the +waveshaper. The center frequency quotient is sampled-and-held so that it is +only updated at periods of the fundamental. + +

+The one oscillator (the phasor~ object) runs at the fundamental +frequency. This is used both to control a samphold~ object which +synchronizes updates to the center frequency quotient (labeled ``C.F. relative +to fundamental" in the figure), and to compute phases for both cos~ objects which operate as shown earlier in Figure 6.17. + +

+The waveshaping portion of the patch uses a half period of a sinusoid +as a lookup function (to compensate for the frequency doubling because +of the symmetry of the lookup function). To get a half-cycle of the sine function +we multiply the phase by 0.5 and subtract 0.25, so that the adjusted phase +runs from -0.25 to +0.25, once each period. This scans the positive half +of the cycle defined by the cos~ object. + +

+The amplitude of the half-sinusoid is then adjusted by an index of modulation +(which is just the bandwidth quotient +${\omega_b}/\omega$). The table +(``bell-curve") holds an unnormalized Gaussian curve sampled +from -4 to 4 over 200 points (25 points per unit), so the center of the table, +at point 100, corresponds to the central peak of the bell curve. Outside the +interval from -4 to 4 the Gaussian curve is negligibly small. + +

+Figure 6.19 shows how the Gaussian wavetable is prepared. One new +control object is needed: + +

+ +

+ + + +
Figure 6.19: +Filling in the wavetable for Figure 6.18.
\begin{figure}\psfig{file=figs/fig06.18.ps}\end{figure}
+
+ +

+
+\fbox{ $\mathrm{until}$\ } : +When the left, ``start" inlet is banged, output sequential bangs (with no +elapsed time between them) iteratively, until the right, ``stop" inlet is +banged. The stopping ``bang" message must originate somehow from the +until object's outlet; otherwise, the outlet will send ``bang" messages +forever, freezing out any other object which could break the loop. + +

+As used here, a loop driven by an until object +counts from 0 to 199, inclusive. The loop count is maintained by the +``f" and ``+ 1" objects, each of which feeds the other. But +since the ``+ 1" object's output goes to the right inlet of the +``f", its result (one greater) will only emerge from the +``f" the next time it is banged by ``until". So each bang +from ``until" increments the value by one. + +

+The order in which the loop is started matters: the upper ``t b b" +object (short for ``trigger bang bang") must first send zero to the +``f", thus initializing it, and then set the until object sending +bangs, incrementing the value, until stopped. To stop it when the value +reaches 199, a select object checks the value and, when it sees the +match, bangs the ``stop" inlet of the until object. + +

+Meanwhile, for every number from 0 to 199 that comes out of the ``f" +object, we create an ordered pair of messages to the tabwrite object. +First, at right, goes the index itself, from 0 to 199. Then for the left inlet, +the first expr object adjusts the index to range from -4 to 4 (it +previously ranged from 0 to 199) and the second one evaluates the +Gaussian function. + +

+In this patch we have not fully addressed the issue of updating the +center frequency quotient at the appropriate times. Whenever the carrier +frequency is changed the sample-and-hold step properly delays the update +of the quotient. But if, instead or in addition, the fundamental itself +changes abruptly, then for a fraction of a period the phasor~ object's frequency and the quotient are out of sync. Pd does not allow +the samphold~ output to be connected back into the phasor~ input without the inclusion of an explicit delay (see the next chapter) and +there is no simple way to modify the patch to solve this problem. + +

+Assuming that we did somehow clock the phasor~ object's input +synchronously with its own wraparound points, we would then have to do the +same for the bandwidth/fundamental quotient on the right side of the patch +as well. In the current scenario, however, there is no problem updating +that value continuously. + +

+A practical solution to this updating problem could be simply to rewrite the +entire patch in C as a Pd class; this also turns out to use much less CPU time +than the pictured patch, and is the more practical solution overall--as long +as you don't want to experiment with making embellishments or other changes to +the algorithm. Such embellishments might include: adding an inharmonic upward +or downward shift in the partials; allowing to switch between smooth and +sampled-and-held center frequency updates; adding separate gain controls for +even and odd partials; introducing gravel by irregularly modulating the phase; +allowing mixtures of two or more waveshaping functions; or making sharper +percussive attacks by aligning the phase of the oscillator with the timing of +an amplitude envelope generator. + +

+One final detail about amplitude is in order: since the amplitude of the +strongest partial decreases roughly as $1/(1+b)$ where $b$ is the index of +modulation, it is sometimes (but not always) desirable to correct the amplitude +of the output by multiplying by $1+b$. This is only an option if $b$ is +smoothly updated (as in this example), not if it is sampled-and-held. +One situation in which this is appropriate is in simulating plucked strings (by +setting center frequency to the fundamental, starting with a high index of +modulation and dropping it exponentially); it would be appropriate to hear +the fundamental dropping, not rising, in amplitude as the string decays. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Stretched wavetables + Up: Examples + Previous: Two-cosine carrier signal +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node102.html b/node102.html new file mode 100644 index 0000000..ccf3811 --- /dev/null +++ b/node102.html @@ -0,0 +1,83 @@ + + + + + +Stretched wavetables + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Exercises + Up: Examples + Previous: The PAF generator +   Contents +   Index +
+
+ + +

+Stretched wavetables +

+ +

+Instead of using waveshaping, fomant synthesis is also possible using +stretched wavetables, as demonstrated Example F14.wave.packet.pd (not shown here). The +technique is essentially that of Example B10.sampler.overlap.pd (described in Section +2.6), with a cosine lookup instead of the more general +wavetable, but with the addition of a control to set the duty cycle of the +amplitude envelopes. The units are adjusted to be compatible with those of +the previous example. + +

+


+
+Miller Puckette +2006-12-30 +
+ + diff --git a/node103.html b/node103.html new file mode 100644 index 0000000..dff21f3 --- /dev/null +++ b/node103.html @@ -0,0 +1,99 @@ + + + + + +Exercises + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Time shifts and delays + Up: Designer spectra + Previous: Stretched wavetables +   Contents +   Index +
+
+ + +

+Exercises +

+ +

+ +

    +
  1. A pulse train consists of Hann windows (raised cosines), end to end, without any +gaps between them. What is the resulting spectrum? + +

    +

  2. +
  3. To synthesize a formant at 2000 Hertz center frequency and fundamental +300 Hertz, what should the values of $k$ and $q$ be (in the terminology of +Figure 6.8)? + +

    +

  4. +
  5. How would you modify the block diagram of Figure 6.8 +to produce only odd harmonics? + +

    +

  6. +
+

+
+Miller Puckette +2006-12-30 +
+ + diff --git a/node104.html b/node104.html new file mode 100644 index 0000000..22258ca --- /dev/null +++ b/node104.html @@ -0,0 +1,234 @@ + + + + + +Time shifts and delays + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Complex numbers + Up: book + Previous: Exercises +   Contents +   Index +
+
+ + +

+ +
+Time shifts and delays +

+ +

+At 5:00 some afternoon, put on your favorite recording of the Ramones string +quarter number 5. The next Saturday, play the same recording at 5:00:01, one +second later in the day. The two playings ideally should sound the same. +Shifting the whole thing one second (or, if you like, a few days +and a second) has no physical effect on the sound. + +

+But now suppose you played it at 5:00 and 5:00:01 on the same day (on two +different playback systems, since the music lasts much longer than one second). +Now the sound is much different. The difference, whatever it is, +clearly resides in neither of the two individual sounds, but rather in the +interference +between the two. This interference can be perceived in at least four different +ways: +

+
+
Canons: Combining two copies of a signal with a time shift sufficient +for the signal to change appreciably, we might hear the two as separate musical +streams, in effect comparing the signal to its earlier self. If the signal is +a melody, the time shift might be comparable to the length of one or several +notes. + +

+

+
+
Echos: At time shifts between about 30 milliseconds and about a second, +the later copy of the signal can sound like an echo of the earlier one. An echo +may reduce the intelligibility of the signal (especially if it consists of +speech), but usually won't change the overall ``shape" of melodies or +phrases. + +

+

+
+
Filtering: At time shifts below about 30 milliseconds, the copies are +too close together in time to be perceived separately, and the dominant effect +is that some frequencies are enhanced and others suppressed. This changes the +spectral envelope of the sound. + +

+

+
+
Altered room quality: If the second copy is played more quietly than the +first, and especially if we add many more delayed copies at reduced amplitudes, +the result can mimic the echos that arise in a room or other acoustic space. + +

+

+
+The sound of a given arrangement of delayed copies of a signal may +combine two or more of these affects. + +

+Mathematically, the effect of a time shift on a signal can be described as a +phase change of each of the signal's sinusoidal components. The phase shift of +each component is different depending on its frequency (as well as on the +amount of time shift). In the rest of this chapter we will often consider +superpositions of sinusoids at different phases. Heretofore we have been +content to use real-valued sinusoids in our analyses, but in this and later +chapters the formulas will become more complicated and we will need more +powerful mathematical tools to manage them. In a preliminary +section of this chapter we will develop the additional background needed. + +

+


+ +Subsections + + + +
+ + +next + +up + +previous + +contents + +index +
+ Next: Complex numbers + Up: book + Previous: Exercises +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node105.html b/node105.html new file mode 100644 index 0000000..0ebb181 --- /dev/null +++ b/node105.html @@ -0,0 +1,556 @@ + + + + + +Complex numbers + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Complex sinusoids + Up: Time shifts and delays + Previous: Time shifts and delays +   Contents +   Index +
+
+ + +

+ +
+Complex numbers +

+ +

+Complex +numbers are written as: +

+
+ + +\begin{displaymath}
+Z = a + bi
+\end{displaymath} +
+
+

+where $a$ and $b$ are real numbers and $i=\sqrt{-1}$. (In this book we'll use +the upper case Roman letters such as $Z$ to denote complex numbers. Real +numbers appear as lower case Roman or Greek letters, except for +integer bounds, usually written as $M$ or $N$.) Since a complex +number has two real components, we use a Cartesian plane (in place of a number +line) to graph it, as shown in Figure 7.1. The quantities $a$ and +$b$ are called the +real +and +imaginary parts of $Z$, written as: +

+
+ + +\begin{displaymath}
+a = \mathrm{re}(Z)
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+b = \mathrm{im}(Z)
+\end{displaymath} +
+
+

+ +

+ +

+ + + +
Figure 7.1: +A number, $Z$, in the complex plane. The axes are for the real +part $a$ and the imaginary part $b$.
\begin{figure}\psfig{file=figs/fig07.01.ps}\end{figure}
+
+ +

+If $Z$ is a complex number, its +magnitude (or absolute value), +written as $\vert Z\vert$, is just the distance in the plane from the origin to the +point $(a,b)$: +

+
+ + +\begin{displaymath}
+\vert Z\vert = \sqrt {({a^2} + {b^2})}
+\end{displaymath} +
+
+

+and its +argument, +written as $\angle(Z)$, +is the angle from the positive $a$ axis to the point $(a,b)$: +

+
+ + +\begin{displaymath}
+\angle(Z) = \mathrm{arctan}
+{ \left ( {
+b \over a
+} \right ) }
+\end{displaymath} +
+
+

+If we know the magnitude and argument of a complex number (call them $r$ and +$\theta$) we can reconstruct the real and imaginary parts: +

+
+ + +\begin{displaymath}
+a = r \cos (\theta)
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+b = r \sin (\theta)
+\end{displaymath} +
+
+

+A complex number may be written in terms of its real and imaginary parts +$a$ and $b$, as $Z=a+bi$ (this is called +rectangular form), or alternatively in +polar form, +in terms of $r$ and $\theta$: +

+
+ + +\begin{displaymath}
+Z = r \cdot \left[ \cos(\theta) + i \sin(\theta) \right ]
+\end{displaymath} +
+
+

+The rectangular and polar formulations are interchangeable; the equations +above show how to compute $a$ and $b$ from $r$ and $\theta$ and vice versa. + +

+The main reason we use complex numbers in electronic music is because they +magically automate trigonometric calculations. We frequently have to add +angles together in order to talk about the changing phase of an audio signal as +time progresses (or as it is shifted in time, as in this chapter). It turns +out that, if you multiply two complex numbers, the argument of the product is +the sum of the arguments of the two factors. To see how this happens, we'll +multiply two numbers $Z_1$ and $Z_2$, written in polar form: +

+
+ + +\begin{displaymath}
+{Z_1} = {r_1} \cdot \left [ \cos({\theta_1}) + i \sin({\theta_1}) \right ]
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+{Z_2} = {r_2} \cdot \left [ \cos({\theta_2}) + i \sin({\theta_2}) \right ]
+\end{displaymath} +
+
+

+giving: +

+
+ + +\begin{displaymath}
+{Z_1}{Z_2} = {r_1}{r_2} \cdot
+{ \left [ {
+\cos({\theta_1...
+...a_2}) -
+\sin({\theta_1}) \sin({\theta_2})
+} \right . } \, +
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+{ \left . {
++ i \left (
+\sin({\theta_1}) \cos({\theta_2}) +
+\cos({\theta_1}) \sin({\theta_2})
+\right )
+} \right ] }
+\end{displaymath} +
+
+

+Here the minus sign in front of the +$\sin({\theta_1}) \sin({\theta_2})$ term +comes from multiplying $i$ by itself, which gives $-1$. We can spot the +cosine and sine summation formulas in the above expression, and so it simplifies +to: +

+
+ + +\begin{displaymath}
+{Z_1}{Z_2} = {r_1}{r_2}
+\cdot \left[ \cos({\theta_1}+{\theta_2})
++ i \sin({\theta_1}+{\theta_2}) \right ]
+\end{displaymath} +
+
+

+By inspection, it follows that the product ${Z_1}{Z_2}$ +has magnitude +${r_1}{r_2}$ and argument +${\theta_1}+{\theta_2}$. + +

+We can use this property of complex numbers to add and subtract angles (by +multiplying and dividing complex numbers with the appropriate arguments) and +then to take the cosine and sine of the result by extracting the real and +imaginary parts. + +

+


+ +Subsections + + + +
+ + +next + +up + +previous + +contents + +index +
+ Next: Complex sinusoids + Up: Time shifts and delays + Previous: Time shifts and delays +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node106.html b/node106.html new file mode 100644 index 0000000..5c84176 --- /dev/null +++ b/node106.html @@ -0,0 +1,462 @@ + + + + + +Complex sinusoids + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Time shifts and phase + Up: Complex numbers + Previous: Complex numbers +   Contents +   Index +
+
+ + +

+Complex sinusoids +

+ +

+Recall the formula for a (real-valued) sinusoid from Page +[*]: +

+
+ + +\begin{displaymath}
+x[n] = a \cos (\omega n + \phi )
+\end{displaymath} +
+
+

+This is a sequence of cosines of angles (called phases) which increase +arithmetically +with the sample number $n$. The cosines are all adjusted by the factor $a$. +We can now rewrite this as the real part of a much simpler and easier to +manipulate sequence of complex numbers, by using the properties of their +arguments and magnitudes. + +

+ +

+ + + +
Figure 7.2: +The powers of a complex number $Z$ with $\vert Z\vert=1$, and the same +sequence multiplied by a constant $A$.
\begin{figure}\psfig{file=figs/fig07.02.ps}\end{figure}
+
+ +

+Suppose that a complex number $Z$ happens to have magnitude one and +argument $\omega $, so that +it can be written as: +

+
+ + +\begin{displaymath}
+Z = \cos(\omega) + i \sin(\omega)
+\end{displaymath} +
+
+

+Then for any integer $n$, the number $Z^n$ must have magnitude one as well +(because magnitudes multiply) and argument $n\omega$ (because arguments add). +So, +

+
+ + +\begin{displaymath}
+{Z^n} = \cos(n\omega) + i \sin(n \omega)
+\end{displaymath} +
+
+

+This is also true for negative values of $n$, so for example, +

+
+ + +\begin{displaymath}
+{1 \over Z} = {Z^{-1}} = cos(\omega) - i \sin(\omega)
+\end{displaymath} +
+
+

+Figure 7.2 shows graphically how the powers of $Z$ wrap around +the unit circle, which is the set of all complex numbers of magnitude one. +They form a geometric sequence: +

+
+ + +\begin{displaymath}
+\ldots, {Z^0}, {Z^1}, {Z^2}, \ldots
+\end{displaymath} +
+
+

+and taking the real part of each term we get a real sinusoid with +initial phase zero and amplitude one: +

+
+ + +\begin{displaymath}
+\ldots, \cos(0), \cos(\omega), \cos(2 \omega), \ldots
+\end{displaymath} +
+
+

+Furthermore, suppose we multiply the elements of the sequence by some (complex) +constant $A$ with magnitude $a$ and argument $\phi$. This gives +

+
+ + +\begin{displaymath}
+\ldots, A, AZ, A{Z^2}, \ldots
+\end{displaymath} +
+
+

+The magnitudes are all $a$ and the argument of the $n$th term is + +$n \omega + \phi$, so the sequence is equal to +

+
+ + +\begin{displaymath}
+{AZ^n} = a \cdot [\cos(n \omega + \phi) + i \sin(n \omega + \phi)]
+\end{displaymath} +
+
+

+and the real part is just the real-valued sinusoid: +

+
+ + +\begin{displaymath}
+\mathrm{re}(A{Z^n}) = a \cdot \cos(n \omega + \phi)
+\end{displaymath} +
+
+

+The complex number $A$ encodes both the real amplitude $a$ +and the initial phase $\phi$; the unit-magnitude complex +number $Z$ controls the frequency which is just its argument $\omega $. + +

+Figure 7.2 also shows the sequence +$A, AZ, A{Z^2}, \ldots$; +in effect this is the same sequence as +$1, Z, {Z^2}, \ldots$, but amplified and +rotated according to the amplitude and initial phase. In a complex +sinusoid of this form, $A$ is called the + +complex amplitude. + +

+Using complex numbers to represent the amplitudes and phases of sinusoids can +clarify manipulations that otherwise might seem unmotivated. For instance, +suppose we want to know the amplitude and phase of the sum of two sinusoids +with the same frequency. In the language of this chapter, we let the two +sinusoids be written as: +

+
+ + +\begin{displaymath}
+X[n] = A {Z^n} , \ Y[n] = B {Z^n}
+\end{displaymath} +
+
+

+where $A$ and $B$ encode the phases and amplitudes of the two signals. +The sum is then equal to: +

+
+ + +\begin{displaymath}
+X[n] + Y[n] = (A+B) {Z^n}
+\end{displaymath} +
+
+

+which is a sinusoid whose amplitude equals $\vert A+B\vert$ and whose phase equals +$\angle(A+B)$. This is clearly a much easier way to manipulate amplitudes +and phases than using properties of sines and cosines. Eventually, of course, +we will take the real part of the result; this can usually be left to the +end of whatever we're doing. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Time shifts and phase + Up: Complex numbers + Previous: Complex numbers +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node107.html b/node107.html new file mode 100644 index 0000000..ed76d05 --- /dev/null +++ b/node107.html @@ -0,0 +1,270 @@ + + + + + +Time shifts and phase changes + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Delay networks + Up: Time shifts and delays + Previous: Complex sinusoids +   Contents +   Index +
+
+ + +

+ +
+Time shifts and phase changes +

+ +

+Starting from any (real or complex) signal $X[n]$, we can make other signals by +time shifting the signal $X$ by a (positive or negative) integer $d$: +

+
+ + +\begin{displaymath}
+Y[n] = X[n-d]
+\end{displaymath} +
+
+

+so that the $d$th sample of $Y$ is the 0th sample of $X$ and so on. If the +integer $d$ is positive, then $Y$ is a delayed copy of $X$. If +$d$ is negative, then $Y$ anticipates $X$; this can be done to a recorded +sound but isn't practical as a real-time operation. + +

+Time shifting is a linear operation (considered as a function of the input +signal $X$); if you time shift a sum ${X_1}+{X_2}$ you get the same result as +if you time shift them separately and add afterward. + +

+Time shifting has the +further property that, if you time shift a sinusoid of frequency $\omega $, the +result is another sinusoid of the same frequency; time shifting never +introduces frequencies that weren't present in the signal before it was +shifted. This property, called +time invariance, +makes it easy to analyze the effects of time shifts--and linear combinations +of them--by considering separately what the operations do on individual +sinusoids. + +

+Furthermore, the effect of a time shift on a sinusoid is simple: it just +changes the phase. If we use a complex sinusoid, the effect is even simpler. +If for instance +

+
+ + +\begin{displaymath}
+X[n] = A {Z^n}
+\end{displaymath} +
+
+

+then +

+
+ + +\begin{displaymath}
+Y[n] = X[n-d] = A {Z^{(n-d)}} = {Z^{-d}} A {Z^n} = {Z^{-d}} X[n]
+\end{displaymath} +
+
+

+so time shifting a complex sinusoid by $d$ samples is the same thing as +scaling it by ${Z^{-d}}$--it's just an amplitude change by a particular +complex number. Since $\vert Z\vert=1$ for a sinusoid, the amplitude change does not +change the magnitude of the sinusoid, only its phase. + +

+The phase change is equal to $- d \omega$, where +$\omega = \angle(Z)$ is +the angular frequency of the sinusoid. This is exactly what we should expect +since the sinusoid advances $\omega $ radians per sample and it is offset +(i.e., delayed) by $d$ samples. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Delay networks + Up: Time shifts and delays + Previous: Complex sinusoids +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node108.html b/node108.html new file mode 100644 index 0000000..c4b86f2 --- /dev/null +++ b/node108.html @@ -0,0 +1,632 @@ + + + + + +Delay networks + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Recirculating delay networks + Up: Time shifts and delays + Previous: Time shifts and phase +   Contents +   Index +
+
+ + +

+ +
+Delay networks +

+ +

+ +

+ + + +
Figure 7.3: +A delay network. Here we add the incoming signal to a delayed +copy of itself.
\begin{figure}\psfig{file=figs/fig07.03.ps}\end{figure}
+
+ +

+If we consider our digital audio samples $X[n]$ to correspond to +successive moments in time, then time shifting the signal by $d$ samples +corresponds to a + +delay +of $d/R$ time units, where $R$ is the sample rate. +Figure 7.3 shows one example of a +linear delay network: +an assembly of delay units, possibly with amplitude +scaling operations, combined using addition and subtraction. The output +is a linear function of the input, in the sense that adding two signals at the +input is the same as processing each one separately and adding the results. +Moreover, linear delay networks create no new frequencies in the output that +weren't present in the input, as long as the network remains time invariant, +so that the gains and delay times do not change with time. + +

+In general there are two ways of thinking about delay networks. We can think +in the +time domain, +in which we draw waveforms as functions of time (or of the index $n$), and +consider delays as time shifts. Alternatively we may think in the +frequency domain, +in which we dose the input with a complex sinusoid (so that its output is a +sinusoid at the same frequency) and report the amplitude and/or phase change +wrought by the network, as a function of the frequency. We'll now look at the +delay network of Figure 7.3 in each of the two ways in turn. + +

+ +

+ + + +
Figure 7.4: +The time domain view of the delay network of Figure 7.3. +The output is the sum of the input and its time shifted copy.
\begin{figure}\psfig{file=figs/fig07.04.ps}\end{figure}
+
+ +

+Figure 7.4 shows the network's behavior in the time domain. We +invent some sort of suitable test function as input (it's a rectangular pulse +eight samples wide in this example) and graph the input and output as functions +of the sample number $n$. This particular delay network adds the input to a +delayed copy of itself. + +

+A frequently used test function is an +impulse, +which is a pulse lasting only one sample. The utility of this is that, if we +know the output of the network for an impulse, we can find the output for +any other digital audio signal--because any signal $x[n]$ is a sum of +impulses, one of height $x[0]$, the next one occurring one sample later +and having height $x[1]$, and so on. Later, when the networks get +more complicated, we will move to using impulses as input signals to show +their time-domain behavior. + +

+On the other hand, we can analyze the same network in the frequency domain +by considering a (complex-valued) test signal, +

+
+ + +\begin{displaymath}
+X[n] = {Z^n}
+\end{displaymath} +
+
+

+where Z has unit magnitude and argument $\omega $. We already know that the +output is another complex sinusoid with the same frequency, that is, +

+
+ + +\begin{displaymath}
+H {Z^N}
+\end{displaymath} +
+
+

+for some complex number $H$ (which we want to find). So we write the output +directly as the sum of the input and its delayed copy: +

+
+ + +\begin{displaymath}
+{Z^n} + {Z^{-d}} {Z^n} = (1 + {Z^{-d}}) {Z^n}
+\end{displaymath} +
+
+

+and find by inspection that: +

+
+ + +\begin{displaymath}
+H = 1 + {Z^{-d}}
+\end{displaymath} +
+
+

+We can understand the frequency-domain behavior of this delay network +by studying how the complex number $H$ varies as a function of the +angluar frequency $\omega $. We are especially interested in its argument and +magnitude--which tell us the relative phase and amplitude of the sinusoid +that comes out. We will work this example out in detail to show how the +arithmetic of complex numbers can predict what happens when sinusoids are +combined additively. + +

+ +

+ + + +
Figure 7.5: +Analysis, in the complex plane, of the frequency-domain behavior of +the delay network of Figure 7.3. The complex number $Z$ encodes +the frequency of the input. The delay line output is the input times +$Z^-d$. The total (complex) gain is $H$. We find the magnitude and argument +of $H$ by symmetrizing the sum, rotating it by $d/2$ times the +angular frequency of the input.
\begin{figure}\psfig{file=figs/fig07.05.ps}\end{figure}
+
+ +

+Figure 7.5 shows the result, in the complex plane, when the +quantities $1$ and ${Z^{-d}}$ are combined additively. To add complex numbers +we add their real and complex parts separately. So the complex number $1$ (real +part $1$, imaginary part $0$) is added coordinate-wise to the complex +number ${Z^{-d}}$ (real part +$\cos(-d \omega)$, imaginary part + +$\sin(-d \omega)$). This is shown graphically by making a parallelogram, +with corners at the origin and at the two points to be added, and whose +fourth corner is the sum $H$. + +

+As the figure shows, the result can be understood by symmetrizing it about +the real axis: instead of $1$ and ${Z^{-d}}$, it's easier to sum the +quantities ${Z^{d/2}}$ and ${Z^{-d/2}}$, because they are symmetric about +the real (horizontal) axis. (Strictly speaking, we haven't properly defined +the quantities ${Z^{d/2}}$ and ${Z^{-d/2}}$; we are using those expressions +to denote unit +complex numbers whose arguments are half those of $Z^d$ and $Z^{-d}$, so +that squaring them would give ${Z^{d}}$ and ${Z^{-d}}$.) +We rewrite the gain as: +

+
+ + +\begin{displaymath}
+H = {Z^{-d/2}} ({Z^{d/2}} + {Z^{-d/2}})
+\end{displaymath} +
+
+

+The first term is a phase shift of $-d \omega / 2$. The second term is +best understood in rectangular form: +

+
+ + +\begin{displaymath}
+{Z^{d/2}} + {Z^{-d/2}}
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+= (\cos(\omega d / 2) + i \sin(\omega d / 2)) +
+(\cos(\omega d / 2) - i \sin(\omega d / 2))
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+= 2 \cos(\omega d / 2)
+\end{displaymath} +
+
+

+This real-valued quantity may be either positive or negative; its absolute value +gives the magnitude of the output: +

+
+ + +\begin{displaymath}
+\vert H\vert = 2 \vert\cos(\omega d / 2) \vert
+\end{displaymath} +
+
+

+The quantity $\vert H\vert$ is called the +gain +of the delay network at the angular frequency $\omega $, and is graphed in +Figure 7.6. The frequency-dependent gain of a delay network (that +is, the gain as a function of frequency) is called the network's +frequency response. + +

+Since the network has greater gain at some frequencies +than at others, it may be considered as a +filter +that can be used to separate certain components of a sound from others. +Because of the shape of this particular gain expression as a function of +$\omega $, this kind of delay network +is called a (non-recirculating) +comb filter. + +

+ +

+ + + +
Figure 7.6: +Gain of the delay network of Figure 7.3, shown as a function +of angular frequency $\omega $.
\begin{figure}\psfig{file=figs/fig07.06.ps}\end{figure}
+
+ +

+The output of the network is a sum of two sinusoids of equal amplitude, and +whose phases differ by $\omega d $. The resulting frequency response agrees +with common sense: if the angular frequency $\omega $ is set so that an integer +number of periods fit into $d$ samples, i.e., if $\omega $ is a multiple of +$2\pi/d$, the output of the delay is exactly the same as the original signal, +and so the two combine to make an output with twice the original amplitude. On +the other hand, if for example we take +$\omega = \pi/d$ so that the delay is +half the period, then the delay output is out of phase and cancels the input +exactly. + +

+This particular delay network has an interesting application: if we have a +periodic (or nearly periodic) incoming signal, whose fundamental frequency is +$\omega $ radians per sample, we can tune the comb filter so that the peaks in +the gain are aligned at even harmonics and the odd ones fall where the gain is +zero. To do this we choose $d=\pi/\omega$, i.e., set the delay time to exactly +one half period of the incoming signal. In this way we get a new signal whose +harmonics are +$2\omega, 4\omega, 6\omega, \ldots$, and so it now has a new +fundamental frequency at twice the original one. Except for a factor of two, +the amplitudes of the remaining harmonics still follow the spectral envelope of +the original sound. So we have a tool now for raising the pitch of an incoming +sound by an octave without changing its spectral envelope. This octave doubler +is the reverse of the octave divider introduced back in Chapter +5. + +

+The time and frequency domains offer complementary ways of looking +at the same delay network. When the delays inside the network are smaller than +the ear's ability to resolve events in time--less than about 20 +milliseconds--the time domain picture becomes less relevant to our +understanding of the delay network, and we turn mostly to the frequency-domain +picture. On the other hand, when delays are greater than about 50 +msec, the peaks and valleys of plots showing gain versus frequency (such as +that of Figure 7.6) crowd so closely together that +the frequency-domain view becomes less important. Both are nonetheless valid +over the entire range of possible delay times. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Recirculating delay networks + Up: Time shifts and delays + Previous: Time shifts and phase +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node109.html b/node109.html new file mode 100644 index 0000000..93b1799 --- /dev/null +++ b/node109.html @@ -0,0 +1,707 @@ + + + + + +Recirculating delay networks + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Power conservation and complex + Up: Time shifts and delays + Previous: Delay networks +   Contents +   Index +
+
+ + +

+ +
+Recirculating delay networks +

+ +

+It is sometimes desirable to connect the outputs of one or more delays in a +network back into their own or each others' inputs. Instead of getting one +or several echos of the original sound as in the example above, we +can potentially get an infinite number of echos, each one feeding back into +the network to engender yet others. + +

+The simplest example of a recirculating network is the + +recirculating comb filter +whose block diagram is shown in Figure 7.7. As with the +earlier, simple comb filter, the input signal is sent down a delay line whose +length is $d$ samples. But now the delay line's +output is also fed back to its input; the delay's input is the sum of +the original input and the delay's output. The output is +multiplied by a number $g$ before feeding it back into its input. + +

+ +

+ + + +
Figure 7.7: +Block diagram for a recirculating comb filter. Here $d$ is the +delay time in samples and $g$ is the feedback coefficient.
\begin{figure}\psfig{file=figs/fig07.07.ps}\end{figure}
+
+ +

+The time domain behavior of the recirculating comb filter is shown in Figure +7.8. Here we consider the effect of sending an impulse into the +network. We get back the original impulse, plus a series of echos, each +in turn $d$ samples after the previous one, and multiplied each time by the +gain $g$. In general, a delay network's output given an impulse as input is +called the network's +impulse response. + +

+ +

+ + + +
Figure 7.8: +Time-domain analysis of the recirculating comb filter, using +an impulse as input.
\begin{figure}\psfig{file=figs/fig07.08.ps}\end{figure}
+
+ +

+Note that we have chosen a gain $g$ that is less than one in absolute value. +If we chose a gain greater than one (or less than -1), each echo would have +a larger magnitude than the previous one. Instead of falling exponentially +as they do in the figure, they would grow exponentially. A recirculating +network whose output eventually falls toward zero after its input terminates +is called +stable; +one whose output grows without bound is called unstable. + +

+We can also analyse the recirculating comb filter in the frequency domain. +The situation is now quite +hard to analyze using real sinusoids, and so we get the first big payoff +for having introduced complex numbers, which greatly simplify the analysis. + +

+If, as before, we feed the input with the signal, +

+
+ + +\begin{displaymath}
+X[n] = Z^n
+\end{displaymath} +
+
+

+with $\vert Z\vert=1$, we can write the output as +

+
+ + +\begin{displaymath}
+Y[n] = (1 + g{Z^{-d}} + {g^2}{Z^{-2d}} + \cdots) X[n]
+\end{displaymath} +
+
+

+Here the terms in the sum come from the series of +discrete echos. +It follows that the amplitude of the output is: +

+
+ + +\begin{displaymath}
+H = 1 + g{Z^{-d}} + {(g{Z^{-d}})} ^ 2 + \cdots
+\end{displaymath} +
+
+

+This is a geometric series; we can sum it using the standard technique. First +multiply both sides by $g{Z^{-d}}$ to give: +

+
+ + +\begin{displaymath}
+g{Z^{-d}} H = g{Z^{-d}} + {(g{Z^{-d}})} ^ 2 + {(g{Z^{-d}})} ^ 3 + \cdots
+\end{displaymath} +
+
+

+and subtract from the original equation to give: +

+
+ + +\begin{displaymath}
+H - g{Z^{-d}} H = 1
+\end{displaymath} +
+
+

+Then solve for $H$: +

+
+ + +\begin{displaymath}
+H = {1 \over {1 - g{Z^{-d}}}}
+\end{displaymath} +
+
+

+ +

+A faster (but slightly less intuitive) method to get the same result is to +examine the recirculating network itself to yield an equation for $H$, as +follows. We named the input $X[n]$ and the output $Y[n]$. The signal going +into the delay line is the output $Y[n]$, and passing this through the delay +line and multiplier gives +

+
+ + +\begin{displaymath}
+Y[n] \cdot g{Z^{-d}}
+\end{displaymath} +
+
+

+This plus the input is just the output signal again, so: +

+
+ + +\begin{displaymath}
+Y[n] = X[n]+Y[n] \cdot g{Z^{-d}}
+\end{displaymath} +
+
+

+and dividing by $X[n]$ and using $H=Y[n]/X[n]$ gives: +

+
+ + +\begin{displaymath}
+H = 1 + Hg{Z^{-d}}
+\end{displaymath} +
+
+

+This is equivalent to the earlier equation for $H$. + +

+Now we would like to make a graph of the frequency response (the gain as a +function of frequency) as +we did for non-recirculating comb filters in +Figure 7.6. This +again requires that we make a preliminary picture in the complex plane. We +would like to estimate the magnitude of $H$ equal to: +

+
+ + +\begin{displaymath}
+\vert H\vert = {1 \over {\vert 1 - g{Z^{-d}}\vert}}
+\end{displaymath} +
+
+

+where we used the multiplicative property of magnitudes to conclude that the +magnitude of a (complex) reciprocal is the reciprocal of a (real) magnitude. +Figure 7.9 shows the situation graphically. The gain $\vert H\vert$ is +the reciprocal of the length of the segment reaching from the point 1 to the +point $g{Z^{-d}}$. Figure +7.10 shows a graph of the +frequency response $\vert H\vert$ as a function of the angular frequency + +$\omega = \angle(Z)$. + +

+ +

+ + + +
Figure 7.9: +Diagram in the complex plane for approximating the output gain $\vert H\vert$ +of the +recirculating comb filters at three different frequencies: 0, and the +arguments of two unit complex numbers $W$ and $Z$; $W$ +is chosen to give a gain about 3 dB below the peak.
\begin{figure}\psfig{file=figs/fig07.09.ps}\end{figure}
+
+ +

+ +

+ + + +
Figure 7.10: +Frequency response of the recirculating comb filter with $g = 0.8$. +The peak +gain is $1/(1-g)$ = 5. Peaks are much narrower than for the non-recirculating +comb filter.
\begin{figure}\psfig{file=figs/fig07.10.ps}\end{figure}
+
+ +

+Figure 7.9 can be used to analyze how the frequency response +$\vert H(\omega)\vert$ should +behave +qualitatively as a function of $g$. The height and bandwidth of the peaks +both depend on $g$. The maximum value that $\vert H\vert$ can attain is +when +

+
+ + +\begin{displaymath}
+{Z^{-d}} = 1
+\end{displaymath} +
+
+

+This occurs at the frequencies +$\omega = 0, 2\pi/d , 4\pi/d , \ldots$ as in the +simple comb filter above. At these frequencies the gain reaches +

+
+ + +\begin{displaymath}
+\vert H\vert = {1 \over {1 - g}}
+\end{displaymath} +
+
+

+ +

+The next important question is the bandwidth of the peaks in the frequency +response. So we would like to find sinusoids $W^n$, with frequency +$\angle(W)$, giving rise to a value of $\vert H\vert$ that is, say, 3 decibels below the +maximum. To do this, we return to Figure 7.9, and try to place $W$ +so that the distance from the point 1 to the point $gW^{-d}$ is about +$\sqrt{2}$ times the distance from 1 to $g$ (since $\sqrt{2}$:1 is a ratio of +approximately 3 decibels). + +

+We do this by arranging for the imaginary part of +$gW^{-d}$ to be roughly $1-g$ or its negative, making a nearly isosceles right +triangle between the points 1, $1-g$, and $gW^{-d}$. (Here we're supposing that +$g$ is at least 2/3 or so; otherwise this approximation isn't very good). The +hypotenuse of a right isosceles triangle is always $\sqrt{2}$ times the leg, +and so the gain drops by that factor compared to its maximum. + +

+We now make another approximation, that the imaginary part of $gW^{-d}$ +is approximately the angle in radians it cuts from the real axis: +

+
+ + +\begin{displaymath}
+\pm(1-g) \approx \mathrm{im}({gW^{-d}}) \approx \angle({W^{-d}})
+\end{displaymath} +
+
+

+So the region of each peak reaching within 3 decibels of the maximum value +is about +

+
+ + +\begin{displaymath}
+(1-g)/d
+\end{displaymath} +
+
+

+(in radians) to either side of the peak. The bandwidth narrows (and the filter +peaks become sharper) as $g$ approaches its maximum value of $1$. + +

+As with the non-recirculating comb filter of Section 7.3, the +teeth of the comb are closer together for larger values of the delay $d$. On +the other hand, a delay of $d=1$ (the shortest possible) gets only one tooth +(at zero frequency) below the Nyquist frequency $\pi $ (the next tooth, at +$2\pi $, corresponds again to a frequency of zero by foldover). +So the recirculating comb filter with $d=1$ is just a low-pass filter. +Delay networks +with one-sample delays will be the basis for designing many other kinds of +digital +filters in Chapter 8. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Power conservation and complex + Up: Time shifts and delays + Previous: Delay networks +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node11.html b/node11.html new file mode 100644 index 0000000..85c2e0e --- /dev/null +++ b/node11.html @@ -0,0 +1,207 @@ + + + + + +Frequency + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Synthesizing a sinusoid + Up: Sinusoids, amplitude and frequency + Previous: Controlling Amplitude +   Contents +   Index +
+
+ + +

+Frequency +

+ +

+Frequencies, like amplitudes, are often measured on a logarithmic scale, in +order to emphasize proportions between them, which usually provide a better +description of the relationship between frequencies than do differences +between them. The frequency ratio between two musical tones determines +the musical interval between them. + +

+The Western musical scale divides the +octave (the musical interval associated with a ratio of 2:1) into +twelve equal sub-intervals, each of which therefore corresponds to a ratio +of +${2 ^ {1/{12}}}$. For historical reasons this sub-interval is called a +half-step. +A convenient logarithmic scale for pitch is simply to +count the number of half-steps from a reference pitch--allowing fractions to +permit us to specify pitches which don't fall on a note of the Western scale. +The most commonly used logarithmic pitch scale is +``MIDI pitch", in which the pitch 69 is assigned to a frequency of 440 cycles +per second--the A above middle C. To convert between a MIDI pitch $m$ +and a frequency +in cycles per second $f$, apply the +Pitch/Frequency Conversion formulas: + +

+ +

+
+ + +\begin{displaymath}
+m = 69 + 12 \cdot {\log _ 2} (f/440)
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+f = 440 \cdot {{2} ^ {(m - 69) / 12}}
+\end{displaymath} +
+
+

+Middle C, corresponding to MIDI pitch $m=60$, comes to $f=261.626$ cycles per +second. + +

+MIDI itself is an old hardware protocol which has unfortunately insinuated +itself into a great deal of software design. In hardware, MIDI allows only +integer pitches between 0 and 127. However, the underlying scale is well +defined for any ``MIDI" number, even negative ones; for example a ``MIDI pitch" +of -4 is a decent rate of vibrato. The pitch scale cannot, however, describe +frequencies less than or equal to zero cycles per second. (For a clear +description of MIDI, its capabilities and limitations, see +[Bal03, ch.6-8]). + +

+A half-step comes to a ratio of about 1.059 to 1, or about a six percent +increase in frequency. Half-steps are further divided into cents, each cent being one hundredth of a half-step. As a rule of +thumb, it might take about three cents to make a discernible change in the +pitch of a musical tone. At middle C this comes to a difference of about 1/2 +cycle per second. A graph of frequency as a function of MIDI pitch, over a +two-octave range, is shown in Figure 1.4. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Synthesizing a sinusoid + Up: Sinusoids, amplitude and frequency + Previous: Controlling Amplitude +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node110.html b/node110.html new file mode 100644 index 0000000..2f603b5 --- /dev/null +++ b/node110.html @@ -0,0 +1,706 @@ + + + + + +Power conservation and complex delay networks + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Artificial reverberation + Up: Time shifts and delays + Previous: Recirculating delay networks +   Contents +   Index +
+
+ + +

+Power conservation and complex delay networks +

+ +

+The same techniques will work to analyze any delay network, although for +more complicated networks it becomes harder to characterize the results, or +to design the network to have specific, desired properties. Another point +of view can sometimes be usefully brought to the situation, particularly +when flat frequency responses are needed, either in their own right or else +to ensure that a complex, recirculating network remains stable at feedback +gains close to one. + +

+The central fact we will use is that if any delay network, with either one or +many inputs and outputs, is constructed so that its output power +(averaged over time) always +equals its input power, that network has to have a flat frequency response. +This is almost a tautology; if you put in a sinusoid at any frequency on one of +the inputs, you will get sinusoids of the same frequency at the outputs, and +the sum of the power on all the outputs will equal the power of the input, so +the gain, suitably defined, is exactly one. + +

+ +

+ + + +
Figure 7.11: +First fundamental building block for unitary delay networks: +delay lines in parallel.
\begin{figure}\psfig{file=figs/fig07.11.ps}\end{figure}
+
+ +

+In order to work with power-conserving delay networks we will need an +explicit definition of ``total average power". +If there is only one signal (call it $x[n]$), the average power is +given by: +

+
+ + +\begin{displaymath}
+P(x[n]) = \left [{{\vert x[0]\vert}^2} + {{\vert x[1]\vert}^2} + \cdots
++ {{\vert x[N-1]\vert}^2} \right ] / N
+\end{displaymath} +
+
+

+where $N$ is a large enough number so that any fluctuations in amplitude get +averaged out. This definition works as well for complex-valued signals +as for real-valued ones. The average total power for several digital +audio signals is +just the sum of the individual signal's powers: +

+
+ + +\begin{displaymath}
+P({x_1}[n] , \ldots , {x_r}[n]) = P({x_1}[n]) + \cdots + P({x_r}[n])
+\end{displaymath} +
+
+

+where $r$ is the number of signals to be combined. + +

+It turns out that a wide range of interesting delay networks has the property +that the total power output equals the total power input; +they are called +unitary. To start with, we can put any number of delays in parallel, as +shown in Figure 7.11. Whatever the total power of the inputs, +the total power of the outputs has to equal it. + +

+A second family of power-preserving transformations is composed of rotations +and reflections of the signals ${x_1}[n]$, ... , ${x_r}[n]$, considering them, +at each fixed time point $n$, as the $r$ coordinates of a point in +$r$-dimensional space. The rotation or reflection must be one that leaves the +origin +$(0, \ldots, 0)$ fixed. + +

+For each sample number $n$, the total +contribution to the average signal power is proportional to +

+
+ + +\begin{displaymath}
+{\vert{x_1}\vert}^2 + \cdots + {\vert{x_r}\vert}^2
+\end{displaymath} +
+
+

+This is just the Pythagorean distance from the origin to +the point +$({x_1}, \ldots, {x_r})$. Since rotations and reflections are +distance-preserving transformations, the distance from the origin before +transforming must +equal the distance from the origin afterward. So the total power +of a collection of signals must must be preserved by rotation. + +

+ +

+ + + +
Figure 7.12: +Second fundamental building block for unitary delay networks: +rotating two digital audio signals. Part (a) shows the transformation explicitly; +(b) shows it as a matrix operation.
\begin{figure}\psfig{file=figs/fig07.12.ps}\end{figure}
+
+ +

+Figure 7.12 shows a rotation matrix operating on two signals. In +part (a) the transformation is shown explicitly. If the input signals are +${x_1}[n]$ and ${x_2}[n]$, the outputs are: +

+
+ + +\begin{displaymath}
+{y_1}[n] = c {x_1}[n] - s {x_2}[n]
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+{y_2}[n] = s {x_1}[n] + c {x_2}[n]
+\end{displaymath} +
+
+

+where $c, s$ are given by +

+
+ + +\begin{displaymath}
+c = \cos(\theta)
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+s = \sin(\theta)
+\end{displaymath} +
+
+

+for an +angle of rotation $\theta$. +Considered as points on the Cartesian plane, the point +$({y_1}, {y_2})$ is +just the point +$({x_1}, {x_2})$ rotated counter-clockwise by the angle +$\theta$. The two points are thus at the same distance from the origin: +

+
+ + +\begin{displaymath}
+{\vert{y_1}\vert}^2 + {\vert{y_2}\vert}^2 = {\vert{x_1}\vert}^2 + {\vert{x_2}\vert}^2
+\end{displaymath} +
+
+

+and so the two output signals have the same total power as the two input +signals. + +

+For an alternative description of rotation in two dimensions, +consider complex numbers +$X={x_1} + {x_2}i$ and + +$Y={y_1} + {y_2}i$. The above transformation amounts to setting +

+
+ + +\begin{displaymath}
+Y = XZ
+\end{displaymath} +
+
+

+where $Z$ is a complex number with +unit magnitude and argument $\theta$. Since $\vert Z\vert=1$, it follows that +$\vert X\vert = \vert Y\vert$. + +

+If we perform a rotation on a pair of signals and then invert one (but not the +other) of them, the result is a + +reflection. +This also preserves total signal power, since we can invert any or all of a +collection of signals without changing the total power. In two dimensions, a +reflection appears as a transformation of the form +

+
+ + +\begin{displaymath}
+{y_1}[n] = c {x_1}[n] + s {x_2}[n]
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+{y_2}[n] = s {x_1}[n] - c {x_2}[n]
+\end{displaymath} +
+
+

+ +

+A special and useful rotation matrix is obtained by setting + +$\theta = \pi /4$, so that +$s = c = \sqrt{1/2}$. This +allows us to simplify the computation as shown in Figure 7.13 (part +a) because each signal need only be multiplied by the one quantity $c=s$. + +

+ +

+ + + +
Figure 7.13: +Details about rotation (and reflection) matrix operations: (a) +rotation by the angle +$\theta = \pi /4$, so that + +$a = \cos(\theta) = \sin(\theta) = \sqrt{1/2} \approx 0.7071$; (b) combining +two-dimensional rotations to make higher-dimensional ones.
\begin{figure}\psfig{file=figs/fig07.13.ps}\end{figure}
+
+ +

+More complicated rotations or reflections of more than two input signals may be +made by repeatedly rotating and/or reflecting them in pairs. For +example, in Figure 7.13 (part b), four signals are combined in +pairs, in two successive stages, so that in the end every signal input feeds +into all the outputs. We could do the same with eight signals (using three +stages) and so on. Furthermore, if we use the special angle $\pi /4$, all the +input signals will contribute equally to each of the outputs. + +

+Any combination of delays and rotation matrices, applied in succession to a +collection of audio signals, will result in a flat frequency response, since +each individual operation does. +This already allows us to generate an infinitude of +flat-response delay networks, but so far, none of them are recirculating. A +third operation, shown in Figure 7.14, allows us to make +recirculating networks that still enjoy flat frequency responses. + +

+ +

+ + + +
Figure 7.14: +Flat frequency response in recirculating networks: (a) in general, +using a rotation matrix $R$; (b) the ``all-pass" configuration.
\begin{figure}\psfig{file=figs/fig07.14.ps}\end{figure}
+
+ +

+Part (a) of the figure shows the general layout. The transformation $R$ is +assumed to be any combination of delays and mixing matrices that preserves +total power. The signals +${x_1}, \ldots {x_k}$ go into a +unitary delay network, and the output signals +${y_1}, \ldots {y_k}$ emerge. +Some other signals +${w_1}, \ldots {w_j}$ (where $j$ is not necessarily equal to +$k$) appear at the output of the transformation $R$ and are fed back to its +input. + +

+If $R$ is indeed power preserving, the total input power (the power of the +signals +${x_1}, \ldots {x_k}$ plus that of the signals +${w_1}, \ldots {w_j}$) +must equal the output power (the power of the signals +${y_1}, \ldots {y_k}$ +plus +${w_1}, \ldots {w_j}$), and subtracting all the $w$ from the +equality, we find that the total input and output power are equal. + +

+If we let $j=k=1$ so that there is one $x$, $y$, and $w$, +and +let the transformation $R$ be a rotation by $\theta$ followed by a delay of +$d$ samples on the $W$ output, the result is the well-known +all-pass filter. +With some juggling, and letting +$c = \cos(\theta)$, we can show it is +equivalent to the network +shown in part (b) of the figure. All-pass filters have many applications, some +of which we will visit later in this book. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Artificial reverberation + Up: Time shifts and delays + Previous: Recirculating delay networks +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node111.html b/node111.html new file mode 100644 index 0000000..74dcd8a --- /dev/null +++ b/node111.html @@ -0,0 +1,318 @@ + + + + + +Artificial reverberation + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Controlling reverberators + Up: Time shifts and delays + Previous: Power conservation and complex +   Contents +   Index +
+
+ + +

+Artificial reverberation +

+ +

+Artificial reverberation is widely used to improve the sound of recordings, but +has a wide range of other musical applications [DJ85, pp.289-340]. +Reverberation in real, natural spaces arises from a complicated pattern of +sound reflections off the walls and other objects that define the space. It is +a great oversimplification to imitate this process using recirculating, +discrete delay networks. Nonetheless, modeling reverberation using +recirculating delay lines can, with much work, be made to yield good results. + +

+The central idea is to idealize any room (or other reverberant space) as a +collection of parallel delay lines that models the memory of the air inside the +room. At each point on the walls of the room, many straight-line paths +terminate, each carrying sound to that point; the sound then reflects into many +other paths, each one originating at that point, and leading eventually to some +other point on a wall. + +

+Although the wall (and the air we passed through to get to the wall) absorbs +some of the sound, some portion of the incident power is reflected and makes +it to another wall. If most of the energy recirculates, the room reverberates +for a long time; if all of it does, the reverberation lasts forever. If at +any frequency the walls reflect more energy overall than they receive, the +sound will feed back unstably; this never happens in real rooms (conservation +of energy prevents it), but it can happen in an artificial reverberator if it +is not designed correctly. + +

+To make an artificial reverberator using a delay network, we must +fill two competing demands simultaneously. First, the delay lines must +be long enough to prevent +coloration in the output as a result of comb filtering. +(Even if we move beyond the simple comb filter +of Section 7.4, the frequency response will tend to +have peaks and +valleys whose spacing varies inversely with total delay time.) On the other +hand, we should not hear individual echoes; the +echo density should ideally be at least one thousand per second. + +

+In pursuit of these aims, we assemble some number of delay lines and +connect their outputs back to their inputs. The feedback path--the connection +from the outputs back to the inputs of the delays--should have an aggregate +gain that varies gently as a function of frequency, and never exceeds one for +any frequency. A good starting point is to give the feedback path a flat +frequency response and a gain slightly less than one; this is done using +rotation matrices. + +

+Ideally this is all we should need to do, but in reality we will not always +want to use the thousands of delay lines it would take to model the paths +between every possible pair of points on the walls. In practice we +usually use between four and sixteen delay lines to model the room. This +simplification sometimes reduces the echo density below what we would wish, +so we might use more delay lines at the input of the recirculating network +to increase the density. + +

+Figure 7.15 shows a simple reverberator design that uses this +principle. The incoming sound, shown as two separate signals in this example, +is first thickened by progressively delaying one of the two signals and then +intermixing them using a rotation matrix. At each stage the number of +echoes of the original signal is doubled; typically we would use between 6 and 8 +stages to make between 64 and 256 echos, all with a total delay of between 30 +and 80 milliseconds. The figure shows three such stages. + +

+ +

+ + + +
Figure 7.15: +Reverberator design using power-preserving transformations and +recirculating delays.
\begin{figure}\psfig{file=figs/fig07.15.ps}\end{figure}
+
+ +

+Next comes the recirculating part of the reverberator. After the initial +thickening, the input signal is fed into a bank of parallel delay +lines, and their outputs are again mixed using a rotation matrix. The +mixed outputs are attenuated by a gain $g \le 1$, and fed back into the +delay lines to make a recirculating network. + +

+The value $g$ controls +the reverberation time. If the average length of the recirculating delay lines +is $d$, then any incoming sound is attenuated by a factor of $g$ after a +time delay of $d$. After time $t$ the signal has recirculated $t/d$ times, +losing +$20 {\log_{10}} (g)$ decibels each time around, so the total gain, in +decibels, is: +

+
+ + +\begin{displaymath}
+20 {t\over d} {\log_{10}} (g)
+\end{displaymath} +
+
+

+The usual measure of reverberation time (RT) is the time at which the gain drops +by sixty decibels: +

+
+ + +\begin{displaymath}
+20 {\mathrm{RT}\over d} {\log_{10}}( g ) = -60
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+\mathrm{RT} = {{-3d} \over {{\log_{10}}(g) }}
+\end{displaymath} +
+
+

+If $g$ is one, this formula gives $\infty$, since the logarithm of one is zero. + +

+The framework shown above is the basis for many modern reverberator designs. +Many extensions of this underlying design have been proposed. The most +important next step would be to introduce filters in the recirculation path so +that high frequencies can be made to decay more rapidly than low ones; this is +readily accomplished with a very simple low-pass filter, but we will not work +this out here, having not yet developed the needed filter theory. + +

+In general, to use this framework to design a reverberator involves making many +complicated choices of delay times, gains, and filter coefficients. Mountains +of literature have been published on this topic; Barry Blesser has published a +good overview [Ble01]. Much more is known about reverberator design +and tuning that has not been published; precise designs are often kept secret +for commercial reasons. In general, the design process involves painstaking +and lengthy tuning by trial, error, and critical listening. + +

+


+ +Subsections + + + +
+ + +next + +up + +previous + +contents + +index +
+ Next: Controlling reverberators + Up: Time shifts and delays + Previous: Power conservation and complex +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node112.html b/node112.html new file mode 100644 index 0000000..19e8d98 --- /dev/null +++ b/node112.html @@ -0,0 +1,171 @@ + + + + + +Controlling reverberators + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Variable and fractional shifts + Up: Artificial reverberation + Previous: Artificial reverberation +   Contents +   Index +
+
+ + +

+Controlling reverberators +

+ +

+Artificial reverberation is used almost universally in recording or sound +reinforcement to sweeten the overall sound. However, and more interestingly, +reverberation may be used as a sound source in its own right. The special case +of infinite reverberation is useful for grabbing live sounds +and extending them in time. + +

+To make this work in practice it is necessary to open the input of the +reverberator only for a short period of time, during which the input sound is +not varying too rapidly. If an infinite reverberator's input is left open for +too long, the sound will collect and quickly become an indecipherable mass. To +``infinitely reverberate" a note of a live instrument, it is best to wait until +after the attack portion of the note and then allow perhaps 1/2 second of the +note's steady state to enter the reverberator. It is possible to build chords +from a monophonic instrument by repeatedly opening the input at different +moments of stable pitch. + +

+ +

+ + + +
Figure 7.16: +Controlling a reverberator to capture sounds selectively: (a) +the network; (b) examples of how to control the input gain and feedback to +capture two sounds at times $t_1$ and $t_2$, and to hold them until a later +time $t_3$.
\begin{figure}\psfig{file=figs/fig07.16.ps}\end{figure}
+
+ +

+Figure 7.16 shows how this can be done in practice. The two most +important controls are the reverberator's input and feedback +gains. To capture a sound, we set the feedback gain to one (infinite +reverberation time) and momentarily open the input at time $t_1$. To add other +sounds to an already held one, we simply reopen the input gain at the +appropriate moments (at time $t_2$ in the figure, for example). Finally, we +can erase the recirculating sound, thus both fading the output and emptying the +reverberator, by setting the feedback gain to a value less than one (as at time +$t_3$). The further we reduce the feedback gain, the faster the output will +decay. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Variable and fractional shifts + Up: Artificial reverberation + Previous: Artificial reverberation +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node113.html b/node113.html new file mode 100644 index 0000000..60d85e7 --- /dev/null +++ b/node113.html @@ -0,0 +1,427 @@ + + + + + +Variable and fractional shifts + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Fidelity of interpolating delay + Up: Time shifts and delays + Previous: Controlling reverberators +   Contents +   Index +
+
+ + +

+ +
+Variable and fractional shifts +

+ +

+Like any audio synthesis or processing technique, delay networks become much +more powerful and interesting if their characteristics can be made to change +over time. The gain parameters (such as $g$ in the recirculating comb filter) +may be controlled by envelope generators, varying them while avoiding clicks or +other artifacts. The delay times (such as $d$ before) are not so easy to vary +smoothly for two reasons. + +

+First, we have only defined time shifts for integer values of $d$, since for +fractional values of $d$ an expression such as $x[n-d]$ is not determined if +$x[n]$ is only defined for integer values of $n$. To make fractional delays +we will have to introduce some suitable interpolation scheme. And if we +wish to vary $d$ smoothly over time, it will not give good results simply +to hop from one integer to the next. + +

+Second, even once we have achieved perfectly smoothly changing delay +times, the artifacts caused by varying delay time become noticeable even at very +small relative rates of change; while in most cases you may ramp an amplitude +control between any two values over 30 milliseconds without trouble, changing a +delay by only one sample out of every hundred makes a very noticeable shift +in pitch--indeed, one frequently will vary a delay deliberately +in order to hear the artifacts, only incidentally passing from one specific +delay time value to another one. + +

+The first matter (fractional delays) can be dealt with using an +interpolation scheme, in exactly the same way as for wavetable lookup +(Section 2.5). For example, suppose we want +a delay of $d=1.5$ samples. For each $n$ we must estimate a value for +$x[n-1.5]$. +We could do this using standard four-point interpolation, putting a cubic +polynomial through the four ``known" points (0, x[n]), (1, x[n-1]), (2, x[n-2]), +(3, x[n-3]), and then evaluating the polynomial at the point 1.5. Doing +this repeatedly for each value of $n$ gives the delayed signal. + +

+This four-point interpolation scheme can be used for any delay of at least one +sample. Delays of less than one sample can't be calculated this way because we +need two input points at least as recent as the desired delay. They were +available in the above example, but for a delay time of 0.5 samples, for +instance, we would need the value of $x[n+1]$, which is in the future. + +

+The accuracy of the estimate could be further improved by using higher-order +interpolation schemes. However, there is a trade-off between quality and +computational efficiency. Furthermore, if we move to higher-order +interpolation schemes, the minimum possible delay time will increase, causing +trouble in some situations. + +

+The second matter to consider is the artifacts--whether wanted +or unwanted--that arise from changing delay lines. In +general, a discontinuous change in delay time will give rise to a +discontinuous change in the output signal, since it is in effect +interrupted at one point and made to jump to another. If the input is +a sinusoid, the result is a discontinuous phase change. + +

+If it is desired to change the delay line occasionally between fixed delay +times (for instance, at the beginnings of musical notes), then we can use the +techniques for managing sporadic discontinuities that were introduced in +Section 4.3. In effect these techniques all work by muting +the output in one way or another. On the other hand, if it is +desired that the delay time change continuously--while we are listening +to the output--then we must take into account the artifacts that +result from the changes. + +

+ +

+ + + +
Figure 7.17: +A variable length delay line, whose output is the input from some +previous time. The output samples can't be newer than the input samples, nor +older than the length $D$ of the delay line. The slope of the input/output +curve controls the momentary transposition of the output.
\begin{figure}\psfig{file=figs/fig07.17.ps}\end{figure}
+
+ +

+Figure 7.17 shows the relationship between input and output time in a +variable delay line. The delay line is assumed to have a fixed maximum length +$D$. At each sample of output (corresponding to a point on the horizontal +axis), we output one (possibly interpolated) sample of the delay line's input. +The vertical axis shows which sample (integer or fractional) to use from the +input signal. Letting $n$ denote the output sample number, the vertical axis +shows the quantity $n - d[n]$, where $d[n]$ is the (time-varying) delay in +samples. If we denote the input sample location by: +

+
+ + +\begin{displaymath}
+y[n] = n - d[n]
+\end{displaymath} +
+
+

+then the output of the delay line is: +

+
+ + +\begin{displaymath}
+z[n] = x[y[n]]
+\end{displaymath} +
+
+

+where the signal $x$ is evaluated at the point $y[n]$, interpolating +appropriately in case $y[n]$ is not an integer. This is exactly the formula +for wavetable lookup (Page [*]). We can use all the +properties of wavetable lookup of recorded sounds to predict the behavior +of variable delay lines. + +

+There remains one difference between delay lines and wavetables: +the material in the delay line is constantly being refreshed. Not only +can we not read into the future, but, if the +the delay line is $D$ samples in length, we can't read further than $D$ samples +into the past either: +

+
+ + +\begin{displaymath}
+0 < d[n] < D
+\end{displaymath} +
+
+

+or, negating this and adding $n$ to each side, +

+
+ + +\begin{displaymath}
+n > y[n] > n - D.
+\end{displaymath} +
+
+

+This last relationship appears as the region between the two diagonal lines +in Figure 7.17; the function $y[n]$ must stay within this strip. + +

+Returning to Section 2.2, we can use the Momentary +Transposition Formulas for wavetables to calculate the transposition $t[n]$ of +the output. This gives the Momentary Transposition Formula for delay lines: +

+
+ + +\begin{displaymath}
+t[n] = y[n] - y[n-1] = 1 - (d[n] - d[n-1])
+\end{displaymath} +
+
+

+If $d[n]$ does not change with $n$, the transposition factor is $1$ and the +sound emerges from the delay line at the same speed as it went in. But if the +delay time is increasing as a function of $n$, the resulting sound is transposed +downward, and if $d[n]$ decreases, upward. + +

+This is called the +Doppler effect, and it occurs in nature as well. +The air that sound travels through can sometimes be thought of as a delay +line. Changing the length of the delay line corresponds to moving the +listener toward or away from a stationary sound source; the Doppler effect +from the changing path length works precisely the same in the delay line as it +would be in the physical air. + +

+Returning to Figure 7.17, we can predict that there is no pitch +shift at the beginning, but then when the slope of the path decreases the +pitch will drop for an interval of time before going back to the original +pitch (when the slope returns to one). The delay time can be manipulated +to give any desired transposition, but the greater the transposition, the +less long we can maintain it before we run off the bottom or the top of the +diagonal region. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Fidelity of interpolating delay + Up: Time shifts and delays + Previous: Controlling reverberators +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node114.html b/node114.html new file mode 100644 index 0000000..a582b15 --- /dev/null +++ b/node114.html @@ -0,0 +1,257 @@ + + + + + +Fidelity of interpolating delay lines + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Pitch shifting + Up: Time shifts and delays + Previous: Variable and fractional shifts +   Contents +   Index +
+
+ + +

+Fidelity of interpolating delay lines +

+ +

+Since they are in effect doing wavetable lookup, variable delay lines +introduce distortion to the signals they operate on. Moreover, a +subtler problem can come up even when the delay line is not changing in length: +the frequency response, in real situations, is never perfectly flat for a +delay line whose length is not an integer. + +

+If the delay time is changing from sample to sample, the distortion results of +Section 2.5 apply. To use them, we suppose that the +delay line input can be broken down into sinusoids and consider separately what +happens to each individual sinusoid. We can use Table 2.1 +(Page [*]) to predict +the RMS level of the combined distortion products for an interpolated +variable delay line. + +

+We'll assume here that we want to use four-point interpolation. For sinusoids +with periods longer than 32 samples (that is, for frequencies below 1/16 of the +Nyquist frequency) the distortion is 96 dB or better--unlikely ever to be +noticeable. At a 44 kHz. sample rate, these periods would correspond to +frequencies up to about 1400 Hertz. At higher frequencies the quality degrades, +and above 1/4 the Nyquist frequency the distortion products, which are only +down about 50 dB, will probably be audible. + +

+The situation for a complex tone depends primarily on the amplitudes and +frequencies of its higher partials. Suppose, for instance, that a tone's +partials above 5000 Hertz are at least 20 dB less than its strongest partial, and +that above 10000 Hertz they are down 60 dB. Then as a rough estimate, the +distortion products from the range 5000-10000 will each be limited to +about -68 dB and those from above 10000 Hertz will be limited to about -75 dB +(because the worst figure in the table is about -15 dB and this must be +added to the strength of the partial involved.) + +

+If the high-frequency content of the input signal does turn out to give +unacceptable distortion products, in general it is more effective to increase +the sample rate than the number of points of interpolation. For periods +greater than 4 samples, doubling the period (by doubling the sample +rate, for example) decreases distortion by about 24 dB. + +

+The 4-point interpolating delay line's frequency response is nearly +flat up to half the Nyquist frequency, but thereafter it dives quickly. +Suppose (to pick the worst case) that the delay is set halfway between two +integers, say 1.5. Cubic interpolation gives: +

+
+ + +\begin{displaymath}
+x[1.5] = {{-x[0] + 9x[1] + 9 x[2] - x[3]} \over 8}
+\end{displaymath} +
+
+

+Now let $x[n]$ be a (real-valued) unit-amplitude sinusoid with angular +frequency $\omega $, whose phase is zero at $1.5$: +

+
+ + +\begin{displaymath}
+x[n] = \cos(\omega \cdot (n - 1.5))
+\end{displaymath} +
+
+

+and compute $x[1.5]$ using the above formula: +

+
+ + +\begin{displaymath}
+x[1.5] = {{9 \cos(\omega/2) - \cos(3 \omega / 2)}\over4}
+\end{displaymath} +
+
+

+This is the peak value of the sinusoid that comes back out of the delay +line, and since the peak amplitude going in was one, this shows the +frequency response of the delay line. This is graphed in Figure +7.18. At half the Nyquist frequency ( +$\omega = \pi / 2$) the gain +is about +-1 dB, which is a barely perceptible drop in amplitude. At the Nyquist +frequency +itself, however, the gain is zero. + +

+ +

+ + + +
Figure 7.18: +Gain of a four-point interpolating delay line with a delay halfway +between two integers. The DC gain is one.
\begin{figure}\psfig{file=figs/fig07.18.ps}\end{figure}
+
+ +

+As with the results for distortion, the frequency response improves radically +with a doubling of sample rate. If we run our delay at a sample rate of 88200 +Hertz instead of the standard 44100, we will get only about 1 dB of roll-off all +the way up to 20000 Hertz. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Pitch shifting + Up: Time shifts and delays + Previous: Variable and fractional shifts +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node115.html b/node115.html new file mode 100644 index 0000000..84bb568 --- /dev/null +++ b/node115.html @@ -0,0 +1,481 @@ + + + + + +Pitch shifting + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Examples + Up: Time shifts and delays + Previous: Fidelity of interpolating delay +   Contents +   Index +
+
+ + +

+ +
+Pitch shifting +

+ +

+A favorite use of variable delay lines is to alter the pitch of an incoming +sound using the Doppler effect. It may be desirable to alter the pitch +variably (randomly or periodically, for example), or else +to maintain a fixed musical interval of transposition over a length of time. + +

+Returning to Figure 7.17, we see that with a single variable +delay line we can maintain any desired pitch shift for a limited +interval of time, but if we wish to sustain a fixed transposition we will always +eventually land outside the diagonal strip of admissible delay times. In +the simplest scenario, we simply vary the transposition up and down so as to remain +in the strip. + +

+ +

+ + + +
Figure 7.19: +Vibrato using a variable delay line. Since the pitch shift +alternates between upward and downward, it is possible to maintain it without +drifting outside the strip of admissible delay.
\begin{figure}\psfig{file=figs/fig07.19.ps}\end{figure}
+
+ +

+This works, for example, if we wish to apply vibrato +to a sound as shown in Figure 7.19. +Here the delay function is +

+
+ + +\begin{displaymath}
+d[n] = {d_0} + a \cos(\omega n)
+\end{displaymath} +
+
+

+where $d_0$ is the average delay, $a$ is the amplitude of variation about +the average delay, and $\omega $ is an angular frequency. The Momentary +Transposition (Page [*]), is approximately +

+
+ + +\begin{displaymath}
+t = 1 + a \omega \cos(\omega n - \pi/2)
+\end{displaymath} +
+
+

+This ranges in value between $1 - a \omega$ and $1 + a \omega$. + +

+ +

+ + + +
Figure 7.20: +Piecewise linear delay functions to maintain a constant transposition +(except at the points of discontinuity). The outputs are enveloped as suggested +by the bars above each point, to smooth the output at the points of discontinuity +in delay time.
\begin{figure}\psfig{file=figs/fig07.20.ps}\end{figure}
+
+ +

+Suppose, on the other hand, that we wish to maintain a constant transposition +over a longer interval of time. In this case we can't maintain the +transposition forever, but it is still possible to maintain it over fixed +intervals of time broken by discontinuous changes, as shown in Figure +7.20. +The delay time is the output of a suitably normalized sawtooth function, and +the output of the variable delay line is enveloped as shown in the figure +to avoid discontinuities. + +

+ +

+ + + +
Figure 7.21: +Using a variable delay line as a pitch shifter. The sawtooth wave +creates a smoothly increasing or decreasing delay time. The output of the +delay line is enveloped to avoid discontinuities. +Another copy of the same diagram should run 180 degrees ($\pi $ radians) out +of phase with this one.
\begin{figure}\psfig{file=figs/fig07.21.ps}\end{figure}
+
+ +

+This is accomplished as shown in Figure 7.21. +The output of the sawtooth generator is used in two ways. First it is adjusted +to run between the bounds ${d_0}$ and ${d_0}+s$, and this adjusted sawtooth +controls the delay time, in samples. The initial delay $d_0$ should be at +least enough to make the variable delay feasible; for four-point interpolation +it must be at least one sample. Larger values of $d_0$ add a constant, +additional delay to the output; this is usually offered as a control in a +pitch shifter since it is essentially free. The quantity $s$ is sometimes +called the +window size. It corresponds roughly to the sample length in a +looping sampler (Section 2.2). + +

+The sawtooth output is also used to envelope the output in exactly the same +way as in the enveloped wavetable sampler of Figure 2.7 +(Page [*]). The +envelope is zero at the points where the sawtooth wraps around, and in +between, rises smoothly to a maximum value of 1 (for unit gain). + +

+If the frequency of the sawtooth wave is $f$ (in cycles per second), then +its value sweeps from 0 to 1 every $R/f$ samples (where $R$ is the sample rate). +The difference between successive values is thus $f/R$. If we let $x[n]$ +denote the output of the sawtooth oscillator, then +

+
+ + +\begin{displaymath}
+x[n+1] - x[n] = {f \over R}
+\end{displaymath} +
+
+

+(except at the wraparound points). If we adjust the output range of the +wavetable oscillator to the value $s$ (as is done in the figure) we get a +new slope: +

+
+ + +\begin{displaymath}
+s \cdot x[n+1] - s \cdot x[n] = {{sf} \over R}
+\end{displaymath} +
+
+

+Adding the constant $d_0$ has no effect on this slope. The Momentary +Transposition (Page [*]) is then: +

+
+ + +\begin{displaymath}
+t = 1 - {{sf} \over R}
+\end{displaymath} +
+
+

+To complete the design of the pitch shifter we must add the other copy halfway +out of phase. This gives rise to a delay reading pattern as shown in +Figure 7.22. + +

+ +

+ + + +
Figure 7.22: +The pitch shifter's delay reading pattern using two delay lines, +so that one is at maximum amplitude exactly when the other is switching.
\begin{figure}\psfig{file=figs/fig07.22.ps}\end{figure}
+
+ +

+The pitch shifter can transpose either upward (using negative sawtooth +frequencies, as in the figure) or downward, using positive ones. Pitch shift is +usually controlled by changing $f$ with $s$ fixed. To get a +desired transposition interval $t$, set +

+
+ + +\begin{displaymath}
+f = {{(t - 1) R} \over s}
+\end{displaymath} +
+
+

+The window size $s$ should be chosen small enough, if possible, so that the +two delayed copies +($s/2$ samples apart) do not sound as distinct echoes. However, very small +values of $s$ will force $f$ upward; values of $f$ greater than about 5 Hertz +result +in very audible modulation. So if very large transpositions are required, the +value of $s$ may need to be increased. Typical values range from 30 to 100 +milliseconds (about $R/30$ to $R/10$ samples). + +

+Although the frequency may be changed at will, even discontinuously, $s$ must +be changed more carefully. A possible solution is to mute the output while +changing $s$ discontinuously; alternatively, $s$ may be ramped continuously but +this causes hard-to-control Doppler shifts. + +

+A good choice of envelope is one half cycle of a sinusoid. If we assume +on average that the two delay outputs are uncorrelated (Page +[*]), the signal power from the two delay lines, after +enveloping, will add to a constant (since the sum of squares of the two +envelopes is one). + +

+Many variations exist on this pitch shifting algorithm. One +classic variant uses a single delay line, with no enveloping at +all. In this situation it is necessary to choose the point at +which the delay time jumps, and the point it jumps to, so that the output +stays continuous. For example, one could find a point where the output signal +passes through zero (a ``zero crossing") and jump discontinuously to another one. +Using only one delay line has the advantage that the signal output sounds +more ``present". A disadvantage is that, since +the delay time is a function of input signal value, the output is no longer +a linear function of the input, so non-periodic inputs can give rise to +artifacts such as difference tones. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Examples + Up: Time shifts and delays + Previous: Fidelity of interpolating delay +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node116.html b/node116.html new file mode 100644 index 0000000..3a6170e --- /dev/null +++ b/node116.html @@ -0,0 +1,100 @@ + + + + + +Examples + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Fixed, noninterpolating delay line + Up: Time shifts and delays + Previous: Pitch shifting +   Contents +   Index +
+
+ + +

+Examples +

+ +

+


+ +Subsections + + + +

+
+Miller Puckette +2006-12-30 +
+ + diff --git a/node117.html b/node117.html new file mode 100644 index 0000000..ff2d3a2 --- /dev/null +++ b/node117.html @@ -0,0 +1,166 @@ + + + + + +Fixed, noninterpolating delay line + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Recirculating comb filter + Up: Examples + Previous: Examples +   Contents +   Index +
+
+ + +

+Fixed, noninterpolating delay line +

+ +

+Example G01.delay.pd (Figure 7.23) applies a simple delay line to +an input signal. Two new objects are needed: + +

+ +

+ + + +
Figure 7.23: +Example patch G01.delay.pd, showing a noninterpolating delay with +a delay time controlled in milliseconds.
\begin{figure}\psfig{file=figs/fig07.23.ps}\end{figure}
+
+ +

+
+\fbox{ \texttt{delwrite\~}}: +define and write to a delay line. The first creation argument gives the name of the +delay line (and two delay lines may not share the same name). The +second creation argument is the length of the delay line in milliseconds. The +inlet takes an audio signal and writes it continuously into the delay line. + +

+
+\fbox{ \texttt{delread\~}}: +read from (or ``tap") a delay line. The first creation argument gives the name +of the delay line (which should agree with the name of the corresponding +delwrite~ object; this is how Pd knows which delwrite~ to +associate with the delread~ object). The +second (optional) creation argument gives the delay time in milliseconds. This +may not be negative and also may not exceed the length of the delay line as +specified to the delwrite~ object. Incoming numbers (messages) may be +used to change the delay time dynamically. However, this will make a discontinuous +change in the output, which should therefore be muted if the delay time changes. + +

+The example simply pairs one delwrite~ and one delread~ object +to make a simple, noninterpolating delay. The input signal is a looped +recording. The delayed and the non-delayed signal are added to make a +non-recirculating comb filter. At delay times below about 10 milliseconds, the +filtering effect is most prominent, and above that, a discrete echo becomes +audible. There is no muting protection on the delay output, so clicks are +possible when the delay time changes. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Recirculating comb filter + Up: Examples + Previous: Examples +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node118.html b/node118.html new file mode 100644 index 0000000..15db682 --- /dev/null +++ b/node118.html @@ -0,0 +1,104 @@ + + + + + +Recirculating comb filter + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Variable delay line + Up: Examples + Previous: Fixed, noninterpolating delay line +   Contents +   Index +
+
+ + +

+Recirculating comb filter +

+ +

+Example G02.delay.loop.pd (Figure 7.24) shows how to make a recirculating delay +network. The delay is again accomplished with a +delwrite~/delread~ pair. The output of the +delread~ object is multiplied by a feedback gain of 0.7 and fed into +the delwrite~ object. An input (supplied by the phasor~ and +associated objects) is added into the delwrite~ input; this sum +becomes the output of the network. This is the recirculating comb filter +of Section 7.4. + +

+ +

+ + + +
Figure 7.24: +Recirculating delay (still noninterpolating).
\begin{figure}\psfig{file=figs/fig07.24.ps}\end{figure}
+
+ +

+The network of tilde objects does not have any cycles, in the sense of objects +feeding either directly or indirectly (via connections through other objects) +to themselves. The feedback in the network occurs implicitly between the +delwrite~and delread~ objects. + +

+


+
+Miller Puckette +2006-12-30 +
+ + diff --git a/node119.html b/node119.html new file mode 100644 index 0000000..0eb139a --- /dev/null +++ b/node119.html @@ -0,0 +1,172 @@ + + + + + +Variable delay line + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Order of execution and + Up: Examples + Previous: Recirculating comb filter +   Contents +   Index +
+
+ + +

+Variable delay line +

+ +

+The next example, G03.delay.variable.pd (Figure 7.25), is another +recirculating comb filter, this time using a variable-length delay line. One +new object is introduced here: + +

+ +

+ + + +
Figure 7.25: +The flanger: an interpolating, variable delay line.
\begin{figure}\psfig{file=figs/fig07.25.ps}\end{figure}
+
+ +

+
+\fbox{ \texttt{vd\~}}: +Read from a delay line, with a time-varying delay time. As with the +delread~ object, this reads from a delay line whose name is specified +as a creation argument. Instead of using a second argument and/or +control messages to specify the delay time, for the vd~ object the delay in milliseconds is specified by an incoming audio signal. +The delay line is read using four-point (cubic) interpolation; the minimum +achievable delay is one sample. + +

+Here the objects on the left side, from the top down to the +clip -0.2 0.2 object, +form a waveshaping network; the index is set by the +``timbre" control, and the waveshaping output varies between a near sinusoid +and a bright, buzzy sound. The output is added to the output of the +vd~ object. The sum is then high pass filtered (the hip~ object +at lower left), multiplied by a +feedback gain, clipped, and written into the delay line at bottom right. There +is a control at right to set the feedback gain; here, in contrast with the +previous example, it is possible to specify a gain greater than one in order +to get unstable feedback. For this reason the second clip~ object is +inserted within the delay loop (just above the delwrite~ object) so +that the signal cannot exceed 1 in absolute value. + +

+The length of the delay is controlled by the signal input to the +vd~ object. An oscillator with variable frequency and gain, in the +center of the figure, provides the delay time. The oscillator is added to +one to make it nonnegative before multiplying it by the ``cycle depth" control, +which effectively sets the range of delay times. The minimum possible +delay time of 1.46 milliseconds is added so that the true range of delay times +is between the minimum and the same plus twice the ``depth". The reason for this +minimum delay time is taken up in the discussion of the next example. + +

+Comb filters with variable delay times are sometimes called flangers. +As the delay time changes the peaks in the frequency response move up and down +in frequency, so that the timbre of the output changes constantly in a +characteristic way. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Order of execution and + Up: Examples + Previous: Recirculating comb filter +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node12.html b/node12.html new file mode 100644 index 0000000..975fe71 --- /dev/null +++ b/node12.html @@ -0,0 +1,302 @@ + + + + + +Synthesizing a sinusoid + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Superposing Signals + Up: Sinusoids, amplitude and frequency + Previous: Frequency +   Contents +   Index +
+
+ + +

+ +
+Synthesizing a sinusoid +

+ +

+In most widely used audio synthesis and processing packages (Csound, Max/MSP, +and Pd, for instance), the audio operations are specified as +networks of +unit generators[Mat69] which pass audio signals among themselves. The user of +the software package specifies the network, sometimes called a +patch, +which essentially corresponds to the synthesis algorithm to be used, and then +worries about how to control the various unit generators in time. In this +section, we'll use abstract block diagrams to describe patches, but in the +``examples" section (Page [*]), we'll choose a +specific implementation environment and show some of the software-dependent +details. + +

+To show how to produce a sinusoid with time-varying amplitude we'll need to +introduce two unit generators. First we need a pure sinusoid which is +made with an +oscillator. Figure 1.5 (part a) shows a pictorial +representation of +a sinusoidal oscillator as an icon. The input is a frequency (in cycles per second), and +the output is a sinusoid of peak amplitude one. + +

+ +

+ + + +
Figure 1.5: +Block diagrams for (a) a sinusoidal oscillator; (b) controlling the +amplitude using a multiplier and an amplitude signal $y[n]$.
\begin{figure}\psfig{file=figs/fig01.05.ps}\end{figure}
+
+ +

+Figure 1.5 (part b) shows how to multiply the output of a sinusoidal +oscillator by an appropriate scale factor $y[n]$ to control its amplitude. +Since the oscillator's peak amplitude is 1, the peak amplitude of the product +is about $y[n]$, assuming $y[n]$ changes slowly enough and doesn't become +negative in value. + +

+ +

+ + + +
Figure 1.6: +Two amplitude functions (parts a, c), and (parts b, d), the result of +multiplying them by +the pure sinusoid of Figure 1.1.
\begin{figure}\psfig{file=figs/fig01.06.ps}\end{figure}
+
+ +

+Figure 1.6 shows how the sinusoid of Figure 1.1 is +affected by amplitude change by two different controlling signals $y[n]$. +The controlling signal shown in part (a) has a discontinuity, and so +therefore does the resulting amplitude-controlled sinusoid shown in (b). +Parts (c) and (d) show a more gently-varying possibility for $y[n]$ and the +result. Intuition suggests that the result shown in (b) won't sound like an +amplitude-varying sinusoid, but instead like a sinusoid interrupted by +an audible ``pop" after which it continues more quietly. In general, for +reasons that can't be explained in this chapter, amplitude control signals +$y[n]$ which ramp smoothly from one value to another are less likely to give +rise to parasitic results (such as that ``pop") than are abruptly changing +ones. + +

+For now we can state two general rules without justifying them. First, pure +sinusoids are the signals most sensitive to the parasitic effects of +quick amplitude change. So when you want to test an amplitude transition, if +it works for sinusoids it will probably work for other signals as well. +Second, depending on the signal whose amplitude you are changing, the amplitude +control will need between 0 and 30 milliseconds of ``ramp" time--zero for the +most forgiving signals (such as white noise), and 30 for the least (such as a +sinusoid). All this also depends in a complicated way on listening levels and +the acoustic context. + +

+Suitable amplitude control functions $y[n]$ may be made using an +envelope generator. +Figure 1.7 shows a network in which an envelope generator is used to +control the amplitude of an oscillator. Envelope generators vary widely in +design, but we will focus on the simplest +kind, which generates line segments as shown in Figure 1.6 (part c). +If a +line segment is specified to ramp between two output values $a$ and $b$ over +$N$ samples starting at sample number $M$, the output is: +

+
+ + +\begin{displaymath}
+y[n] = a + (b - a) {{n-M} \over N}, \hspace{0.1in} M \le n \le M+N-1.
+\end{displaymath} +
+
+

+The output may have any number of segments such as this, laid end to end, +over the entire range of sample numbers $n$; flat, horizontal segments can be +made by setting $a=b$. + +

+In addition to changing amplitudes of sounds, amplitude control is often used, +especially in real-time applications, simply to turn sounds on and off: to turn +one off, ramp the amplitude smoothly to zero. Most software synthesis packages +also provide ways to actually stop modules from computing samples at all, but +here we'll use amplitude control instead. + +

+The envelope generator dates from the analog era +[Str95, p.64] [Cha80, p.90], as does the rest of +Figure 1.7; oscillators with controllable frequency were called +voltage-controlled oscillators or VCOs, and the multiplication step was +done using a voltage-controlled amplifier or VCA +[Str95, pp.34-35] [Cha80, pp.84-89]. +Envelope generators are described in more detail in Section 4.1. + +

+ +

+ + + +
Figure 1.7: +Using an envelope generator to control amplitude.
\begin{figure}\psfig{file=figs/fig01.07.ps}\end{figure}
+
+ +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Superposing Signals + Up: Sinusoids, amplitude and frequency + Previous: Frequency +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node120.html b/node120.html new file mode 100644 index 0000000..fec86db --- /dev/null +++ b/node120.html @@ -0,0 +1,343 @@ + + + + + +Order of execution and lower limits on delay times + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Order of execution in + Up: Examples + Previous: Variable delay line +   Contents +   Index +
+
+ + +

+Order of execution and lower limits on delay times +

+ +

+When using delays (as well as other state-sharing tilde objects in Pd), the +order in which the writing and and reading operations are +done can affect the outcome of the computation. Although the tilde objects +in a patch may have a complicated topology of audio connections, in reality +Pd executes them all in a sequential order, one after the other, to compute +each block of audio output. This linear order is guaranteed to be compatible +with the audio interconnections, in the sense that no tilde object's computation +is done until all its inputs, for that same block, have been computed. + +

+Figure 7.26 shows two examples of tilde object topologies and their +translation into a sequence of computation. In part (a) there are four +tilde objects, and because of the connections, the object a~ must +produce its output before either of b~ or c~ can run; +and +both of those in turn are used in the computation of d~. So the +possible orderings of these four objects are ``a-b-c-d" and +``a-c-b-d". These +two orderings will have exactly the same result unless the computation of +b~ and c~ somehow affect each other's output (as +delay operations might, for example). + +

+ +

+ + + +
Figure 7.26: +Order of execution of tilde objects in Pd: (a), an acyclic network. +The objects may be executed in either the order ``a-b-c-d" or ``a-c-b-d". In +part (b), there is a cycle, and there is thus no compatible linear ordering of +the objects because each one would need to be run before the other.
\begin{figure}\psfig{file=figs/fig07.26.ps}\end{figure}
+
+ +

+Part (b) of the figure shows a cycle of tilde objects. This network cannot +be sorted into a compatible sequential order, since each of a~ and +b~ requires the other's output to be computed first. In general, +a sequential ordering of the tilde objects is possible if and only if there +are no cycles anywhere in the network of tilde objects and their audio +signal interconnections. Pd reports an error when such a cycle appears. +(Note that the situation for control interconnections between objects +is more complicated and flexible; see the Pd documentation for details.) + +

+To see the effect of the order of computation on a +delwrite~/delread~ pair, we can write explicitly the input +and output signals in the two possible orders, with the minimum possible +delay. If the write operation comes first, at a block starting at sample +number $N$, the operation can be written as: +

+
+ + +\begin{displaymath}
+x[N], \ldots, x[N+B-1] \longrightarrow \fbox{\texttt{delwrite\~}}
+\end{displaymath} +
+
+

+where $B$ is the block size (as in Section 3.2). +Having put those particular samples into the delay line, a following +delread~ is able to read the same values out: +

+
+ + +\begin{displaymath}
+\fbox{\texttt{delread\~}} \longrightarrow x[N], \ldots, x[N+B-1]
+\end{displaymath} +
+
+

+ +

+On the other hand, suppose the delread~ object comes before the +delwrite~. Then the samples +$x[N], \ldots, x[N+B-1]$ have not +yet been stored in the delay line, so the most recent samples that +may be read belong to the previous block: +

+
+ + +\begin{displaymath}
+\fbox{\texttt{delread\~}} \longrightarrow x[N-B], \ldots, x[N-1]
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+x[N], \ldots, x[N+B-1] \longrightarrow \fbox{\texttt{delwrite\~}}
+\end{displaymath} +
+
+

+Here the minimum delay we can possibly obtain is the block size $B$. So the +minimum delay is either $0$ or $B$, depending on the order in which the +delread~ and delwrite~objects are sorted into a sequence of +execution. + +

+Looking back at the patches of Figures 7.24 and 7.25, which +both feature recirculating delays, the delread~ or vd~ object must be placed +earlier in the sequence than the delwrite~ object. This is true of any +design in which a delay's output is fed back into its input. The minimum +possible delay is $B$ samples. For a (typical) sample rate of 44100 Hertz and +block size of 64 samples, this comes to 1.45 milliseconds. This might not +sound at first like a very important restriction. But if you are trying to tune +a recirculating comb filter to a specific pitch, the highest you can get only +comes to about 690 Hertz. To get shorter recirculating delays you must increase +the sample rate or decrease the block size. + +

+Example G04.control.blocksize.pd (Figure 7.27) shows how the block size can be +controlled in Pd using +a new object: + +

+ +

+ + + +
Figure 7.27: +A patch using block size control to lower the loop delay below +the normal 64 samples: (a) the main patch; (b) the ``delay-writer" subpatch +with a block~ object and a recirculating delay network.
\begin{figure}\psfig{file=figs/fig07.27.ps}\end{figure}
+
+ +

+
+\fbox{ \texttt{block\~}}, +
+\fbox{ \texttt{switch\~}}: +Set the local block size of the patch window the object sits in. Block sizes +are normally powers of two. The switch~ object, in addition, can be used to +turn audio computation within the window on and off, using control messages. +Additional creation arguments can set the local sample rate and specify +overlapping computations (demonstrated in Chapter 9). + +

+In part (a) of the figure (the main patch), a rectangular pulse is sent +to the pd delay-writer subpatch, whose output is then returned to the +main patch. Part (b) shows the contents of the subpatch, +which sends the pulses into +a recirculating delay. The block~ object specifies that, in this +subpatch, signal computation uses a block size ($B$) of only one. So the +minimum achievable delay is one sample instead of the default 64. + +

+Putting a pulse (or other excitation signal) into a recirculating comb filter +to make a pitch is sometimes called +Karplus-Strong synthesis, +having been described in a paper by them [KS83], although the idea +seems to be older. It shows up for example in Paul Lansky's 1979 piece, +Six Fantasies on a Poem by Thomas Campion. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Order of execution in + Up: Examples + Previous: Variable delay line +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node121.html b/node121.html new file mode 100644 index 0000000..489d7ff --- /dev/null +++ b/node121.html @@ -0,0 +1,161 @@ + + + + + +Order of execution in non-recirculating delay lines + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Non-recirculating comb filter as + Up: Examples + Previous: Order of execution and +   Contents +   Index +
+
+ + +

+Order of execution in non-recirculating delay lines +

+ +

+In non-recirculating delay networks, it should be possible to place the +operation of writing into the delay line earlier in the sequence than that +of reading it. There should thus be no lower limit on the length of the +delay line (except whatever is imposed by the interpolation scheme; see +Section 7.7). In languages such as Csound, the sequence +of unit generator computation is (mostly) explicit, so this is easy to +specify. In graphical patching environments, however, the order is +implicit and another approach must be taken to ensuring that, for example, +a delwrite~ object is computed before the corresponding +delread~ object. One way of accomplishing this is shown in example +G05.execution.order.pd (Figure 7.28). + +

+ +

+ + + +
Figure 7.28: +Using subpatches to ensure that delay lines are written before they +are read in non-recirculating networks: +(a) the delwrite~ and vd~ objects might be executed in either +the ``right" or the ``wrong" order; (b) the delwrite~ object is inside the +pd delay-writer +subpatch and the vd~ object is inside the pd delay-reader one. +Because of the audio connection between the two subpatches, the order of +execution of the read/write pair is forced to be the correct one.
\begin{figure}\psfig{file=figs/fig07.28.ps}\end{figure}
+
+ +

+In part (a) of the figure, the connections in the patch do not determine which +order the two delay operations appear in the sorted sequence of tilde object +computation; the delwrite~ object could be computed either before or +after the vd~ object. If we wish to make sure the writing operation +happens before the reading operation, we can proceed as in part (b) of the +figure and put the two operations in subpatches, connecting the two via +audio signals so that the first subpatch must be computed before the +second one. (Audio computation in subpatches is done atomically, in the sense +that the entire subpatch contents are considered as the audio computation for +the subpatch as a whole. So everything in the one subpatch happens before +anything in the second one.) + +

+In this example, the ``right" +and the ``wrong" way to make the comb filter have audibly different results. +For delays less than 64 samples, the right hand side of the patch (using +subpatches) gives the correct result, but the left hand side can't produce +delays below the 64 sample block size. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Non-recirculating comb filter as + Up: Examples + Previous: Order of execution and +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node122.html b/node122.html new file mode 100644 index 0000000..8ee7b86 --- /dev/null +++ b/node122.html @@ -0,0 +1,201 @@ + + + + + +Non-recirculating comb filter as octave doubler + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Time-varying complex comb filter: + Up: Examples + Previous: Order of execution in +   Contents +   Index +
+
+ + +

+Non-recirculating comb filter as octave doubler +

+ +

+In example G06.octave.doubler.pd (Figure 7.29) we revisit the idea of pitch-based +octave shifting introduced earlier in E03.octave.divider.pd. There, knowing the +periodicity of an incoming sound allowed us to tune a ring modulator to +introduce subharmonics. Here we realize the octave doubler described in +Section 7.3. +Using a variable, non-recirculating comb filter we +take out odd harmonics, leaving only the even ones, which +sound an octave higher. As before, the spectral envelope of the sound is +roughly preserved by the operation, so we can avoid the ``chipmunk" effect we +would have got by using speed change to do the transposition. + +

+ +

+ + + +
Figure 7.29: +An ``octave doubler" uses pitch information (obtained using +a fiddle~ object) to tune a comb filter to remove the odd harmonics +in an incoming sound.
\begin{figure}\psfig{file=figs/fig07.29.ps}\end{figure}
+
+ +

+The comb filtering is done by combining two delayed copies of the incoming +signal (from the pd looper subpatch at top). The fixed one +(delread~) is set to the window size of the pitch +following algorithm. Whereas in the earlier example this was hidden in another +subpatch, we can now show this explicitly. The delay in milliseconds is +estimated as equal to the 2048-sample analysis window used by the +fiddle~ object; in milliseconds this comes to +$1000\cdot2048/R$ where +$R$ is the sample rate. + +

+The variable delay is the same, plus 1/2 of the measured period of the incoming +sound, or $1000/(2f)$ milliseconds where $f$ is the frequency in cycles per +second. The sum of this and the fixed delay time is then smoothed using a +line~ object to make the input signal for the variable delay line. + +

+Since the difference between the two delays is $1/(2f)$, the resonant +frequencies of the resulting comb filter are +$2f, 4f, 6f\cdots$; the frequency +response (Section 7.3) is zero at the frequencies $f, 3f, \ldots$, +so the resulting sound contains only the partials at multiples of $2f$--an +octave above the original. Seen another way, the incoming sound is output +twice, a half-cycle apart; odd harmonics are thereby shifted 180 degrees +($\pi $ radians) and cancel; even harmonics are in phase with their delayed +copies and remain in the sum. + +

+Both this and the octave divider may be altered to make shifts of 3 or 4 +to one in frequency, and they may also be combined to make compound shifts +such as a musical fifth (a ratio of 3:2) by shifting down an octave and then +back up a factor of three. (You should do the down-shifting before the +up-shifting for best results.) + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Time-varying complex comb filter: + Up: Examples + Previous: Order of execution in +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node123.html b/node123.html new file mode 100644 index 0000000..bd556e1 --- /dev/null +++ b/node123.html @@ -0,0 +1,171 @@ + + + + + +Time-varying complex comb filter: shakers + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Reverberator + Up: Examples + Previous: Non-recirculating comb filter as +   Contents +   Index +
+
+ + +

+Time-varying complex comb filter: shakers +

+ +

+Example G07.shaker.pd (Figure 7.30) shows a different way of extending the +idea of a comb filter. Here we combine the input signal at four different +time shifts (instead of two, as in the original non-recirculating comb filter), +each at a different positive or negative gain. To do this, we insert the +input signal into a delay line and tap it at three different points; the +fourth ``tap" is the original, un-delayed signal. + +

+ +

+ + + +
Figure 7.30: +A ``shaker", a four-tap comb filter with randomly varying gains +on the taps.
\begin{figure}\psfig{file=figs/fig07.30.ps}\end{figure}
+
+ +

+As a way of thinking about the frequency response of a four-tap comb filter, +we consider first what happens when two of the four gains are close to zero. +Then we end up with a simple non-recirculating comb filter, with the slight +complication that the gains of the two delayed copies may be different. If they +are both of the same sign, we get the same peaks and valleys as predicted +in Section 7.3, only with the valleys between peaks possibly +more shallow. If they are opposite in sign, the valleys become peaks and +the peaks become valleys. + +

+Depending on which two taps we supposed were nonzero, the peaks and valleys are +spaced by different amounts; the delay times are chosen so that 6 different +delay times can arise in this way, ranging between 6 and 30 milliseconds. In +the general case in which all the gains are non-zero, we can imagine the +frequency response function varying continuously between these extremes, giving +a succession of complicated patterns. This has the effect of raising and +lowering the amplitudes of the partials of the incoming signal, all +independently of the others, in a complicated pattern, to give a steadily +time-varying timbre. + +

+The right-hand side of the patch takes care of changing the gains of the +input signal and its three time-shifted copies. Each time the metro object +fires, a counter is incremented (the f, + 1, and +mod 4 objects). This controls which of the amplitudes will be changed. +The amplitude itself is computed by making a random number and normalizing it to +lie between -0.7 and 1.3 in value. The random value and the index are packed +(along with a third value, a time interval) and this triple goes to the +route object. The first element of the triple (the +counter) selects which output to send the other two values to; as a result, +one of the four possible line~ objects gets a message to ramp to +a new value. + +

+If the time variation is done quickly enough, there is also a modulation +effect on the original signal; in this situation the straight line segments +used in this example should be replaced by modulating signals with more +controllable frequency content, for instance using filters (the +subject of Chapter 8). + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Reverberator + Up: Examples + Previous: Non-recirculating comb filter as +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node124.html b/node124.html new file mode 100644 index 0000000..19e74bb --- /dev/null +++ b/node124.html @@ -0,0 +1,177 @@ + + + + + +Reverberator + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Pitch shifter + Up: Examples + Previous: Time-varying complex comb filter: +   Contents +   Index +
+
+ + +

+Reverberator +

+ +

+Example G08.reverb.pd (Figure 7.31) shows a simple artificial reverberator, +essentially a realization of the design shown in Figure 7.15. Four +delay lines are fed by the input and by their own recirculated output. The +delay outputs are intermixed using rotation matrices, built up from elementary +rotations of $\pi /4$ as in Figure 7.13 (part a). + +

+ +

+ + + +
Figure 7.31: +An artificial reverberator.
\begin{figure}\psfig{file=figs/fig07.31.ps}\end{figure}
+
+ +

+The normalizing +multiplication (by $\sqrt{1/2}$ at each stage) is absorbed into the feedback +gain, which therefore cannot exceed $1/2$. +At a feedback gain of exactly $1/2$, all the energy leaving the delay lines is +reinserted into them, so the reverberation lasts perpetually. + +

+ +

+ + + +
Figure 7.32: +The echo generator used in the reverberator.
\begin{figure}\psfig{file=figs/fig07.32.ps}\end{figure}
+
+ +

+Figure 7.32 shows the interior of the reverb-echo abstraction +used in the reverberator. The two inputs are mixed (using the same rotation matrix +and again leaving the renormalization for later). One channel is then +delayed. The delay times are selected to grow roughly exponentially; this +ensures a smooth and spread-out pattern of echos. + +

+Many extensions of this idea are possible of which we'll only name a few. It +is natural, first, to put low-pass filters at the end of the delay lines, to +mimic the typically faster decay of high frequencies than low ones. It is also +common to use more than four recirculating delays; one reverberator in the Pd +distribution uses sixteen. Finally, it is common to allow separate control of +the amplitudes of the early echos (heard directly) and that of the +recirculating signal; parameters such as these are thought to control +sonic qualities described as ``presence", ``warmth", ``clarity", and so on. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Pitch shifter + Up: Examples + Previous: Time-varying complex comb filter: +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node125.html b/node125.html new file mode 100644 index 0000000..da271df --- /dev/null +++ b/node125.html @@ -0,0 +1,177 @@ + + + + + +Pitch shifter + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Exercises + Up: Examples + Previous: Reverberator +   Contents +   Index +
+
+ + +

+Pitch shifter +

+ +

+Example G09.pitchshift.pd (Figure 7.33) shows a realization of the pitch shifter +described in Section 7.9. A delay line (defined and written +elsewhere in the patch) is read using two vd~ objects. The delay +times vary between a minimum delay (provided as the ``delay" control) and the +minimum plus a window size (the ``window" control.) + +

+ +

+ + + +
Figure 7.33: +A pitch shifter using two variable taps into a delay +line.
\begin{figure}\psfig{file=figs/fig07.33.ps}\end{figure}
+
+ +

+The desired pitch shift in half-tones ($h$) is first converted into a +transposition factor +

+
+ + +\begin{displaymath}
+t = {2 ^ {h/12}} = {e ^ {\log(2)/12 \cdot h}} \approx {e ^ {0.05776 h}}
+\end{displaymath} +
+
+

+(called ``speed change" in the patch). The computation labeled ``tape +head rotation speed" is the same as the formula for $f$ given on Page +[*]. Here the positive interval (seven half-steps) +gives rise to a transposition factor greater than one, and therefore to a +negative value for $f$. + +

+Once $f$ is calculated, the production of the two phased sawtooth signals and +the corresponding envelopes parallels exactly that of +the overlapping sample looper (example B10.sampler.overlap.pd, Page +[*]). The minimum delay +is added to each of the two sawtooth signals to make delay inputs for the +vd~ objects, whose outputs are multiplied by the corresponding +envelopes and summed. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Exercises + Up: Examples + Previous: Reverberator +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node126.html b/node126.html new file mode 100644 index 0000000..c2f01fc --- /dev/null +++ b/node126.html @@ -0,0 +1,210 @@ + + + + + +Exercises + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Filters + Up: Time shifts and delays + Previous: Pitch shifter +   Contents +   Index +
+
+ + +

+Exercises +

+ +

+ +

    +
  1. A complex number has magnitude one and argument $\pi /4$. What are +its real and imaginary parts? + +

    +

  2. +
  3. A complex number has magnitude one and real part $1/2$. What is its +imaginary part? (There are two possible values.) + +

    +

  4. +
  5. What delay time would you give a comb filter so that its first frequency +response peak is at 440 Hertz? If the sample rate is 44100, what frequency +would correspond to the nearest integer delay? + +

    +

  6. +
  7. Suppose you made a variation on the non-recirculating comb filter so that +the delayed signal was subtracted from the original instead of adding. What +would the new frequency response be? + +

    +

  8. +
  9. If you want to make a 6-Hertz vibrato with a sinusoidally varying +delay line, and if you want the vibrato to change the frequency by 5%, how +big a delay variation would you need? How would this change if the same +depth of vibrato was desired at 12 Hertz? + +

    +

  10. +
  11. A complex sinusoid $X[n]$ has frequency 11025 Hertz, amplitude +50 and initial phase 135 degrees. Another one, $Y[n]$, has the same frequency, +but amplitude 20 and initial phase 45 degrees. What are the amplitude and +initial phase of the sum of $X$ and $Y$? + +

    +

  12. +
  13. What are the frequency, initial phase, and amplitude of the signal +obtained when $X[n]$ (above) is delayed 4 samples? + +

    +

  14. +
  15. Show that the frequency response of +a recirculating comb filter with delay time $d$ and feedback gain $g$, as a +function of angular frequency $\omega $, is equal to: +

    +
    + + +\begin{displaymath}
+{[ {{(1-g \cos (\omega d))}^2} + {{(g \sin (\omega d))}^2} ]}
+^
+{-1/2}
+\end{displaymath} +
    +
    +

    + +

    +

  16. +
+ +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Filters + Up: Time shifts and delays + Previous: Pitch shifter +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node127.html b/node127.html new file mode 100644 index 0000000..726b40d --- /dev/null +++ b/node127.html @@ -0,0 +1,296 @@ + + + + + +Filters + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Taxonomy of filters + Up: book + Previous: Exercises +   Contents +   Index +
+
+ + +

+ +
+Filters +

+ +

+In the previous chapter we saw that a delay network can have a non-uniform +frequency response--a gain that varies as a function of +frequency. Delay networks also typically change the phase of incoming signals +variably depending on frequency. When the delay times used are very short, +the most important properties of a delay network become its frequency and +phase response. A delay network that is designed specifically for its +frequency or phase response is called a +filter. + +

+ +

+ + + +
Figure 8.1: +Representations of a filter: (a) in a block diagram; (b) a graph of its +frequency response.
\begin{figure}\psfig{file=figs/fig08.01.ps}\end{figure}
+
+ +

+In block diagrams, filters are shown as in Figure 8.1 (part a). The +curve shown within the block gives a qualitative representation of the filter's +frequency response. The frequency response may vary with time, and depending +on the design of the filter, one or more controls (or additional audio inputs) +might be used to change it. + +

+Suppose, following the procedure of Section 7.3, we put +a unit-amplitude, complex-valued sinusoid with angular frequency $\omega $ into a filter. We +expect to get out a sinusoid of the same frequency and some amplitude, which +depends on $\omega $. This gives us a complex-valued function $H(\omega)$, which is called the +transfer function +of the filter. + +

+The frequency response is the gain as a function of the frequency +$\omega $. It is is equal to the magnitude of the transfer function. A +filter's frequency response is customarily graphed as in Figure +8.1 (part b). +An incoming unit-amplitude sinusoid of frequency $\omega $ comes out +of the filter with magnitude $\vert H(\omega)\vert$. + +

+It is sometimes also useful to know the phase response of the filter, equal +to +$\angle( H(\omega))$. For a fixed frequency $\omega $, the filter's +output phase will be +$\angle( H(\omega))$ radians ahead of its input +phase. + +

+The design and use of filters is a huge subject, because the wide range of uses +a filter might be put to suggests a wide variety of filter design processes. +In some applications a filter must exactly follow a prescribed frequency +response, in others it is important to minimize computation time, in others the +phase response is important, and in still others the filter must behave well +when its parameters change quickly with time. + +

+


+ +Subsections + + + +
+ + +next + +up + +previous + +contents + +index +
+ Next: Taxonomy of filters + Up: book + Previous: Exercises +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node128.html b/node128.html new file mode 100644 index 0000000..5de6482 --- /dev/null +++ b/node128.html @@ -0,0 +1,96 @@ + + + + + +Taxonomy of filters + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Low-pass and high-pass filters + Up: Filters + Previous: Filters +   Contents +   Index +
+
+ + +

+Taxonomy of filters +

+ +

+Over the history of electronic music the technology for building filters has +changed constantly, but certain kinds of filters reappear often. In this +section we will give some nomenclature for describing filters of several +generic, recurring types. Later we'll develop some basic strategies for making +filters with desired characteristics, and finally we'll discuss some common +applications of filters in electronic music. + +

+


+ +Subsections + + + +

+
+Miller Puckette +2006-12-30 +
+ + diff --git a/node129.html b/node129.html new file mode 100644 index 0000000..d928405 --- /dev/null +++ b/node129.html @@ -0,0 +1,176 @@ + + + + + +Low-pass and high-pass filters + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Band-pass and stop-band filters + Up: Taxonomy of filters + Previous: Taxonomy of filters +   Contents +   Index +
+
+ + +

+Low-pass and high-pass filters +

+ +

+By far the most frequent purpose for using a filter is extracting either +the low-frequency or the high-frequency portion of an audio signal, attenuating +the rest. This is accomplished using a +low-pass or +high-pass +filter. + +

+ +

+ + + +
Figure 8.2: +Terminology for describing the frequency response of low-pass and +high-pass filters. The horizontal axis is frequency and the vertical +axis is gain. A low-pass filter is shown; a high-pass filter has the same +features switched from right to left.
\begin{figure}\psfig{file=figs/fig08.02.ps}\end{figure}
+
+ +

+Ideally, a low-pass or high-pass filter would have a frequency response of +one up to (or down to) a specified cutoff frequency and zero past it; but +such filters cannot be realized in practice. Instead, we try to find +realizable approximations to this ideal response. The more design effort +and computation time we put into it, the closer we can get. + +

+Figure 8.2 shows the frequency response of a low-pass +filter. Frequency is divided into three bands, labeled on the +horizontal axis. The +passband +is the region (frequency band) where the filter should pass its input through +to its output with unit gain. +For a low-pass filter (as shown), the passband reaches from a frequency of +zero up to a certain frequency limit. For a high-pass filter, the passband +would appear on the right-hand side of the graph and would extend from the +frequency limit up to the highest frequency possible. Any +realizable filter's passband will be only approximately flat; +the deviation from flatness is called the +ripple, +and is often specified by giving the ratio between the highest and lowest gain +in the passband, expressed in decibels. The ideal low-pass or high-pass filter +would have a ripple of 0 dB. + +

+The +stopband +of a low-pass or high-pass filter is the frequency +band over which the filter is intended not to transmit its input. +The +stopband attenuation +is the difference, in decibels, between the lowest gain in the passband +and the highest gain in the stopband. Ideally this would +be infinite; the higher the better. + +

+Finally, a realizable filter, whose frequency response is always a +continuous function of frequency, must have a frequency +band over which the gain drops from the passband gain to the stopband +gain; this is called the +transition band. +The thinner this band can be made, the more nearly ideal the filter. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Band-pass and stop-band filters + Up: Taxonomy of filters + Previous: Taxonomy of filters +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node13.html b/node13.html new file mode 100644 index 0000000..cadc9db --- /dev/null +++ b/node13.html @@ -0,0 +1,312 @@ + + + + + +Superposing Signals + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Periodic Signals + Up: Sinusoids, amplitude and frequency + Previous: Synthesizing a sinusoid +   Contents +   Index +
+
+ + +

+ +
+Superposing Signals +

+ +

+If a signal $x[n]$ has a peak or RMS amplitude $A$ (in some fixed window), then +the scaled signal $k \cdot x[n]$ (where $k \ge 0$) has amplitude $kA$. The +mean power of the scaled signal changes by a factor of $k^2$. The situation gets +more complicated when two different signals are added together; just knowing +the amplitudes of the two does not suffice to know the amplitude of the sum. +The two amplitude measures do at least obey triangle inequalities; for any +two signals $x[n]$ and $y[n]$, +

+
+ + +\begin{displaymath}
+{A_{\mathrm{peak}}} \{x[n]\} +
+{A_{\mathrm{peak}}} \{y[n]\} \ge
+{A_{\mathrm{peak}}} \{x[n]+y[n]\}
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+{A_{\mathrm{RMS}}} \{x[n]\} +
+{A_{\mathrm{RMS}}} \{y[n]\} \ge
+{A_{\mathrm{RMS}}} \{x[n]+y[n]\}
+\end{displaymath} +
+
+

+If we fix a window from $M$ to $N+M-1$ as usual, we can write out the +mean power of the sum of two signals: + +

+
+ + +\begin{displaymath}
+P \{x[n] + y[n]\} = P \{x[n]\} + P \{y[n]\}
++ 2 \cdot {\mathrm{COV}} \{ x[n] , y[n] \}
+\end{displaymath} +
+
+

+where we have introduced the +covariance of two signals: +

+
+ + +\begin{displaymath}
+{\mathrm{COV}} \{ x[n] , y[n] \} =
+{
+{x[M]y[M] + \cdots + x[M+N-1]y[M+N-1]}
+\over
+N
+}
+\end{displaymath} +
+
+

+The covariance may be positive, zero, or negative. Over a sufficiently large +window, the covariance of two sinusoids with different frequencies is +negligible compared to the mean power. Two signals which have no covariance +are called uncorrelated (the correlation is the covariance normalized +to lie between -1 and 1). +In general, for two uncorrelated +signals, the power of the +sum is the sum of the powers: +

+
+ + +\begin{displaymath}
+P \{x[n] + y[n]\} = P \{x[n]\} + P \{y[n]\} , \hspace{0.1in}
+\mathrm{whenever}
+\ {\mathrm{COV}} \{ x[n] , y[n] \} = 0
+\end{displaymath} +
+
+

+Put in terms of amplitude, this becomes: +

+
+ + +\begin{displaymath}
+{{\left ( {A_{\mathrm{RMS}}} \{x[n]+y[n]\} \right ) } ^ 2} ...
+...2} +
+{{\left ( {A_{\mathrm{RMS}}} \{y[n]\} \right ) } ^ 2} .
+\end{displaymath} +
+
+

+This is the familiar Pythagorean relation. So uncorrelated signals can be +thought of as vectors at right angles to each other; positively correlated ones +as having an acute angle between them, and negatively correlated as having an +obtuse angle between them. + +

+For example, if two uncorrelated signals both have RMS amplitude $a$, +the sum will have RMS amplitude ${\sqrt 2} a$. On the other hand if the two +signals happen to be equal--the most correlated possible--the sum will have +amplitude $2a$, which is the maximum allowed by the triangle inequality. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Periodic Signals + Up: Sinusoids, amplitude and frequency + Previous: Synthesizing a sinusoid +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node130.html b/node130.html new file mode 100644 index 0000000..a46b107 --- /dev/null +++ b/node130.html @@ -0,0 +1,161 @@ + + + + + +Band-pass and stop-band filters + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Equalizing filters + Up: Taxonomy of filters + Previous: Low-pass and high-pass filters +   Contents +   Index +
+
+ + +

+ +
+Band-pass and stop-band filters +

+ +

+A +band-pass filter +admits frequencies within a given band, rejecting frequencies below it and +above it. Figure 8.3 shows the frequency response of a band-pass +filter, with the key parameters labelled. A stop-band filter +does the reverse, rejecting frequencies within the band and letting through +frequencies outside it. + +

+ +

+ + + +
Figure 8.3: +Terminology for describing the frequency response of band-pass and +stop-band filters. The horizontal axis is frequency and the vertical +axis is gain. A band-pass filter is shown; a stop-band filter would have a +contiguous stopband surrounded by two passbands.
\begin{figure}\psfig{file=figs/fig08.03.ps}\end{figure}
+
+ +

+In practice, a simpler language is often used for describing bandpass filters, +as shown in Figure 8.4. Here there are only two parameters: a +center frequency +and a +bandwidth. +The passband is considered to be the region where the filter has at least half +the power gain as at the peak (i.e., the gain is within 3 decibels of its +maximum). The bandwidth is the width, in frequency units, of the passband. +The center frequency is the point of maximum gain, which is approximately the +midpoint of the passband. + +

+ +

+ + + +
Figure 8.4: +A simplified view of a band-pass filter, showing bandwidth and +center frequency.
\begin{figure}\psfig{file=figs/fig08.04.ps}\end{figure}
+
+ +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Equalizing filters + Up: Taxonomy of filters + Previous: Low-pass and high-pass filters +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node131.html b/node131.html new file mode 100644 index 0000000..1d34ffe --- /dev/null +++ b/node131.html @@ -0,0 +1,164 @@ + + + + + +Equalizing filters + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Elementary filters + Up: Taxonomy of filters + Previous: Band-pass and stop-band filters +   Contents +   Index +
+
+ + +

+ +
+Equalizing filters +

+ +

+In some applications, such as +equalization, +the goal isn't to pass signals of certain frequencies while stopping others +altogether, but to make controllable adjustments, boosting or attenuating +a signal, over a frequency range, by a desired gain. Two filter types +are useful for this. First, a +shelving filter +(Figure 8.5) is used for selectively boosting or reducing either the +low or high end of the frequency range. Below a selectable crossover frequency, +the filter tends toward a low-frequency gain, and above it it tends toward a +different, high-frequency one. The crossover frequency, low-frequency gain, +and high-frequency gain can all be adjusted independently. + +

+ +

+ + + +
Figure 8.5: +A shelving filter, showing low and high frequency gain, and +crossover frequency.
\begin{figure}\psfig{file=figs/fig08.05.ps}\end{figure}
+
+ +

+Second, a +peaking filter +(Figure 8.6) is capable of boosting or attenuating signals within +a range of frequencies. The center frequency and bandwidth (which together +control the range of frequencies affected), and the in-band and out-of-band +gains are separately adjustible. + +

+ +

+ + + +
Figure 8.6: +A peaking filter, with controllable center frequency, bandwidth, +and in-band and out-of-band gains.
\begin{figure}\psfig{file=figs/fig08.06.ps}\end{figure}
+
+ +

+Parametric equalizers often employ two shelving filters (one each to adjust +the low and high ends of the spectrum) and two or three peaking filters to +adjust bands in between. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Elementary filters + Up: Taxonomy of filters + Previous: Band-pass and stop-band filters +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node132.html b/node132.html new file mode 100644 index 0000000..e34b63d --- /dev/null +++ b/node132.html @@ -0,0 +1,158 @@ + + + + + +Elementary filters + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Elementary non-recirculating filter + Up: Filters + Previous: Equalizing filters +   Contents +   Index +
+
+ + +

+Elementary filters +

+ +

+We saw in Chapter 7 how to predict the frequency and phase response of delay +networks. The art of filter design lies in finding a delay network whose +transfer function (which controls the frequency and phase response) has a +desired shape. We will develop an approach to building such delay networks +out of the two types of comb filters developed in Chapter 7: recirculating and +non-recirculating. Here we will be interested in the special case where the +delay is only one sample in length. In this situation, the frequency responses +shown in Figures 7.6 and 7.10 no longer look like combs; +the second peak recedes all the way to the sample rate, $2\pi $ radians, when +$d=1$. Since only frequencies between 0 and the Nyquist frequency ($\pi $ +radians) are audible, in effect there is only one peak when $d=1$. + +

+In the comb filters shown in Chapter 7, the peaks are situated at DC (zero +frequency), but we will often wish to place them at other, nonzero +frequencies. This is done using delay networks--comb +filters--with complex-valued gains. + +

+


+ +Subsections + + + +
+ + +next + +up + +previous + +contents + +index +
+ Next: Elementary non-recirculating filter + Up: Filters + Previous: Equalizing filters +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node133.html b/node133.html new file mode 100644 index 0000000..692e388 --- /dev/null +++ b/node133.html @@ -0,0 +1,358 @@ + + + + + +Elementary non-recirculating filter + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Non-recirculating filter, second form + Up: Elementary filters + Previous: Elementary filters +   Contents +   Index +
+
+ + +

+ +
+Elementary non-recirculating filter +

+ +

+The non-recirculating comb +filter may be generalized to yield the design shown in Figure 8.7. +This is the +elementary non-recirculating filter, +of the first form. Its single, complex-valued parameter $Q$ controls the +complex gain of the delayed signal subtracted from the original one. + +

+ +

+ + + +
Figure 8.7: +A delay network with a single-sample delay and a complex +gain $Q$. This is the non-recirculating elementary filter, first form. Compare +the non-recirculating comb filter shown in Figure 7.3, +which corresponds to choosing $Q=-1$ here.
\begin{figure}\psfig{file=figs/fig08.07.ps}\end{figure}
+
+ +

+To find its frequency response, as in Chapter 7 we feed the delay network +a complex sinusoid +$1, Z, {Z^2}, \ldots$ whose frequency is +$\omega=\arg(Z)$. +The $n$th sample of the input is $Z^n$ and that of the output +is +

+
+ + +\begin{displaymath}
+(1 - Q{Z^{-1}}){Z^n}
+\end{displaymath} +
+
+

+so the transfer function is +

+
+ + +\begin{displaymath}
+H(Z) = 1 - Q{Z^{-1}}
+\end{displaymath} +
+
+

+This can be analyzed graphically as shown in Figure 8.8. +The real numbers +$r$ and $\alpha $ are the magnitude and argument of the complex number $Q$: +

+
+ + +\begin{displaymath}
+Q = r \cdot (\cos(\alpha) + i \sin(\alpha))
+\end{displaymath} +
+
+

+The gain of the filter is the distance from the point $Q$ to the point $Z$ +in the complex plane. Analytically we can see this because +

+
+ + +\begin{displaymath}
+\vert 1 - Q{Z^{-1}}\vert = \vert Z\vert\vert 1 - Q{Z^{-1}}\vert = \vert Q - Z\vert
+\end{displaymath} +
+
+

+Graphically, the number $Q{Z^{-1}}$ is just the number $Q$ rotated backwards +(clockwise) by the angular frequency $\omega $ of the incoming sinusoid. The +value +$\vert 1 - Q{Z^{-1}}\vert$ is the distance from $Q{Z^{-1}}$ to $1$ in the complex +plane, which is equal to the distance from $Q$ to $Z$. + +

+ +

+ + + +
Figure 8.8: +Diagram for calculating the frequency response of the +non-recirculating elementary filter +(Figure 8.7). The frequency response is given by the length of the +segment connecting $Z$ to $Q$ in the complex plane.
\begin{figure}\psfig{file=figs/fig08.08.ps}\end{figure}
+
+ +

+As the frequency of the input sweeps from 0 to $2\pi $, the point $Z$ travels +couterclockwise around the unit circle. At the point where +$\omega = \alpha$, +the distance is at a minimum, equal to $1-r$. The maximum occurs which $Z$ is +at the opposite point of the circle. Figure 8.9 shows the transfer +function for three different values of $r=\vert Q\vert$. + +

+ +

+ + + +
Figure 8.9: +Frequency response of the elementary non-recirculating filter +Figure 8.7. Three values of $Q$ are used, all with the +same argument (-2 radians), but with varying absolute value (magnitude) $r=\vert Q\vert$.
\begin{figure}\psfig{file=figs/fig08.09.ps}\end{figure}
+
+ +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Non-recirculating filter, second form + Up: Elementary filters + Previous: Elementary filters +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node134.html b/node134.html new file mode 100644 index 0000000..74969bf --- /dev/null +++ b/node134.html @@ -0,0 +1,230 @@ + + + + + +Non-recirculating filter, second form + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Elementary recirculating filter + Up: Elementary filters + Previous: Elementary non-recirculating filter +   Contents +   Index +
+
+ + +

+ +
+Non-recirculating filter, second form +

+ +

+Sometimes we will need a variant of the filter above, shown in Figure +8.10, called the +elementary non-recirculating filter, second form. +Instead of multiplying the delay output by $Q$ we multiply the direct signal +by its +complex conjugate +$\overline{Q}$. If +

+
+ + +\begin{displaymath}
+A = a+bi = r \cdot (\cos(\alpha) + i \sin(\alpha))
+\end{displaymath} +
+
+

+is any complex number, its complex conjugate is defined as: +

+
+ + +\begin{displaymath}
+\overline{A} = a-bi = r \cdot (\cos(\alpha) - i \sin(\alpha))
+\end{displaymath} +
+
+

+Graphically this reflects points of the complex plane up and down across the +real axis. The transfer function of the new filter is +

+
+ + +\begin{displaymath}
+H(Z) = \overline{Q} - {Z^{-1}}
+\end{displaymath} +
+
+

+This gives rise to the same frequency response as before since +

+
+ + +\begin{displaymath}
+\vert\overline{Q} - {Z^{-1}}\vert = \vert Q - \overline{Z^{-1}}\vert = \vert Q- Z\vert
+\end{displaymath} +
+
+

+Here we use the fact that +$\overline{Z} = {Z^{-1}}$, for any unit complex +number $Z$, as can be verified by writing out $Z\overline{Z}$ in either +polar or rectangular form. + +

+Although the two forms of the elementary non-recirculating filter have the same +frequency response, their phase responses are different; this will +occasionally lead us to prefer the second form. + +

+ +

+ + + +
Figure 8.10: +The elementary non-recirculating filter, second form.
\begin{figure}\psfig{file=figs/fig08.10.ps}\end{figure}
+
+ +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Elementary recirculating filter + Up: Elementary filters + Previous: Elementary non-recirculating filter +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node135.html b/node135.html new file mode 100644 index 0000000..fa93e19 --- /dev/null +++ b/node135.html @@ -0,0 +1,194 @@ + + + + + +Elementary recirculating filter + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Compound filters + Up: Elementary filters + Previous: Non-recirculating filter, second form +   Contents +   Index +
+
+ + +

+ +
+Elementary recirculating filter +

+ +

+The +elementary recirculating filter is the recirculating comb filter of +Figure 7.7 with a +complex-valued feedback gain $P$ as shown in Figure 8.11 (part +a). By the same analysis as before, feeding this network a sinusoid whose +$n$th sample is $Z^n$ gives an output of: +

+
+ + +\begin{displaymath}
+{{1} \over {1 - P {Z^{-1}}}} {Z^n}
+\end{displaymath} +
+
+

+so the transfer function is +

+
+ + +\begin{displaymath}
+H(Z) = {{1} \over {1 - P {Z^{-1}}}}
+\end{displaymath} +
+
+

+The recirculating filter is stable when $\vert P\vert < 1$; when, instead, $\vert P\vert> 1$ the +output grows exponentially as the delayed sample recirculates. + +

+ +

+ + + +
Figure 8.11: +The elementary recirculating filter: (a) block diagram; (b) +frequency response.
\begin{figure}\psfig{file=figs/fig08.11.ps}\end{figure}
+
+ +

+The transfer function is thus just the inverse of that of the non-recirculating +filter (first form). If you put the two in series with $P=Q$, the output +theoretically equals the input. (This analysis only demonstrates it for +sinusoidal inputs; that it follows for other signals as well can be verified by +working out the impulse response of the combined network). + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Compound filters + Up: Elementary filters + Previous: Non-recirculating filter, second form +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node136.html b/node136.html new file mode 100644 index 0000000..bfa0aa1 --- /dev/null +++ b/node136.html @@ -0,0 +1,129 @@ + + + + + +Compound filters + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Real outputs from complex + Up: Elementary filters + Previous: Elementary recirculating filter +   Contents +   Index +
+
+ + +

+Compound filters +

+ +

+We can use the recirculating and non-recirculating filters developed here to +create a +compound filter by putting several elementary ones in series. If the parameters +of the non-recirculating ones (of the first type) are +${Q_1}, \ldots, {Q_j}$ +and those of the recirculating ones are +${P_1}, \ldots, {P_k}$, then putting +them all in series, in any order, will give the transfer function: +

+
+ + +\begin{displaymath}
+H(Z) = {
+{
+(1 - {Q_1}{Z^{-1}}) \cdots (1 - {Q_j}{Z^{-1}})
+} \over {
+(1 - {P_1}{Z^{-1}}) \cdots (1 - {P_k}{Z^{-1}})
+}
+}
+\end{displaymath} +
+
+

+The frequency response of the resulting compound filter is the product of +those of +the elementary ones. (One could also combine elementary filters by adding +their outputs, or making more complicated networks of them; but for most +purposes the series configuration is the easiest one to work with.) + +

+


+
+Miller Puckette +2006-12-30 +
+ + diff --git a/node137.html b/node137.html new file mode 100644 index 0000000..1e16380 --- /dev/null +++ b/node137.html @@ -0,0 +1,282 @@ + + + + + +Real outputs from complex filters + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Two recirculating filters for + Up: Elementary filters + Previous: Compound filters +   Contents +   Index +
+
+ + +

+Real outputs from complex filters +

+ +

+In most applications, we start with a real-valued signal to filter and we need +a real-valued output, but in general, a compound filter with a transfer +function as above will give a complex-valued output. However, we can +construct filters with non-real-valued coefficients which nonetheless give +real-valued outputs, so that the analysis that we carry out using complex +numbers can be used to predict, explain, and control real-valued output +signals. We do this by pairing each elementary filter (with coefficient +$P$ or $Q$) with another having as its coefficient the complex conjugate +$\overline{P}$ or $\overline{Q}$. + +

+For example, putting two non-recirculating filters, with coefficients $Q$ and +$\overline{Q}$, in series gives a transfer function equal to: +

+
+ + +\begin{displaymath}
+H(Z) = (1 - {Q}{Z^{-1}}) \cdot (1 - \overline{Q}{Z^{-1}})
+\end{displaymath} +
+
+

+which has the property that: +

+
+ + +\begin{displaymath}
+H(\overline{Z}) = \overline{H(Z)}
+\end{displaymath} +
+
+

+Now if we put any real-valued sinusoid: +

+
+ + +\begin{displaymath}
+{X_n} = 2 \, \mathrm{re}(A{Z^n}) = A{Z^n} + \overline{A}
+{{\overline{Z}}^n}
+\end{displaymath} +
+
+

+we get out: +

+
+ + +\begin{displaymath}
+A \cdot H(Z) \cdot {Z^n} +
+\overline{A} \cdot \overline{H(Z)} \cdot {{\overline{Z}}^n}
+\end{displaymath} +
+
+

+which, by inspection, is another real sinusoid. +Here we're using two properties of complex conjugates. First, you can +add and multiply them at will: +

+
+ + +\begin{displaymath}
+\overline{A+B} = \overline{A} + \overline{B}
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+\overline{AB} = \overline{A} \cdot \overline{B}
+\end{displaymath} +
+
+

+and second, anything plus its complex conjugate is real, and is in fact +twice its real part: +

+
+ + +\begin{displaymath}
+A + \overline{A} = 2 \, \mathrm{re} (A)
+\end{displaymath} +
+
+

+This result for two conjugate filters extends to any compound filter; in +general, we always get a real-valued output from a real-valued input if we +arrange that each coefficient $Q_i$ and $P_i$ in the compound filter is +either real-valued, or else appears in a pair with its complex conjugate. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Two recirculating filters for + Up: Elementary filters + Previous: Compound filters +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node138.html b/node138.html new file mode 100644 index 0000000..81bc2be --- /dev/null +++ b/node138.html @@ -0,0 +1,333 @@ + + + + + +Two recirculating filters for the price of one + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Designing filters + Up: Elementary filters + Previous: Real outputs from complex +   Contents +   Index +
+
+ + +

+Two recirculating filters for the price of one +

+ +

+When pairing recirculating elementary filters, it is possible to avoid +computing one of each pair, as long as the input is real-valued (and so, +the output is as well.) Supposing the input is a real sinusoid of the form: +

+
+ + +\begin{displaymath}
+A{Z^n} + \overline{A}{Z^{-n}}
+\end{displaymath} +
+
+

+and we apply a single recirculating filter with coefficient $P$. Letting $a[n]$ +denote the real part of the output, we have: +

+
+ + +\begin{displaymath}
+a[n] =
+\mathrm{re} \left[ {
+{1 \over {1 - {P}{Z^{-1}}}} {...
+...n} +
+{1 \over {1 - {P}{Z}}} \overline{A}{Z^{-n}}}
+} \right ]
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+=
+\mathrm{re} \left[ {
+{1 \over {1 - {P}{Z^{-1}}}} {A{Z^n}} +
+{1 \over {1 - \overline{P}{Z^{-1}}}} {A{Z^n}}
+} \right ]
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+=
+\mathrm{re} \left[ {
+{{
+2 - 2 \, \mathrm{re} (P) {Z^{-...
+...^{-1}}) (1 - {\overline{P}}{Z^{-1}})
+}}
+{A{Z^n}}
+} \right ]
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+=
+\mathrm{re} \left[ {
+{{
+1 - \mathrm{re} (P) {Z^{-1}}
+...
+...}}^{-1}})
+}}
+{\overline{A}{{\overline{Z}}^{-n}}}
+} \right ]
+\end{displaymath} +
+
+

+(In the second step we used the fact that you can conjugate all or part of an +expression, without changing the result, if you're just going to take the real +part anyway. The fourth step did the same thing backward.) Comparing the input +to the output, we see that the effect of passing a real signal through a complex +one-pole filter, then taking the real part, is equivalent to passing the signal +through a two-pole, one-zero filter with transfer function equal to: +

+
+ + +\begin{displaymath}
+{H_{\mathrm{re}}}(Z) = {{
+1 - \mathrm{re} (P) {Z^{-1}}
+} \over {
+(1 - {P}{Z^{-1}}) (1 - {\overline{P}}{Z^{-1}})
+}}
+\end{displaymath} +
+
+

+A similar calculation shows that taking the imaginary part (considered as a real +signal) is equivalent to filtering the input with the transfer function: +

+
+ + +\begin{displaymath}
+{H_{\mathrm{im}}}(Z) = {{
+\mathrm{im} (P) {Z^{-1}}
+} \over {
+(1 - {P}{Z^{-1}}) (1 - {\overline{P}}{Z^{-1}})
+}}
+\end{displaymath} +
+
+

+So taking either the real or imaginary part of a one-pole filter output gives +filters with two conjugate poles. The two parts can be combined +to synthesize filters with other possible numerators; in other words, with +one complex recirculating filter we can synthesize a filter that acts on +real signals with two (complex conjugate) poles and one (real) zero. + +

+This technique, known as +partial fractions, may be repeated for +any number of stages in series as long as we compute the appropriate +combination of real and imaginary parts of the output of each stage to +form the (real) input of the next stage. +No similar shortcut seems to exist for non-recirculating filters; for them +it is necessary to compute each member of each complex-conjugate pair +explicitly. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Designing filters + Up: Elementary filters + Previous: Real outputs from complex +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node139.html b/node139.html new file mode 100644 index 0000000..0e2d9ae --- /dev/null +++ b/node139.html @@ -0,0 +1,216 @@ + + + + + +Designing filters + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: One-pole low-pass filter + Up: Filters + Previous: Two recirculating filters for +   Contents +   Index +
+
+ + +

+Designing filters +

+ +

+The frequency response of a series of elementary recirculating and +non-recirculating filters can be estimated graphically by plotting all the +coefficients +${Q_1}, \ldots, {Q_j}$ and +${P_1}, \ldots, {P_k}$ on the +complex plane and reasoning as in Figure 8.8. The overall +frequency response is the product of all the distances from the point $Z$ +to each of the $Q_i$, divided by the product of the distances to each of +the $P_i$. + +

+One customarily marks each of the $Q_i$ with an ``o" (calling it a ``zero") +and each of the $P_i$ with an ``x" (a ``pole"); their names are borrowed +from the field of complex analysis. A plot showing the poles and zeroes +associated with a filter is unimaginatively called a pole-zero plot. + +

+When $Z$ is +close to a zero the frequency response tends to dip, and when it is close to +a pole, the frequency response tends to rise. The effect of a pole or a zero +is more pronounced, and also more local, if it is close to the unit circle +that $Z$ is constrained to lie on. +Poles must lie within the unit circle for a stable filter. Zeros may lie on +or outside it, but any zero $Q$ outside the unit circle may be replaced by one +within it, at the point +$1/\overline{Q}$, to give a constant multiple of the +same frequency response. Except in special cases we will keep the zeros +inside the circle as well as the poles. + +

+In the rest of this section we will show how to construct several of the +filter types most widely used in electronic music. The theory of digital +filter design is vast, and we will only give an introduction +here. A deeper treatment is available online from Julius Smith at +ccrma.stanford.edu. See also [Ste96] for an introduction +to filter design from the more general viewpoint of digital signal +processing. + +

+


+ +Subsections + + + +
+ + +next + +up + +previous + +contents + +index +
+ Next: One-pole low-pass filter + Up: Filters + Previous: Two recirculating filters for +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node14.html b/node14.html new file mode 100644 index 0000000..14d467b --- /dev/null +++ b/node14.html @@ -0,0 +1,299 @@ + + + + + +Periodic Signals + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: About the Software Examples + Up: Sinusoids, amplitude and frequency + Previous: Superposing Signals +   Contents +   Index +
+
+ + +

+ +
+Periodic Signals +

+A signal $x[n]$ is said to repeat at a period $\tau$ if +

+
+ + +\begin{displaymath}
+x[n + \tau] = x[n]
+\end{displaymath} +
+
+

+for all $n$. Such a signal would also repeat at periods $2 \tau$ and so on; +the smallest $\tau$ if any at which a signal repeats is called the signal's +period. +In discussing periods of digital audio signals, we quickly run into the +difficulty of describing signals whose ``period" isn't an integer, so that the +equation above doesn't make sense. For now we'll effectively +ignore this difficulty by supposing that the signal $x[n]$ may somehow be +interpolated between the samples so that it's well defined whether $n$ is an +integer or not. + +

+A sinusoid has a period (in samples) of +$2 \pi / \omega$ where +$\omega $ is the angular frequency. More generally, any sum of sinusoids +with frequencies +$2 \pi k/ \omega$, for integers $k$, will repeat after + +$2 \pi / \omega$ samples. +Such a sum is called a Fourier Series: + +

+
+ + +\begin{displaymath}
+x[n] = {a_0} +
+{a_1} \cos \left ( \omega n + {\phi_1} \rig...
+... + \cdots +
+{a_p} \cos \left ( p \omega n + {\phi_p} \right )
+\end{displaymath} +
+
+

+Moreover, if we make certain technical assumptions (in effect that signals +only contain frequencies up to a finite bound), we can represent any periodic +signal as such a sum. This is the discrete-time variant of Fourier analysis +which will reappear in Chapter 9. + +

+The angular frequencies of the sinusoids above are all integer +multiples of $\omega $. They are called the +harmonics +of $\omega $, which in turn is called the +fundamental. In terms of pitch, the harmonics + +$\omega, 2 \omega, \ldots$ are at intervals of 0, 1200, 1902, 2400, 2786, +3102, 3369, 3600, ..., cents above the fundamental; this sequence of pitches +is sometimes called the harmonic series. The first six of these are +all quite close to multiples of 100; in other words, the first six harmonics +of a pitch in the Western scale land close to (but not always exactly on) other +pitches of the same scale; the third and sixth miss only by 2 cents and the +fifth misses by 14. + +

+Put another way, the frequency ratio 3:2 (a perfect fifth in Western +terminology) is almost exactly +seven half-steps, 4:3 (a perfect fourth) is just as near to five half-steps, +and the ratios 5:4 and 6:5 (perfect major and minor thirds) are fairly close to +intervals of four and three half-steps, respectively. + +

+A Fourier series (with only three terms) is shown in Figure 1.8. +The first three graphs are of sinusoids, whose frequencies are in a 1:2:3 +ratio. The common period is marked on the horizontal axis. Each sinusoid +has a different amplitude and initial phase. The sum of the three, at +bottom, is not a sinusoid, but it still maintains the periodicity shared +by the three component sinusoids. + +

+ +

+ + + +
Figure 1.8: +A Fourier series, showing three sinusoids and their sum. The +three component sinusoids have frequencies in the ratio 1:2:3.
\begin{figure}\psfig{file=figs/fig01.08.ps}\end{figure}
+
+ +

+Leaving questions of phase aside, we can use a bank of sinusoidal oscillators +to synthesize periodic tones, or even to morph smoothly through a succession +of periodic tones, by specifying the fundamental frequency and the (possibly +time-varying) amplitudes of the partials. Figure 1.9 shows a +block diagram for doing this. + +

+ +

+ + + +
Figure 1.9: +Using many oscillators to synthesize a waveform with desired harmonic +amplitudes.
\begin{figure}\psfig{file=figs/fig01.09.ps}\end{figure}
+
+ +

+This is an example of +additive synthesis; more generally the term can be applied to networks +in which the frequencies of the oscillators are independently controllable. +The early days of computer music rang with the sound of additive synthesis. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: About the Software Examples + Up: Sinusoids, amplitude and frequency + Previous: Superposing Signals +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node140.html b/node140.html new file mode 100644 index 0000000..a4564fa --- /dev/null +++ b/node140.html @@ -0,0 +1,200 @@ + + + + + +One-pole low-pass filter + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: One-pole, one-zero high-pass filter + Up: Designing filters + Previous: Designing filters +   Contents +   Index +
+
+ + +

+ +
+One-pole low-pass filter +

+ +

+ +

+ + + +
Figure 8.12: +One-pole low-pass filter: (a) pole-zero diagram; (b) +frequency response.
\begin{figure}\psfig{file=figs/fig08.12.ps}\end{figure}
+
+ +

+The one-pole low-pass filter has a single pole located at a positive real +number $p$, as pictured in Figure 8.12. This is just a recirculating +comb filter with delay length $d=1$, and the analysis of Section +7.4 applies. The maximum gain occurs at a +frequency of zero, corresponding to the point on the circle closest to the +point $p$. The gain there is $1/(1-p)$. Assuming $p$ is close +to one, if we move a distance of $1-p$ units +up or down from the real (horizontal) axis, the distance increases by a +factor of about $\sqrt{2}$, and so we expect the half-power point to occur at +an angular frequency of about $1-p$. + +

+This calculation is often made in reverse: if we wish the half-power point to +lie at a given angular frequency $\omega $, we set $p = 1-\omega$. This +approximation only works well if the value of $\omega $ is well under $\pi /2$, +as it often is in practice. +It is customary to normalize the one-pole low-pass filter, multiplying it by +the constant factor $1-p$ in order to give a gain of 1 at zero frequency; +nonzero frequencies will then get a gain less than one. + +

+The frequency response is graphed in Figure 8.12 (part b). The +audible frequencies only reach to the middle of the graph; the right-hand +side of the frequency response curve all lies above the Nyquist frequency +$\pi $. + +

+The one-pole low-pass filter is often used to seek trends in noisy signals. +For instance, if you use a physical controller and only +care about changes on the order of 1/10 second or so, you can smooth the +values with a low-pass filter whose half-power point is 20 or 30 +cycles per second. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: One-pole, one-zero high-pass filter + Up: Designing filters + Previous: Designing filters +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node141.html b/node141.html new file mode 100644 index 0000000..8229d40 --- /dev/null +++ b/node141.html @@ -0,0 +1,186 @@ + + + + + +One-pole, one-zero high-pass filter + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Shelving filter + Up: Designing filters + Previous: One-pole low-pass filter +   Contents +   Index +
+
+ + +

+ +
+One-pole, one-zero high-pass filter +

+ +

+Sometimes an audio signal carries an unwanted constant offset, or in other +words, a zero-frequency component. For example, the waveshaping spectra of +Section 5.3 almost always contain a constant component. +This is inaudible, but, since it specifies electrical power that is sent +to your speakers, its presence reduces the level of loudness you can +reach without distortion. Another name for a constant signal component is +``DC", meaning ``direct current". + +

+An easy and practical way to remove the zero-frequency component from an audio +signal is to use a one-pole low-pass filter to extract it, and then subtract the +result from the signal. The resulting transfer function is one minus the +transfer function of the low-pass filter: +

+
+ + +\begin{displaymath}
+H(Z) = 1 - {{{1-p} \over {1 - p{Z^{-1}}}}}
+= p{{{1-{Z^{-1}}} \over {1 - p{Z^{-1}}}}}
+\end{displaymath} +
+
+

+The factor of $1-p$ in the numerator of the low-pass transfer function is the +normalization factor needed so that the gain is one at zero frequency. + +

+By examining the right-hand side of the equation (comparing it to the general +formula for compound filters), we +see that there is still a pole at the real number $p$, and there is now also +a zero at the point $1$. The pole-zero plot is shown in Figure +8.13 +(part a), and the frequency response in part (b). (Henceforth, we +will only plot frequency responses to the Nyquist frequency $\pi $; +in the previous example we plotted it all the way up to the sample rate, +$2\pi $.) + +

+ +

+ + + +
Figure 8.13: +One-pole, one-zero high-pass filter: (a) pole-zero diagram; (b) +frequency response (from zero to Nyquist frequency).
\begin{figure}\psfig{file=figs/fig08.13.ps}\end{figure}
+
+ +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Shelving filter + Up: Designing filters + Previous: One-pole low-pass filter +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node142.html b/node142.html new file mode 100644 index 0000000..f2288fa --- /dev/null +++ b/node142.html @@ -0,0 +1,247 @@ + + + + + +Shelving filter + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Band-pass filter + Up: Designing filters + Previous: One-pole, one-zero high-pass filter +   Contents +   Index +
+
+ + +

+ +
+Shelving filter +

+ +

+Generalizing the one-zero, one-pole filter above, suppose we place the +zero at a point $q$, a real number close to, but less than, one. The +pole, at the point $p$, is similarly situated, and might be either +greater than or less than $q$, i.e., to the right or left, respectively, +but with both $q$ and $p$ within the unit circle. This situation is +diagrammed in Figure 8.14. + +

+ +

+ + + +
Figure 8.14: +One-pole, one-zero shelving filter: (a) pole-zero diagram; (b) +frequency response.
\begin{figure}\psfig{file=figs/fig08.14.ps}\end{figure}
+
+ +

+At points of the circle far from $p$ and $q$, the effects of the pole and the +zero are nearly inverse (the distances to them are nearly equal), so the filter +passes those frequencies nearly unaltered. In the neighborhood of $p$ and +$q$, on the other hand, the filter will have a gain greater or less than one +depending on which of $p$ or $q$ is closer to the circle. This configuration +therefore acts as a low-frequency shelving filter. (To make a high-frequency +shelving filter we do the same thing, only placing $p$ and $q$ close to -1 +instead of 1.) + +

+To find the parameters of a shelving filter given a desired +transition frequency $\omega $ (in angular units) and low-frequency +gain $g$, first we choose an average distance $d$, as pictured in the figure, +from the pole and the zero to the edge of the circle. For small values of $d$, +the region of influence is about $d$ radians, so +simply set $d = \omega$ to get the desired transition frequency. + +

+Then put the pole at +$p = 1 - d / \sqrt{g}$ and the zero at + +$q = 1 - d \sqrt{g}$. The gain at zero frequency is then +

+
+ + +\begin{displaymath}
+{{1-q} \over {1-p}} = g
+\end{displaymath} +
+
+

+as desired. For example, in the figure, $d$ is 0.25 radians and $g$ is 2. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Band-pass filter + Up: Designing filters + Previous: One-pole, one-zero high-pass filter +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node143.html b/node143.html new file mode 100644 index 0000000..c0fe1db --- /dev/null +++ b/node143.html @@ -0,0 +1,242 @@ + + + + + +Band-pass filter + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Peaking and stop-band filter + Up: Designing filters + Previous: Shelving filter +   Contents +   Index +
+
+ + +

+ +
+Band-pass filter +

+ +

+Starting with the three filter types shown above, which all have real-valued +poles and zeros, we now transform them to operate on bands located off the real +axis. The low-pass, high-pass, and shelving filters will then become +band-pass, stop-band, and peaking filters. First we develop the band-pass +filter. Suppose we want a center frequency at $\omega $ radians and a +bandwidth of $\beta $. We take the low-pass filter with cutoff frequency +$\beta $; its pole is located, for small values of $\beta $, roughly at +$p = 1 - \beta$. +Now rotate this value by $\omega $ radians in the complex plane, i.e., +multiply by the complex number +$\cos \omega + i \sin \omega$. The new pole +is at: +

+
+ + +\begin{displaymath}
+{P_1} = (1 - \beta) (\cos \omega + i \sin \omega)
+\end{displaymath} +
+
+

+To get a real-valued output, this must be paired with another pole: +

+
+ + +\begin{displaymath}
+{P_2} = \overline{P_1} = (1 - \beta) (\cos \omega - i \sin \omega)
+\end{displaymath} +
+
+

+The resulting pole-zero plot is as shown in Figure 8.15. + +

+ +

+ + + +
Figure 8.15: +Two-pole band-pass filter: (a) pole-zero diagram; (b) +frequency response.
\begin{figure}\psfig{file=figs/fig08.15.ps}\end{figure}
+
+ +

+The peak is approximately (not exactly) at the desired center frequency +$\omega $, and the frequency response drops by 3 decibels approximately $\beta $ +radians above and below it. It is often desirable to normalize the filter to +have a peak gain near unity; this is done by multiplying the input or output by +the product of the distances of the two poles to the peak on the circle, or +(very approximately): +

+
+ + +\begin{displaymath}
+\beta * (\beta + 2 \omega)
+\end{displaymath} +
+
+

+For some applications it is desirable to add a zero at the points $1$ and $-1$, +so that the gain drops to zero at angular frequencies $0$ and $\pi $. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Peaking and stop-band filter + Up: Designing filters + Previous: Shelving filter +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node144.html b/node144.html new file mode 100644 index 0000000..7bc1403 --- /dev/null +++ b/node144.html @@ -0,0 +1,145 @@ + + + + + +Peaking and stop-band filter + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Butterworth filters + Up: Designing filters + Previous: Band-pass filter +   Contents +   Index +
+
+ + +

+ +
+Peaking and stop-band filter +

+ +

+In the same way, a peaking filter is obtained from a shelving filter by rotating the +pole and the zero, and by providing a conjugate pole and zero, as shown in +Figure 8.16. If the desired center frequency is $\omega $, and +the radii of the pole and zero (as for the shelving filter) are +$p$ and $q$, then we place the the upper pole and zero at +

+
+ + +\begin{displaymath}
+{P_1} = p \cdot (\cos \omega + i \sin \omega)
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+{Q_1} = q \cdot (\cos \omega + i \sin \omega)
+\end{displaymath} +
+
+

+As a special case, placing the zero on the unit circle gives a stop-band filter; +in this case the gain at the center frequency is zero. This is analogous +to the one-pole, one-zero high-pass filter above. + +

+ +

+ + + +
Figure 8.16: +A peaking filter: (a) pole-zero diagram; (b) +frequency response. Here the filter is set to attenuate by 6 decibels at +the center frequency.
\begin{figure}\psfig{file=figs/fig08.16.ps}\end{figure}
+
+ +

+


+
+Miller Puckette +2006-12-30 +
+ + diff --git a/node145.html b/node145.html new file mode 100644 index 0000000..b07a86a --- /dev/null +++ b/node145.html @@ -0,0 +1,374 @@ + + + + + +Butterworth filters + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Stretching the unit circle + Up: Designing filters + Previous: Peaking and stop-band filter +   Contents +   Index +
+
+ + +

+Butterworth filters +

+ +

+A filter with one real pole and one real zero can be configured as a shelving +filter, as a high-pass filter (putting the zero at the point $1$) or as a +low-pass filter (putting the zero at $-1$). The frequency responses of these +filters are quite blunt; in other words, the transition regions are wide. It +is often desirable to get a sharper filter, either shelving, low- or high-pass, +whose two bands are flatter and separated by a narrower transition region. + +

+A procedure borrowed from the analog filtering world transforms real, +one-pole, one-zero filters to corresponding + +Butterworth filters, +which have narrower transition regions. This procedure is described clearly +and elegantly in the last chapter of [Ste96]. The derivation +uses more mathematics background than we have developed here, and we will simply +present the result without deriving it. + +

+To make a Butterworth filter out of a high-pass, low-pass, or shelving +filter, suppose that either the pole or the +zero is given by the expression +

+
+ + +\begin{displaymath}
+{{1 - {r^2}} \over {{(1 + r)}^2}}
+\end{displaymath} +
+
+

+where $r$ is a parameter ranging from 1 to $\infty$. If $r=0$ this is the point +$1$, and if $r=\infty$ it's $-1$. + +

+Then, for reasons which will remain mysterious, we replace the point (whether +pole or zero) by $n$ points given by: +

+
+ + +\begin{displaymath}
+{ (1 - {r^2}) - (2 r \sin(\alpha)) i }
+\over
+{ 1 + {r^2} + 2 r \cos(\alpha))}
+\end{displaymath} +
+
+

+where $\alpha $ ranges over the values: +

+
+ + +\begin{displaymath}
+{\pi \over 2} ({1 \over n} - 1) , \;
+{\pi \over 2} ({3 \ov...
+...} - 1) , \; \ldots , \;
+{\pi \over 2} ({{2n-1} \over n} - 1)
+\end{displaymath} +
+
+

+In other words, $\alpha $ takes on $n$ equally spaced angles between +$-\pi/2$ and $\pi /2$. The points are arranged in the complex plane as shown in +Figure 8.17. They lie on a circle through the original real-valued +point, which cuts the unit circle at right angles. + +

+A good estimate for the cutoff or transition frequency defined by +these circular collections of poles or zeros is simply the spot where the +circle intersects the unit circle, corresponding to +$\alpha = \pi/2$. This gives +the point +

+
+ + +\begin{displaymath}
+{ (1 - {r^2}) - 2 r i }
+\over
+{ 1 + {r^2} }
+\end{displaymath} +
+
+

+which, after some algebra, gives an angular frequency equal to +

+
+ + +\begin{displaymath}
+\beta = 2 \arctan (r)
+\end{displaymath} +
+
+

+ +

+ +

+ + + +
Figure 8.17: +Replacing a real-valued pole or zero (shown as a solid dot) with an +array of four +of them (circles) as for +a Butterworth filter. In this example we get four new poles or zeros as +shown, lying along the circle where $r=0.5$.
\begin{figure}\psfig{file=figs/fig08.17.ps}\end{figure}
+
+ +

+Figure 8.18 (part a) shows a pole-zero diagram and frequency +response for a Butterworth low-pass filter with three poles and three zeros. +Part (b) shows the frequency response of the low-pass filter and three other +filters obtained by choosing different values of $\beta $ (and hence $r$) for +the zeros, while leaving the poles stationary. As the zeros progress from +$\beta =\pi $ to $\beta =0$, the filter, which starts as a low-pass filter, +becomes a shelving filter and then a high-pass one. + +

+ +

+ + + +
Figure 8.18: +Butterworth low-pass filter with three poles +and three zeros: (a) pole-zero plot. The poles are chosen for a cutoff frequency +$\beta = \pi /4$; +(b) frequency responses for four filters with the same +pole configuration, with different placements of zeros (but leaving the poles +fixed). The low-pass filter +results from setting $\beta =\pi $ for the zeros; the two shelving filters +correspond to $\beta =3\pi /10$ and $\beta =2\pi /10$, and finally the high-pass +filter is obtained setting $\beta =0$. The high-pass filter is normalized for +unit gain at the Nyquist frequency, and the others for unit gain at DC.
\begin{figure}\psfig{file=figs/fig08.18.ps}\end{figure}
+
+ +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Stretching the unit circle + Up: Designing filters + Previous: Peaking and stop-band filter +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node146.html b/node146.html new file mode 100644 index 0000000..9ad4054 --- /dev/null +++ b/node146.html @@ -0,0 +1,480 @@ + + + + + +Stretching the unit circle with rational functions + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Butterworth band-pass filter + Up: Designing filters + Previous: Butterworth filters +   Contents +   Index +
+
+ + +

+Stretching the unit circle with rational functions +

+ +

+In Section 8.3.4 we saw a simple way to turn a low-pass +filter into a band-pass one. It is tempting to apply the same method to turn +our Butterworth low-pass filter into a higher-quality band-pass filter; but if +we wish to preserve the high quality of the Butterworth filter we must be more +careful than before in the design of the transformation used. In this section +we will prepare the way to making the Butterworth band-pass filter by +introducing a class of rational transformations of the complex plane which +preserve the unit circle. + +

+This discussion is adapted from [PB87], pp. 201-206 (I'm grateful +to Julius Smith for this pointer). There the transformation is carried out +in continuous time, but here we have adapted the method to operate in +discrete time, in order to make the discussion self-contained. + +

+The idea is to start with any filter with a transfer function as before: +

+
+ + +\begin{displaymath}
+H(Z) = {
+{
+(1 - {Q_1}{Z^{-1}}) \cdots (1 - {Q_j}{Z^{-1}})
+} \over {
+(1 - {P_1}{Z^{-1}}) \cdots (1 - {P_k}{Z^{-1}})
+}
+}
+\end{displaymath} +
+
+

+whose frequency response (the gain at a frequency $\omega $) is given by: +

+
+ + +\begin{displaymath}
+\vert H(\cos(\omega) + i \sin(\omega)) \vert
+\end{displaymath} +
+
+

+ +

+Now suppose we can find a rational function, $R(Z)$, which distorts the +unit circle in some desirable way. For $R$ to be a rational function means +that it can be written as a quotient of two polynomials (for example, the +transfer function $H$ is a rational function). That $R$ sends points on the +unit circle to other points on the unit circle is just the condition that +$\vert R(Z)\vert = 1$ whenever $Z=1$. It can easily be checked that any function of +the form +

+
+ + +\begin{displaymath}
+R(Z) = U \cdot
+{{
+{A_n}{Z^n} + {A_{n-1}}{Z^{n-1}} + \cdot...
+...}{Z^n} + \overline{A_1}{Z^{n-1}} + \cdots + \overline{A_n}
+}}
+\end{displaymath} +
+
+

+(where $\vert U\vert=1$) has this property. The same reasoning as in Section +8.2.2 confirms that $\vert R(Z)\vert = 1$ whenever $Z=1$. + +

+Once we have a suitable rational function $R$, we can simply compose it with the +original transfer function $H$ to fabricate a new rational function, +

+
+ + +\begin{displaymath}
+J(Z) = H(R(Z))
+\end{displaymath} +
+
+

+The gain of the new filter $J$ at the frequency $\omega $ is then equal to +that of $H$ at a different frequency $\phi$, chosen so that: +

+
+ + +\begin{displaymath}
+\cos(\phi) + i \sin(\phi) = R(\cos(\omega) + i \sin(\omega))
+\end{displaymath} +
+
+

+The function $R$ moves points around on the unit +circle; $J$ at any point equals $H$ on the point $R$ moves it to. + +

+For example, suppose we start with a one-zero, one-pole low-pass filter: +

+
+ + +\begin{displaymath}
+H(Z) =
+{{
+1 + {Z^{-1}}
+} \over {
+1 - g{Z^{-1}}
+}}
+\end{displaymath} +
+
+

+and apply the function +

+
+ + +\begin{displaymath}
+R(Z) = -{Z^2} = -
+{{
+1 \cdot {Z^2} + 0 \cdot Z + 0
+} \over {
+0 \cdot {Z^2} + 0 \cdot Z + 1
+}}
+\end{displaymath} +
+
+

+Geometrically, this choice of $R$ stretches the unit circle uniformly to twice +its circumference and wraps it around itself twice. The points $1$ and +$-1$ are both sent to the point $-1$, and the points $i$ and $-i$ are sent +to the point $1$. The resulting transfer +function is +

+
+ + +\begin{displaymath}
+J(Z) =
+{{
+1 - {Z^{-2}}
+} \over {
+1 + g{Z^{-2}}
+}}
+=
+...
+... \over {
+(1 - i\sqrt{g} {Z^{-1}})(1 + i\sqrt{g} {Z^{-1}})
+}}
+\end{displaymath} +
+
+

+The pole-zero plots of $H$ and $J$ are shown in Figure 8.19. From +a low-pass filter we ended up with a band-pass filter. The points $i$ and $-i$ +which $R$ sends to $1$ (where the original filter's gain is highest) become +points of highest gain for the new filter. + +

+ +

+ + + +
Figure 8.19: +One-pole, one-zero low-pass filter: (a) pole-zero plot; (b) +plot for the resulting filter after the transformation $R(Z) = -{Z^2}$. The +result is a band-pass filter with center frequency $\pi /2$. +
\begin{figure}\psfig{file=figs/fig08.19.ps}\end{figure}
+
+ +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Butterworth band-pass filter + Up: Designing filters + Previous: Butterworth filters +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node147.html b/node147.html new file mode 100644 index 0000000..9e7473c --- /dev/null +++ b/node147.html @@ -0,0 +1,458 @@ + + + + + +Butterworth band-pass filter + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Time-varying coefficients + Up: Designing filters + Previous: Stretching the unit circle +   Contents +   Index +
+
+ + +

+Butterworth band-pass filter +

+ +

+We can apply the transformation $R(Z) = -Z^2$ to convert the Butterworth filter into a high-quality +band-pass filter with center frequency $\pi /2$. A further transformation +can then be applied to shift the center frequency to any desired value $\omega $ +between 0 and $\pi $. The transformation will be of the form, +

+
+ + +\begin{displaymath}
+S(Z) =
+{{
+aZ + b
+} \over {
+bZ + a
+}}
+\end{displaymath} +
+
+

+where $a$ and $b$ are real numbers and not both are zero. This +is a particular case of the general form given above for unit-circle-preserving +rational functions. We have $S(1) = 1$ and $S(-1) = -1$, +and the top and bottom halves of the unit circle are transformed +symmetrically (if $Z$ goes to $W$ then $\overline{Z}$ goes to $\overline{W}$). +The qualitative effect of the transformation $S$ is to squash points of the +unit circle toward $1$ or $-1$. + +

+In particular, given a desired center frequency $\omega $, +we wish to choose $S$ so that: +

+
+ + +\begin{displaymath}
+S(\cos(\omega) + i \sin(\omega)) = i
+\end{displaymath} +
+
+

+If we leave $R = - {Z^2}$ as before, and let $H$ be the transfer +function for a low-pass Butterworth filter, then the combined filter +with transfer function $H(R(S(Z)))$ +will be a band-pass filter with center frequency $\omega $. Solving for $a$ +and $b$ gives: +

+
+ + +\begin{displaymath}
+a = \cos({{\pi}\over 4} - {{\omega} \over 2}) , \;
+b = \sin({{\pi}\over 4} - {{\omega} \over 2})
+\end{displaymath} +
+
+

+The new transfer function, $H(R(S(Z)))$, will have $2n$ poles and $2n$ +zeros (if $n$ is the degree of the Butterworth filter $H$). + +

+Knowing the transfer function is good, but even better is knowing the locations +of all the poles and zeros of the new filter, which we need to be able to +compute it using elementary filters. If $Z$ is a pole of the transfer +function +$J(Z) = H(R(S(Z)))$, that is, if $J(Z)=\infty$, then $R(S(Z))$ must +be a pole of $H$. The same goes for zeros. To find a pole or zero of $J$ +we set $R(S(Z)) = W$, where $W$ is a pole or zero of $H$, and solve for $Z$. +This gives: +

+
+ + +\begin{displaymath}
+- {
+{ \left [ {
+{
+aZ + b
+} \over {
+bZ + a
+}
+} \right ] }
+^ 2
+} = W
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+{
+{
+aZ + b
+} \over {
+bZ + a
+}
+} = {
+\pm \sqrt {
+- W
+}
+}
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+Z = { {
+\pm a \sqrt { - W }
+- b
+} \over {
+\mp b \sqrt { - W }
++ a
+}
+}
+\end{displaymath} +
+
+

+(Here $a$ and $b$ are as given above and we have used the fact that +${a^2}+{b^2}=1$). A sample pole-zero plot and frequency response of $J$ +are shown in Figure 8.20. + +

+ +

+ + + +
Figure 8.20: +Butterworth band-pass filter: (a) pole-zero diagram; (b) +frequency response. The center frequency is $\pi /4$. The bandwidth depends +both on center frequency and on the bandwidth of the original Butterworth +low-pass filter used.
\begin{figure}\psfig{file=figs/fig08.20.ps}\end{figure}
+
+ +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Time-varying coefficients + Up: Designing filters + Previous: Stretching the unit circle +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node148.html b/node148.html new file mode 100644 index 0000000..12bd48e --- /dev/null +++ b/node148.html @@ -0,0 +1,168 @@ + + + + + +Time-varying coefficients + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Impulse responses of recirculating + Up: Designing filters + Previous: Butterworth band-pass filter +   Contents +   Index +
+
+ + +

+ +
+Time-varying coefficients +

+ +

+In some recursive filter designs, changing the coefficients of the filter can +inject energy into the system. A physical analogue is a child on a swing set. +The child oscillates back and forth at the resonant frequency of the system, +and pushing or pulling the child injects or extracts energy smoothly. However, +if you decide to shorten the chain or move the swing set itself, you may inject +an unpredictable amount of energy into the system. The same thing can happen +when you change the coefficients in a resonant recirculating filter. + +

+The simple one-zero and one-pole filters used here don't have this +difficulty; if the feedback or feed-forward gain is changed smoothly (in the +sense of an amplitude envelope) the output will behave smoothly as well. +But one subtlety arises when trying to normalize a recursive filter's output +when the feedback gain is close to one. For example, suppose we have a one-pole +low-pass filter with gain 0.99 (for a cutoff frequency of 0.01 radians, or 70 +Hertz at the usual sample rate). To normalize this for unit DC gain we multiply +by 0.01. Suppose now we wish to double the cutoff frequency by changing the +gain slightly to 0.98. This is fine except that the normalizing factor +suddenly doubles. If we multiply the filter's output by the normalizing +factor, the output will suddenly, although perhaps only momentarily, jump by a +factor of two. + +

+ +

+ + + +
Figure 8.21: +Normalizing a recirculating elementary filter: +(a) correctly, by multiplying in the normalization factor at the input; (b) +incorrectly, multiplying at the output.
\begin{figure}\psfig{file=figs/fig08.21.ps}\end{figure}
+
+ +

+The trick is to normalize at the input of the filter, not the output. +Figure 8.21 (part a) shows a complex recirculating filter, with +feedback gain $P$, normalized at the input by $1-\vert P\vert$ so that the peak gain +is one. Part (b) shows the wrong way to do it, multiplying at the output. + +

+Things get more complicated when several elementary recirculating filters are +put in series, since the correct normalizing factor is in general a function of +all the coefficients. One possible approach, if such a filter is required to +change rapidly, is to normalize each input separately as if it were acting +alone, then multiplying the output, finally, by whatever further correction +is needed. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Impulse responses of recirculating + Up: Designing filters + Previous: Butterworth band-pass filter +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node149.html b/node149.html new file mode 100644 index 0000000..87e5081 --- /dev/null +++ b/node149.html @@ -0,0 +1,266 @@ + + + + + +Impulse responses of recirculating filters + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: All-pass filters + Up: Designing filters + Previous: Time-varying coefficients +   Contents +   Index +
+
+ + +

+Impulse responses of recirculating filters +

+ +

+In Section 7.4 we analyzed the impulse response of a +recirculating comb filter, of which the one-pole low-pass filter is a special +case. Figure 8.22 shows the result for two low-pass filters and +one complex one-pole resonant filter. All are elementary recirculating filters +as introduced in Section 8.2.3. Each is normalized to have +unit maximum gain. + +

+In the case of a low-pass filter, the impulse response gets longer (and +lower) as the pole gets closer to one. Suppose the pole is at a point $1-1/n$ +(so that the cutoff frequency is $1/n$ radians). The normalizing factor is +also $1/n$. After $n$ points, the output diminishes by a factor of +

+
+ + +\begin{displaymath}
+{ {\left ( 1-{1\over n} \right ) } ^ n } \approx {1\over e}
+\end{displaymath} +
+
+

+where $e$ is Euler's constant, about +2.718. The filter can be said to have a +settling time of $n$ samples. In the figure, $n=5$ for part (a) and +$n=10$ for part (b). In general, the settling time (in samples) is approximately one +over the cutoff frequency (in angular units). + +

+ +

+ + + +
Figure 8.22: +The impulse response of three elementary recirculating (one-pole) +filters, +normalized for peak gain 1: (a) low-pass with $P=0.8$; (b) low-pass with +$P=0.9$; (c) band-pass (only the real part shown), with $\vert P\vert=0.9$ and a center frequency of $2\pi /10$.
\begin{figure}\psfig{file=figs/fig08.22.ps}\end{figure}
+
+ +

+The situation gets more interesting when we look at a resonant one-pole filter, +that is, one whose pole lies off the real axis. In part (c) of the figure, +the pole $P$ has absolute value 0.9 (as in part b), but its argument is +set to $2\pi /10$ radians. We get the same settling time as in part (b), but +the output rings at the resonant frequency (and so at a period of 10 samples +in this example). + +

+A natural question to ask is, how many periods of ringing do we get before the +filter decays to strength $1/e$? If the pole of a resonant filter has magnitude +$1-1/n$ as above, we have seen in Section 8.2.3 that the +bandwidth (call it $b$) is about $1/n$, and we see here that the settling time +is about $n$. The resonant frequency (call it $\omega $) is the argument of the +pole, and the period in samples of the ringing is +$2 \pi / \omega$. The number of periods that make up the settling time is thus: +

+
+ + +\begin{displaymath}
+{{n} \over {2\pi/\omega}} = {{1} \over {2\pi}} {{\omega} \over {b}}
+= {{q} \over {2\pi}}
+\end{displaymath} +
+
+

+where $q$ is the +quality of the filter, defined as the center frequency divided by +bandwidth. Resonant filters are often specified in terms of the center +frequency and ``q" in place of bandwidth. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: All-pass filters + Up: Designing filters + Previous: Time-varying coefficients +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node15.html b/node15.html new file mode 100644 index 0000000..332d42c --- /dev/null +++ b/node15.html @@ -0,0 +1,153 @@ + + + + + +About the Software Examples + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Quick Introduction to Pd + Up: Sinusoids, amplitude and frequency + Previous: Periodic Signals +   Contents +   Index +
+
+ + +

+About the Software Examples +

+ +

+The examples for this book use Pure Data (Pd), and to +understand them you will have to learn at least something about Pd itself. +Pd is an environment for quickly realizing computer music applications, +primarily intended for live music performances. Pd can +be used for other media as well, but we won't go into that here. + +

+Several other patchable audio DSP environments exist besides Pd. The most +widely used one is certainly Barry Vercoe's Csound [Bou00], which +differs from Pd in being text-based (not GUI-based). This is an advantage in +some respects and a disadvantage in others. Csound is better adapted than Pd +for batch processing and it handles polyphony much better than Pd does. On the +other hand, Pd has a better developed real-time control structure than Csound. +Genealogically, Csound belongs to the so-called Music N languages +[Mat69, pp.115-172]. + +

+Another open-source alternative in wide use is James McCartney's SuperCollider, +which is also more text oriented than Pd, but like Pd is explicitly designed +for real-time use. SuperCollider has powerful linguistic constructs which make +it a more suitable tool than Csound for tasks like writing loops or maintaining +complex data structures. + +

+Finally, Pd has a widely-used sibling, Cycling74's commercial program +Max/MSP (the others named here are all open source). Both beginners and +system managers running multi-user, multi-purpose computer labs will find +Max/MSP better supported and documented than Pd. It's possible to take +knowledge of Pd and apply it in Max/MSP and vice versa, and even to port +patches from one to the other, but the two aren't truly compatible. + +

+


+ +Subsections + + + +
+ + +next + +up + +previous + +contents + +index +
+ Next: Quick Introduction to Pd + Up: Sinusoids, amplitude and frequency + Previous: Periodic Signals +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node150.html b/node150.html new file mode 100644 index 0000000..c5dee59 --- /dev/null +++ b/node150.html @@ -0,0 +1,233 @@ + + + + + +All-pass filters + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Applications + Up: Designing filters + Previous: Impulse responses of recirculating +   Contents +   Index +
+
+ + +

+All-pass filters +

+ +

+Sometimes a filter is applied to get a desired phase change, rather than to +alter the amplitudes of the frequency components of a sound. To do this +we would need a way to design a filter with a constant, unit frequency response +but which changes the phase of an incoming sinusoid in a way that depends on its +frequency. We have already seen in Chapter 7 that a delay of length $d$ +introduces a phase change of $- d \omega$, at the angular frequency $\omega $. +Another class of filters, called +all-pass filters, +can make phase changes which are more interesting functions of $\omega $. + +

+To design an all-pass filter, we start with two facts: first, an elementary +recirculating filter and an elementary non-recirculating one cancel each other +out perfectly if they have the same gain coefficient. In other words, if a +signal has been put through a one-zero filter, either real or complex, the +effect can be reversed by sequentially applying a one-pole filter, and vice +versa. + +

+The second fact is that the elementary non-recirculating filter of the second +form has the same frequency response as that of the first form; they differ only +in phase response. So if we combine an elementary recirculating filter with +an elementary non-recirculating one of the second form, the frequency responses +cancel out (to a flat gain independent of frequency) but the phase response +is not constant. + +

+To find the transfer function, we choose the same complex number $P<1$ as +coefficient for both elementary filters and multiply their transfer functions: +

+
+ + +\begin{displaymath}
+H(Z) = {{
+{\overline{P} - {Z^{-1}}}
+} \over {
+{1 - P{Z^{-1}}}
+}}
+\end{displaymath} +
+
+

+The coefficient $P$ controls both the location of the one pole (at $P$ itself) +and the zero (at +$1/\overline{P}$). Figure 8.23 shows the phase response of +the all-pass filter for four real-valued choices $p$ of the coefficient. At +frequencies of $0$, $\pi $, and $2\pi $, the phase response is just that of a +one-sample delay; but for frequencies in between, the phase response is bent +upward or downward depending on the coefficient. + +

+ +

+ + + +
Figure 8.23: +Phase response of all-pass filters with different pole locations $p$. +When the pole is located at zero, the filter reduces to a one-sample delay.
\begin{figure}\psfig{file=figs/fig08.23.ps}\end{figure}
+
+ +

+Complex coefficients give similar phase response curves, but the frequencies at +which they cross the diagonal line in the figure are shifted according to the +argument of the coefficient $P$. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Applications + Up: Designing filters + Previous: Impulse responses of recirculating +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node151.html b/node151.html new file mode 100644 index 0000000..0fc8525 --- /dev/null +++ b/node151.html @@ -0,0 +1,95 @@ + + + + + +Applications + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Subtractive synthesis + Up: Filters + Previous: All-pass filters +   Contents +   Index +
+
+ + +

+Applications +

+ +

+Filters are used in a broad range of applications both in audio engineering and +in electronic music. The former include, for instance, equalizers, speaker +crossovers, sample rate converters, and DC removal (which we have already used +in earlier chapters). Here, though, we'll be concerned with the specifically +musical applications. + +

+


+ +Subsections + + + +

+
+Miller Puckette +2006-12-30 +
+ + diff --git a/node152.html b/node152.html new file mode 100644 index 0000000..b5f2ce1 --- /dev/null +++ b/node152.html @@ -0,0 +1,163 @@ + + + + + +Subtractive synthesis + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Envelope following + Up: Applications + Previous: Applications +   Contents +   Index +
+
+ + +

+ +
+Subtractive synthesis +

+ +

+Subtractive synthesis is the technique of using filters to shape the +spectral envelope of a sound, forming another sound, usually preserving +qualities of the original sound such as pitch, roughness, noisiness, or +graniness. The spectral envelope of the resulting sound is the product of the +spectral envelope of the original sound with the frequency response of the +filter. Figure 8.24 shows a possible configuration of source, +filter, and result. + +

+ +

+ + + +
Figure 8.24: +Subtractive synthesis: (a) spectrum of input sound; (b) filter frequency +response; (c) spectrum of output sound.
\begin{figure}\psfig{file=figs/fig08.24.ps}\end{figure}
+
+ +

+The filter may be constant or time-varying. Already in wide use by the mid +1950s, subtractive synthesis boomed with the introduction of the +voltage-controlled filter (VCF), which became widely available in the mid 1960s +with the appearance of modular synthesizers. A typical VCF has two inputs: one +for the sound to filter, and one to vary the center or cutoff frequency of the +filter. + +

+A popular use of a VCF is to control the center frequency of a resonant filter +from the same ADSR generator that controls the amplitude; a possible block +diagram is shown in Figure 8.25. In this configuration, +the louder portion of a note (loudness roughly controlled by the multiplier +at the bottom) may also be made to sound brighter, using the filter, than +the quieter parts; this can mimic the spectral evolution of strings or +brass instruments over the life of a note. + +

+ +

+ + + +
Figure 8.25: +ADSR-controlled subtractive synthesis.
\begin{figure}\psfig{file=figs/fig08.25.ps}\end{figure}
+
+ +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Envelope following + Up: Applications + Previous: Applications +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node153.html b/node153.html new file mode 100644 index 0000000..ca7f44f --- /dev/null +++ b/node153.html @@ -0,0 +1,296 @@ + + + + + +Envelope following + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Single Sideband Modulation + Up: Applications + Previous: Subtractive synthesis +   Contents +   Index +
+
+ + +

+ +
+Envelope following +

+ +

+It is frequently desirable to use the time-varying power of an incoming signal +to trigger or control a musical process. To do this, we will need a procedure +for measuring the power of an audio signal. Since most audio signals pass +through zero many times per second, it won't suffice to take instantaneous values +of the signal to measure its power; instead, we must calculate the average +power over an interval of time long enough that its variations won't +show up in the power estimate, but short enough that changes in signal level +are quickly reported. A computation that provides a +time-varying power estimate of a signal is called an +envelope follower. + +

+The output of a low-pass filter can be viewed as a moving average of its input. +For example, suppose we apply a normalized one-pole low-pass filter with +coefficient $p$, as in Figure 8.21, to an incoming signal $x[n]$. +The output (call it y[n]) is the sum of the delay output times $p$, with +the input times $1-p$: +

+
+ + +\begin{displaymath}
+y[n] = p \cdot y[n-1] + (1-p) \cdot x[n]
+\end{displaymath} +
+
+

+so each input is averaged, with weight $1-p$, into the previous output to +produce a new output. So we can make a moving average of the square of an +audio signal using the diagram of Figure 8.26. The output is +a time-varying average of the instantaneous power $x[n]^2$, and the design +of the low-pass filter controls, among other things, the settling time of +the moving average. + +

+ +

+ + + +
Figure 8.26: +Envelope follower. The output is the average power of the input +signal.
\begin{figure}\psfig{file=figs/fig08.26.ps}\end{figure}
+
+ +

+For more insight into the design of a suitable low-pass filter for an envelope +follower, we analyze it from the point of view of signal spectra. If, for +instance, we put in a real-valued sinusoid: +

+
+ + +\begin{displaymath}
+x[n] = a \cdot \cos(\alpha n)
+\end{displaymath} +
+
+

+the result of squaring is: +

+
+ + +\begin{displaymath}
+{{x[n]}^2} = {{a^2}\over 2} \left ( \cos(2 \alpha n) + 1 \right )
+\end{displaymath} +
+
+

+and so if the low-pass filter effectively stops the component of frequency +$2 \alpha$ we will get out approximately the constant ${{a^2} / 2}$, which +is indeed the average power. + +

+The situation for a signal with several components is similar. Suppose the +input signal is now, +

+
+ + +\begin{displaymath}
+x[n] = a \cdot \cos(\alpha n) + b \cdot \cos(\beta n)
+\end{displaymath} +
+
+

+whose spectrum is plotted in Figure 8.27 (part a). (We have omitted +the two phase terms but they will have no effect on the outcome.) Squaring the +signal produces the spectrum shown in part (b) (see Section +5.2).) We can get the desired fixed value of +$({a^2} +
+{b^2})/2$ simply by filtering out all the other components; ideally the result +will be a constant (DC) signal. As long as we filter out all the partials, and +also all the difference tones, we end up with a stable output that correctly +estimates the average power. + +

+ +

+ + + +
Figure 8.27: +Envelope following from the spectral point of view: (a) an +incoming signal with two components; (b) the result of squaring it.
\begin{figure}\psfig{file=figs/fig08.27.ps}\end{figure}
+
+ +

+Envelope followers may also be used on noisy signals, which may be thought of +as signals with dense spectra. In this situation there will be difference +frequencies arbitrarily close to zero, and filtering them out +entirely will be impossible; we will always get fluctuations in the output, but +they will decrease proportionally as the filter's passband is narrowed. + +

+Although a narrower passband will always give a cleaner output, whether for +discrete or continuous spectra, the filter's settling time will lengthen +proportionally as the passband is narrowed. There is thus a tradeoff between +getting a quick response and a smooth result. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Single Sideband Modulation + Up: Applications + Previous: Subtractive synthesis +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node154.html b/node154.html new file mode 100644 index 0000000..2ad691d --- /dev/null +++ b/node154.html @@ -0,0 +1,398 @@ + + + + + +Single Sideband Modulation + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Examples + Up: Applications + Previous: Envelope following +   Contents +   Index +
+
+ + +

+ +
+Single Sideband Modulation +

+ +

+As we saw in Chapter 5, multiplying two real sinusoids together results +in a signal with two new components at the sum and difference of the +original frequencies. If we carry out the same operation with complex +sinusoids, we get only one new resultant frequency; this is one result of +the greater mathematical simplicity of complex sinusoids as compared to +real ones. If we multiply a complex sinusoid +$1, Z, {Z^2}, \ldots$ +with another one, +$1, W, {W^2}, \ldots$ the result is + +$1, WZ, {{(WZ)}^2}, \ldots$, which is another complex sinusoid whose +frequency, $\angle(ZW)$, is the sum of the two original frequencies. + +

+In general, since complex sinusoids have simpler properties than real ones, it +is often useful to be able to convert from real sinusoids to complex ones. In +other words, from the real sinusoid: +

+
+ + +\begin{displaymath}
+x[n] = a \cdot \cos (\omega n)
+\end{displaymath} +
+
+

+(with a spectral peak of amplitude $a/2$ and frequency $\omega $) we would like +a way of computing the complex sinusoid: +

+
+ + +\begin{displaymath}
+X[n] = a \left ( \cos (\omega n) + i \sin (\omega n) \right )
+\end{displaymath} +
+
+

+so that +

+
+ + +\begin{displaymath}
+x[n] = \mathrm{re} (X[n])
+\end{displaymath} +
+
+

+We would like a linear process for doing this, so that superpositions of +sinusoids get treated as if their components were dealt with separately. + +

+Of course we could equally well have chosen the complex sinusoid with +frequency $-\omega$: +

+
+ + +\begin{displaymath}
+X'[n] = a \left ( \cos (\omega n) - i \sin (\omega n) \right )
+\end{displaymath} +
+
+

+and in fact $x[n]$ is just half the sum of the two. In essence we need a filter +that will pass through positive frequencies (actually frequencies between +0 and $\pi $, corresponding to values of $Z$ on the top half of the complex +unit circle) from negative values +(from $-\pi$ to 0, or equivalently, from $\pi $ to $2\pi $--the bottom +half of the unit circle). + +

+One can design such a filter by designing a low-pass filter with cutoff +frequency $\pi /2$, and then performing a rotation by $\pi /2$ radians using the +technique of Section 8.3.4. However, it turns out to be +easier to do it using two specially designed networks of all-pass filters +with real coefficients. + +

+Calling the transfer functions of the two filters $H_1$ and $H_2$, we design +the filters so that +

+
+ + +\begin{displaymath}
+\angle({H_1}(Z)) - \angle({H_2}(Z)) \approx
+\left \{
+\be...
+...pi} \\
+-\pi/2 & {-\pi < \angle(Z) < 0}
+\end{array} \right .
+\end{displaymath} +
+
+

+or in other words, +

+
+ + +\begin{displaymath}
+{H_1}(Z) \approx i {H_2}(Z) , \; 0 < \angle(Z) < \pi
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+{H_1}(Z) \approx -i {H_2}(Z) , \; -\pi < \angle(Z) < 0
+\end{displaymath} +
+
+

+Then for any incoming real-valued signal $x[n]$ we simply form a complex number +$a[n] + i b[n]$ where $a[n]$ is the output of the first filter and $b[n]$ is +the output of the second. Any complex sinusoidal component of $x[n]$ +(call it $Z^n$) will be transformed to +

+
+ + +\begin{displaymath}
+{H_1}(Z) + i {H_2}(Z) \approx
+\left \{
+\begin{array}{ll}
+...
+...ngle(Z) < \pi} \\
+0 & \mbox{otherwise}
+\end{array} \right .
+\end{displaymath} +
+
+

+ +

+Having started with a real-valued signal, whose energy is split equally into +positive and negative frequencies, we end up with a complex-valued one with +only positive frequencies. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Examples + Up: Applications + Previous: Envelope following +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node155.html b/node155.html new file mode 100644 index 0000000..4dc9f6b --- /dev/null +++ b/node155.html @@ -0,0 +1,100 @@ + + + + + +Examples + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Prefabricated low-, high-, and + Up: Filters + Previous: Single Sideband Modulation +   Contents +   Index +
+
+ + +

+Examples +

+ +

+In this section we will first introduce some easy-to-use prefabricated filters +available in Pd to develop examples showing applications from +the previous section. Then we will show some more sophisticated applications +that require specially designed filters. + +

+


+ +Subsections + + + +

+
+Miller Puckette +2006-12-30 +
+ + diff --git a/node156.html b/node156.html new file mode 100644 index 0000000..2932e14 --- /dev/null +++ b/node156.html @@ -0,0 +1,182 @@ + + + + + +Prefabricated low-, high-, and band-pass filters + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Prefabricated time-varying band-pass filter + Up: Examples + Previous: Examples +   Contents +   Index +
+
+ + +

+Prefabricated low-, high-, and band-pass filters +

+ +

+Patches H01.low-pass.pd, H02.high-pass.pd, and H03.band-pass.pd (Figure 8.28) show Pd's +built-in filters, which implement filter designs described in Sections +8.3.1, 8.3.2 and 8.3.4. +Two of the patches also use a noise generator we have not introduced before. +We will need four new Pd objects: + +

+
+\fbox{\texttt{lop\~}}: +one-pole low-pass filter. The left inlet takes a signal to be filtered, and +the right inlet takes control messages to set the +cutoff frequency of the filter. The filter is normalized so that the +gain is one at frequency 0. + +

+
+\fbox{ \texttt{hip\~}}: +one-pole, one-zero high-pass filter, with the same inputs and outputs as +lop~, normalized to have a gain of one at the Nyquist frequency. + +

+
+\fbox{ \texttt{bp\~}}: +resonant filter. The middle inlet takes control messages to set the center +frequency, and the right inlet to set ``q". + +

+
+\fbox{ \texttt{noise\~}}: +white noise generator. Each sample is an independent +pseudo-random number, uniformly distributed from -1 to 1. + +

+ +

+ + + +
Figure 8.28: +Using prefabricated filters in Pd: (a) a low-pass filter, with +white noise as a test input; (b) using a high-pass filter to remove a +signal component of frequency 0.
\begin{figure}\psfig{file=figs/fig08.28.ps}\end{figure}
+
+ +

+The first three example patches demonstrate these three filters (see Figure +8.28). The lop~ and bp~ objects are demonstrated +with noise as input; hip~ as shown is used to remove the DC (zero +frequency) component of a signal. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Prefabricated time-varying band-pass filter + Up: Examples + Previous: Examples +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node157.html b/node157.html new file mode 100644 index 0000000..22dc11e --- /dev/null +++ b/node157.html @@ -0,0 +1,155 @@ + + + + + +Prefabricated time-varying band-pass filter + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Envelope followers + Up: Examples + Previous: Prefabricated low-, high-, and +   Contents +   Index +
+
+ + +

+Prefabricated time-varying band-pass filter +

+ +

+Time-varying band-pass filtering, as often used in classical +subtractive synthesis (Section 8.4.1), can be done +using the vcf~ object, introduced here: + +

+
+\fbox{ \texttt{vcf\~}}: +a ``voltage controlled" band-pass filter, +similar to bp~, but with a signal inlet to control center frequency. +Both bp~ and vcf~ are one-pole resonant filters as +developed in Section 8.3.4; bp~ outputs only +the real part of the resulting signal, while vcf~ outputs the +real and imaginary parts separately. + +

+ +

+ + + +
Figure 8.29: +The vcf~ band-pass filter, with its center frequency +controlled by an audio signal (as compared to +bp~ which takes only control messages to set its center frequency.
\begin{figure}\psfig{file=figs/fig08.29.ps}\end{figure}
+
+ +

+Example H04.filter.sweep.pd (Figure 8.29) demonstrates using the vcf~ object for a simple and characteristic subtractive synthesis task. A +phasor~ object (at top) creates a sawtooth wave to filter. (This is +not especially good practice as we are not controlling the possibility of +foldover; a better sawtooth generator for this purpose will be developed in +Chapter 10.) The second phasor~ object (labeled ``LFO for sweep") +controls the time-varying center frequency. After adjusting to set the depth +and a base center frequency (given in MIDI units), the result is converted into +Hertz (using the tabread4~ object) and passed to vcf~ to set +its center frequency. Another example of using a vcf~ object for +subtractive synthesis is demonstrated in example H05.filter.floyd.pd. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Envelope followers + Up: Examples + Previous: Prefabricated low-, high-, and +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node158.html b/node158.html new file mode 100644 index 0000000..1bf2e52 --- /dev/null +++ b/node158.html @@ -0,0 +1,149 @@ + + + + + +Envelope followers + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Single sideband modulation + Up: Examples + Previous: Prefabricated time-varying band-pass filter +   Contents +   Index +
+
+ + +

+Envelope followers +

+ +

+Example H06.envelope.follower.pd shows a simple and self-explanatory realization of the +envelope follower described in Section 8.4.2. An +interesting application of envelope following is shown in Example H07.measure.spectrum.pd (Figure 8.30, part a). A famous bell sample is looped as a test +sound. Rather than get the overall mean square power of the bell, we would +like to estimate the frequency and power of each of its partials. To do this +we sweep a band-pass filter up and down in frequency, listening to the result +and/or watching the filter's output power using an envelope follower. (We use +two band-pass filters in series for better isolation of the partials; this is +not especially good filter design practice but it will do in this context.) +When the filter is tuned to a partial the envelope follower reports its +strength. + +

+ +

+ + + +
Figure 8.30: +Analyzing the spectrum of a sound: (a) band-pass filtering a sampled +bell sound and envelope-following the result; (b) frequency-shifting a +partial to DC and reading off its real and imaginary part. +
\begin{figure}\psfig{file=figs/fig08.30.ps}\end{figure}
+
+ +

+Example H08.heterodyning.pd (part (b) of the figure) shows an alternative way of finding partial strengths of +an incoming sound; it has the advantage of reporting the phase as well as the +strength. First we modulate the desired partial down to zero frequency. We use +a complex-valued sinusoid as a modulator so that we get only one sideband for +each component of the input. The test frequency is the only frequency that is +modulated to DC; others go elsewhere. We then low-pass the resulting complex +signal. (We can use a real-valued low-pass filter separately on the real +and imaginary parts.) This essentially removes all the partials except for the +DC one, which we then harvest. This technique is the basis of Fourier +analysis, the subject of Chapter 9. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Single sideband modulation + Up: Examples + Previous: Prefabricated time-varying band-pass filter +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node159.html b/node159.html new file mode 100644 index 0000000..6755faf --- /dev/null +++ b/node159.html @@ -0,0 +1,115 @@ + + + + + +Single sideband modulation + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Using elementary filters directly: + Up: Examples + Previous: Envelope followers +   Contents +   Index +
+
+ + +

+Single sideband modulation +

+ +

+ +

+ + + +
Figure 8.31: +Using an all-pass filter network to +make a frequency shifter. +
\begin{figure}\psfig{file=figs/fig08.31.ps}\end{figure}
+
+ +

+As described in Section 8.4.3, a pair of all-pass filters +can be constructed to give roughly $\pi /2$ phase difference for positive +frequencies and $-\pi/2$ for negative ones. The design of these pairs is +beyond the scope of this discussion (see, for instance, [Reg93]) but +Pd does provide an abstraction, hilbert~, to do this. Example +H09.ssb.modulation.pd, shown in Figure 8.31, demonstrates how to use the +hilbert~ abstraction to do signal sideband modulation. The +Hilbert transform dates to the analog era [Str95, pp.129-132]. + +

+The two outputs of hilbert~, considered as the real and imaginary parts +of a complex-valued signal, are multiplied by a complex sinusoid (at +right in the figure), and the real part is output. The components of the +resulting signal are those of the input shifted by a (positive or negative) +frequency specified in the number box. + +

+


+
+Miller Puckette +2006-12-30 +
+ + diff --git a/node16.html b/node16.html new file mode 100644 index 0000000..d3ab63b --- /dev/null +++ b/node16.html @@ -0,0 +1,209 @@ + + + + + +Quick Introduction to Pd + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: How to find and + Up: About the Software Examples + Previous: About the Software Examples +   Contents +   Index +
+
+ + +

+Quick Introduction to Pd +

+ +

+Pd documents are called +patches. They correspond roughly to the +boxes in the abstract block diagrams shown earlier in this chapter, but in +detail they +are quite different, because Pd is an implementation +environment, not a specification language. + +

+A Pd patch, such as the ones shown in +Figure 1.10, consists of a collection of +boxes +connected in a network. +The border of a box tells you how its text is interpreted and how the box +functions. In part (a) of the figure we see three types of boxes. From +top to bottom they are: + +

    +
  • a +message box. +Message boxes, with a flag-shaped border, interpret the text as a message to +send whenever the box is +activated (by an incoming message or with a pointing device). The message in this +case consists simply of the number ``21". + +

    +

  • +
  • an +object box. +Object boxes have a rectangular border; they interpret the text to create +objects +when you load a patch. Object boxes may hold hundreds of different +classes of objects--including oscillators, envelope generators, and other +signal processing modules to be introduced later--depending on the text +inside. In this example, the box holds an adder. In most Pd patches, the +majority of boxes are of type ``object". The first word typed into an object +box specifies its +class, +which in this case is just ``+". Any additional (blank-space-separated) words +appearing in the box are called +creation arguments, +which specify the initial state of the object when it is created. + +

    +

  • +
  • a +number box. +Number boxes are a particular type of +GUI box. Others include push buttons and +toggle switches; these will come up later in the examples. +The number box +has a punched-card-shaped border, with a nick out of its top right corner. +Whereas the appearance +of an object or message box is fixed when a patch is running, a number box's +contents (the text) changes to reflect the current value held by the box. You +can also use a number box as a control by clicking and dragging up and down, or +by typing values in it. + +

    +

  • +
+In Figure +1.10 (part a) the message box, when clicked, sends the message ``21" to an +object box which adds 13 to it. The lines connecting the boxes carry data +from one box to the next; outputs of boxes are on the bottom and inputs on top. + +

+ +

+ + + +
Figure 1.10: +(a) three types of boxes in Pd (message, object, and GUI); (b) a simple patch to output a +sinusoid.
\begin{figure}\psfig{file=figs/fig01.10.ps}\end{figure}
+
+ +

+Figure 1.10 (part b) shows a Pd patch which +makes a sinusoid with controllable frequency and amplitude. The connecting +patch lines are of two types here; the thin ones are for carrying sporadic +messages, +and the thicker ones (connecting the oscillator, the multiplier, and the output +dac~ object) carry digital audio signals. Since Pd is a real-time +program, the audio signals flow in a continuous stream. On the other hand, the +sporadic messages appear at specific but possibly unpredictable instants in +time. + +

+Whether a connection carries messages or signals depends on the box +the connection comes from; so, for instance, the + +object outputs messages, but the *~ object +outputs a signal. The inputs of a given object may or may not accept +signals (but they always accept messages, even if only to convert them to +signals). As a convention, object boxes with signal inputs or outputs +are all named with a trailing tilde (``~") as in ``*~" +and ``osc~". + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: How to find and + Up: About the Software Examples + Previous: About the Software Examples +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node160.html b/node160.html new file mode 100644 index 0000000..e2680ef --- /dev/null +++ b/node160.html @@ -0,0 +1,211 @@ + + + + + +Using elementary filters directly: shelving and peaking + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Making and using all-pass + Up: Examples + Previous: Single sideband modulation +   Contents +   Index +
+
+ + +

+Using elementary filters directly: shelving and peaking +

+ +

+ +

+ + + +
Figure 8.32: +Building filters from elementary, raw ones: (a) shelving; (b) peaking. +
\begin{figure}\psfig{file=figs/fig08.32.ps}\end{figure}
+
+ +

+No finite set of prefabricated filters could fill every possible need, and so +Pd provides the elementary filters of Sections +8.2.1-8.2.3 in raw form, so that the +user can supply the filter coefficients explicitly. In this section we will +describe patches that realize the shelving and peaking filters of Sections +8.3.3 and 8.3.5 directly from elementary filters. +First we introduce the six Pd objects that realize elementary filters: + +

+
+\fbox{ \texttt{rzero\~}}, +
+\fbox{ \texttt{rzero\_rev\~}}, +
+\fbox{ \texttt{rpole\~}}: +elementary filters with real-valued coefficients operating on real-valued +signals. The three implement non-recirculating filters of the first and +second types, and the recirculating filter. They all have one inlet, at +right, to supply the coefficient that sets the location of the zero or pole. +The inlet +for the coefficient (as well as the left inlet for the signal to filter) take +audio signals. No stability check is performed. + +

+
+\fbox{ \texttt{czero\~}}, +
+\fbox{ \texttt{czero\_rev\~}}, +
+\fbox{ \texttt{cpole\~}}: +elementary filters with complex-valued coefficients, operating on complex-valued +signals, corresponding to the real-valued ones above. Instead of two inlets and +one outlet, each of these filters has four inlets (real and imaginary part of +the signal to filter, and real and imaginary part of the coefficient) and +two outlets for the complex-valued output. + +

+The example patches use a pair of abstractions to graph the frequency and phase +responses of filters as explained in Example H10.measurement.pd. Example H11.shelving.pd (Figure 8.32, part a) shows how to make a shelving filter. One +elementary non-recirculating filter (rzero~) and one elementary +recirculating one (rpole~) are put in series. As the analysis of +Section 8.3.9 might suggest, the rzero~ object is placed +first. + +

+Example H12.peaking.pd (part (b) of the figure) implements a peaking filter. Here the +pole and the zero are rotated by an angle $\omega $ to control the center +frequency of the filter. The bandwidth and center frequency gain are equal to +the shelf frequency and the DC gain of the corresponding shelving filter. + +

+Example H13.butterworth.pd demonstrates a three-pole, three-zero Butterworth shelving +filter. The filter itself is an abstraction, butterworth3~, for +easy reuse. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Making and using all-pass + Up: Examples + Previous: Single sideband modulation +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node161.html b/node161.html new file mode 100644 index 0000000..8f76c02 --- /dev/null +++ b/node161.html @@ -0,0 +1,103 @@ + + + + + +Making and using all-pass filters + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Exercises + Up: Examples + Previous: Using elementary filters directly: +   Contents +   Index +
+
+ + +

+Making and using all-pass filters +

+ +

+ +

+ + + +
Figure 8.33: +All-pass filters: (a) making an all-pass filter from elementary +filters; (b) using four all-pass filters to build a phaser. +
\begin{figure}\psfig{file=figs/fig08.33.ps}\end{figure}
+
+ +

+Example H14.all.pass.pd (Figure 8.33, part a) shows how to make an all-pass +filter out of a non-recirculating filter, +second form (rzero_rev~) and a recirculating filter (rpole~). +The coefficient, ranging from -1 to 1, is controlled in hundredths. + +

+Example H15.phaser.pd (part b of the figure) shows how to use four all-pass filters to +make a classic phaser. The phaser works by summing the input signal with a +phase-altered version of it, making interference effects. The amount of phase +change is varied in time by varying the (shared) coefficient of the all-pass +filters. The overall effect is somewhat similar to a flanger (time-varying comb +filter) but the phaser does not impose a pitch as the comb filter does. + +

+


+
+Miller Puckette +2006-12-30 +
+ + diff --git a/node162.html b/node162.html new file mode 100644 index 0000000..8ea9eb2 --- /dev/null +++ b/node162.html @@ -0,0 +1,158 @@ + + + + + +Exercises + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Fourier analysis and resynthesis + Up: Filters + Previous: Making and using all-pass +   Contents +   Index +
+
+ + +

+Exercises +

+ +

+ +

    +
  1. A recirculating elementary filter has a pole at $i/2$. At what angular +frequency is its gain greatest, and what is the gain there? At what angular +frequency is the gain least, and what is the gain there? + +

    +

  2. +
  3. A shelving filter has a pole at 0.9 and a zero at 0.8. What are: the DC +gain; the gain at Nyquist; the approximate transition frequency? + +

    +

  4. +
  5. Suppose a complex recirculating filter has a pole at $P$. Suppose +further that you want to combine its real and imaginary output to make a +single, real-valued signal equivalent to a two-pole filter with poles at $P$ +and $\overline{P}$. How would you weight the two outputs? + +

    +

  6. +
  7. Suppose you wish to design a peaking filter with gain 2 at 1000 Hertz and +bandwidth 200 Hertz (at a sample rate of 44100 Hertz). Where, approximately, +would you put the upper pole and zero? + +

    +

  8. +
  9. In the same situation, where would you put the (upper) pole and zero +to remove a sinusoid at 1000 Hertz entirely, while attenuating only 3 decibels +at 1001 Hertz? + +

    +

  10. +
  11. A one-pole complex filter is excited by an impulse to make a tone at 1000 +Hertz, which decays 10 decibels in one second (at a sample rate of 44100 +Hertz). Where would you place the pole? What is the value of ``q"? + +

    +

  12. +
+
+ + +next + +up + +previous + +contents + +index +
+ Next: Fourier analysis and resynthesis + Up: Filters + Previous: Making and using all-pass +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node163.html b/node163.html new file mode 100644 index 0000000..a5e0a16 --- /dev/null +++ b/node163.html @@ -0,0 +1,169 @@ + + + + + +Fourier analysis and resynthesis + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Fourier analysis of periodic + Up: book + Previous: Exercises +   Contents +   Index +
+
+ + +

+ +
+Fourier analysis and resynthesis +

+ +

+Among the applications of filters discussed in Chapter 8, we +saw how to use heterodyning, combined with a low-pass filter, to find the +amplitude and phase of a sinusoidal component of a signal (Page +[*]). In this chapter we will refine this technique +into what is called +Fourier analysis. +In its simplest form, Fourier analysis takes as input any periodic +signal (of period $N$) and outputs the complex-valued +amplitudes of its $N$ possible sinusoidal components. +These $N$ complex amplitudes can theoretically be used to +reconstruct the original signal exactly. This reconstruction is called +Fourier resynthesis. + +

+In this chapter we will start by developing the theory of Fourier analysis and +resynthesis of periodic sampled signals. Then we will go on to show how +to apply the same techniques to arbitrary signals, whether periodic or not. +Finally, we will develop some standard applications such as the phase vocoder. + +

+


+ +Subsections + + + +

+
+Miller Puckette +2006-12-30 +
+ + diff --git a/node164.html b/node164.html new file mode 100644 index 0000000..13f8321 --- /dev/null +++ b/node164.html @@ -0,0 +1,459 @@ + + + + + +Fourier analysis of periodic signals + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Periodicity of the Fourier + Up: Fourier analysis and resynthesis + Previous: Fourier analysis and resynthesis +   Contents +   Index +
+
+ + +

+Fourier analysis of periodic signals +

+ +

+Suppose $X[n]$ is a complex-valued signal that repeats every $N$ samples. (We +are continuing to use complex-valued signals rather than real-valued ones +to simplify the mathematics.) Because of the period $N$, the +values of $X[n]$ for +$n=0,\ldots,N-1$ determine $X[n]$ for all integer values +of $n$. + +

+Suppose further that $X[n]$ can be written as a sum of complex sinusoids of +frequency $0$, $2\pi/N$, $4\pi/N$, $\ldots$, $2(N-1)\pi/N$. These are the +partials, starting with the zeroth, for a signal of period $N$. We stop at +the $N$th term because the next one would have frequency $2\pi $, equivalent +to frequency $0$, which is already on the list. + +

+Given the values of $X$, we wish to find the complex amplitudes of the +partials. Suppose we want the $k$th partial, where $0 \leq k < N$. The +frequency of this partial is $2\pi k / N$. We can find its complex amplitude +by modulating $X$ downward $2\pi k / N$ radians per sample in frequency, so +that the $k$th partial is modulated to frequency zero. Then we pass the signal +through a low-pass filter with such a low cutoff frequency that nothing but the +zero-frequency partial remains. We can do this in effect by averaging over a +huge number of samples; but since the signal repeats every $N$ samples, this +huge average is the same as the average of the first $N$ samples. In short, to +measure a sinusoidal component of a periodic signal, modulate it down to DC and +then average over one period. + +

+Let $\omega=2\pi/N$ be the fundamental frequency for the period $N$, and +let $U$ be the unit-magnitude complex number with argument $\omega $: +

+
+ + +\begin{displaymath}
+U = \cos(\omega) + i \sin(\omega)
+\end{displaymath} +
+
+

+The $k$th partial of the signal $X[n]$ is of the form: +

+
+ + +\begin{displaymath}
+{P_k}[n] = {A_k}{{\left [ {U^k} \right ]} ^ {n}}
+\end{displaymath} +
+
+

+where ${A_k}$ is the complex amplitude of the partial, and the frequency +of the partial is: +

+
+ + +\begin{displaymath}
+\angle({U^k}) = k \angle(U) = k\omega
+\end{displaymath} +
+
+

+We're assuming for the moment that the signal $X[n]$ can actually be written +as a sum of the $n$ partials, or in other words: +

+
+ + +\begin{displaymath}
+X[n] =
+{A_0}{{\left [ {U^0} \right ]} ^ {n}}
++ {A_1}{{\l...
+...n}}
++ \cdots
++ {A_{N-1}}{{\left [ {U^{N-1}} \right ]} ^ {n}}
+\end{displaymath} +
+
+

+By the heterodyne-filtering argument above, we expect to be able to measure +each $A_k$ by multiplying by the sinusoid of frequency $-k\omega$ and +averaging over a period: +

+
+ + +\begin{displaymath}
+{A_k} = {1\over N} \left (
+{{\left [ {U^{-k}} \right ]} ^ ...
+...dots +
+{{\left [ {U^{-k}} \right ]} ^ {N-1}} X[N-1]
+\right )
+\end{displaymath} +
+
+

+This is such a useful formula that it gets its own notation. The +Fourier transform +of a signal $X[n]$, over $N$ samples, is defined as: +

+
+ + +\begin{displaymath}
+{\cal FT}\left \{ X[n] \right \} (k) =
+{V ^ {0}} X[0] +
+{V ^ {1}} X[1] +
+\cdots +
+{V ^ {N-1}} X[N-1]
+\end{displaymath} +
+
+

+where $V = {U^{-k}}$. The Fourier transform is a function of the variable $k$, +equal to $N$ times the amplitude of the input's $k$th partial. So far $k$ +has taken integer values but the formula makes sense for any value of $k$ if we +define $V$ more generally as: +

+
+ + +\begin{displaymath}
+V = \cos(-k\omega) + i\sin(-k\omega)
+\end{displaymath} +
+
+

+where, as before, $\omega=2\pi/N$ is the (angular) fundamental +frequency associated with the period $N$. + +

+


+ +Subsections + + + +
+ + +next + +up + +previous + +contents + +index +
+ Next: Periodicity of the Fourier + Up: Fourier analysis and resynthesis + Previous: Fourier analysis and resynthesis +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node165.html b/node165.html new file mode 100644 index 0000000..4a0cf42 --- /dev/null +++ b/node165.html @@ -0,0 +1,136 @@ + + + + + +Periodicity of the Fourier transform + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Fourier transform as additive + Up: Fourier analysis of periodic + Previous: Fourier analysis of periodic +   Contents +   Index +
+
+ + +

+Periodicity of the Fourier transform +

+ +

+If X[n] is, as above, a signal that repeats every $N$ samples, the Fourier +transform of X[n] also repeats itself every $N$ units of frequency, that is, +

+
+ + +\begin{displaymath}
+{\cal FT}\left \{ X[n] \right \} (k+N) =
+{\cal FT}\left \{ X[n] \right \} (k)
+\end{displaymath} +
+
+

+for all real values of $k$. This follows immediately from the definition +of the Fourier transform, since the factor +

+
+ + +\begin{displaymath}
+V = \cos(-k\omega) + i\sin(-k\omega)
+\end{displaymath} +
+
+

+is unchanged when we add $N$ (or any multiple of $N$) to $k$. + +

+


+
+Miller Puckette +2006-12-30 +
+ + diff --git a/node166.html b/node166.html new file mode 100644 index 0000000..130435d --- /dev/null +++ b/node166.html @@ -0,0 +1,334 @@ + + + + + +Fourier transform as additive synthesis + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Properties of Fourier transforms + Up: Fourier analysis of periodic + Previous: Periodicity of the Fourier +   Contents +   Index +
+
+ + +

+ +
+Fourier transform as additive synthesis +

+ +

+Now consider an arbitrary signal $X[n]$ that repeats every $N$ +samples. (Previously we +had assumed that $X[n]$ could be obtained as a sum of sinusoids, and we haven't +yet found out whether every periodic $X[n]$ can be obtained that way.) Let +$Y[k]$ denote the Fourier transform of $X$ for +$k = 0, ..., N-1$: +

+
+ + +\begin{displaymath}
+Y[k] = {\cal FT}\left \{ X[n] \right \} (k)
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+= {{\left [ {U^{-k}} \right ]} ^ {0}} X[0] +
+{{\left [ {U^...
+...X[1] +
+\cdots +
+{{\left [ {U^{-k}} \right ]} ^ {N-1}} X[N-1]
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+= {{\left [ {U^{0}} \right ]} ^ {k}} X[0] +
+{{\left [ {U^{...
+...1] +
+\cdots +
+{{\left [ {U^{-(N-1)}} \right ]} ^ {k}} X[N-1]
+\end{displaymath} +
+
+

+In the second version we rearranged the exponents to show that $Y[k]$ is a sum +of complex sinusoids, with complex amplitudes $X[m]$ and frequencies $-m\omega$ +for +$m = 0, \ldots, N-1$. In other words, $Y[k]$ can be considered as a +Fourier series in its own right, whose $m$th component has strength $X[-m]$. +(The expression $X[-m]$ makes sense because $X$ is a periodic signal). +We can also express the amplitude of the partials of $Y[k]$ in terms of its own +Fourier transform. Equating the two gives: +

+
+ + +\begin{displaymath}
+{1 \over N} {\cal FT} \left \{ Y[k] \right \} (m) = X[-m]
+\end{displaymath} +
+
+

+This means in turn that $X[-m]$ can be obtained by summing sinusoids with +amplitudes $Y[k]/N$. Setting $n = -m$ gives: +

+
+ + +\begin{displaymath}
+X[n] = {1 \over N} {\cal FT} \left \{ Y[k] \right \} (-n)
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+= {{\left [ {U^{0}} \right ]} ^ {n}} Y[0] +
+{{\left [ {U^{...
+...Y[1] +
+\cdots +
+{{\left [ {U^{N-1}} \right ]} ^ {n}} Y[N-1]
+\end{displaymath} +
+
+

+This shows that any periodic $X[n]$ can indeed be obtained as a sum of +sinusoids. Further, the formula explicitly shows how to reconstruct $X[n]$ +from its Fourier transform $Y[k]$, if we know its value for the integers +$k=0,
+\ldots, N-1$. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Properties of Fourier transforms + Up: Fourier analysis of periodic + Previous: Periodicity of the Fourier +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node167.html b/node167.html new file mode 100644 index 0000000..32c01be --- /dev/null +++ b/node167.html @@ -0,0 +1,95 @@ + + + + + +Properties of Fourier transforms + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Fourier transform of DC + Up: Fourier analysis and resynthesis + Previous: Fourier transform as additive +   Contents +   Index +
+
+ + +

+Properties of Fourier transforms +

+ +

+In this section we will investigate what happens when we take the Fourier +transform of a (complex) sinusoid. The simplest one is ``DC", the special +sinusoid of frequency zero. After we derive the Fourier transform of that, we +will develop some properties of Fourier transforms that allow us to apply the +result to any other sinusoid. + +

+


+ +Subsections + + + +

+
+Miller Puckette +2006-12-30 +
+ + diff --git a/node168.html b/node168.html new file mode 100644 index 0000000..d4bae66 --- /dev/null +++ b/node168.html @@ -0,0 +1,533 @@ + + + + + +Fourier transform of DC + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Shifts and phase changes + Up: Properties of Fourier transforms + Previous: Properties of Fourier transforms +   Contents +   Index +
+
+ + +

+Fourier transform of DC +

+ +

+Let $X[n]=1$ for all $n$ (this repeats with any desired integer period +$N>1$). From the preceding discussion, we expect to find that +

+
+ + +\begin{displaymath}
+{\cal FT} \left \{ X[n] \right \} (k) =
+\left \{
+\begin{...
+...}
+N & {k=0} \\
+0 & {k=1, \ldots, N-1}
+\end{array} \right .
+\end{displaymath} +
+
+

+We will often need to know the answer for non-integer values of $k$ however, +and for this there is nothing better to do than to calculate the value +directly: +

+
+ + +\begin{displaymath}
+{\cal FT}\left \{ X[n] \right \} (k) =
+{V ^ {0}} X[0] +
+{V ^ {1}} X[1] +
+\cdots +
+{V ^ {N-1}} X[N-1]
+\end{displaymath} +
+
+

+where $V$ is, as before, the unit magnitude complex number with argument +$-k\omega$. This is a geometric series; as long as $V \not= 1$ we get: +

+
+ + +\begin{displaymath}
+{\cal FT} \left \{ X[n] \right \} (k) =
+{{
+{V^N} - 1
+} \over {
+V - 1
+}}
+\end{displaymath} +
+
+

+We now symmetrize the top and bottom in the same way as we earlier did in +Section 7.3. To do this let: +

+
+ + +\begin{displaymath}
+\xi = \cos(\pi k / N) - i \sin(\pi k / N)
+\end{displaymath} +
+
+

+so that ${\xi^2} = V$. Then factoring appropriate powers of $\xi$ out of the +numerator and denominator gives: +

+
+ + +\begin{displaymath}
+{\cal FT} \left \{ X[n] \right \} (k) =
+{\xi^{N-1}}
+{{
+{\xi^N} - {\xi^{-N}}
+} \over {
+\xi - {\xi^{-1}}
+}}
+\end{displaymath} +
+
+

+It's easy now to simplify the numerator: +

+
+ + +\begin{displaymath}
+{\xi^N} - {\xi^{-N}} =
+\left (\cos(\pi k) - i \sin(\pi k) ...
+...eft (\cos(\pi k) + i \sin(\pi k) \right )
+= - 2 i \sin(\pi k)
+\end{displaymath} +
+
+

+and similarly for the denominator, giving: +

+
+ + +\begin{displaymath}
+{\cal FT} \left \{ X[n] \right \} (k) =
+\left ( {
+\parbo...
+...
+} \right )
+{{
+\sin(\pi k)
+} \over {
+\sin(\pi k / N)
+}}
+\end{displaymath} +
+
+

+Whether $V=1$ or not, we have +

+
+ + +\begin{displaymath}
+{\cal FT} \left \{ X[n] \right \} (k) =
+\left ( {
+\parbo...
+...(\pi k (N-1)/N) - i \sin(\pi k (N-1)/N)
+} \right )
+{D_N}(k)
+\end{displaymath} +
+
+

+where ${D_N}(k)$, known as the +Dirichlet kernel, +is defined as +

+
+ + +\begin{displaymath}
+{D_N}(k) =
+\left \{
+\begin{array}{ll}
+N & {k= 0} \\
+{...
+...pi k / N)
+}}
+& {k\not=0,\; -N < k < N}
+\end{array} \right .
+\end{displaymath} +
+
+

+ +

+Figure 9.1 shows the Fourier transform of $X[n]=1$, with $N=100$. The +transform repeats every 100 samples, with a peak at $k=0$, another at +$k=100$, and so on. The figure endeavors to show both the magnitude and phase +behavior using a 3-dimensional graph projected onto the page. The phase +term +

+
+ + +\begin{displaymath}
+\cos(\pi k (N-1)/N) - i \sin(\pi k (N-1)/N)
+\end{displaymath} +
+
+

+acts to twist the values of +${\cal FT} \left \{ X[n] \right \} (k)$ around +the $k$ axis with a period of approximately two. The Dirichlet kernel +${D_N}(k)$, shown in Figure 9.2, controls the magnitude of + +${\cal FT} \left \{ X[n] \right \} (k)$. It has a peak, two units wide, around +$k=0$. This is surrounded by one-unit-wide +sidelobes, +alternating in sign and gradually decreasing in magnitude as $k$ increases or +decreases away from zero. The phase term rotates by almost $\pi $ radians +each time the Dirichlet kernel changes sign, so that the product of the +two stays roughly in the same complex half-plane for $k>1$ (and in the +opposite half-plane for $k < -1$). The phase rotates by almost $2\pi $ +radians over the peak from $k=-1$ to $k=1$. + +

+ +

+ + + +
Figure 9.1: +The Fourier transform of a signal consisting of all ones. Here +N=100, and values are shown for $k$ ranging from -5 to 10. The result +is complex-valued and shown as a projection, with the real axis pointing up the +page and the imaginary axis pointing away from it.
\begin{figure}\psfig{file=figs/fig09.01.ps}\end{figure}
+
+ +

+ +

+ + + +
Figure 9.2: +The Dirichlet kernel, for $N$ = 100.
\begin{figure}\psfig{file=figs/fig09.02.ps}\end{figure}
+
+ +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Shifts and phase changes + Up: Properties of Fourier transforms + Previous: Properties of Fourier transforms +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node169.html b/node169.html new file mode 100644 index 0000000..c358dbd --- /dev/null +++ b/node169.html @@ -0,0 +1,490 @@ + + + + + +Shifts and phase changes + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Fourier transform of a + Up: Properties of Fourier transforms + Previous: Fourier transform of DC +   Contents +   Index +
+
+ + +

+ +
+Shifts and phase changes +

+ +

+Section 7.2 showed how time-shifting a signal changes the +phases of its sinusoidal components, and Section 8.4.3 +showed how multiplying a signal by a complex sinusoid shifts its component +frequencies. These two effects have corresponding identities +involving the Fourier transform. + +

+First we consider a time shift. If $X[n]$, as usual, is a complex-valued +signal that repeats every $N$ samples, let $Y[n]$ be $X[n]$ delayed $d$ +samples: +

+
+ + +\begin{displaymath}
+Y[n] = X[n-d]
+\end{displaymath} +
+
+

+which also repeats every $N$ samples since $X$ does. We can reduce the Fourier +transform of $Y[n]$ this way: +

+
+ + +\begin{displaymath}
+{\cal FT} \left \{ Y[n] \right \} (k) =
+{V ^ {0}} Y[0] +
+{V ^ {1}} Y[1] +
+\cdots +
+{V ^ {N-1}} Y[N-1]
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+=
+{V ^ {0}} X[-d] +
+{V ^ {1}} X[-d+1] +
+\cdots +
+{V ^ {N-1}} X[-d+N-1]
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+=
+{V ^ {d}} X[0] +
+{V ^ {d+1}} X[1] +
+\cdots +
+{V ^ {d+N-1}} X[N-1]
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+= {V^d} \left (
+{V ^ {0}} X[0] +
+{V ^ {1}} X[1] +
+\cdots +
+{V ^ {N-1}} X[N-1]
+\right )
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+= {V^d} {\cal FT} \left \{ X[n] \right \} (k)
+\end{displaymath} +
+
+

+(The third line is just the second one with the terms summed in a +different order). We therefore get the Time Shift Formula for Fourier +Transforms: +

+
+ + +\begin{displaymath}
+{\cal FT} \left \{ X[n-d] \right \} (k) =
+\left ( {
+\par...
+...-dk\omega)
+} \right )
+{\cal FT} \left \{ X[n] \right \} (k)
+\end{displaymath} +
+
+

+The Fourier transform of $X[n-d]$ is a phase term times the Fourier transform +of $X[n]$. The phase is changed by $-dk\omega$, a +linear function of the frequency $k$. + +

+Now suppose instead that we change our starting signal $X[n]$ by multiplying +it by a complex exponential $Z^n$ with angular frequency $\alpha $: +

+
+ + +\begin{displaymath}
+Y[n] = {Z^n} X[n]
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+Z = \cos(\alpha) + i \sin(\alpha)
+\end{displaymath} +
+
+

+The Fourier transform is: +

+
+ + +\begin{displaymath}
+{\cal FT} \left \{ Y[n] \right \} (k) =
+{V ^ {0}} Y[0] +
+{V ^ {1}} Y[1] +
+\cdots +
+{V ^ {N-1}} Y[N-1]
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+=
+{V ^ {0}} X[0] +
+{V ^ {1}} Z X[1] +
+\cdots +
+{V ^ {N-1}} {Z^{N-1}} X[N-1]
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+=
+{{(VZ)} ^ {0}} X[0] +
+{{(VZ)} ^ {1}} X[1] +
+\cdots +
+{{(VZ)} ^ {N-1}} X[N-1]
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+= {\cal FT} \left \{ X[n] \right \} (k - {{\alpha } \over {\omega}})
+\end{displaymath} +
+
+

+We therefore get the Phase Shift Formula for Fourier Transforms: + +

+
+ + +\begin{displaymath}
+{\cal FT} \left \{ (\cos(\alpha) + i \sin(\alpha)) X[n] \ri...
+...l FT} \left \{ X[n] \right \} (k - {{\alpha N} \over {2 \pi}})
+\end{displaymath} +
+
+

+ +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Fourier transform of a + Up: Properties of Fourier transforms + Previous: Fourier transform of DC +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node17.html b/node17.html new file mode 100644 index 0000000..bffb8ba --- /dev/null +++ b/node17.html @@ -0,0 +1,145 @@ + + + + + +How to find and run the examples + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Examples + Up: About the Software Examples + Previous: Quick Introduction to Pd +   Contents +   Index +
+
+ + +

+How to find and run the examples +

+ +

+To run the patches, you must first download, install, and run Pd. +Instructions for +doing this appear in Pd's on-line HTML documentation, which you can find at +http://crca.ucsd.edu/~msp/software.htm. + +

+This book should appear at +http:/crca/ucsd/edu/~msp/techniques.htm, possibly in several revisions. +Choose the revision that corresponds to the text you're reading (or perhaps +just the latest one) and download the archive +containing the associated revision of the examples (you may also download an +archive of the HTML version of this book for easier access on your machine). The examples +should all stay in a single directory, since some of them depend on other +files in that directory and might not load them correctly if you have moved +things around. + +

+If you do want to copy one of the examples to another directory so that you +can build on it (which you're welcome to do), you should either include +the examples directory in Pd's search path (see the Pd documentation) or +else figure out what other files are needed and copy them too. A good way +to find this out is just to run Pd on the relocated file and see what Pd +complains it can't find. + +

+There should be dozens of files in the ``examples" folder, including the +examples themselves and the support files. The filenames of the examples +all begin with a letter (A for chapter 1, B for 2, etc.) and a number, as +in ``A01.sinewave.pd". + +

+The example patches are also distributed with Pd, but beware that you may find +a different version of the examples which might not correspond to the text +you're reading. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Examples + Up: About the Software Examples + Previous: Quick Introduction to Pd +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node170.html b/node170.html new file mode 100644 index 0000000..a52ee86 --- /dev/null +++ b/node170.html @@ -0,0 +1,275 @@ + + + + + +Fourier transform of a sinusoid + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Fourier analysis of non-periodic + Up: Properties of Fourier transforms + Previous: Shifts and phase changes +   Contents +   Index +
+
+ + +

+Fourier transform of a sinusoid +

+ +

+We can use the phase shift formula above to find the Fourier transform of +any complex sinusoid ${Z^n}$ with frequency $\alpha $, simply by setting +$X[n]=1$ in the formula and using the Fourier transform for DC: +

+
+ + +\begin{displaymath}
+{\cal FT} \left \{ {Z^n} \right \} (k) =
+{\cal FT} \left \{ 1 \right \}(k - {{\alpha } \over {\omega}})
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+= \left [ \cos(\Phi(k)) + i \sin(\Phi(k))\right ]
+{D_N}(k - {{\alpha } \over {\omega}})
+\end{displaymath} +
+
+

+where ${D_N}$ is the Dirichlet kernel and $\Phi$ is an ugly phase term: +

+
+ + +\begin{displaymath}
+\Phi(k) = - \pi \cdot (k - {{\alpha } \over {\omega}}) \cdot (N-1)/N
+\end{displaymath} +
+
+

+ +

+ +

+ + + +
Figure 9.3: +Fourier transforms of complex sinusoids, with $N$ = 100: (a) +with frequency $2\omega $ ; (b) with frequency $1.5\omega $. (The effect of +the phase winding term is not shown.) +
\begin{figure}\psfig{file=figs/fig09.03.ps}\end{figure}
+
+ +

+If the sinusoid's frequency $\alpha $ is an integer multiple of the fundamental +frequency $\omega $, the Dirichlet kernel is shifted to the left or right by an +integer. In this case the zero crossings of the Dirichlet kernel line up with +integer values of $k$, so that only one partial is nonzero. This is pictured +in Figure 9.3 (part a). + +

+ +

+ + + +
Figure 9.4: +A complex sinusoid with frequency +$\alpha =1.5\omega =3\pi /N$, forced to +repeat every $N$ samples. ($N$ is arbitrarily set to 100; only the real +part is shown.) +
\begin{figure}\psfig{file=figs/fig09.04.ps}\end{figure}
+
+ +

+Part (b) shows the result when the frequency $\alpha $ falls halfway between two +integers. The partials have amplitudes falling off roughly as $1/k$ in both +directions, measured from the actual frequency $\alpha $. That the energy +should be spread over many partials, when after all we started with a single +sinusoid, might seem surprising at first. However, as shown in Figure +9.4, the signal repeats at a period $N$ which disagrees with the +frequency of the sinusoid. As a result there is a discontinuity at the +beginning of each period, and energy is flung over a wide range +of frequencies. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Fourier analysis of non-periodic + Up: Properties of Fourier transforms + Previous: Shifts and phase changes +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node171.html b/node171.html new file mode 100644 index 0000000..3e63ad4 --- /dev/null +++ b/node171.html @@ -0,0 +1,543 @@ + + + + + +Fourier analysis of non-periodic signals + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Fourier analysis and reconstruction + Up: Fourier analysis and resynthesis + Previous: Fourier transform of a +   Contents +   Index +
+
+ + +

+Fourier analysis of non-periodic signals +

+ +

+Most signals aren't periodic, and even a periodic one might have an unknown +period. So we should be prepared to do Fourier analysis on signals without +making the comforting assumption that the signal to analyze repeats at a fixed +period $N$. Of course, we can simply take $N$ samples of the signal and +make it periodic; this is essentially what we did in the previous +section, in which a pure sinusoid gave us the complicated Fourier transform of +Figure 9.3 (part b). + +

+However, it would be better to get a result in which the response to a pure +sinusoid were better localized around the corresponding value of $k$. We +can accomplish this using the enveloping technique first introduced in Figure +2.7 (Page [*]). Applying this technique to Fourier +analysis will not only improve our analyses, but will also shed new light on +the enveloping looping sampler of Chapter 2. + +

+Given a signal $X[n]$, periodic or not, defined on the points from +$0$ to $N-1$, +the technique is to envelope the signal before doing the Fourier analysis. +The envelope shape is known as a +window function. +Given a window function $w[n]$, the +windowed Fourier transform +is: +

+
+ + +\begin{displaymath}
+{\cal FT} \left \{ w[n] X[n] \right \} (k)
+\end{displaymath} +
+
+

+Much ink has been spilled over the design of suitable window functions for +particular situations, but here we will consider the simplest one, named the +Hann +window function (the name is sometimes corrupted to ``Hanning" in DSP circles). +The Hann window is: +

+
+ + +\begin{displaymath}
+w[n] = {1\over 2} - {1\over 2} \cos(2\pi n / N)
+\end{displaymath} +
+
+

+It is easy to analyze the effect of multiplying a signal by the Hann window +before taking the Fourier transform, because the Hann window can be written +as a sum of three complex exponentials: +

+
+ + +\begin{displaymath}
+w[n] = {1\over 2} - {1\over 4} {U^n} - {1\over 4} {U^{-n}}
+\end{displaymath} +
+
+

+where as before, $U$ is the unit-magnitude complex number with argument +$2\pi/N$. +We can now calculate the windowed Fourier transform of a +sinusoid $Z^n$ with angular frequency $\alpha $ as before. The phases +come out messy and we'll replace them with simplified approximations: +

+
+ + +\begin{displaymath}
+{\cal FT} \left \{ w[n] {Z^n} \right \} (k)
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+= {\cal FT} \left \{ {1\over 2} {Z^n} - {1\over 4} {(UZ)^n}
+- {1\over 4} {({U^{-1}}Z)^n}\right \} (k)
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+\approx \left [ \cos(\Phi(k)) + i \sin(\Phi(k))\right ]
+M(k - {{\alpha } \over {\omega}})
+\end{displaymath} +
+
+

+where the (approximate) phase term is: +

+
+ + +\begin{displaymath}
+\Phi(k) = - \pi \cdot (k - {{\alpha } \over {\omega}})
+\end{displaymath} +
+
+

+and the magnitude function is: +

+
+ + +\begin{displaymath}
+M(k) =
+{\left [ {
+{1\over 2}{D_N}(k)
++ {1\over 4}{D_N}(k + 1)
++ {1\over 4}{D_N}(k - 1)
+} \right ] }
+\end{displaymath} +
+
+

+The magnitude function $M(k)$ is graphed in Figure 9.5. The three +Dirichlet kernel components are also shown separately. + +

+ +

+ + + +
Figure 9.5: +The magnitude M(k) of the Fourier transform of the Hann +window function. It is the sum of three (shifted and magnified) copies of the Dirichlet +kernel $D_N$, with $N=100$.
\begin{figure}\psfig{file=figs/fig09.05.ps}\end{figure}
+
+ +

+The main lobe of $M(k)$ is four harmonics wide, twice the width of the +main lobe of the Dirichlet kernel. The sidelobes, on the other hand, have +much smaller magnitude. Each sidelobe of $M(k)$ is a sum of three sidelobes +of ${D_n}(k)$, one attenuated by $1/2$ and the others, opposite in sign, +attenuated by $1/4$. They do not cancel out perfectly but they do cancel out +fairly well. + +

+The sidelobes reach their maximum amplitudes near their midpoints, and we +can estimate their amplitudes there, using the approximation: +

+
+ + +\begin{displaymath}
+{D_N}(k) \approx {
+{N \sin(\pi k) } \over {\pi k}
+}
+\end{displaymath} +
+
+

+Setting +$k = 3/2, 5/2, \ldots$ gives sidelobe amplitudes, relative to the +peak height $N$, of: +

+
+ + +\begin{displaymath}
+{2 \over {3 \pi}} \approx -13 \mathrm{dB} , \;
+{2 \over {5...
+...{dB} , \;
+{2 \over {9 \pi}} \approx -23 \mathrm{dB} ,
+\ldots
+\end{displaymath} +
+
+

+The sidelobes drop off progressively more slowly so that the tenth one is only +attenuated about 30 dB and the 32nd one about -40 dB. On the +other hand, the Hann window sidelobes +are attenuated by: +

+
+ + +\begin{displaymath}
+{2 \over {5 \pi}} - {1\over 2} [ {2 \over {3 \pi}} + {2 \over {7 \pi}} ]
+\approx -32.30 \mathrm{dB}
+\end{displaymath} +
+
+

+and $-42$, $-49$, $-54$, and $-59$ dB for the next four sidelobes. + +

+This shows that applying a Hann window before taking the Fourier transform +will better allow us to isolate sinusoidal +components. If a signal has many sinusoidal components, the sidelobes +engendered by each one will interfere with the main lobe of all the others. +Reducing the amplitude of the sidelobes reduces this interference. + +

+ +

+ + + +
Figure 9.6: +The Hann-windowed Fourier transform of a signal with two +sinusoidal components, at frequencies 5.3 and 10.6 times the fundamental, +and with different complex amplitudes.
\begin{figure}\psfig{file=figs/fig09.06.ps}\end{figure}
+
+ +

+Figure 9.6 shows a Hann-windowed Fourier analysis of a signal with +two sinusoidal components. The two are separated by about 5 times the +fundamental frequency $\omega $, and for each we see clearly the shape of the +Hann window's Fourier transform. Four points of the Fourier analysis lie +within the main lobe of $M(k)$ corresponding to each sinusoid. The amplitude +and phase of the individual sinusoids are reflected in those of the +(four-point-wide) peaks. The four points within a peak which happen to fall at +integer values $k$ are successively about one half cycle out of phase. + +

+To fully resolve the partials of a signal, we should choose an analysis size +$N$ large enough so that $\omega=2\pi/N$ is no more than a quarter of the +frequency separation between neighboring partials. For a periodic signal, for +example, the partials are separated by the fundamental frequency. For the +analysis to fully resolve the partials, the analysis period $N$ must be +at least four periods of the signal. + +

+In some applications it works to allow the peaks to overlap as long as the +center of each peak is isolated from all the other peaks; in this case the +four-period rule may be relaxed to three or even slightly less. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Fourier analysis and reconstruction + Up: Fourier analysis and resynthesis + Previous: Fourier transform of a +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node172.html b/node172.html new file mode 100644 index 0000000..69cd23f --- /dev/null +++ b/node172.html @@ -0,0 +1,357 @@ + + + + + +Fourier analysis and reconstruction of audio signals + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Narrow-band companding + Up: Fourier analysis and resynthesis + Previous: Fourier analysis of non-periodic +   Contents +   Index +
+
+ + +

+Fourier analysis and reconstruction of audio signals +

+ +

+Fourier analysis can sometimes be used to resolve the component sinusoids in an +audio signal. Even when it can't go that far, it can separate a +signal into frequency regions, in the sense that for each $k$, the $k$th point +of the Fourier transform would be affected only by components close to +the nominal frequency $k\omega$. This suggests many interesting operations +we could perform on a signal by taking its Fourier transform, transforming +the result, and then reconstructing a new, transformed, signal from the +modified transform. + +

+ +

+ + + +
Figure 9.7: +Sliding-window analysis and resynthesis of an audio signal using +Fourier transforms. In this example the signal is filtered by multiplying the +Fourier transform with a desired frequency response.
\begin{figure}\psfig{file=figs/fig09.07.ps}\end{figure}
+
+ +

+Figure 9.7 shows how to carry out a Fourier analysis, modification, +and reconstruction of an audio signal. The first step is to divide the +signal into +windows, +which are segments of the signal, of $N$ samples each, usually with some +overlap. Each window is then shaped by multiplying it by a windowing +function (Hann, for example). Then the Fourier transform is calculated for +the $N$ points +$k = 0, 1, \ldots, N-1$. (Sometimes it is desirable to +calculate +the Fourier transform for more points than this, but these $N$ points will +suffice here.) + +

+The Fourier analysis gives us a two-dimensional array of complex numbers. +Let $H$ denote the +hop size, +the number of samples each window is advanced past the +previous window. Then for each +$m = \ldots, 0, 1, \ldots$, the $m$th window +consists of the $N$ points starting at the point $mH$. The $n$th point +of the $m$th window is $mH+n$. The windowed Fourier transform is thus +equal to: +

+
+ + +\begin{displaymath}
+S[m, k] = {\cal FT}\{w(n)X[n-mH]\} (k)
+\end{displaymath} +
+
+

+This is both a function of time ($m$, in units of $H$ samples) and of +frequency ($k$, as a multiple of the fundamental frequency $\omega $). Fixing +the frame number $m$ and looking +at the windowed Fourier transform as a function of $k$: +

+
+ + +\begin{displaymath}
+S[k] = S[m, k]
+\end{displaymath} +
+
+

+gives us a measure of the momentary spectrum of the signal $X[n]$. On the other +hand, fixing a frequency $k$ we can look at it as the $k$th channel of an +$N$-channel signal: +

+
+ + +\begin{displaymath}
+C[m] = S[m, k]
+\end{displaymath} +
+
+

+From this point of view, the windowed Fourier transform separates the original +signal $X[n]$ into $N$ narrow frequency regions, called bands. + +

+Having computed the windowed Fourier transform, we next apply any desired +modification. In the figure, the modification is simply to replace the upper +half of the spectrum by zero, which gives a highly selective low-pass filter. +(Two other possible modifications, narrow-band companding and vocoding, are +described in the following sections.) + +

+Finally we reconstruct an output signal. To do this we apply the inverse of +the Fourier transform (labeled ``iFT" in the figure). As shown in +Section 9.1.2 this can be done by taking another Fourier transform, +normalizing, and flipping the result backwards. In case the reconstructed +window does not go smoothly to zero at its two ends, we apply the Hann +windowing function a second time. Doing this to each successive window of +the input, we then add the outputs, using the same overlap as for the analysis. + +

+If we use the Hann window and an overlap of four (that is, choose $N$ a multiple +of four and space each window $H=N/4$ samples past the previous one), we can +reconstruct the original signal faithfully by omitting the ``modification" +step. This is because the iFT undoes the work of the $FT$, and so we +are multiplying each window by the Hann function squared. The output is +thus the input, times the Hann window function squared, overlap-added by four. +An easy check shows that this comes to the constant $3/2$, so the output +equals the input times a constant factor. + +

+The ability to reconstruct the input signal exactly is useful because some +types of modification may be done by degrees, and so the output can be made +to vary smoothly between the input and some transformed version of it. + +

+


+ +Subsections + + + +
+ + +next + +up + +previous + +contents + +index +
+ Next: Narrow-band companding + Up: Fourier analysis and resynthesis + Previous: Fourier analysis of non-periodic +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node173.html b/node173.html new file mode 100644 index 0000000..b0db491 --- /dev/null +++ b/node173.html @@ -0,0 +1,293 @@ + + + + + +Narrow-band companding + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Timbre stamping (classical vocoder) + Up: Fourier analysis and reconstruction + Previous: Fourier analysis and reconstruction +   Contents +   Index +
+
+ + +

+Narrow-band companding +

+ +

+ +

+ + + +
Figure 9.8: +Block diagram for narrow-band noise suppression by companding.
\begin{figure}\psfig{file=figs/fig09.08.ps}\end{figure}
+
+ +

+A +compander +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 +dynamic range, +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. + +

+By using Fourier analysis and resynthesis, we can do companding individually on +narrow-band channels. If $C[m]$ is one such band, we apply a gain $g[m]$ to +it, to give $g[m]C[m]$. Although $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 +$C[m]$ but also of any or all the previous samples in the channel: $C[m-1]$, +$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: $\vert C[m]\vert$. + +

+The patch diagrammed in Figure 9.8 shows one very useful +application of companding, called +a +noise gate. Here the gain $g[m]$ depends on the channel amplitude +$C[m]$ and a noise floor which is a function $f$ of the channel number $k$. +For clarity we will apply the frequency subscript $k$ to the gain, now +written as $g[m, k]$, and to the windowed Fourier transform +$S[m, k] = C[m]$. +The gain is given by: +

+
+ + +\begin{displaymath}
+g[m, k] =
+\left \{
+\begin{array}{ll}
+{1 - f[k]/\vert S[...
+...]\vert > f[k]} \\
+0 & \mbox{otherwise}
+\end{array} \right .
+\end{displaymath} +
+
+

+Whenever the magnitude $S[m, k]$ is less than the threshold $f[k]$ the +gain is zero and so the amplitude $S[m, k]$ is replaced +by zero. Otherwise, multiplying the amplitude by $g[m, k]$ reduces +the the magnitude downward to +$\vert S[m, k]\vert-f[k]$. Since the gain is a +non-negative real number, the phase is preserved. + +

+In the figure, the gain is computed as a thresholding function of the +ratio +$x = \vert S[m, k]\vert/f[k]$ of the signal magnitude to the noise floor; the +threshold is $g(x) = 1-1/x$ when $x<1$ and zero otherwise, although other +thresholding functions could easily be substituted. + +

+This technique is useful for removing noise from a recorded sound. We either +measure or guess values of the noise floor $f[k]$. Because of the +design of the gain function $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. + +

+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. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Timbre stamping (classical vocoder) + Up: Fourier analysis and reconstruction + Previous: Fourier analysis and reconstruction +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node174.html b/node174.html new file mode 100644 index 0000000..951de7f --- /dev/null +++ b/node174.html @@ -0,0 +1,172 @@ + + + + + +Timbre stamping (classical vocoder) + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Phase + Up: Fourier analysis and reconstruction + Previous: Narrow-band companding +   Contents +   Index +
+
+ + +

+Timbre stamping (classical vocoder) +

+ +

+ +

+ + + +
Figure 9.9: +Block diagram for timbre stamping (AKA ``vocoding'').
\begin{figure}\psfig{file=figs/fig09.09.ps}\end{figure}
+
+ +

+A second application of Fourier analysis and resynthesis is a time-varying +filter capable of making one sound take on the evolving spectral envelope of +another. This is +widely known in electronic music circles as +a +vocoder, +named, not quite accurately, after the original +Bell Laboratories vocal analysis/synthesis device. The +technique described here is more accurately called +timbre stamping. +Two input signals are used, one to be filtered, and the other to control the +filter via its time-varying spectral envelope. The windowed Fourier +transform is used both on the control signal input to estimate its spectral +envelope, and on the filter input in order to apply the filter. + +

+A block diagram for timbre stamping is shown in Figure 9.9. +As in the previous example, the timbre stamp acts by multiplying the +complex-valued windowed Fourier transform of the filter input by non-negative +real numbers, hence changing their magnitudes but leaving their phases intact. +Here the twist is that we want simply to replace the magnitudes of the +original, $\vert S[m, k]\vert$, with magnitudes obtained from the control input (call +them $\vert T[m, k]\vert$, say). The necessary gain would thus be, +

+
+ + +\begin{displaymath}
+g[m, k] = {{\vert T[m, k]\vert}\over{\vert S[m, k]\vert}}
+\end{displaymath} +
+
+

+In practice it is best to limit the gain to some maximum value (which might +depend on frequency) since otherwise channels containing nothing but noise, +sidelobes, or even truncation error might be raised to audibility. So a +suitable limiting function is applied to the gain before using it. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Phase + Up: Fourier analysis and reconstruction + Previous: Narrow-band companding +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node175.html b/node175.html new file mode 100644 index 0000000..9c5a391 --- /dev/null +++ b/node175.html @@ -0,0 +1,567 @@ + + + + + +Phase + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Phase relationships between channels + Up: Fourier analysis and resynthesis + Previous: Timbre stamping (classical vocoder) +   Contents +   Index +
+
+ + +

+ +
+Phase +

+ +

+So far we have operated on signals by altering the magnitudes of their +windowed Fourier transforms, but leaving phases intact. The magnitudes +encode the spectral envelope of the sound. The phases, on the other hand, +encode frequency and time, in the sense that phase change from +one window to a different one accumulates, over time, according to frequency. +To make a transformation that allows independent control over frequency and +time requires analyzing and reconstructing the phase. + +

+ +

+ + + +
Figure 9.10: +Phase in windowed Fourier analysis: (a) a complex sinusoid analyzed +on three successive windows; (b) the result for a single channel (k=3), for +the three windows.
\begin{figure}\psfig{file=figs/fig09.10.ps}\end{figure}
+
+ +

+In the analysis/synthesis examples of the previous section, the phase of the +output is copied directly from the phase of the input. This is appropriate +when the output signal corresponds in time with the input signal. Sometimes time +modifications are desired, for instance to do time stretching or contraction. +Alternatively the output phase might depend on more than one input, for instance +to morph between one sound and another. + +

+Figure 9.10 shows how the phase of the Fourier transform +changes from window to window, given a complex sinusoid as input. The +sinusoid's frequency is +$\alpha = 3\omega$, so that the peak in the Fourier transform +is centered at $k=3$. If the initial phase is $\phi$, then the neighboring +phases can be filled in as: +

+
+ + +\begin{displaymath}
+\begin{array}{lll}
+{\angle S[0, 2] = \phi + \pi} &
+{\angl...
+...ha} &
+{\angle S[2, 4] = \phi + 2H\alpha + \pi}\\
+\end{array}\end{displaymath} +
+
+

+This gives an excellent way of estimating the frequency $\alpha $: pick any +channel whose amplitude is dominated by the sinusoid and subtract two +successive phase to get $H\alpha$: +

+
+ + +\begin{displaymath}
+H \alpha = \angle S[1, 3] - \angle S[0, 3]
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+\alpha = {{\angle S[1, 3] - \angle S[0, 3] + 2 p \pi} \over H}
+\end{displaymath} +
+
+

+where $p$ is an integer. There are $H$ possible frequencies, spaced by +$2\pi/H$. If we are using an overlap of 4, that is, $H=N/4$, the frequencies +are spaced by +$8\pi/N = 4 \omega$. Happily, this is the width of the main lobe +for the Hann window, so no more than one possible value of $\alpha $ can explain +any measured phase difference within the main lobe of a peak. The correct value +of $p$ to choose is that which gives a frequency closest to the nominal +frequency of the channel, $k\omega$. + +

+When computing phases for synthesizing a new or modified signal, we want to +maintain the appropriate phase relationships between successive resynthesis +windows, and also, simultaneously, between adjacent channels. These two sets of +relationships are not always compatible, however. We will make it our first +obligation to honor the relations between successive resynthesis windows, and +worry about phase relationships between channels afterward. + +

+Suppose we want to construct the $m$th spectrum $S[m, k]$ for resynthesis +(having already constructed the previous one, number $m-1$). Suppose +we wish the phase relationships between windows $m-1$ and $m$ to be those of +a signal $x[n]$, but that the phases of window number $m-1$ might have come +from somewhere else and can't be assumed to be in line with our wishes. + +

+ +

+ + + +
Figure 9.11: +Propagating phases in resynthesis. Each phase, such as that of +$S[m, k]$ here, depends on the previous output phase and the difference of the +input phases.
\begin{figure}\psfig{file=figs/fig09.11.ps}\end{figure}
+
+ +

+ +

+ + + +
Figure 9.12: +Phases of one channel of the analysis windows and two successive +resynthesis windows.
\begin{figure}\psfig{file=figs/fig09.12.ps}\end{figure}
+
+ +

+To find out how much the phase of each channel should differ from the previous +one, we do two analyses of the signal $x[n]$, separated by the same hop size +$H$ that we're using for resynthesis: +

+
+ + +\begin{displaymath}
+T[k] = {\cal FT}(W(n)X[n]) (k)
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+T'[k] = {\cal FT}(W(n)X[n+H]) (k)
+\end{displaymath} +
+
+

+Figure 9.11 shows the process of phase accumulation, in which the +output phases each depend on the previous output phase and the phase difference +for two windowed analyses of the input. Figure 9.12 illustrates the +phase relationship in the complex plane. +The phase of the new output $S[m, k]$ should be that of the previous one plus the +difference between the phases of the two analyses: +

+
+ + +\begin{displaymath}
+\angle S[m, k] = \angle S[m-1, k] +
+\left ( \angle T'[k] - \angle T[k] \right )
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+= \angle \left (
+{{S[m-1, k] T'[k]}
+\over
+{T[k]}}
+\right )
+\end{displaymath} +
+
+

+Here we used the fact that multiplying or dividing two complex numbers gives +the sum or difference of their arguments. + +

+If the desired magnitude is a real number $a$, then we should set $S[m, k]$ +to: +

+
+ + +\begin{displaymath}
+S[m, k] \; = \;
+a
+\; \cdot \;
+{
+{ \left \vert
+{{S[m-...
+...{-1}
+}
+\; \cdot \;
+{
+{{S[m-1, k] T'[k]}
+\over
+{T[k]}}
+}
+\end{displaymath} +
+
+

+The magnitudes of the second and third terms cancel out, so that the magnitude +of $S[m, k]$ reduces to $a$; the first two terms are real numbers so the +argument is controlled by the last term. + +

+If we want to end up with the magnitude from the spectrum $T$ as well, we can +set $a = \vert T'[k]\vert$ and simplify: +

+
+ + +\begin{displaymath}
+S[m, k] \; = \;
+{
+{ \left \vert
+{{S[m-1, k]}
+\over
+{...
+...{-1}
+}
+\; \cdot \;
+{
+{{S[m-1, k] T'[k]}
+\over
+{T[k]}}
+}
+\end{displaymath} +
+
+

+ +

+


+ +Subsections + + + +
+ + +next + +up + +previous + +contents + +index +
+ Next: Phase relationships between channels + Up: Fourier analysis and resynthesis + Previous: Timbre stamping (classical vocoder) +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node176.html b/node176.html new file mode 100644 index 0000000..0c3aca1 --- /dev/null +++ b/node176.html @@ -0,0 +1,410 @@ + + + + + +Phase relationships between channels + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Phase bashing + Up: Phase + Previous: Phase +   Contents +   Index +
+
+ + +

+ +
+Phase relationships between channels +

+ +

+In the scheme above, the phase of each $S[m, k]$ depends only on the previous +value for the same +channel. The phase relationships between neighboring channels are left to +chance. This sometimes works fine, but sometimes the incoherence +of neighboring channels gives rise to an unintended chorus effect. We +would ideally wish for $S[m, k]$ and $S[m,k+1]$ to have the same phase +relationship as for $T'[k]$ and $T'[k+1]$, but also for the phase relationship +between $S[m, k]$ and $S[m-1,k]$ to be the same as between $T'[k]$ and $T[k]$. + +

+These $2N$ equations for $N$ phases in general will have no solution, but we +can alter the equation for $S[m, k]$ above so that whenever there happens to be +a solution to the over-constrained system of equations, the reconstruction +algorithm homes in on the solution. This approach is called +phase locking +[Puc95b], and has the virtue of simplicity although more +sophisticated techniques are available [DL97]). + +

+The desired output phase relation, at the frame $m-1$, is: +

+
+ + +\begin{displaymath}
+\angle T[k+1] - \angle T[k] = \angle S[m-1, k+1] - \angle S[m-1, k]
+\end{displaymath} +
+
+

+or, rearranging: +

+
+ + +\begin{displaymath}
+\angle \left \{ {{S[m-1, k+1]} \over {T[k+1]}} \right \} =
+\angle \left \{ {{S[m-1, k]} \over {T[k]}} \right \}
+\end{displaymath} +
+
+

+In other words, the phase of the quotient $S/T$ should not depend on $k$. +With this in mind, we can rewrite the recursion formula for $S[m, k]$: +

+
+ + +\begin{displaymath}
+S[m, k] \; = \;
+{
+{ \left \vert
+R[k]
+\right \vert}
+^
+{-1}
+}
+\cdot
+{
+{R[k] T'[k]}
+}
+\end{displaymath} +
+
+

+with +

+
+ + +\begin{displaymath}
+R[k] \; = \;
+{
+{
+\overline {T[k]} \; \cdot \; {S[m-1, k]}
+} \over {
+\left \vert
+{S[m-1, k]}
+\right \vert
+}
+}
+\end{displaymath} +
+
+

+and because of the previous equation, the $R[k]$ should all be in phase. The +trick is now to replace $R[k]$ +for each $k$ with the sum of three neighboring ones. The computation is then: +

+
+ + +\begin{displaymath}
+S[m, k] \; = \;
+{
+{ \left \vert
+R'[k]
+\right \vert}
+^
+{-1}
+}
+\; \cdot \;
+{
+{R'[k] T'[k]}
+}
+\end{displaymath} +
+
+

+with +

+
+ + +\begin{displaymath}
+R'[k] = R[k+1] + R[k] + R[k-1]
+\end{displaymath} +
+
+

+If the channels are already in the correct phase relationship, this has +no effect (the resulting phase will be the same as if only $R[k]$ were +used.) But in general the sum will share two terms in common with its +neighbor at $k+1$: +

+
+ + +\begin{displaymath}
+R'[k+1] = R[k+2] + R[k+1] + R[k]
+\end{displaymath} +
+
+

+so that the $R'$ will tend to point more in the same direction than the $R$ +do. Applying this iteratively will eventually line all the $R'$ up to the +same phase, as long as the phase relationships between the measured spectra +$T$ and $T'$ allow it. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Phase bashing + Up: Phase + Previous: Phase +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node177.html b/node177.html new file mode 100644 index 0000000..ef61e2c --- /dev/null +++ b/node177.html @@ -0,0 +1,166 @@ + + + + + +Phase bashing + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Examples + Up: Fourier analysis and resynthesis + Previous: Phase relationships between channels +   Contents +   Index +
+
+ + +

+ +
+Phase bashing +

+ +

+In Section 2.3 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. + +

+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 [Puc05]. + +

+ +

+ + + +
Figure 9.13: +Phase-bashing a recorded sound (here, a sinusoid with rising +frequency) to give a series of oscillator wavetables.
\begin{figure}\psfig{file=figs/fig09.13.ps}\end{figure}
+
+ +

+Figure 9.13 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 $k$ and +$\pi $ for odd ones. The phase at the center of the window is thus zero for +both even and odd values of $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 $(-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 2.7. The +results can be combined with the modulation techniques of Chapter 6 to yield +powerful tools for vocal and other imitative synthesis. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Examples + Up: Fourier analysis and resynthesis + Previous: Phase relationships between channels +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node178.html b/node178.html new file mode 100644 index 0000000..b4b8d05 --- /dev/null +++ b/node178.html @@ -0,0 +1,90 @@ + + + + + +Examples + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Fourier analysis and resynthesis + Up: Fourier analysis and resynthesis + Previous: Phase bashing +   Contents +   Index +
+
+ + +

+Examples +

+ +

+


+ +Subsections + + + +

+
+Miller Puckette +2006-12-30 +
+ + diff --git a/node179.html b/node179.html new file mode 100644 index 0000000..1fbf4f9 --- /dev/null +++ b/node179.html @@ -0,0 +1,284 @@ + + + + + +Fourier analysis and resynthesis in Pd + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Narrow-band companding: noise suppression + Up: Examples + Previous: Examples +   Contents +   Index +
+
+ + +

+Fourier analysis and resynthesis in Pd +

+ +

+Example I01.Fourier.analysis.pd (Figure 9.14, part a) demonstrates computing the +Fourier transform of an audio signal using the fft~ object: + +

+ +

+ + + +
Figure: +Fourier analysis in Pd: (a) the +$\mathrm{fft}\sim$ object; (b) +using a subwindow to control block size of the Fourier transform; (c) +the subwindow, using a real Fourier transform (the fft~object) and the +Hann windowing function.
\begin{figure}\psfig{file=figs/fig09.14.ps}\end{figure}
+
+ +

+
+\fbox{\texttt{fft\~}}: +Fast Fourier transform. The two inlets take audio signals representing the real +and imaginary parts of a complex-valued signal. The window size $N$ is given +by Pd's block size. One Fourier transform is done on each block. + +

+The Fast Fourier transform [SI03] reduces the computational cost of +Fourier analysis in Pd to only that of between 5 and 15 osc~ objects in +typical configurations. The FFT algorithm in its simplest form takes $N$ to +be a power of two, which is also (normally) a constraint on block sizes in Pd. + +

+Example I02.Hann.window.pd (Figure 9.14, parts b and c) shows how to control the +block size using a block~ object, how to apply a Hann window, and a +different version of the Fourier transform. Part (b) shows the invocation of a +subwindow which in turn is shown in part (c). New objects are: + +

+
+\fbox{\texttt{rfft\~}}: +real Fast Fourier transform. The imaginary part of the input is assumed to +be zero. Only the first $N/2+1$ channels of output are filled in (the others +are determined by symmetry). This takes half the computation time of the +(more general) fft~object. + +

+
+\fbox{\texttt{tabreceive\~}}: +repeatedly outputs the contents of a wavetable. Each +block of computation outputs the same first $N$ samples of the table. + +

+In this example, the table ``$0-hann" holds a Hann window function +of length 512, in agreement with the specified block size. The signal +to be analyzed appears (from the parent patch) via the inlet~ object. +The channel amplitudes (the output of the rfft~ object) are reduced +to real-valued magnitudes: the real and imaginary parts are squared separately, +the two squares are added, and the result passed to the sqrt~ object. +Finally the magnitude is written (controlled by a connection not shown in +the figure) via tabwrite~ to another table, ``$0-magnitude", for +graphing. + +

+ +

+ + + +
Figure 9.15: +Fourier analysis and resynthesis, using block~ to specify an +overlap of 4, and rifft~ to reconstruct the signal after modification.
\begin{figure}\psfig{file=figs/fig09.15.ps}\end{figure}
+
+ +

+Example I03.resynthesis.pd (Figure 9.15) shows how to analyze and resynthesize +an audio signal following the strategy of Figure 9.7. +As before there is a sub-window to do the work at a block size appropriate to +the task; the figure shows only the sub-window. +We need one new object for the inverse Fourier transform: + +

+
+\fbox{\texttt{rifft\~}}: +real inverse Fast Fourier transform. Using the first $N/2+1$ points of its +inputs (taken to be a real/imaginary pair), and assuming the appropriate values +for the other channels by symmetry, reconstructs a real-valued output. No +normalization is done, so that a rfft~/rifft~ pair together +result in a gain of $N$. The ifft~ object is also available +which computes an unnormalized inverse for the fft~ object, +reconstructing a complex-valued output. + +

+The block~ object, in the subwindow, is invoked with a second argument +which specifies an overlap factor of 4. This dictates that the sub-window will +run four times every $N=512$ samples, at regular intervals of 128 samples. The +inlet~ object does the necessary buffering and rearranging of samples +so that its output always gives the 512 latest samples of input in order. In +the other direction, the outlet~ object adds segments of +its previous four inputs to carry out the overlap-add scheme shown in Figure +9.7. + +

+The 512-sample blocks are multiplied by the Hann window both at +the input and the output. If the rfft~ and rifft~ objects +were connected without any modifications in between, the output would +faithfully reconstruct the input. + +

+A modification is applied, however: each channel is multiplied by a +(positive real-valued) gain. The complex-valued amplitude for each channel is +scaled by separately multiplying the real and imaginary parts by the gain. The +gain (which depends on the channel) comes from another table, named +``$0-gain". The result is a graphical equalization filter; by mousing in the +graphical window for this table, you can design gain-frequency curves. + +

+There is an inherent delay introduced by using block~ to increase +the block size (but none if it is used, as shown in Chapter 7, to reduce +block size relative to the parent window.) The delay can be measured from +the inlet to the outlet of the sub-patch, and is equal to the difference of the +two block sizes. In this example the buffering delay is 512-64=448 samples. +Blocking delay does not depend on overlap, only on block sizes. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Narrow-band companding: noise suppression + Up: Examples + Previous: Examples +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node18.html b/node18.html new file mode 100644 index 0000000..0d66d92 --- /dev/null +++ b/node18.html @@ -0,0 +1,96 @@ + + + + + +Examples + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Constant amplitude scaler + Up: Sinusoids, amplitude and frequency + Previous: How to find and +   Contents +   Index +
+
+ + +

+ +
+Examples +

+ +

+


+ +Subsections + + + +

+
+Miller Puckette +2006-12-30 +
+ + diff --git a/node180.html b/node180.html new file mode 100644 index 0000000..81d90ab --- /dev/null +++ b/node180.html @@ -0,0 +1,265 @@ + + + + + +Narrow-band companding: noise suppression + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Timbre stamp (``vocoder") + Up: Examples + Previous: Fourier analysis and resynthesis +   Contents +   Index +
+
+ + +

+Narrow-band companding: noise suppression +

+ +

+ +

+ + + +
Figure 9.16: +Noise suppression as an example of narrow-band companding: (a) +analysis and reconstruction of the signal; (b) computation of the +``mask".
\begin{figure}\psfig{file=figs/fig09.16.ps}\end{figure}
+
+ +

+Example I04.noisegate.pd (Figure 9.16) shows an example of narrow-band +companding using Fourier analysis/resynthesis. (This is a realization of the +block diagram of Figure 9.8.) Part (a) of the figure shows a filter +configuration similar to the previous example, except that the gain for each +channel is now a function of the channel magnitude. + +

+For each $k$, if we let $s[k]$ denote the power in channel $k$, and let +$m[k]$ be a mask level (a level presumably somewhat higher than the noise +power for channel $k$), then the gain in channel $k$ is given by +

+
+ + +\begin{displaymath}
+\left \{
+\begin{array}{ll}
+{\sqrt{{s[k]-m[k]}\over {s[k]}...
+... {s[k] > m[k]} \\
+0 & \mbox{otherwise}
+\end{array} \right .
+\end{displaymath} +
+
+

+The power in the $k$th channel is thus reduced by $m[k]$ if possible, +and otherwise replaced by zero. + +

+The mask itself is the product of the measured average noise in each channel, +which is contained in the table ``$0-mask", multiplied by a value named +``mask-level". The average noise is measured in a subpatch +(pd calculate-mask), whose contents are shown in part (b) of the +figure. To compute the mask we are using two new new objects: + +

+
+\fbox{\texttt{bang\~}}: +send a bang in advance of each block of computation. The bang appears at the +logical time of the first sample in each block (the earliest logical time whose +control computation affects that block and not the previous one), following +the scheme shown +in Figure 3.2. + +

+
+\fbox{\texttt{tabsend\~}}: +the companion object for tabreceive~, repeatedly copies its input to +the contents of a table, affecting up to the first $N$ samples of the table. + +

+The power averaging process is begun by sending a time duration in milliseconds +to ``make-mask". The patch computes the equivalent number of blocks $b$ +and generates a sequence of weights: +$1, 1/2, 1/3, \ldots, 1/b$, +by which each of the $b$ following blocks' power is averaged into whatever the +mask table held at the previous block. At the end of $b$ blocks the table holds +the equally-weighted average of all $b$ power measurements. Thereafter, the +weight for averaging new power measurements is zero, so the measured average +stops evolving. + +

+To use this patch for classical noise suppression requires at least a few +seconds of recorded noise without the ``signal" present. This is played into +the patch, and its duration sent to ``make-mask", so that the +``$0-mask" table holds the average measured noise power for each channel. +Then, making the assumption that the noisy part of the signal rarely exceeds 10 +times its average power (for example), ``mask-level" is set to 10, and the +signal to be noise-suppressed is sent through part (a) of the patch. The noise +will be almost all gone, but those channels in which the signal exceeds 20 +times the noise power will only be attenuated by 3dB, and higher-power channels +progressively less. (Of course, actual noise suppression might not be the +most interesting application of the patch; one could try masking any signal +from any other one.) + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Timbre stamp (``vocoder") + Up: Examples + Previous: Fourier analysis and resynthesis +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node181.html b/node181.html new file mode 100644 index 0000000..7212181 --- /dev/null +++ b/node181.html @@ -0,0 +1,168 @@ + + + + + +Timbre stamp (``vocoder") + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Phase vocoder time bender + Up: Examples + Previous: Narrow-band companding: noise suppression +   Contents +   Index +
+
+ + +

+Timbre stamp (``vocoder") +

+ +

+ +

+ + + +
Figure 9.17: +Timbre stamp.
\begin{figure}\psfig{file=figs/fig09.17.ps}\end{figure}
+
+ +

+Example I05.compressor.pd (Figure 9.17) +is another channel compander which is presented in preparation +for Example I06.timbre.stamp.pd, which we will examine next. This is a realization of +the timbre stamp of Figure 9.9, slightly modified. + +

+There are two inputs, one at left to be filtered (and whose Fourier transform +is used for resynthesis after modifying the magnitudes), and one at right which +acts as a control source. Roughly speaking, if the two magnitudes +are $f[k]$ for the filter input and $c[k]$ for the control source, we just +``whiten" the filter input, multiplying by $1/f[k]$, and then stamp the control +magnitudes onto the result by further multiplying by $c[k]$. In practice, we +must limit the gain to some reasonable maximum value. In this patch this is +done by limiting the whitening factor $1/f[k]$ to a specified maximum value +using the clip~ object. The limit is controlled by the +``squelch" parameter, which is squared and divided by 100 to map values +from 0 to 100 to a useful range. + +

+Another possible scheme is to limit the gain after forming the quotient +$c[k]/f[k]$. The gain limitation may in either case be frequency dependent. +It is also sometimes useful to raise the gain to a power $p$ between 0 +and 1; if 1, this is a timbre stamp and if 0, it passes the filter input through +unchanged, and values in between give a smooth interpolation between the two. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Phase vocoder time bender + Up: Examples + Previous: Narrow-band companding: noise suppression +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node182.html b/node182.html new file mode 100644 index 0000000..9fca509 --- /dev/null +++ b/node182.html @@ -0,0 +1,249 @@ + + + + + +Phase vocoder time bender + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Exercises + Up: Examples + Previous: Timbre stamp (``vocoder") +   Contents +   Index +
+
+ + +

+Phase vocoder time bender +

+ +

+ +

+ + + +
Figure 9.18: +Phase vocoder for time stretching and contraction.
\begin{figure}\psfig{file=figs/fig09.18.ps}\end{figure}
+
+ +

+The phase vocoder usually refers to the general technique of passing from +(complex-valued) channel amplitudes to pairs consisting of (real-valued) +magnitudes and phase precession rates (``frequencies"), and back, as +described in Figure 9.11 (Section 9.5). In +Example I07.phase.vocoder.pd (Figure 9.18), we use this technique with the +specific aim of time-stretching and/or time-contracting a recorded sound +under real-time control. That is, we control, at any moment in real time, +the location in the recorded sound we hear. Two new objects are used: + +

+
+\fbox{\texttt{lrshift\~}}: +shift a block left or right (according to its creation argument). If the +argument is positive, each block of the output is the input shifted that number +of spaces to the right, filling zeros in as needed on the left. A negative +argument shifts to the left, filling zeros in at the right. + +

+
+\fbox{\texttt{q8\_rsqrt\~}}: +quick and approximate reciprocal square root. Outputs the reciprocal of the +square root of its input, good to about a part in 256, using much less +computation than a full-precision square root and reciprocal would. + +

+The process starts with a sub-patch, pd read-windows, that outputs +two Hann-windowed blocks of the recorded sound, a ``back" one and a +``front" one 1/4 window further forward in the recording. The window +shown uses the two outputs of the sub-patch to guide the amplitude +and phase change of each channel of its own output. + +

+The top two tabreceive~ objects recall the previous block of complex +amplitudes sent to the rifft~ object at bottom, corresponding to +$S[m-1,k]$ in +the discussion of Section 9.5. The patch as a whole computes +$S[m, k]$ and then its Hann windowed inverse FT for output. + +

+After normalizing $S[m-1,k]$, its complex conjugate (the normalized inverse) +is multiplied by the windowed Fourier +transform of the ``back" window $T[k]$, giving the product $R[k]$ of +Page [*]. +Next, depending on the value of the parameter ``lock", the computed value of +$R[k]$ is conditionally replaced with the phase-locking version $R'[k]$. This +is done using lrshift~ objects, whose outputs are added into $R[k]$ if +``lock" is set to one, or otherwise not if it is zero. +The result is then normalized and multiplied by the Hann-windowed Fourier transform +of the ``front" window ($T'[k]$) to give $S[m, k]$. + +

+Three other applications of Fourier analysis/resynthesis, not pictured here, +are provided in the Pd examples. First, Example I08.pvoc.reverb.pd shows how to make a +phase vocoder whose output recirculates as in a reverberator, except that +individual channels are replaced by the input when it is more powerful than +what is already recirculating. The result is a more coherent-sounding reverberation +effect than can be made in the classical way using delay lines. + +

+Example I09.sheep.from.goats.pd demonstrates the (imperfect) technique of separating pitched +signals from noisy ones, channel by channel, based on the phase coherence we +should expect from a Hann-windowed sinusoid. If three adjacent channels are +approximately $\pi $ radians out of phase from each other, they are judged to +belong to a sinusoidal peak. Channels belonging to sinusoidal peaks are +replaced with zero to extract the noisy portion of the signal, or all others +are replaced with zero to give the sinusoidal portion. + +

+Example I10.phase.bash.pd returns to the wavetable looping sampler of Figure +2.7, and shows how to align the phases of the sample so that all +components of the signal have zero phase at points 0, $N$, $2N$, and so on. In +this way, two copies of a looping sampler placed $N$ samples apart can be +coherently cross-faded. A synthetic, pitched version of the original soundfile +can be made using daisy-chained cross-fades. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Exercises + Up: Examples + Previous: Timbre stamp (``vocoder") +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node183.html b/node183.html new file mode 100644 index 0000000..2d6599f --- /dev/null +++ b/node183.html @@ -0,0 +1,190 @@ + + + + + +Exercises + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Classical waveforms + Up: Fourier analysis and resynthesis + Previous: Phase vocoder time bender +   Contents +   Index +
+
+ + +

+Exercises +

+ +

+ +

    +
  1. A signal $x[n]$ is 1 for $n=0$ and $0$ otherwise (an impulse). What is +its ($N$-point) Fourier transform as a function of $k$? + +

    +

  2. +
  3. Assuming further that $N$ is an even number, what does +the Fourier transform become if $x[n]$ is 1 at $n=N/2$ instead of at $n=0$? + +

    +

  4. +
  5. For what integer values of $k$ is the Fourier transform of the $N$-point +Hann window function nonzero? + +

    +

  6. +
  7. In order to Fourier analyze a 100-Hertz periodic tone (at a sample rate +of 44100 Hertz), using a Hann window, what value of $N$ would be needed to +completely resolve all the partials of the tone (in the sense of having +non-overlapping peaks in the spectrum)? + +

    +

  8. +
  9. Suppose an N-point Fourier transform is done on a complex sinusoid of frequency +$2.5\omega$ where $\omega=2\pi/N$ is the fundamental frequency. What percentage +of the signal energy lands in the main lobe, channels $k=2$ and $k=3$? If the signal +is Hann windowed, what percentage of the energy is now in the main lobe (which +is then channels 1 through 4)? + +

    +

  10. +
+ +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Classical waveforms + Up: Fourier analysis and resynthesis + Previous: Phase vocoder time bender +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node184.html b/node184.html new file mode 100644 index 0000000..548f8b5 --- /dev/null +++ b/node184.html @@ -0,0 +1,237 @@ + + + + + +Classical waveforms + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Symmetries and Fourier series + Up: book + Previous: Exercises +   Contents +   Index +
+
+ + +

+ +
+Classical waveforms +

+ +

+Up until now we have primarily taken three approaches to synthesizing +repetitive waveforms: additive synthesis (Chapter 1), +wavetable synthesis (Chapter 2), and waveshaping +(Chapters 5 and 6). This chapter +introduces a fourth +approach, in which waveforms are built up explicitly from line segments with +controllable endpoints. This approach is historically at least as important +as the others, and was dominant during the +analog synthesizer period, approximately 1965-1985. +For lack of a better name, we'll use the term +classical waveforms +to denote waveforms composed of line segments. + +

+ +

+ + + +
Figure 10.1: +Classical waveforms: (a) the sawtooth, (b) the triangle, and (c) +the rectangle wave, +shown as functions of a continuous variable (not sampled).
\begin{figure}\psfig{file=figs/fig10.01.ps}\end{figure}
+
+ +

+They include the +sawtooth, triangle, and rectangle waves pictured in Figure +10.1, among many other possibilities. The salient features of +classical waveforms are either discontinuous jumps (changes in value) or +corners (changes in slope). In the figure, the sawtooth and rectangle waves +have jumps (once per cycle for the sawtooth, and twice for the rectangle), and +constant slope elsewhere (negative for the sawtooth wave, zero for the +rectangle wave). The triangle wave has no discontinuous jumps, but the slope +changes discontinuously twice per cycle. + +

+To use classical waveforms effectively, it is useful to understand how the +shape of the waveform is reflected in its Fourier series. (To compute these we +need background from Chapter 9, which is why this chapter +appears here and not earlier.) We will also need strategies for digitally +synthesizing classical waveforms. These waveforms prove to be much +more susceptible to foldover problems than any we have treated before, so we +will have to pay especially close attention to its control. + +

+In general, our strategy for predicting and controlling foldover will be to +consider first those sampled waveforms whose period is an integer $N$. Then if +we want to obtain a waveform of a non-integral period (call it $\tau$, say) we +approximate $\tau$ as a quotient $N/R$ of two integers. Conceptually at least, +we can then synthesize the desired waveform with period $N$, and then take only +one of each $R$ samples of output. This last, down-sampling step is where the +foldover is produced, and careful handling will help us control it. + +

+


+ +Subsections + + + +
+ + +next + +up + +previous + +contents + +index +
+ Next: Symmetries and Fourier series + Up: book + Previous: Exercises +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node185.html b/node185.html new file mode 100644 index 0000000..11be05c --- /dev/null +++ b/node185.html @@ -0,0 +1,516 @@ + + + + + +Symmetries and Fourier series + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Sawtooth waves and symmetry + Up: Classical waveforms + Previous: Classical waveforms +   Contents +   Index +
+
+ + +

+Symmetries and Fourier series +

+ +

+Before making a quantitative analysis of the Fourier series of the classical +waveforms, we pause to make two useful observations about symmetries in +waveforms and the corresponding symmetries in the Fourier series. First, a +Fourier series might consist only of even or odd-numbered harmonics; this is +reflected in symmetries comparing a waveform to its displacement by half +a cycle. Second, the Fourier series may contain only real-valued or pure +imaginary-valued coefficients (corresponding to the cosine or sine functions). +This is reflected in symmetries comparing the waveform to its reversal in time. + +

+In this section we will assume that our waveform has an integer period $N$, and +furthermore, for simplicity, that $N$ is even (if it isn't we can just +up-sample by a factor of two). We know from Chapter 9 that any (real or +complex valued) waveform $X[n]$ can be written as a Fourier series (whose +coefficients we'll denote by $A[k]$): +

+
+ + +\begin{displaymath}
+X[n] = A[0] + A[1]{U^n} + \cdots + A[N-1]{U^{(N-1)n}}
+\end{displaymath} +
+
+

+or, equivalently, +

+
+ + +\begin{displaymath}
+X[n] =
+A[0] + A[1](\cos(\omega n) + i \sin(\omega n)) + \cdots
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
++ A[N-1](\cos(\omega (N-1) n) + i \sin(\omega (N-1) n))
+\end{displaymath} +
+
+

+where +$\omega=2\pi/N$ is the fundamental frequency of the waveform, +and +

+
+ + +\begin{displaymath}
+U = \cos(\omega) + i \sin(\omega)
+\end{displaymath} +
+
+

+is the unit-magnitude complex number whose argument is $\omega $. + +

+To analyze the first symmetry we delay the signal $X[n]$ by a half-cycle. Since + +${U^{N/2}} = -1$ we get: +

+
+ + +\begin{displaymath}
+X[n+N/2] = A[0] - A[1]{U^n} + A[2]{U^{2n}} \pm \cdots
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
++ A[N-2]{U^{(N-2)n}} - A[N-1]{U^{(N-1)n}}
+\end{displaymath} +
+
+

+In effect, a half-cycle delay changes the sign of every other term in the +Fourier series. +We combine this with the original series in two different ways. Letting +$X'$ denote half the sum of the two: +

+
+ + +\begin{displaymath}
+X'[n] = {{X[n] + X[n+N/2]}\over 2} =
+A[0] + A[2]{U^{2n}} + \cdots + A[N-2]{U^{(N-2)n}}
+\end{displaymath} +
+
+

+and $X''$ half the difference: +

+
+ + +\begin{displaymath}
+X''[n] = {{X[n] - X[n+N/2]}\over 2} =
+A[1]{U^n} + A[3]{U^{3n}} + \cdots + A[N-1]{U^{(N-1)n}}
+\end{displaymath} +
+
+

+we see that $X'$ consists only of even-numbered harmonics (including DC) and +$X''$ only of odd ones. + +

+Furthermore, if $X$ happens to be equal to itself shifted a half cycle, that +is, if +$X[n] = X[n+N/2]$, then (looking at the definitions of $X'$ and $X''$) +we get $X'[n] = X[n]$ and $X''[n] = 0$. This implies that, in this case, +$X[n]$ has only even numbered harmonics. Indeed, this should be no surprise, +since in this case $X[n]$ would have to repeat every $N/2$ samples, so its +fundamental frequency is twice as high as normal for period $N$. + +

+In the same way, if +$X[n] = -X[n+N/2$], then $X$ can have only odd-numbered +harmonics. This allows us easily to split any desired waveform into its +even- and odd-numbered harmonics. (This is equivalent to using a comb filter +to extract even or odd harmonics; see Chapter 7.) + +

+To derive the second symmetry relation we compare $X[n]$ with its time +reversal, $X[-n]$ (or, equivalently, since $X$ repeats every $N$ samples, with +$X[N-n]$). The Fourier series becomes: +

+
+ + +\begin{displaymath}
+X[-n] =
+A[0] + A[1](\cos(\omega n) - i \sin(\omega n)) + \cdots
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
++ A[N-1](\cos(\omega (N-1) n) - i \sin(\omega (N-1) n))
+\end{displaymath} +
+
+

+(since the cosine function is even and the sine function is odd). In the same +way as before we can extract the cosines by forming $X'[n]$ as half the sum: +

+
+ + +\begin{displaymath}
+X'[n] = {{X[n] + X[-n]}\over 2} =
+A[0] + A[1]\cos(\omega n)+ \cdots + A[N-1]\cos(\omega (N-1) n)
+\end{displaymath} +
+
+

+and $X''[n]$ as half the difference divided by $i$: +

+
+ + +\begin{displaymath}
+X''[n] = {{X[n] - X[-n]}\over {2i}} =
+A[1]\sin(\omega n)+ \cdots + A[N-1]\sin(\omega (N-1) n)
+\end{displaymath} +
+
+

+ +

+So if $X[n]$ satisfies $X[-n] = X[n]$ the Fourier series consists of cosine +terms only; if $X[-n] = -X[n]$ it consists of sine terms only; and as +before we can decompose any $X[n]$ (that repeats every $N$ samples) as a sum +of the two. + +

+


+ +Subsections + + + +
+ + +next + +up + +previous + +contents + +index +
+ Next: Sawtooth waves and symmetry + Up: Classical waveforms + Previous: Classical waveforms +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node186.html b/node186.html new file mode 100644 index 0000000..9571010 --- /dev/null +++ b/node186.html @@ -0,0 +1,148 @@ + + + + + +Sawtooth waves and symmetry + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Dissecting classical waveforms + Up: Symmetries and Fourier series + Previous: Symmetries and Fourier series +   Contents +   Index +
+
+ + +

+Sawtooth waves and symmetry +

+ +

+ +

+ + + +
Figure 10.2: +Using a symmetry relation to extract even and odd harmonics from a +sawtooth wave: (a) the +original sawtooth wave; (b) shifted by 1/2 cycle; (c) their sum (another +sawtooth wave at +twice the frequency); (d) their difference (a square wave).
\begin{figure}\psfig{file=figs/fig10.02.ps}\end{figure}
+
+ +

+As an example, we apply the shift symmetry (even and odd harmonics) to a +sawtooth wave. Figure 10.2 (part a) shows the original sawtooth wave +and part (b) shows the result of shifting by a half cycle. The sum of the two +(part c) drops discontinuously whenever either one of the two copies does so, +and traces a line segment whenever both component sawtooth waves do; so it in +turn becomes a sawtooth wave, of half the original period (twice the +fundamental frequency). Subtracting the two sawtooth waves (part d) gives a +waveform with slope zero except at the discontinuities. The discontinuities +coming from the original sawtooth wave jump in the same direction (negative to +positive), but those coming from the shifted one are negated and jump from +positive to negative. The result is a +square wave, +a particular rectangle wave in which the two component segments +have the same duration. + +

+This symmetry was used to great effect in the design of Buchla analog +synthesizers; instead of offering a single sawtooth generator, +Buchla designed an oscillator that outputs the even and odd harmonic portions +separately, so that cross-fading between the two allows a continuous control +over the relative strengths of the even and odd harmonics in the analog +waveform. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Dissecting classical waveforms + Up: Symmetries and Fourier series + Previous: Symmetries and Fourier series +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node187.html b/node187.html new file mode 100644 index 0000000..0a6bc54 --- /dev/null +++ b/node187.html @@ -0,0 +1,403 @@ + + + + + +Dissecting classical waveforms + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Fourier series of the + Up: Classical waveforms + Previous: Sawtooth waves and symmetry +   Contents +   Index +
+
+ + +

+Dissecting classical waveforms +

+ +

+Among the several conclusions we can draw from the even/odd harmonic +decomposition of the sawtooth wave (Figure 10.2), one is that a +square wave can be decomposed into a linear combination of two sawtooth +waves. We can carry this idea further, and show how to compose any classical +waveform having only jumps (discontinuities in value) but no corners +(discontinuities in slope) as a sum of sawtooth waves of various phases and +amplitudes. We then develop the idea further, showing how to generate waveforms +with corners (either in addition to, or instead of, jumps) using +another elementary waveform we'll call the +parabolic wave. + +

+Suppose first that a waveform of period $N$ has discontinuities at $j$ +different points, +${L_1}, \ldots, {L_j}$, all lying on the cycle between 0 and +$N$, at which the waveform jumps by values +${d_1}, \ldots, {d_j}$. A negative +value of $d_1$, for instance, would mean that the waveform jumps from a higher +to a lower value at the point ${L_1}$, and a positive value of $d_1$ would mean +a jump from a lower to a higher value. + +

+ +

+ + + +
Figure 10.3: +Dissecting a waveform: (a) the original waveform with two +discontinuities; (b and c) the two component sawtooth waves.
\begin{figure}\psfig{file=figs/fig10.03.ps}\end{figure}
+
+ +

+For instance, Figure 10.3 (part a) shows a classical waveform with +two jumps: +$({L_1}, {d_1}) = (0.3N, -0.3)$ and +$({L_2}, {d_2}) = (0.6N, 1.3)$. +Parts (b) and (c) show sawtooth waves, each with one of the two jumps. The +sum of the two sawtooth waves reconstructs the waveform of part (a), except for +a possible constant (DC) offset. + +

+The sawtooth wave with a jump of one unit at the point zero is given by +

+
+ + +\begin{displaymath}
+s[n] = n/N - 1/2
+\end{displaymath} +
+
+

+over the period +$0 \le n \le N-1$, and repeats for other values of +$n$. A sawtooth wave with a jump $(L, d)$ is given by +$s'[n] = d s[n-L]$. +The sum of all the component sawtooth waves is: +

+
+ + +\begin{displaymath}
+x[n] = {d_1} s[n - {L_1}] + \cdots + {d_j} s[n - {L_j}]
+\end{displaymath} +
+
+

+ +

+The slopes of the segments of the waveform of part (a) of the figure are all +the same, equal to the sum of the slopes of the component sawtooth waves: +

+
+ + +\begin{displaymath}
+-{{{d_1} + \cdots + {d_j}} \over {N}}
+\end{displaymath} +
+
+

+Square and rectangle waves have horizontal line segments (slope zero); for +this to happen in general the jumps must add to zero: + +${d_1} + \cdots + {d_j} = 0$. + +

+ +

+ + + +
Figure 10.4: +The parabolic wave.
\begin{figure}\psfig{file=figs/fig10.04.ps}\end{figure}
+
+ +

+To decompose classical waveforms with corners we use the parabolic wave, which, +over a single period from 0 to $N$, is equal to +

+
+ + +\begin{displaymath}
+p[n] = {1 \over 2} {{({n\over N} - {1\over 2})}^2} - {1 \over {24}}
+\end{displaymath} +
+
+

+as shown in Figure 10.4. It is a second-degree (quadratic) polynomial +in the variable $n$, arranged so that it reaches a maximum halfway through the +cycle at $n=N/2$, the DC component is zero (or in other words, the average +value over one cycle of the waveform is zero), and so that the slope changes +discontinuously by $-1/N$ at the beginning of the cycle. + +

+To construct a waveform with any desired number of corners (suppose they are +at the points +${M_i}, \ldots, {M_l}$, with slope changes equal to + +${c_1}, \ldots, {c_l}$), we sum up the necessary parabolic waves: +

+
+ + +\begin{displaymath}
+x[n] = {-N c_1} p[n - {M_1}] - \cdots - {N c_l} p[n - {M_l}]
+\end{displaymath} +
+
+

+An example is shown graphically in Figure 10.5. + +

+ +

+ + + +
Figure 10.5: +Decomposing a triangle wave (part a) into two parabolic waves +(b and c).
\begin{figure}\psfig{file=figs/fig10.05.ps}\end{figure}
+
+ +

+If the sum $x[n]$ is to contain line segments (not segments of curves), the +$n^2$ terms in the sum must sum to zero. From the expansion of $x[n]$ above, +this implies that +${c_1} + \cdots + {c_l} = 0$. Sums obtained from +existing classical +waveforms (as in the figure) will always satisfy this condition because the +changes in slope, over a cycle, must all add to zero for the waveform to +connect with itself. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Fourier series of the + Up: Classical waveforms + Previous: Sawtooth waves and symmetry +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node188.html b/node188.html new file mode 100644 index 0000000..b429c65 --- /dev/null +++ b/node188.html @@ -0,0 +1,299 @@ + + + + + +Fourier series of the elementary waveforms + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Sawtooth wave + Up: Classical waveforms + Previous: Dissecting classical waveforms +   Contents +   Index +
+
+ + +

+ +
+Fourier series of the elementary waveforms +

+ +

+In general, given a repeating waveform $X[n]$, we can evaluate its Fourier +series coefficients $A[k]$ by directly evaluating the Fourier transform: +

+
+ + +\begin{displaymath}
+A[k] = {1 \over N} {\cal FT}\{X[n]\}(k)
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+= {1 \over N} \left [ X[0] +
+{U^{-k}} X[1] + \cdots +
+{U^{-(N-1)k}} X[N-1] \right ]
+\end{displaymath} +
+
+

+but doing this directly for sawtooth and parabolic waves will require pages of +algebra (somewhat less if we were willing resort to differential calculus). +Instead, we rely on properties of the Fourier transform to relate the transform +of a signal $x[n]$ with its +first difference, +defined as $x[n] - x[n-1]$. The first difference of the parabolic wave will +turn out to be a sawtooth, and that of a sawtooth will be simple enough to +evaluate directly, and thus we'll get the desired Fourier series. + +

+In general, to evaluate the strength of the $k$th harmonic, we'll make the +assumption that $N$ is much larger than $k$, or equivalently, that $k/N$ is +negligible. + +

+We start from the Time Shift Formula for Fourier Transforms +(Page [*]) setting the time shift to one sample: +

+
+ + +\begin{displaymath}
+{\cal FT}\{ x[n-1] \} =
+\left [ \cos(k \omega) - i \sin (k \omega) \right ]
+{\cal FT}\{ x[n] \}
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+\approx (1 - i \omega k) {\cal FT}\{ x[n] \}
+\end{displaymath} +
+
+

+Here we're using the assumption that, because $N$ is much larger than $k$, + +$k \omega = 2\pi k / N$ is much smaller than unity and we can make +approximations: +

+
+ + +\begin{displaymath}
+\cos(k \omega) \approx 1 \; , \; \sin(k \omega) \approx k \omega
+\end{displaymath} +
+
+

+which are good to within a small error, on the order of $(k/N)^2$. +Now we plug this result in to evaluate: +

+
+ + +\begin{displaymath}
+{\cal FT}\{ x[n] - x[n-1] \} \approx i \omega k {\cal FT}\{ x[n] \}
+\end{displaymath} +
+
+

+

+ +Subsections + + + +
+ + +next + +up + +previous + +contents + +index +
+ Next: Sawtooth wave + Up: Classical waveforms + Previous: Dissecting classical waveforms +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node189.html b/node189.html new file mode 100644 index 0000000..b5b3b94 --- /dev/null +++ b/node189.html @@ -0,0 +1,341 @@ + + + + + +Sawtooth wave + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Parabolic wave + Up: Fourier series of the + Previous: Fourier series of the +   Contents +   Index +
+
+ + +

+Sawtooth wave +

+First we apply this to the sawtooth wave $s[n]$. For $0 \le n < N$ we have: +

+
+ + +\begin{displaymath}
+s[n] - s[n-1] = -{1 \over N} +
+\left \{
+\begin{array}{ll}
+{1} & {n = 0} \\
+0 & \mbox{otherwise}
+\end{array} \right .
+\end{displaymath} +
+
+

+Ignoring the constant offset of $-{1 \over N}$, this gives an +impulse, +zero everywhere except one sample per cycle. The summation in +the Fourier transform only has one term, and we get: +

+
+ + +\begin{displaymath}
+{\cal FT}\{ s[n] - s[n-1] \} (k) = 1 , \; k \neq 0, \; -N < k < N\
+\end{displaymath} +
+
+

+We then apply the difference formula backward to get: +

+
+ + +\begin{displaymath}
+{\cal FT}\{ s[n] \} (k) \approx {1 \over {i \omega k}}
+= {{-iN} \over {2 \pi k}}
+\end{displaymath} +
+
+

+valid for integer values of $k$, small compared to $N$, but with $k \neq 0$ . +(To get the second +form of the expression we plugged in +$\omega=2\pi/N$ and $1/i = -i$.) + +

+This analysis doesn't give us the DC component +${\cal FT}\{ s[n] \}(0)$, +because we would have had to divide by $k=0$. Instead, we can evaluate the DC +term directly as the sum of all the points of the waveform: it's approximately +zero by symmetry. + +

+To get a Fourier series in terms of familiar real-valued sine and cosine functions, +we combine corresponding terms for negative and positive values of $k$. The +first harmonic ($k = \pm 1$) is: +

+
+ + +\begin{displaymath}
+{1 \over N}\left [
+{\cal FT}\{ s[n] \} (1) \cdot {U^n} +
+{\cal FT}\{ s[n] \} (-1) \cdot {U^{-n}}
+\right ]
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+\approx {{-i} \over {2 \pi}} \left [ U^n - U^{-n} \right ]
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+= {{\sin ( \omega n)} \over {\pi}}
+\end{displaymath} +
+
+

+and similarly the $k$th harmonic is +

+
+ + +\begin{displaymath}
+{{\sin ( k \omega n)} \over {k \pi}}
+\end{displaymath} +
+
+

+so the entire Fourier series is: +

+
+ + +\begin{displaymath}
+s[n] \approx {1 \over \pi} \left [
+{\sin ( \omega n )}
++ ...
+...\over 2}
++ {{\sin ( 3 \omega n)} \over 3}
++ \cdots
+\right ]
+\end{displaymath} +
+
+

+ +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Parabolic wave + Up: Fourier series of the + Previous: Fourier series of the +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node19.html b/node19.html new file mode 100644 index 0000000..8340d7c --- /dev/null +++ b/node19.html @@ -0,0 +1,201 @@ + + + + + +Constant amplitude scaler + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Amplitude control in decibels + Up: Examples + Previous: Examples +   Contents +   Index +
+
+ + +

+Constant amplitude scaler +

+ +

+Example A01.sinewave.pd, shown in Figure 1.11, contains essentially the +simplest possible patch that makes a sound, +with only three object boxes. (There are also comments, and two message +boxes to turn Pd's ``DSP" (audio) processing on and off.) The three object boxes +are: + +

+ +

+ + + +
Figure 1.11: +The contents of the first Pd example patch: A01.sinewave.pd.
\begin{figure}\psfig{file=figs/fig01.11.ps}\end{figure}
+
+ +

+
+\fbox{ $ \mathrm{osc}\sim $}: +sinusoidal oscillator. The +left hand side input +and the output are digital audio signals. The input is taken to be a +(possibly time-varying) frequency in Hertz. The output is a sinusoid at +the specified frequency. If nothing is connected to the frequency inlet, +the creation argument (440 in this example) is used as the frequency. +The output has peak amplitude one. You may set an initial phase by sending +messages (not audio signals) to the right inlet. The left (frequency) inlet +may also be sent messages to set the frequency, since any inlet that takes an +audio signal may also be sent messages which are automatically converted to the +desired audio signal. + +

+
+\fbox{ $*\sim$\ }: +multiplier. This exists in two +forms. If a creation argument is specified (as in this example; it's 0.05), +this box multiplies a digital audio signal (in the left inlet) by the number; +messages to the right inlet can update the number as well. If no argument is +given, this box multiplies two incoming digital audio signals together. + +

+
+\fbox{ $ \mathrm{dac}\sim $}: +audio output device. +Depending on your hardware, this might not actually be a Digital/Analog +Converter as the name suggests; but in general, it allows you to send any +audio signal to your computer's audio output(s). If there are no creation +arguments, the default behavior is to output to channels one and two of +the audio hardware; you may specify alternative channel numbers (one or many) +using the creation arguments. Pd itself may be configured to use two or +more output channels, or may not have the audio output device open at all; +consult the Pd documentation for details. + +

+The two message boxes show a peculiarity in the way messages are parsed in +message boxes. Earlier in Figure 1.10 (part a), the message +consisted only of the number 21. When clicked, that box sent the message ``21" +to its outlet and hence to any objects connected to it. In this current +example, the text of the message boxes starts with a semicolon. This is a +terminator between messages (so the first message is empty), after which the +next word is taken as the name of the recipient of the following message. Thus +the message here is ``dsp 1" (or ``dsp 0") and the message is to be sent, not +to any connected objects--there aren't any anyway--but rather, to the object +named ``pd". This particular object is provided invisibly by the Pd program +and you can send it various messages to control Pd's global state, in this case +turning audio processing on (``1") and off (``0"). + +

+Many more details about the control aspects of Pd, such as the above, are +explained in a different series of example patches (the ``control examples") in +the Pd release, but they will only be touched on here as necessary to +demonstrate the audio signal processing techniques that are the subject of this +book. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Amplitude control in decibels + Up: Examples + Previous: Examples +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node190.html b/node190.html new file mode 100644 index 0000000..d1997af --- /dev/null +++ b/node190.html @@ -0,0 +1,267 @@ + + + + + +Parabolic wave + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Square and symmetric triangle + Up: Fourier series of the + Previous: Sawtooth wave +   Contents +   Index +
+
+ + +

+Parabolic wave +

+The same analysis, with some differences in sign and normalization, works +for parabolic waves. First we compute the difference: +

+
+ + +\begin{displaymath}
+p[n] - p[n-1] = {
+{
+{{({n\over N} - {1\over 2})}^2} -
+{{({{n-1}\over N} - {1\over 2})}^2}
+} \over {
+2
+}}
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+= {
+{
+{{({n\over N} - {N\over {2N}})}^2} -
+{{({{n}\over N} - {{N - 2}\over {2N}})}^2}
+} \over {
+2
+}}
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+= {
+{
+{{{2n}\over {N^2}} - {1\over {N}}} + {1\over {N^2}}
+} \over {
+2
+}}
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+\approx - s[n] / N .
+\end{displaymath} +
+
+

+So (again for $k \neq 0$, small compared to $N$) we get: +

+
+ + +\begin{displaymath}
+{\cal FT}\{ p[n] \} (k) \approx
+{{-1} \over N} \cdot {{-iN} \over {2 \pi k}} \cdot {\cal FT}\{ s[n] \} (k)
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+\approx {{-1} \over N} \cdot {{-iN} \over {2 \pi k}}
+\cdot {{-iN} \over {2 \pi k}}
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+= {N \over {4 {\pi ^2} {k^2}}}
+\end{displaymath} +
+
+

+and as before we get the Fourier series: +

+
+ + +\begin{displaymath}
+p[n] \approx {1 \over {2 {\pi^2}}} \left [
+{\cos ( \omega ...
+...\over 4}
++ {{\cos ( 3 \omega n)} \over 9}
++ \cdots
+\right ]
+\end{displaymath} +
+
+

+

+
+Miller Puckette +2006-12-30 +
+ + diff --git a/node191.html b/node191.html new file mode 100644 index 0000000..6664533 --- /dev/null +++ b/node191.html @@ -0,0 +1,264 @@ + + + + + +Square and symmetric triangle waves + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: General (non-symmetric) triangle wave + Up: Fourier series of the + Previous: Parabolic wave +   Contents +   Index +
+
+ + +

+Square and symmetric triangle waves +

+ +

+ +

+ + + +
Figure 10.6: +Symmetric triangle wave, obtained by superposing parabolic waves with +$(M, c)$ pairs equal to $(0, 8)$ and $(N/2, -8)$.
\begin{figure}\psfig{file=figs/fig10.06.ps}\end{figure}
+
+ +

+To see how to obtain Fourier series for classical waveforms in general, +consider first the square wave, +

+
+ + +\begin{displaymath}
+x[n] = s[n] - s[n-{N \over 2}]
+\end{displaymath} +
+
+

+equal to $1/2$ for the first half cycle ($0 <= n < N/2$) and $-1/2$ for the rest. +We get the Fourier series by plugging in the Fourier series for $s[n]$ twice: +

+
+ + +\begin{displaymath}
+x[n] \approx {1 \over \pi} \left [
+{\sin ( \omega n )}
++ ...
+...\over 2}
++ {{\sin ( 3 \omega n)} \over 3}
++ \cdots
+\right .
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+\left .
+-{\sin ( \omega n )}
++ {{\sin ( 2 \omega n)} \over 2}
+- {{\sin ( 3 \omega n)} \over 3}
+\pm \cdots
+\right ]
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+= {2 \over \pi} \left [
+{\sin ( \omega n )}
++ {{\sin ( 3 ...
+...\over 3}
++ {{\sin ( 5 \omega n)} \over 5}
++ \cdots
+\right ]
+\end{displaymath} +
+
+

+ +

+The symmetric triangle wave (Figure 10.6) given by +

+
+ + +\begin{displaymath}
+x[n] = 8 p[n] - 8 p[n-{N \over 2}]
+\end{displaymath} +
+
+

+similarly comes to +

+
+ + +\begin{displaymath}
+x[n] \approx {8 \over {{\pi^2}}} \left [
+{\cos ( \omega n ...
+...over 9}
++ {{\cos ( 5 \omega n)} \over 25}
++ \cdots
+\right ]
+\end{displaymath} +
+
+

+ +

+


+
+Miller Puckette +2006-12-30 +
+ + diff --git a/node192.html b/node192.html new file mode 100644 index 0000000..3e29c1c --- /dev/null +++ b/node192.html @@ -0,0 +1,437 @@ + + + + + +General (non-symmetric) triangle wave + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Predicting and controlling foldover + Up: Fourier series of the + Previous: Square and symmetric triangle +   Contents +   Index +
+
+ + +

+ +
+General (non-symmetric) triangle wave +

+ +

+ +

+ + + +
Figure 10.7: +Non-symmetric triangle wave, with vertices at $(M, 1)$ and +$(N-M, -1)$.
\begin{figure}\psfig{file=figs/fig10.07.ps}\end{figure}
+
+ +

+A general, non-symmetric triangle wave appears in Figure 10.7. Here +we have arranged the cycle so that, first, the DC component is zero (so that +the two corners have equal and opposite heights), and second, so that the +midpoint of the shorter segment goes through the point $(0,0)$. + +

+The two line segments have slopes equal to $1/M$ and $-2/(N-2M)$, so the +decomposition into component parabolic waves is given by: +

+
+ + +\begin{displaymath}
+x[n] = {{N^2} \over {MN - 2{M^2}}} (p[n-M] - p[n+M])
+\end{displaymath} +
+
+

+(here we're using the periodicity of $p[n]$ to replace $p[n-(N-M)]$ by +$p[n+M]$).) + +

+The most general way of dealing with linear combinations of elementary +(parabolic and/or sawtooth) waves is to go back to the complex Fourier +series, as +we did in finding the series for the elementary waves themselves. But in this +particular case we can use a trigonometric identity to avoid the extra work of +converting back and forth. First we plug in the real-valued Fourier series: +

+
+ + +\begin{displaymath}
+x[n] = {{N^2} \over {2{\pi ^ 2} (MN - 2{M^2})}} \left [
+\p...
+...{}}
+{\cos ( \omega (n-M))} - {\cos ( \omega (n+M))}
+\right .
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+\left .
++ {{\cos ( 2 \omega (n-M)) - \cos ( 2 \omega (n+M))} \over 4}
++ \cdots
+\right ]
+\end{displaymath} +
+
+

+Now we use the identity, +

+
+ + +\begin{displaymath}
+\cos(a) - \cos(b) = 2 \sin({{b-a}\over 2}) \sin({{a+b}\over 2})
+\end{displaymath} +
+
+

+so that, for example, +

+
+ + +\begin{displaymath}
+{\cos ( \omega (n-M))} - {\cos ( \omega (n+M))} =
+2 \sin (2 \pi M / N) \sin ( \omega n)
+\end{displaymath} +
+
+

+(Here again we used the definition of +$\omega=2\pi/N$.) This is a +simplification since the first sine term does not depend on $n$; it's +just an amplitude term. Applying the identity to all the terms of the expansion +for $x[n]$ gives: +

+
+ + +\begin{displaymath}
+x[n] = a[1] \sin(\omega n) + a[2] \sin(2 \omega n) + \cdots
+\end{displaymath} +
+
+

+where the amplitudes of the components are given by: +

+
+ + +\begin{displaymath}
+a[k] = {1 \over {{\pi ^ 2} (M/N - 2{{(M/N)}^2})}}
+\cdot {{\sin (2 \pi k M / N) } \over {k^2}}
+\end{displaymath} +
+
+

+Notice that the result does not depend separately on the values of $M$ and $N$, +but only on their ratio, $M/N$ (this is not surprising because the shape of +the waveform depends on this ratio). If we look at small values of $k$: +

+
+ + +\begin{displaymath}
+k < {{1} \over {4 M/N}}
+\end{displaymath} +
+
+

+the argument of the sine function is less than $\pi /2$ and using the +approximation +$\sin(\theta) \approx \theta$ we find that $a[k]$ drops off +as $1/k$, just as the partials of a sawtooth wave. But for larger values of +$k$ the sine term oscillates between 1 and -1, so that the amplitudes drop off +irregularly as $1/{k^2}$. + +

+Figure 10.8 shows the partial strengths with $M/N$ set to +0.03; here, our prediction is that the $1/k$ dependence should extend to + +$k \approx 1/(4\cdot 0.03) \approx 8.5$, in rough agreement with the figure. + +

+Another way to see why the partials should behave as $1/k$ for low values of +$k$ and $1/{k^2}$ thereafter, is to compare the period of a given partial with +the length of the short segment, $2M$. For partials numbering less than +$N/4M$, the period is at least twice the length of the short segment, and at +that scale the waveform is nearly indistinguishable from a sawtooth wave. +For partials numbering in excess of $N/2M$, the two corners of the triangle +wave are at least one period apart, and at these higher frequencies the two +corners (each with $1/{k^2}$ frequency dependence) are resolved from each +other. In the figure, the notch at partial 17 occurs at the wavelength + +$N/2M \approx 1/17$, at which wavelength the two corners are one cycle apart; +since the corners are opposite in sign they cancel each other. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Predicting and controlling foldover + Up: Fourier series of the + Previous: Square and symmetric triangle +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node193.html b/node193.html new file mode 100644 index 0000000..12e6a41 --- /dev/null +++ b/node193.html @@ -0,0 +1,148 @@ + + + + + +Predicting and controlling foldover + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Over-sampling + Up: Classical waveforms + Previous: General (non-symmetric) triangle wave +   Contents +   Index +
+
+ + +

+Predicting and controlling foldover +

+ +

+Now we descend to the real situation, in which the period of the waveform +cannot be assumed to be arbitrarily long and integer-valued. Suppose (for +definiteness) we want to synthesize tones at 440 Hertz (A above middle C), and +that we are using a sample rate of 44100 Hertz, so that the period is about 100.25 +samples. Theoretically, given a very high sample rate, we would expect the +fiftieth partial to have magnitude $1/50$ compared to the fundamental and +a frequency about 20 kHz. If we sample this waveform at the (lower) sample +rate of 44100, then partials in excess of this frequency will be aliased, as +described in Section 3.1. The relative strength of the +folded-over partials will be on the order of -32 decibels--quite audible. +If the fundamental frequency is raised further, more and louder partials reach +the Nyquist frequency (half the sample rate) and begin to fold over. + +

+Foldover problems are much less pronounced for waveforms with only corners +(instead of jumps) because of the faster dropoff of higher partial frequencies; +for instance, a symmetric triangle wave at 440 Hertz would get twice the dropoff, or -64 +decibels. In general, though, waveforms with discontinuities are a better +starting point for +subtractive synthesis (the most popular classical technique). +In case you were hoping, subtractive filtering can't remove foldover once it is +present in an audio signal. + +

+


+ +Subsections + + + +
+ + +next + +up + +previous + +contents + +index +
+ Next: Over-sampling + Up: Classical waveforms + Previous: General (non-symmetric) triangle wave +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node194.html b/node194.html new file mode 100644 index 0000000..57957c7 --- /dev/null +++ b/node194.html @@ -0,0 +1,171 @@ + + + + + +Over-sampling + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Sneaky triangle waves + Up: Predicting and controlling foldover + Previous: Predicting and controlling foldover +   Contents +   Index +
+
+ + +

+Over-sampling +

+ +

+As a first line of defense against foldover, we can synthesize the waveform at +a much higher sample rate, apply a low-pass filter whose cutoff frequency is +set to the Nyquist frequency (for the original sample rate), then +down-sample. For example, in the above scenario (44100 sample rate, 440 Hertz +tone) we could generate the sawtooth at a sample rate of +$16\cdot 44100 =
+705600$ Hertz. We need only worry about frequencies in excess of + +$705600-20000=685600$ Hertz (so that they fold over into audible frequencies; +foldover to ultrasonic frequencies normally won't concern us) so the first +problematic partial is +$685600/440=1558$, whose amplitude is -64dB relative +to that of the fundamental. + +

+ +

+ + + +
Figure 10.8: +Magnitude spectrum of a triangle wave with $M/N=0.03$. The two +line segments show $1/k$ and $1/{k^2}$ behavior at low and high frequencies.
\begin{figure}\psfig{file=figs/fig10.08.ps}\end{figure}
+
+ +

+This attenuation degrades by 6 dB for every octave the fundamental +is raised, so that a 10 kHz. sawtooth only enjoys a 37 dB drop from the +fundamental to the loudest foldover partial. On the other hand, raising the +sample rate by an additional factor of two reduces foldover by the same +amount. If we really wish to get 60 decibels of foldover rejection--all the +way up to a 10 kHz. fundamental--we will have to over-sample by a factor of 256, +to a sample rate of about 11 million Hertz. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Sneaky triangle waves + Up: Predicting and controlling foldover + Previous: Predicting and controlling foldover +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node195.html b/node195.html new file mode 100644 index 0000000..ffca295 --- /dev/null +++ b/node195.html @@ -0,0 +1,154 @@ + + + + + +Sneaky triangle waves + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Transition splicing + Up: Predicting and controlling foldover + Previous: Over-sampling +   Contents +   Index +
+
+ + +

+Sneaky triangle waves +

+ +

+For low fundamental frequencies, over-sampling is an easy way to get adequate +foldover protection. If we wish to allow higher frequencies, we will need a +more sophisticated approach. One possibility is to replace discontinuities by +ramps, or in other words, to replace component sawtooth waves by triangle +waves, as treated in Section 10.3.4, +with values of $M/N$ small enough +that the result sounds like a sawtooth wave, but large enough to control +foldover. + +

+Returning to Figure 10.8, suppose for example we imitate a sawtooth +wave with a triangle wave with $M$ equal to two samples, so that the first +notch falls on the Nyquist frequency. Partials above the first notch (the 17th +partial in the figure) will fold over; the worst of them is about 40 dB below +the fundamental. On the other hand, the partial strengths start dropping faster +than those of a true sawtooth wave at about half the Nyquist frequency. This +is acceptable in some, but not all, situations. + +

+The triangle wave strategy can be combined with over-sampling to improve the +situation further. Again in the context of Figure 10.8, suppose we +over-sample by a factor of 4, and set the first notch at the original sample +rate. The partials up to the Nyquist frequency (partial 8, at the fundamental +frequency shown in the figure) follow those of the true sawtooth wave fairly +well. Foldover sets in only at partial number 48, and is 52 dB below the +fundamental. This overall behavior holds for any fundamental frequency up to +about one quarter the sample rate (after which $M$ exceeds $N/2$). Setting the +notch frequency to the original sample rate is equivalent to setting the +segment of length $2M$ to one sample (at the original sample rate). + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Transition splicing + Up: Predicting and controlling foldover + Previous: Over-sampling +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node196.html b/node196.html new file mode 100644 index 0000000..f99a7a2 --- /dev/null +++ b/node196.html @@ -0,0 +1,239 @@ + + + + + +Transition splicing + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Examples + Up: Predicting and controlling foldover + Previous: Sneaky triangle waves +   Contents +   Index +
+
+ + +

+Transition splicing +

+ +

+In the point of view developed in this chapter, the energy of the spectral +components of classical waves can be attributed entirely to their jumps and +corners. This is artificial, of course: the energy really emanates from the +entire waveform. Our derivation of the spectrum of the classical waveforms +uses the jumps and corners as a bookkeeping device, and this is possible +because the entire waveform is determined by their positions and magnitudes. + +

+Taking this ruse even further, the problem of making band-limited versions of +classical waveforms can be attacked by making band-limited versions of the +jumps and corners. Since the jumps are the more serious foldover threat, we +will focus on them here, although the approach described here works perfectly +well for corners as well. + +

+ +

+ + + +
Figure 10.9: +A square wave, band-limited to partials 1, 3, 5, 7, 9, and 11. This +can be regarded approximately as a series of band-limited step functions arranged +end to end.
\begin{figure}\psfig{file=figs/fig10.09.ps}\end{figure}
+
+ +

+To construct a band-limited step function, all we have to do is add the Fourier +components of a square wave, as many as we like, and then harvest the step +function at any one of the jumps. Figure 10.9 shows the partial +Fourier sum corresponding to a square wave, using partials 1, 3, 5, 7, 9, and +11. The cutoff frequency can be taken as $12\omega$ (if $\omega $ is the +fundamental frequency). + +

+If we double the period of the square wave, to arrive at the same cutoff +frequency, we would add twice as many Fourier partials, up to number 23, for +instance. Extending this process forever, we would eventually see the ideal +band-limited step function, twice per (arbitrarily long) period. + +

+In practice we can do quite well using only the first two partials (one and +three times the fundamental). Figure 10.10 (part a) shows +a two-partial approximation of a square wave. The cutoff frequency is +four times the fundamental; so if the period of the waveform is eight +samples, the cutoff is at the Nyquist frequency. Part (b) of the +figure shows how we could use this step function to synthesize, approximately, +a square wave of twice the period. If the cutoff frequency is the Nyquist +frequency, the period of the waveform of part (b) is 16 samples. Each +transition lasts 4 samples, because the band-limited square wave has a period +of eight samples. + +

+ +

+ + + +
Figure 10.10: +Stretching a band-limited square wave: (a) the original waveform; +(b) after splicing in horizontal segments; (c) using the same step transition +for a sawtooth wave.
\begin{figure}\psfig{file=figs/fig10.10.ps}\end{figure}
+
+ +

+We can make a band-limited sawtooth wave by adding the four-sample-long +transition to a ramp function so that the end of the resulting function meets +smoothly with itself end to end, as shown in part (c) of the +figure. +There is one transition per period, so the period must be at least four +samples; the highest fundamental frequency we can synthesize this way is half +the Nyquist frequency. For this or lower fundamental frequency, the foldover +products all turn out to be at least 60 dB quieter than the fundamental. + +

+ +

+ + + +
Figure 10.11: +Block diagram for making a sawtooth wave with a spliced transition.
\begin{figure}\psfig{file=figs/fig10.11.ps}\end{figure}
+
+ +

+Figure 10.11 shows how to generate a sawtooth wave with a spliced +transition. The two parameters are $f$, the fundamental frequency, and $b$, +the band limit, assumed to be at least as large as $f$. We start with a +digital sawtooth wave (a phasor) ranging from -0.5 to 0.5 in value. The +transition will take place at the middle of the cycle, when the phasor crosses +0. The wavetable is traversed in a constant amount of time, $1/b$, regardless +of $f$. The table lookup is taken to be non-wraparound, so that inputs out of +range output either -0.5 or 0.5. + +

+At the end of the cycle the phasor discontinuously jumps from -0.5 to 0.5, but +the output of the transition table jumps an equal and opposite amount, so the +result is continuous. During the portion of the waveform in which the +transition table is read at one or the other end-point, the output describes +a straight line segment. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Examples + Up: Predicting and controlling foldover + Previous: Sneaky triangle waves +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node197.html b/node197.html new file mode 100644 index 0000000..13f53b3 --- /dev/null +++ b/node197.html @@ -0,0 +1,86 @@ + + + + + +Examples + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Combining sawtooth waves + Up: Classical waveforms + Previous: Transition splicing +   Contents +   Index +
+
+ + +

+Examples +

+ +

+


+ +Subsections + + + +

+
+Miller Puckette +2006-12-30 +
+ + diff --git a/node198.html b/node198.html new file mode 100644 index 0000000..cc9ae5f --- /dev/null +++ b/node198.html @@ -0,0 +1,162 @@ + + + + + +Combining sawtooth waves + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Strategies for band-limiting sawtooth + Up: Examples + Previous: Examples +   Contents +   Index +
+
+ + +

+Combining sawtooth waves +

+ +

+ +

+ + + +
Figure 10.12: +Combining sawtooth waves: (a) adding and subtracting sawtooth waves +1/2 cycle out of phase, to extract even and odd harmonics; (b) combining three +sawtooth waves with arbitrary amplitudes and phases.
\begin{figure}\psfig{file=figs/fig10.12.ps}\end{figure}
+
+ +

+Example J01.even.odd.pd (Figure 10.12, part a) shows how to combine sawtooth +waves in pairs to extract the even and odd harmonics. The resulting waveforms +are as shown in Figure 10.3. Example J02.trapezoids.pd (part b of the +figure) demonstrates combining three sawtooth waves at arbitrary phases and +amplitudes; the resulting classic waveform has up to three jumps and no +corners. The three line segments are horizontal as long as the three jumps add +to zero; otherwise the segments are sloped to make up for the the unbalanced +jumps so that the result repeats from one period to the next. + +

+Example J03.pulse.width.mod.pd (not shown) combines two sawtooth waves, of opposite sign, with +slightly different frequencies so that the relative phase changes +continuously. Their sum is a rectangle wave whose width varies in time. This +is known as pulse width modulation (``PWM"). + +

+ +

+ + + +
Figure 10.13: +Combining parabolic waves to make a waveform with three corners.
\begin{figure}\psfig{file=figs/fig10.13.ps}\end{figure}
+
+ +

+Example J04.corners.pd (Figure 10.13) shows how to add parabolic waves to make +a combined waveform with three corners. Each parabolic wave is computed from a +sawtooth wave (ranging from -0.5 to 0.5) by squaring it, multiplying by 0.5, +and subtracting the DC component of -1/12, or -0.08333. The patch combines +three such parabolic waves with controllable amplitudes and phases. As +long as the amplitudes sum to zero, the resulting waveform consists of line +segments, whose corners are located according to the three phases and have +slope changes according to the three amplitudes. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Strategies for band-limiting sawtooth + Up: Examples + Previous: Examples +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node199.html b/node199.html new file mode 100644 index 0000000..fbc38f0 --- /dev/null +++ b/node199.html @@ -0,0 +1,165 @@ + + + + + +Strategies for band-limiting sawtooth waves + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Exercises + Up: Examples + Previous: Combining sawtooth waves +   Contents +   Index +
+
+ + +

+Strategies for band-limiting sawtooth waves +

+ +

+ +

+ + + +
Figure 10.14: +Alternative techniques for making waveforms with corners: (a) a +triangle wave as the minimum of two line segments; (b) clipping a triangle wave to +make an ``envelope".
\begin{figure}\psfig{file=figs/fig10.14.ps}\end{figure}
+
+ +

+Example J05.triangle.pd (Figure 10.14, part a) shows a simple way to make a +triangle wave, in which only the slope of the rising and falling segment are +specified. A phasor supplies the rising shape (its amplitude being the slope), +and the same phasor, subtracted from one, gives the decaying shape. The +minimum of the two linear functions follows the rising phasor up to the +intersection of the two, and then follows the falling phasor back down to zero +at the end of the cycle. + +

+A triangle wave can be clipped above and below to make a trapezoidal wave, +which can be used either as an audio-frequency pulse or, at a lower fundamental +frequency, as a repeating ASR (attack/sustain/release) envelope. Patch +J06.enveloping.pd (Figure 10.14 part b) demonstrates this. The same rising +shape is used as in the previous example, and the falling shape differs only +in that its phase is set so that it falls to zero at a controllable point (not +necessarily at the end of the cycle as before). The clip~ object prevents +it from rising above 1 (so that, if the intersection of the two segments is +higher than one, we get a horizontal ``sustain" segment), and also from falling +below zero, so that once the falling shape reaches zero, the output is zero for +the rest of the cycle. + +

+Example J07.oversampling.pd shows how to use up-sampling to reduce foldover when using a +phasor~ object as an audio sawtooth wave. A subpatch, running at 16 +times the base sample rate, contains the phasor~ object and a +three-pole, three-zero Butterworth filter to reduce the amplitudes of partials +above the Nyquist frequency of the parent patch (running at the original sample +rate) so that the output won't fold over when it is down-sampled at the +outlet~ object. Example J08.classicsynth.pd demonstrates using up-sampled +phasors as signal generators to make an imitation of a classic synthesizer +doing subtractive synthesis. + +

+Example J09.bandlimited.pd shows how to use transition splicing as an alternative way to +generate a sawtooth wave with controllable foldover. This has the advantage of +being more direct (and usually less compute-intensive) than the up-sampling +method. On the other hand, this technique depends on using the reciprocal of +the fundamental frequency as an audio signal in its own right (to control the +amplitude of the sweeping signal that reads the transition table) and, in the +same way as for the PAF technique of Chapter 6, care must be +taken to avoid clicks if the fundamental frequency changes discontinuously. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Exercises + Up: Examples + Previous: Combining sawtooth waves +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node2.html b/node2.html new file mode 100644 index 0000000..dfe2c3a --- /dev/null +++ b/node2.html @@ -0,0 +1,74 @@ + + + + + +#1 + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: #1 + Up: #1 + Previous: #1 +   Contents +   Index +
+
+ + +

+#1 +

+ +1] +

+
+Miller Puckette +2006-12-30 +
+ + diff --git a/node20.html b/node20.html new file mode 100644 index 0000000..ed327e7 --- /dev/null +++ b/node20.html @@ -0,0 +1,167 @@ + + + + + +Amplitude control in decibels + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Smoothed amplitude control with + Up: Examples + Previous: Constant amplitude scaler +   Contents +   Index +
+
+ + +

+Amplitude control in decibels +

+ +

+Example A02.amplitude.pd shows how to make a crude amplitude control; +the active elements +are shown in Figure 1.12 (part a). There is one new object class: + +

+ +

+ + + +
Figure 1.12: +The active ingredients to three patches: (a) A02.amplitude.pd; (b) +A03.line.pd; (c) A05.output.subpatch.pd.
\begin{figure}\psfig{file=figs/fig01.12.ps}\end{figure}
+
+ +

+
+\fbox{ $ \mathrm{dbtorms} $} : Decibels to linear +amplitude conversion. The ``RMS" is a misnomer; it should have been named +``dbtoamp", +since it really converts from decibels to any linear amplitude unit, be it +RMS, peak, or other. An input of 100 dB is normalized to an output of 1. +Values greater than 100 are fine (120 will give 10), but values less than or +equal to zero will output zero (a zero input would otherwise have output a +small positive number). This is a control object, i.e., the numbers going in +and out are messages, not signals. (A corresponding object, + +\fbox{ $ \mathrm{dbtorms}\sim $}, is the signal correlate. However, as a +signal object this is expensive in CPU time and most often we'll find +one way or another to avoid using it.) + +

+The two number boxes are connected to the input and output of the +dbtorms object. The input functions as a control; ``mouse" on it +(click and drag upward or downward) to change the amplitude. It has been set to range from +0 to 80; this is protection for your speakers and ears, and it's wise to build +such guardrails into your own patches. + +

+The other number box shows the output of the dbtorms object. It is +useless +to mouse on this number box, since its outlet is connected nowhere; it is here +purely to display its input. Number boxes may be useful as controls, displays, +or both, although if you're using it as both there may be some extra work to do. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Smoothed amplitude control with + Up: Examples + Previous: Constant amplitude scaler +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node200.html b/node200.html new file mode 100644 index 0000000..e74ed8f --- /dev/null +++ b/node200.html @@ -0,0 +1,116 @@ + + + + + +Exercises + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Index + Up: Classical waveforms + Previous: Strategies for band-limiting sawtooth +   Contents +   Index +
+
+ + +

+Exercises +

+ +

+ +

    +
  1. A phasor~ object has a frequency of 441 Hertz (at a sample rate +of 44100). What is the amplitude of the DC component? The fundamental? The +partial at 22050 Hertz (above which the partials fold over)? + +

    +

  2. +
  3. A square wave oscillates between 1 and -1. What is its RMS amplitude? + +

    +

  4. +
  5. In Section 10.3 a square wave was presented as an odd +waveform whose Fourier series consisted of sine (and not cosine) functions. +If the square wave is advanced 1/8 cycle in phase, so that it appears as an +even function, what does its Fourier series become? + +

    +

  6. +
  7. A rectangle wave is 1 for 1/4 cycle, zero for 3/4 cycles. What are the +strengths of its harmonics at 0, 1, 2, 3, and 4 times the fundamental? + +

    +

  8. +
  9. How much is +$1 + 1/9 + 1/25 + 1/49 + 1/81 + \cdots$? + +

    +

  10. +
+ +

+ +

+ +

+ +


+
+Miller Puckette +2006-12-30 +
+ + diff --git a/node201.html b/node201.html new file mode 100644 index 0000000..b5b07f2 --- /dev/null +++ b/node201.html @@ -0,0 +1,1187 @@ + + + + + +Index + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents +
+ Next: Bibliography + Up: book + Previous: Exercises +   Contents +
+
+ +
+ +

+Index +

+
+\fbox{ $ \mathrm{osc}\sim $} +
Constant amplitude scaler +
+\fbox{ $*\sim$\ } +
Constant amplitude scaler +
+\fbox{ $ \mathrm{dac}\sim $} +
Constant amplitude scaler +
+\fbox{ $ \mathrm{line}\sim $} +
Smoothed amplitude control with +
+\fbox{ $ \mathrm{mtof} $} +
Conversion between frequency and +
+\fbox{ $ \mathrm{ftom} $} +
Conversion between frequency and +
+\fbox{ $ \mathrm{r} $} +
Conversion between frequency and +
+\fbox{ $ \mathrm{receive} $} +
Conversion between frequency and +
+\fbox{ $\mathrm{s}$\ } +
Conversion between frequency and +
+\fbox{ $\mathrm{send}$} +
Conversion between frequency and +
+\fbox{ $ \mathrm{tabosc4}\sim $} +
Wavetable oscillator +
+\fbox{ $\mathrm{tabread4}\sim$\ } +
Wavetable lookup in general +
+\fbox{ $\mathrm{tabwrite}\sim$\ } +
Wavetable lookup in general +
+\fbox{ $\mathrm{pack}$\ } +
Wavetable lookup in general +
+\fbox{ $\mathrm{hip}\sim$\ } +
Using a wavetable as +
+\fbox{ $\mathrm{cos}\sim$\ } +
Looping samplers +
+\fbox{ $\mathrm{samphold}\sim$\ } +
Looping samplers +
+\fbox{ $\mathrm{loadbang}$\ } +
Overlapping sample looper +
+\fbox{ $\mathrm{expr}$\ } +
Overlapping sample looper +
+\fbox{$\mathrm{wrap}\sim$} +
Overlapping sample looper +
+\fbox{ $\mathrm{send}\sim$\ } +
Overlapping sample looper +
+\fbox{ $\mathrm{s}\sim$\ } +
Overlapping sample looper +
+\fbox{ $\mathrm{receive}\sim$\ } +
Overlapping sample looper +
+\fbox{ $\mathrm{r}\sim$\ } +
Overlapping sample looper +
+\fbox{ $\mathrm{delay}$\ }, +\fbox{ $\mathrm{del}$\ } +
Control operations in Pd +
+\fbox{ $\mathrm{pipe}$\ } +
Control operations in Pd +
+\fbox{ $\mathrm{moses}$\ } +
Control operations in Pd +
+\fbox{ $\mathrm{select}$\ }, +\fbox{ $\mathrm{sel}$\ } +
Control operations in Pd +
+\fbox{ $\mathrm{line}$} +
Converting controls to signals +
+\fbox{ $\mathrm{vline}\sim$} +
Converting controls to signals +
+\fbox{ $\mathrm{snapshot}\sim$} +
Signals to controls +
+\fbox{ $\mathrm{env}\sim$} +
Signals to controls +
+\fbox{ $\mathrm{notein}$} +
MIDI-style synthesizer +
+\fbox{ $\mathrm{stripnote}$} +
MIDI-style synthesizer +
+\fbox{ $\mathrm{trigger}$}, +\fbox{ $\mathrm{t}$} +
MIDI-style synthesizer +
+\fbox{ $ \mathrm{inlet} $} +
Encapsulation in Pd +
+\fbox{ $ \mathrm{inlet}\sim $} +
Encapsulation in Pd +
+\fbox{ $\mathrm{outlet}$\ } +
Encapsulation in Pd +
+\fbox{ $\mathrm{outlet}\sim$\ } +
Encapsulation in Pd +
+\fbox{ $\mathrm{unpack}$} +
Transfer functions for amplitude +
+\fbox{$\mathrm{catch\sim}$} +
Additive synthesis: Risset's bell +
+\fbox{$\mathrm{throw\sim}$} +
Additive synthesis: Risset's bell +
+\fbox{ $\mathrm{mod}$} +
Polyphonic synthesis: sampler +
+\fbox{$\mathrm{div}$} +
Polyphonic synthesis: sampler +
+\fbox{ $\mathrm{poly}$} +
Polyphonic synthesis: sampler +
+\fbox{$\mathrm{makenote}$} +
Polyphonic synthesis: sampler +
+\fbox{$\mathrm{fiddle}\sim$} +
Octave divider and formant +
+\fbox{$\mathrm{clip}\sim$} +
Waveshaping and difference tones +
+\fbox{ $\mathrm{until}$\ } +
The PAF generator +
+\fbox{$\mathrm{delwrite}\sim$} +
Fixed, noninterpolating delay line +
+\fbox{$\mathrm{delread}\sim$} +
Fixed, noninterpolating delay line +
+\fbox{$\mathrm{vd}\sim$} +
Variable delay line +
+\fbox{$\mathrm{block}\sim$} +
Order of execution and +
+\fbox{$\mathrm{switch}\sim$} +
Order of execution and +
+\fbox{$\mathrm{lop}\sim$} +
Prefabricated low-, high-, and +
+\fbox{ $\mathrm{hip}\sim$\ } +
Prefabricated low-, high-, and +
+\fbox{$\mathrm{bp}\sim$} +
Prefabricated low-, high-, and +
+\fbox{$\mathrm{noise}\sim$} +
Prefabricated low-, high-, and +
+\fbox{$\mathrm{vcf}\sim$} +
Prefabricated time-varying band-pass filter +
+\fbox{$\mathrm{rzero}\sim$} +
Using elementary filters directly: +
+\fbox{$\mathrm{rzero\_rev}\sim$} +
Using elementary filters directly: +
+\fbox{$\mathrm{rpole}\sim$} +
Using elementary filters directly: +
+\fbox{$\mathrm{czero}\sim$} +
Using elementary filters directly: +
+\fbox{$\mathrm{czero\_rev}\sim$} +
Using elementary filters directly: +
+\fbox{$\mathrm{cpole}\sim$} +
Using elementary filters directly: +
+\fbox{$\mathrm{fft}\sim$} +
Fourier analysis and resynthesis +
+\fbox{$\mathrm{rfft}\sim$} +
Fourier analysis and resynthesis +
+\fbox{$\mathrm{tabreceive}\sim$} +
Fourier analysis and resynthesis +
+\fbox{$\mathrm{rifft}\sim$} +
Fourier analysis and resynthesis +
+\fbox{$\mathrm{bang}\sim$} +
Narrow-band companding: noise suppression +
+\fbox{$\mathrm{tabsend}\sim$} +
Narrow-band companding: noise suppression +
+\fbox{$\mathrm{lrshift}\sim$} +
Phase vocoder time bender +
+\fbox{$\mathrm{q8\_rsqrt}\sim$} +
Phase vocoder time bender +
absolute value (of a complex number) +
Complex numbers +
abstraction +
Encapsulation in Pd +
additive synthesis +
Periodic Signals +
+
examples +
Additive synthesis: Risset's bell + | Additive synthesis: spectral envelope +
+
ADSR envelope generator +
Envelope Generators +
aliasing +
The sampling theorem +
all-pass filter +
Power conservation and complex +
amplitude +
Sinusoids, amplitude and frequency + | Measures of Amplitude +
+
complex +
Complex sinusoids +
+
amplitude, measures of +
Measures of Amplitude +
amplitude, peak +
Measures of Amplitude +
amplitude, RMS +
Measures of Amplitude +
angle of rotation +
Power conservation and complex +
argument (of a complex number) +
Complex numbers +
arguments +
+
creation +
Quick Introduction to Pd +
+
audio signals, digital +
Sinusoids, amplitude and frequency +
band-pass filter +
Band-pass and stop-band filters +
bandwidth +
Designer spectra + | Band-pass and stop-band filters +
beating +
More additive synthesis +
Bessel functions +
Sinusoidal waveshaping: evenness and +
box +
Quick Introduction to Pd +
+
GUI +
Quick Introduction to Pd +
message +
Quick Introduction to Pd +
number +
Quick Introduction to Pd +
object +
Quick Introduction to Pd +
+
carrier frequency +
Frequency and phase modulation + | Carrier/modulator model +
carrier signal +
Multiplying audio signals +
center frequency +
Designer spectra + | Band-pass and stop-band filters +
Central Limit Theorem +
Waveshaping +
cents +
Frequency +
Chebychev polynomials +
Waveshaping using Chebychev polynomials +
class +
Quick Introduction to Pd +
classical waveforms +
Classical waveforms +
clipping +
Wavetables and samplers +
clipping function +
Waveshaping +
coloration +
Artificial reverberation +
comb filter +
Delay networks +
+
recirculating +
Recirculating delay networks +
+
compander +
Narrow-band companding +
complex conjugate +
Non-recirculating filter, second form +
complex numbers +
Complex numbers +
compound filter +
Compound filters +
continuous spectrum +
Taxonomy of spectra +
control +
Control +
control stream +
Control streams +
+
numeric +
Control streams +
+
covariance +
Superposing Signals +
creation arguments +
Quick Introduction to Pd +
DC +
Taxonomy of spectra + | One-pole, one-zero high-pass filter +
debouncing +
Event detection +
decibels +
Units of Amplitude +
delay +
+
compound +
Operations on control streams +
in Pd +
Control operations in Pd +
on control streams +
Operations on control streams +
simple +
Operations on control streams +
+
delay network +
+
linear +
Delay networks +
+
delay, audio +
Delay networks +
digital audio signals +
Sinusoids, amplitude and frequency +
Dirichlet kernel +
Fourier transform of DC +
discrete spectrum +
Taxonomy of spectra +
distortion +
Waveshaping +
Doppler effect +
Variable and fractional shifts +
duty cycle +
Timbre stretching +
dynamic +
Units of Amplitude +
dynamic range +
Narrow-band companding +
echo density +
Artificial reverberation +
elementary filter +
+
non-recirculating +
Elementary non-recirculating filter +
recirculating +
Elementary recirculating filter +
+
encapsulation +
Encapsulation in Pd +
envelope follower +
Event detection + | Envelope following +
envelope generator +
Synthesizing a sinusoid + | Envelope Generators +
+
ADSR +
Envelope Generators +
resetting +
Muting +
+
equalization +
Equalizing filters +
event +
Control streams +
event detection +
Event detection +
feedback +
Phase-aligned formant (PAF) generator +
filter +
Delay networks + | Filters +
+
all-pass +
Power conservation and complex + | All-pass filters +
band-pass +
Band-pass and stop-band filters +
Butterworth +
Butterworth filters +
compound +
Compound filters +
elementary non-recirculating +
Elementary non-recirculating filter +
elementary recirculating +
Elementary recirculating filter +
high-pass +
Low-pass and high-pass filters +
low-pass +
Low-pass and high-pass filters +
peaking +
Equalizing filters +
shelving +
Equalizing filters +
+
first difference +
Fourier series of the +
foldover +
The sampling theorem +
formant +
Designer spectra +
Fourier analysis +
Fourier analysis and resynthesis +
Fourier transform +
Fourier analysis of periodic +
+
fast (FFT) +
Fourier analysis and resynthesis +
phase shift formula +
Shifts and phase changes +
time shift formula +
Shifts and phase changes +
windowed +
Fourier analysis of non-periodic +
+
frequency +
+
carrier +
Frequency and phase modulation +
modulation +
Frequency and phase modulation +
+
frequency domain +
Delay networks +
frequency modulation +
More additive synthesis + | Frequency and phase modulation +
frequency response +
Delay networks +
frequency, angular +
Sinusoids, amplitude and frequency +
fundamental +
Periodic Signals +
gain +
Delay networks +
granular synthesis +
Sampling +
GUI box +
Quick Introduction to Pd +
half-step +
Frequency +
Hann window function +
Pulse trains via wavetable +
Hanning window function +
Pulse trains via wavetable + | Fourier analysis of non-periodic +
harmonic signal +
Taxonomy of spectra +
harmonics +
Periodic Signals +
high-pass filter +
Low-pass and high-pass filters +
hop size +
Fourier analysis and reconstruction +
imaginary part of a complex number +
Complex numbers +
impulse +
Delay networks + | Sawtooth wave +
impulse response +
Recirculating delay networks +
index +
+
of modulation +
Frequency and phase modulation +
waveshaping +
Waveshaping + | Waveshaping using Chebychev polynomials +
+
inharmonic signal +
Taxonomy of spectra +
interference +
Time shifts and delays +
intermodulation +
Waveshaping +
Karplus-Strong synthesis +
Order of execution and +
logical time +
Control +
low-pass filter +
Low-pass and high-pass filters +
magnitude (of a complex number) +
Complex numbers +
merging control streams +
Operations on control streams +
+
in Pd +
Control operations in Pd +
+
message box +
Quick Introduction to Pd +
messages +
Quick Introduction to Pd + | Control operations in Pd +
MIDI +
Frequency +
modulating signal +
Multiplying audio signals +
modulation +
+
frequency +
More additive synthesis + | Frequency and phase modulation +
ring +
Multiplying audio signals +
+
muting +
Muting +
noise gate +
Narrow-band companding +
noisy spectrum +
Taxonomy of spectra +
number box +
Quick Introduction to Pd +
numeric control stream +
+
in Pd +
Control operations in Pd +
+
Nyquist theorem +
The sampling theorem +
object box +
Quick Introduction to Pd +
octave +
Frequency +
oscillator +
Synthesizing a sinusoid +
parabolic wave +
Dissecting classical waveforms +
parent +
Encapsulation in Pd +
partials +
Taxonomy of spectra +
passband +
Low-pass and high-pass filters +
patch +
Synthesizing a sinusoid + | Quick Introduction to Pd +
peaking filter +
Equalizing filters +
period +
Periodic Signals +
phase locking +
Phase relationships between channels +
phase-aligned formant (PAF) +
Phase-aligned formant (PAF) generator +
Pitch/Frequency Conversion formulas +
Frequency +
polar form (of a complex number) +
Complex numbers +
pole-zero plot +
Designing filters +
polyphony +
Polyphony +
power +
Measures of Amplitude +
power series +
Waveshaping +
pruning control streams +
Operations on control streams +
+
in Pd +
Control operations in Pd +
+
quality (``q'') +
Impulse responses of recirculating +
real part of a complex number +
Complex numbers +
real time +
Control +
rectangle wave +
Classical waveforms +
rectangular form (of a complex number) +
Complex numbers +
reflection +
Power conservation and complex +
resynchronizing control streams +
Operations on control streams +
+
in Pd +
Control operations in Pd +
+
ring modulation +
Multiplying audio signals +
ripple +
Low-pass and high-pass filters +
sample number +
Sinusoids, amplitude and frequency +
sample rate +
Sinusoids, amplitude and frequency +
sampling +
Sampling +
+
examples +
Polyphonic synthesis: sampler +
+
sawtooth wave +
Wavetables and samplers + | Classical waveforms +
settling time +
Impulse responses of recirculating +
shelving filter +
Equalizing filters +
sidebands +
Multiplying audio signals +
sidelobes +
Resulting spectra + | Fourier transform of DC +
signals, digital audio +
Sinusoids, amplitude and frequency +
spectral envelope +
Sampling + | Taxonomy of spectra +
spectrum +
Taxonomy of spectra +
square wave +
Sawtooth waves and symmetry +
stable delay network +
Recirculating delay networks +
stopband +
Low-pass and high-pass filters +
stopband attenuation +
Low-pass and high-pass filters +
subpatch +
Encapsulation in Pd +
subpatches +
Encapsulation in Pd +
subtractive synthesis +
Subtractive synthesis + | Predicting and controlling foldover +
switch-and-ramp technique +
Switch-and-ramp +
tags +
Voice tags +
tasks +
Voice allocation +
threshold detection +
Event detection +
timbre stamping +
Timbre stamping (classical vocoder) +
timbre stretching +
Timbre stretching + | Carrier/modulator model +
time domain +
Delay networks +
time invariance +
Time shifts and phase +
time sequence +
Control streams +
toggle switch +
More additive synthesis +
transfer function +
Linear and Curved Amplitude + | Waveshaping + | Filters +
transient generator +
Envelope Generators +
transition band +
Low-pass and high-pass filters +
triangle wave +
Classical waveforms +
unit generators +
Synthesizing a sinusoid +
unitary delay network +
Power conservation and complex +
vocoder +
Timbre stamping (classical vocoder) +
voice bank +
Polyphony +
von Hann window function +
Fourier analysis of non-periodic +
wave packet +
Resulting spectra +
waveshaping +
Waveshaping +
wavetable lookup +
Wavetables and samplers +
+
non-interpolating +
Wavetables and samplers +
+
wavetables +
+
transposition formula for looping +
Sampling +
transposition formula, momentary +
Sampling +
+
window +
Measures of Amplitude + | Fourier analysis and reconstruction +
window function +
Fourier analysis of non-periodic +
window size +
Pitch shifting + +
+ +

+ +


+
+Miller Puckette +2006-12-30 +
+ + diff --git a/node202.html b/node202.html new file mode 100644 index 0000000..b9cb20b --- /dev/null +++ b/node202.html @@ -0,0 +1,260 @@ + + + + + +Bibliography + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: About this document ... + Up: book + Previous: Index +   Contents +   Index +

+ + +

+Bibliography +

Bal03 +
+Mark Ballora. +
Essentials of Music Technology. +
Prentice Hall, Upper Saddle River, New Jersey, 2003. + +

Ble01 +
+Barry Blesser. +
An interdisciplinary synthesis of reverberation viewpoints. +
Journal of the Audio Engineering Society, 49(10):867-903, + 2001. + +

Bou00 +
+Richard Boulanger, editor. +
The Csound book. +
MIT Press, Cambridge, Massachusetts, 2000. + +

Cha80 +
+Hal Chamberlin. +
Musical applications of microprocessors. +
Hayden, Rochelle Park, N.J., 1980. + +

Cho73 +
+John Chowning. +
The synthesis of complex audio spectra by means of frequency + modulation. +
Journal of the Audio Engineering Society, 21(7):526-534, 1973. + +

Cho89 +
+John Chowning. +
Frequency modulation synthesis of the singing voice. +
In Max V. Mathews and John R. Pierce, editors, Current + Directions in Computer Music Research, pages 57-64. MIT Press, Cambridge, + 1989. + +

DJ85 +
+Charles Dodge and Thomas A. Jerse. +
Computer music : synthesis, composition, and performance. +
Schirmer, New York, 1985. + +

DL97 +
+Mark Dolson and Jean Laroche. +
About this phasiness business. +
In Proceedings of the International Computer Music Conference, + pages 55-58, Ann Arbor, 1997. International Computer Music Association. + +

GM77 +
+John M. Grey and James A. Moorer. +
Perceptual evaluations of synthesized musical instrument tones. +
Journal of the Acoustical Society of America, 62:454-462, + 1977. + +

Har87 +
+William M. Hartmann. +
Digital waveform generation by fractional addressing. +
Journal of the Acoustical Society of America, 82:1883-1891, + 1987. + +

KS83 +
+Kevin Karplus and Alex Strong. +
Digital synthesis of plucked-string and drum timbres. +
Computer Music Journal, 7(2):43-55, 1983. + +

Leb77 +
+Marc Lebrun. +
A derivation of the spectrum of FM with a complex modulating wave. +
Computer Music Journal, 1(4):51-52, 1977. + +

Leb79 +
+Marc Lebrun. +
Digital waveshaping synthesis. +
Journal of the Audio Engineering Society, 27(4):250-266, 1979. + +

Mat69 +
+Max V. Mathews. +
The Technology of Computer Music. +
MIT Press, Cambridge, Massachusetts, 1969. + +

Moo90 +
+F. Richard Moore. +
Elements of Computer Music. +
Prentice Hall, Englewood Cliffs, second edition, 1990. + +

PB87 +
+T. W. Parks and C.S. Burrus. +
Digital filter design. +
Wiley, New York, 1987. + +

Puc95a +
+Miller S. Puckette. +
Formant-based audio synthesis using nonlinear distortion. +
Journal of the Audio Engineering Society, 43(1):224-227, 1995. + +

Puc95b +
+Miller S. Puckette. +
Phase-locked vocoder. +
In IEEE ASSP Workshop on Applications of Signal Processing to + Audio and Acoustics, 1995. + +

Puc01 +
+Miller S. Puckette. +
Synthesizing sounds with specified, time-varying spectra. +
In Proceedings of the International Computer Music Conference, + pages 361-364, Ann Arbor, 2001. International Computer Music Association. + +

Puc05 +
+Miller S. Puckette. +
Phase bashing for sample-based formant synthesis. +
In Proceedings of the International Computer Music Conference, + pages 733-736, Ann Arbor, 2005. International Computer Music Association. + +

Reg93 +
+Phillip A. Regalia. +
Special filter design. +
In Sanjit K. Mitra and James F. Kaiser, editors, Handbook for + digital signal processing, pages 907-978. Wiley, New York, 1993. + +

RM69 +
+Jean-Claude Risset and Max V. Mathews. +
Analysis of musical instrument tones. +
Physics Today, 22:23-40, 1969. + +

RMW02 +
+Thomas D. Rossing, F. Richard Moore, and Paul A. Wheeler. +
The Science of Sound. +
Addison Wesley, San Francisco, third edition, 2002. + +

Roa01 +
+Curtis Roads. +
Microsound. +
MIT Press, Cambridge, Massachusetts, 2001. + +

Sch77 +
+Bill Schottstaedt. +
Simulation of natural instrument tones using frequency modulation + with a complex modulating wave. +
Computer Music Journal, 1(4):46-50, 1977. + +

SI03 +
+Julius Orion Smith III. +
Mathematics of the Discrete Fourier Transform (DFT), with Music + and Audio Applications. +
W3K Publishing, Menlo Park, California, 2003. + +

Ste96 +
+Kenneth Steiglitz. +
A Digital Signal Processing Primer. +
Addison-Wesley, Menlo Park, California, 1996. + +

Str85 +
+John Strawn, editor. +
Digital Audio Signal Processing. +
William Kaufmann, Los Altos, California, 1985. + +

Str95 +
+Allen Strange. +
Electronic music: systems, techniques, and controls. +
W. C. Brown, Dubuque, Iowa, 1995. +
+ +

+


+
+Miller Puckette +2006-12-30 +
+ + diff --git a/node203.html b/node203.html new file mode 100644 index 0000000..e731e59 --- /dev/null +++ b/node203.html @@ -0,0 +1,83 @@ + + + + + +About this document ... + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Up: book + Previous: Bibliography +   Contents +   Index +
+
+ + +

+About this document ... +

+

+This document was generated using the +LaTeX2HTML translator Version 2002-2-1 (1.71) +

+Copyright © 1993, 1994, 1995, 1996, +Nikos Drakos, +Computer Based Learning Unit, University of Leeds. +
+Copyright © 1997, 1998, 1999, +Ross Moore, +Mathematics Department, Macquarie University, Sydney. +

+The command line arguments were:
+ latex2html book +

+The translation was initiated by Miller Puckette on 2006-12-30 +


+
+Miller Puckette +2006-12-30 +
+ + diff --git a/node21.html b/node21.html new file mode 100644 index 0000000..290d00d --- /dev/null +++ b/node21.html @@ -0,0 +1,168 @@ + + + + + +Smoothed amplitude control with an envelope generator + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Major triad + Up: Examples + Previous: Amplitude control in decibels +   Contents +   Index +
+
+ + +

+Smoothed amplitude control with an envelope generator +

+ +

+As Figure 1.6 shows, one way to make smooth amplitude changes in a +signal without clicks is to multiply it by the output of an envelope generator +as shown in block diagram form in Figure 1.7. This may be +implemented in Pd using the line~ object: + +

+
+\fbox{ $ \mathrm{line}\sim $}: +envelope generator. +The output is a signal which ramps linearly from one value to another over +time, as determined by the messages received. The inlets take messages to +specify target values (left inlet) and time delays (right inlet). Because +of a general rule of Pd messages, a pair of numbers sent to the left inlet +suffices to specify a target value and a time together. The time is in +milliseconds (taking into account the sample rate), and the target value is +unitless, or in other words, its output range should conform to whatever +input it may be connected to. + +

+Example A03.line.pd demonstrates the use of a line~ object to control the +amplitude of a sinusoid. The active part is shown in Figure 1.12 +(part b). +The six message boxes are all connected to the line~ object, and are +activated by clicking on them; the top one, for instance, specifies that the +line~ ramp (starting at wherever its output was before receiving the +message) to the value 0.1 over two seconds. After the two seconds elapse, +unless other messages have arrived in the meantime, the output remains +steady at 0.1. Messages may arrive before the two seconds elapse, in which +case the line~ object abandons its old trajectory and takes up a +new one. + +

+Two messages to line~ might arrive at the same time or so close together +in time that no DSP computation takes place between the two; in this case, the +earlier message has no effect, since line~ won't have changed its output +yet to follow the first message, and its current output, unchanged, is then +used as a starting point for the second segment. An exception to this rule +is that, if line~ gets a time value of zero, the output value is +immediately set to the new value and further segments will start from the +new value; thus, by sending two pairs, the first with a time value of +zero and the second with a nonzero time value, one can independently specify +the beginning and end values of a segment in line~'s output. + +

+The treatment of line~'s right inlet is unusual among Pd objects in that +it forgets old values; a message with a single number such as ``0.1" is +always equivalent to the pair, ``0.1 0". Almost any other object will retain +the previous value for the right inlet, instead of resetting it to zero. + +

+Example A04.line2.pd  shows the line~ object's output graphically. Using +the various message boxes, you can recreate the effects shown in Figure +1.6. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Major triad + Up: Examples + Previous: Amplitude control in decibels +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node22.html b/node22.html new file mode 100644 index 0000000..e0c82a3 --- /dev/null +++ b/node22.html @@ -0,0 +1,129 @@ + + + + + +Major triad + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Conversion between frequency and + Up: Examples + Previous: Smoothed amplitude control with +   Contents +   Index +
+
+ + +

+Major triad +

+ +

+Example A05.output.subpatch.pd, whose active ingredients are shown in Figure +1.12 (part c), presents three sinusoids with frequencies in the +ratio 4:5:6, so that the lower two are separated by a major third, the +upper two by a minor third, and the top and bottom by a fifth. The lowest +frequency is 440, equal to A above middle C, or MIDI 69. The others are +approximately four and seven half-steps higher, respectively. The three +have equal amplitudes. + +

+The amplitude control in this example is taken care of by a new object called +output~. This isn't a built-in object of Pd, but is itself a Pd patch +which lives in a file, ``output.pd". (You can see the internals of +output~ by opening the properties menu for the box and selecting +``open".) You get two controls, one for amplitude in dB (100 meaning ``unit +gain"), and a ``mute" button. Pd's audio processing is turned on automatically +when you set the output level--this might not be the best behavior in +general, but it's appropriate for these example patches. The mechanism for +embedding one Pd patch as an object box inside another is discussed in Section +4.7. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Conversion between frequency and + Up: Examples + Previous: Smoothed amplitude control with +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node23.html b/node23.html new file mode 100644 index 0000000..d743653 --- /dev/null +++ b/node23.html @@ -0,0 +1,204 @@ + + + + + +Conversion between frequency and pitch + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: More additive synthesis + Up: Examples + Previous: Major triad +   Contents +   Index +
+
+ + +

+Conversion between frequency and pitch +

+ +

+Example A06.frequency.pd  (Figure 1.13) shows Pd's object for converting +pitch to frequency units (mtof, meaning ``MIDI to frequency") and its +inverse ftom. We also introduce two other object classes, +send and receive. + +

+ +

+ + + +
Figure 1.13: +Conversion between pitch and frequency in A06.frequency.pd.
\begin{figure}\psfig{file=figs/fig01.13.ps}\end{figure}
+
+ +

+
+\fbox{ $ \mathrm{mtof} $}, +\fbox{ $ \mathrm{ftom} $}: +convert MIDI pitch to frequency units according to the +Pitch/Frequency Conversion Formulas (Page [*]). Inputs +and outputs are messages (``tilde" equivalents of the two also exist, +although like dbtorms~ they're expensive in CPU time). +The ftom object's output is -1500 +if the input is zero or negative; and likewise, if you give mtof -1500 or lower it outputs zero. + +

+
+\fbox{ $ \mathrm{receive} $}, +\fbox{ $ \mathrm{r} $}: +Receive messages non-locally. +The receive object, which may be abbreviated as ``r", +waits for non-local messages to be sent by a send object (described below) +or +by a message box using redirection (the ``;" feature discussed in the +earlier example, A01.sinewave.pd). The argument (such as ``frequency" and ``pitch" +in this example) is the name to which messages are sent. Multiple +receive objects may share the same name, in which case any message +sent to that name will go to all of them. + +

+
+\fbox{ $\mathrm{send}$}, +\fbox{ $\mathrm{s}$\ }: +The send object, which may be abbreviated as ``s", directs +messages to receive objects. + +

+Two new properties of number boxes are used here. Earlier we've used them +as controls or as displays; here, the two number boxes each function as both. +If a number box gets a number in its inlet, it not only displays the number +but also repeats the number to its output. However, a number box may also be sent +a ``set" message, such as ``set 55" for example. This would set the value +of the number box to 55 (and display it) but not cause the output that would +result from the simple ``55" message. In this case, numbers coming from the +two receive objects are formatted (using message boxes) to read ``set 55" instead +of just ``55", and so on. (The special word ``$1" is replaced by the +incoming number.) This is done because otherwise we would have an infinite +loop: frequency would change pitch which would change frequency and so on +forever, or at least until something broke. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: More additive synthesis + Up: Examples + Previous: Major triad +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node24.html b/node24.html new file mode 100644 index 0000000..98e1dcb --- /dev/null +++ b/node24.html @@ -0,0 +1,175 @@ + + + + + +More additive synthesis + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Exercises + Up: Examples + Previous: Conversion between frequency and +   Contents +   Index +
+
+ + +

+More additive synthesis +

+ +

+The major triad (Example A06.frequency.pd, Page [*]) +shows one way to combine several sinusoids together by summing. +There are many other possible ways to organize collections of +sinusoids, of which we'll show two. Example A07.fusion.pd (Figure 1.14) shows four oscillators, +whose frequencies are +tuned in the ratio 1:2:3:4, with relative amplitudes 1, 0.1, 0.2, and 0.5. The +amplitudes are set by multiplying the outputs of the oscillators (the +*~ objects below the oscillators). + +

+The second, third, and fourth oscillator are turned on and off using a +toggle switch. +This is a graphical control, like the number box introduced earlier. The +toggle switch puts out 1 and 0 alternately when clicked on with the +mouse. This value is multiplied by the sum of the second, third, and fourth +oscillators, effectively turning them on and off. + +

+Even when all four oscillators are combined (with the toggle switch in the +``1" position), the result fuses into a single tone, +heard at the pitch of the leftmost oscillator. In effect this patch sums a +four-term Fourier series to generate a complex, periodic waveform. + +

+ +

+ + + +
Figure 1.14: +Additive synthesis using harmonically tuned oscillators.
\begin{figure}\psfig{file=figs/fig01.14.ps}\end{figure}
+
+ +

+Example A08.beating.pd (Figure 1.15) shows another possibility, in which six +oscillators are tuned into three pairs of neighbors, for instance 330 and 330.2 +Hertz. These pairs slip into and out of phase with each other, so that the +amplitude of the sum changes over time. Called +beating, +this phenomenon is frequently used for musical effects. + +

+ +

+ + + +
Figure 1.15: +Additive synthesis: six oscillators arranged into three beating pairs.
\begin{figure}\psfig{file=figs/fig01.15.ps}\end{figure}
+
+ +

+Oscillators may be combined in other ways besides simply summing their output, +and a wide range of resulting sounds is available. Example A09.frequency.mod.pd (not +shown here) demonstrates +frequency modulation + synthesis, in which one oscillator +controls another's frequency. This will be more fully described in Chapter +5. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Exercises + Up: Examples + Previous: Conversion between frequency and +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node25.html b/node25.html new file mode 100644 index 0000000..697547a --- /dev/null +++ b/node25.html @@ -0,0 +1,174 @@ + + + + + +Exercises + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Wavetables and samplers + Up: Sinusoids, amplitude and frequency + Previous: More additive synthesis +   Contents +   Index +
+
+ + +

+Exercises +

+ +

+ +

    +
  1. A sinusoid (Page [*]) has initial phase $\phi=0$ and +angular frequency +$\omega = \pi/10$. What is its period in samples? What is +the phase at sample number $n=10$? + +

    +

  2. +
  3. Two sinusoids have periods of 20 and 30 samples, respectively. What is +the period of the sum of the two? + +

    +

  4. +
  5. If 0 dB corresponds to an amplitude of 1, +how many dB corresponds to amplitudes of 1.5, 2, 3, and 5? + +

    +

  6. +
  7. Two uncorrelated signals of RMS amplitude 3 and 4 are added; what's the +RMS amplitude of the sum? + +

    +

  8. +
  9. How many uncorrelated signals, all of equal amplitude, would you have +to add to get a signal that is 9 dB greater in amplitude? + +

    +

  10. +
  11. What is the angular frequency of middle C at 44100 samples per second? + +

    +

  12. +
  13. Two sinusoids play at middle C (MIDI 60) and the neighboring C sharp +(MIDI 61). What is the difference, in Hertz, between their frequencies? + +

    +

  14. +
  15. How many cents is the interval between the seventh and the eighth harmonic of +a periodic signal? + +

    +

  16. +
  17. If an audio signal +$x[n], n = 0, ..., N-1$ has peak amplitude 1, what +is the minimum possible RMS amplitude? What is the maximum possible? + +

    +

  18. +
+
+ + +next + +up + +previous + +contents + +index +
+ Next: Wavetables and samplers + Up: Sinusoids, amplitude and frequency + Previous: More additive synthesis +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node26.html b/node26.html new file mode 100644 index 0000000..20e1a65 --- /dev/null +++ b/node26.html @@ -0,0 +1,416 @@ + + + + + +Wavetables and samplers + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: The Wavetable Oscillator + Up: book + Previous: Exercises +   Contents +   Index +
+
+ + +

+ +
+Wavetables and samplers +

+ +

+In Chapter 1 we treated audio signals as if they always flowed by in +a continuous stream at some sample rate. The sample rate isn't really a +quality of the audio signal, but rather it specifies how fast the individual +samples should flow into or out of the computer. But audio signals are at +bottom just sequences of numbers, and in practice there is no requirement that +they be ``played" sequentially. Another, complementary view is that +they can be stored in memory, and, later, they can be read back in any +order--forward, backward, back and forth, or totally at random. An +inexhaustible range of new possibilities opens up. + +

+For many years (roughly 1950-1990), magnetic tape served as the main storage +medium for sounds. Tapes were passed back and forth across magnetic pickups to +play the signals back in real time. Since 1995 or so, the predominant way +of storing sounds has been to keep them as digital audio signals, which are read +back with much greater freedom and facility than were the magnetic tapes. Many +modes of use dating from the tape era are still current, including cutting, +duplication, speed change, and time reversal. Other techniques, such as +waveshaping, have come into their own only in the digital era. + +

+Suppose we have a stored digital audio signal, which is just a sequence of +samples (i.e., numbers) $x[n]$ for +$n = 0, ..., N-1$, where $N$ is the length +of the sequence. Then if we have an input signal $y[n]$ (which we can imagine +to be flowing in real time), we can use its values as indices to look up values +of the stored signal $x[n]$. This operation, called +wavetable lookup, +gives us a new signal, $z[n]$, calculated as: +

+
+ + +\begin{displaymath}
+z[n] = x[y[n]]
+\end{displaymath} +
+
+

+Schematically we represent this operation as shown in Figure 2.1. + +

+ +

+ + + +
Figure 2.1: +Diagram for wavetable lookup. The input is in samples, +ranging approximately from 0 to the wavetable's size $N$, depending on the +interpolation scheme.
\begin{figure}\psfig{file=figs/fig02.01.ps}\end{figure}
+
+ +

+Two complications arise. First, the input values, $y[n]$, might lie outside +the range $0, ..., N-1$, in which case the wavetable $x[n]$ has no value and +the expression for the output $z[n]$ is undefined. In this situation we might +choose to +clip the input, that is, to substitute 0 for +anything negative and $N-1$ for anything N or greater. Alternatively, we might +prefer to wrap the input around end to end. Here we'll adopt the convention that +out-of-range samples are always clipped; when we need wraparound, we'll +introduce another signal processing operation to do it for us. + +

+The second complication is that the input values need not be integers; in other +words they might fall between the points of the wavetable. In general, this +is addressed by choosing some scheme for interpolating between the points of +the wavetable. For the moment, though, we'll just round +down to the nearest integer below the input. This is called +non-interpolating wavetable lookup, and its full definition is: +

+
+ + +\begin{displaymath}
+z[n] = \left \{ {
+\begin{array}{ll}
+x[ \lfloor y[n] \rflo...
+...x[N-1] & \mbox{if $y[n] \ge N-1$} \\
+\end{array} } \right .
+\end{displaymath} +
+
+

+(where +$\lfloor y[n] \rfloor$ means, ``the greatest integer not +exceeding $y[n]$"). + +

+Pictorally, we use $y[0]$ (a number) as a +location on the horizontal axis of the wavetable shown in Figure 2.1, +and the output, $z[0]$, is whatever we get on the vertical axis; and the +same for $y[1]$ and $z[1]$ and so on. The ``natural" range for the input $y[n]$ +is +$0 \le y[n] < N$. This is different from the usual range of an audio +signal suitable for output from the computer, which ranges from -1 to 1 in +our units. We'll see later that the usable range of input values, +from 0 to $N$ for non-interpolating lookup, shrinks slightly if interpolating lookup is used. + +

+Figure 2.2 (part a) shows a wavetable and the result of using two +different input signals as lookup indices into it. The wavetable +contains 40 points, which are numbered from 0 to 39. In part (b), a +sawtooth wave is used as the input signal $y[n]$. A sawtooth wave +is nothing but a ramp function repeated end to end. In this example the +sawtooth's range is from $0$ to +$40$ (this is shown in the vertical axis). The sawtooth wave thus scans +the wavetable from left to right--from the beginning point 0 to the endpoint +39--and does so every time it repeats. Over the fifty points shown +in Figure 2.2 (part b) the sawtooth wave makes +two and a half cycles. Its period is twenty samples, or in other +words the frequency (in cycles per second) is $R/20$. + +

+ +

+ + + +
Figure 2.2: +Wavetable lookup: (a) a wavetable; (b) and (d) signal inputs for +lookup; (c) and (e) the corresponding outputs.
\begin{figure}\psfig{file=figs/fig02.02.ps}\end{figure}
+
+ +

+Part (c) of Figure 2.2 shows the result of applying wavetable +lookup, using the table $x[n]$, to the signal $y[n]$. Since the sawtooth input +simply reads out the contents of the wavetable from left to right, repeatedly, +at a constant rate of precession, the result will be a new periodic signal, +whose waveform (shape) is derived from $x[n]$ and whose frequency is determined +by the sawtooth wave $y[n]$. + +

+Parts (d) and (e) show an example where the wavetable is read in a nonuniform +way; since the input signal rises from $0$ to $N$ and then later recedes to +$0$, we see the wavetable appear first forward, then frozen at its endpoint, +then backward. The table is scanned from left to right and then, more quickly, +from right to left. As in the previous example the incoming signal controls +the speed of precession while the output's amplitudes are those of the wavetable. + +

+


+ +Subsections + + + +
+ + +next + +up + +previous + +contents + +index +
+ Next: The Wavetable Oscillator + Up: book + Previous: Exercises +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node27.html b/node27.html new file mode 100644 index 0000000..07f4be5 --- /dev/null +++ b/node27.html @@ -0,0 +1,263 @@ + + + + + +The Wavetable Oscillator + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Sampling + Up: Wavetables and samplers + Previous: Wavetables and samplers +   Contents +   Index +
+
+ + +

+ +
+The Wavetable Oscillator +

+ +

+Figure 2.2 suggests an easy way to synthesize any desired fixed +waveform at any desired frequency, using the block diagram shown in Figure +2.3. The upper block is an oscillator--not the sinusoidal +oscillator we saw earlier, but one that produces sawtooth waves instead. Its +output values, as indicated at the left of the block, should range from $0$ to +the wavetable size $N$. This is used as an index into the wavetable lookup +block (introduced in Figure 2.1), resulting in a periodic waveform. +Figure 2.3 (part b) adds an envelope generator and a multiplier to control +the output amplitude in the same way as for the sinusoidal oscillator shown in +Figure 1.7 (Page [*]). Often, one uses a wavetable with (RMS or peak) amplitude 1, so that +the amplitude of the output is just the magnitude of the envelope generator's +output. + +

+ +

+ + + +
Figure 2.3: +Block diagrams: (a) for a wavetable lookup oscillator; (b) with +amplitude control by an envelope generator.
\begin{figure}\psfig{file=figs/fig02.03.ps}\end{figure}
+
+ +

+Wavetable oscillators are often used to synthesize sounds with specified, +static spectra. To do this, you can pre-compute $N$ samples of any waveform +of period $N$ (angular frequency $2\pi/N$) by adding up the elements of the +Fourier Series (Page [*]). The computation involved in +setting up the wavetable at first might be significant, but this may be done +in advance of the synthesis process, which might take place in real time. + +

+While direct additive synthesis of complex waveforms, as shown in Chapter 1, +is in principle infinitely flexible as a technique for producing time-varying +timbres, wavetable synthesis is much less expensive in terms of computation +but requires switching wavetables to change the timbre. An intermediate +technique, more flexible and expensive than simple wavetable synthesis but +less flexible and less expensive than additive synthesis, is to create +time-varying mixtures between a small number of fixed wavetables. If the +number of wavetables is only two, this is in effect a cross-fade between +the two waveforms, as diagrammed in Figure 2.4. Suppose we wish to +use some signal +$0 \le x[n] \le 1$ to control the relative strengths of the two +waveforms, so that, if $x[n] = 0$, we get the first one and if $x[n] = 1$ we +get the second. Denoting the two signals to be cross-faded by $y[n]$ and +$z[n]$, we compute the signal +

+
+ + +\begin{displaymath}
+(1 - x[n])y[n] + x[n]z[n]
+\end{displaymath} +
+
+

+or, equivalently and usually more efficient to calculate, +

+
+ + +\begin{displaymath}
+y[n] + x[n](z[n]-y[n])
+\end{displaymath} +
+
+

+This computation is diagrammed in Figure 2.4. + +

+ +

+ + + +
Figure 2.4: +Block diagram for cross-fading between two wavetables.
\begin{figure}\psfig{file=figs/fig02.04.ps}\end{figure}
+
+ +

+When using this technique to cross-fade between wavetable oscillators, it might +be desirable to keep the phases of corresponding partials the same across the +wavetables, so that their amplitudes combine additively when they are mixed. On +the other hand, if arbitrary wavetables are used (borrowed, for instance, from +a recorded sound) there will be a phasing effect as the different waveforms are +mixed. + +

+This scheme can be extended in a daisy chain to move along a continuous path +between a succession of timbres. Alternatively, or in combination with +daisy-chaining, cross-fading may be used to interpolate between two different +timbres, for example as a function of musical dynamic. To do this you +would prepare two or even several waveforms of a single synthetic voice +played at +different dynamics, and interpolate between successive ones as a function +of the output dynamic you want. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Sampling + Up: Wavetables and samplers + Previous: Wavetables and samplers +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node28.html b/node28.html new file mode 100644 index 0000000..2b6927c --- /dev/null +++ b/node28.html @@ -0,0 +1,583 @@ + + + + + +Sampling + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Enveloping samplers + Up: Wavetables and samplers + Previous: The Wavetable Oscillator +   Contents +   Index +
+
+ + +

+ +
+Sampling +

+ +

+``Sampling" + +is nothing more than recording a live signal into a wavetable, and then later +playing it out again. (In commercial samplers the entire wavetable is +usually called a ``sample" but to avoid confusion we'll only use the word +``sample" here to mean a single number in an audio signal.) + +

+At its simplest, a sampler is simply a wavetable oscillator, as was shown in +Figure 2.3. However, in the earlier discussion we imagined playing +the oscillator back at a frequency high enough to be perceived as a pitch, at +least 30 Hertz or so. In the case of sampling, the frequency is usually lower +than 30 Hertz, and so the period, at least 1/30 second and perhaps much more, is +long enough that you can hear the individual cycles as separate events. + +

+Going back to Figure 2.2, suppose that instead of 40 points the +wavetable $x[n]$ is a one-second recording, at an original +sample rate of 44100, so that it has 44100 points; and let +$y[n]$ in part (b) of the figure have a period of 22050 samples. This +corresponds to a frequency of 2 Hertz. But what we hear is not a pitched sound +at 2 cycles per second (that's too slow to hear as a pitch) but rather, we +hear the original recording $x[n]$ played back repeatedly at double speed. We've +just reinvented the sampler. + +

+In general, if we assume the sample rate $R$ of the recording is the same as +the output sample rate, if the wavetable has $N$ samples, and if we index +it with a sawtooth wave of period $M$, +the sample is sped up or slowed down by +a factor of $N/M$, equal to $N f / R$ if $f$ is the frequency in Hertz of the +sawtooth. If we denote the transposition factor by $t$ (so that, for instance, +$t=3/2$ means transposing upward a perfect fifth), and if we denote the +transposition in half-steps by $h$, then we get the +Transposition Formulas for Looping Wavetables: + +

+
+ + +\begin{displaymath}
+t = {N / M} = {{N f} / R}
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+h = 12 \, {\log _ 2} \left ( {N \over M} \right ) =
+12 \, {\log _ 2} \left ( {N f \over R} \right )
+\end{displaymath} +
+
+

+Frequently the desired transposition in half-steps ($h$) is known and the +formula must be solved for either $f$ or $N$: +

+
+ + +\begin{displaymath}
+f = {{2^{h/12} R} \over N}
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+N = {{2^{h/12} R} \over f}
+\end{displaymath} +
+
+

+ +

+So far we have used a sawtooth as the input wave $y[t]$, but, as suggested in +parts (d) and (e) of Figure 2.2, we could use anything we like as an +input signal. In general, the transposition may be time dependent and +is controlled by the rate of change of the input signal. + +

+The +transposition multiple $t$ and the transposition in half-steps $h$ are then +given by the +Momentary Transposition Formulas for Wavetables: + +

+
+ + +\begin{displaymath}
+t[n] = \left \vert y[n] - y[n-1] \right \vert
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+h[n] = 12 {{\log_2} \left \vert y[n] - y[n-1] \right \vert}
+\end{displaymath} +
+
+

+(Here the enclosing bars ``$\vert$" mean absolute value.) +For example, if +$y[n] = n$, then $z[n] = x[n]$ so we hear the wavetable at its original pitch, +and this is what the formula predicts since, in that case, +

+
+ + +\begin{displaymath}
+y[n]-y[n-1] = 1
+\end{displaymath} +
+
+

+On the other hand, if $y[n] = 2n$, then the wavetable is transposed up an +octave, consistent with +

+
+ + +\begin{displaymath}
+y[n]-y[n-1] = 2
+\end{displaymath} +
+
+

+If values of $y[n]$ are +decreasing with $n$, you hear the sample backward, but the transposition +formula still gives a positive multiplier. This all agrees with the +earlier Transposition Formula for Looping Wavetables; if a sawtooth ranges +from $0$ to $N$, $f$ times per second, +the difference of successive samples is just $N f / R$--except at the sample +at the beginning of each new cycle. + +

+It's well known that transposing a recording also transposes its timbre--this +is the ``chipmunk" effect. Not only are any periodicities (such as might +give rise to pitch) transposed, but so are the frequencies of +the overtones. Some timbres, notably those of vocal sounds, have characteristic +frequency ranges in which overtones are stronger than other nearby ones. +Such frequency ranges are also transposed, and this is is heard as +a timbre change. In language that will be made more precise in Section +5.1, +we say that the +spectral envelope is transposed along with the pitch or +pitches. + +

+In both this and the preceding section, we have considered playing +wavetables periodically. In Section 2.1 the playback +repeated quickly enough that the repetition gives rise to a pitch, say between +30 and 4000 times per second, roughly the range of a piano. In the current +section we assumed a wavetable one second long, and in this case +``reasonable" transposition factors (less than four octaves up) would give rise +to a rate of repetition below 30, usually much lower, and going down as low as +we wish. + +

+The number 30 is significant for another reason: it is roughly the maximum +number of separate events the ear can discern per second; for instance, 30 +vocal phonemes, or melodic notes, or attacks of a snare drum are about the most +we can hope to crowd into a second before our ability to distinguish them +breaks down. + +

+A continuum exists between samplers and wavetable oscillators, in that the +patch of Figure 2.3 can either be regarded as a sampler (if the +frequency of repetition is less than about 20 Hertz) or as a wavetable oscillator +(if the frequency is greater than about 40 Hertz). It is possible to move +continuously between the two regimes. +Furthermore, it is not necessary to play an entire wavetable in a loop; with a bit +more arithmetic we can choose sub-segments of the wavetable, and these can change +in length and location continuously as the wavetable is played. + +

+The practice of playing many small segments of a wavetable in rapid succession +is often called +granular synthesis. +For much more discussion of the possibilities, see [Roa01]. + +

+Figure 2.5 shows how to build a very simple looping sampler. In the +figure, if the frequency is $f$ and the segment size in samples is $s$, +the output transposition factor is given by $t = fs/R$, where R is the sample +rate at which the wavetable was recorded (which need not equal the sample rate +the block diagram is working at.) In practice, this equation must usually +be solved for either $f$ or $s$ to attain a desired transposition. + +

+In the figure, a sawtooth oscillator controls the location of wavetable lookup, +but the lower and upper values of the sawtooth aren't statically +specified as they were in Figure 2.3; rather, the sawtooth +oscillator simply ranges from 0 to 1 in value and the range is adjusted +to select a desired segment of samples in the wavetable. + +

+It might be desirable to specify the segment's location $l$ either as its +left-hand edge (its lower bound) or else as the segment's midpoint; in either +case we specify the length $s$ as a separate parameter. In the first +case, we start by +multiplying the sawtooth by $s$, so that it then ranges from $0$ to $s$; then +we add $l$ so that it now ranges from $l$ to $l+s$. In order to specify the +location as the segment's midpoint, we first subtract $1/2$ from the sawtooth +(so that it ranges from $-1/2$ to $1/2$), and then as before multiply by $s$ +(so that it now ranges from $-s/2$ to $s/2$) and add $l$ to give a range from +$l-s/2$ to $l+s/2$. + +

+ +

+ + + +
Figure 2.5: +A simple looping sampler, as yet with no amplitude control. +There are inputs to control the frequency and the segment size and location. +The ``-" operation is included if we wish the segment location to be specified +as the segment's midpoint; otherwise we specify the location of the left + end of the segment.
\begin{figure}\psfig{file=figs/fig02.05.ps}\end{figure}
+
+ +

+In the looping sampler, +we will need to worry about maintaining continuity between the beginning and the +end of segments of the wavetable; we'll take this up in the next section. + +

+A further detail is that, if the segment size and location are changing +with time (they might be digital audio signals themselves, for instance), +they will affect the transposition factor, and the pitch or timbre of the +output signal might waver up and down as a result. The simplest way to +avoid this problem is to synchronize changes in the values of $s$ and $l$ +with the regular discontinuities of the sawtooth; since the signal jumps +discontinuously there, the transposition is not really defined there anyway, +and, if you are enveloping to hide the discontinuity, the effects of changes +in $s$ and $l$ are hidden as well. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Enveloping samplers + Up: Wavetables and samplers + Previous: The Wavetable Oscillator +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node29.html b/node29.html new file mode 100644 index 0000000..b44904d --- /dev/null +++ b/node29.html @@ -0,0 +1,221 @@ + + + + + +Enveloping samplers + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Timbre stretching + Up: Wavetables and samplers + Previous: Sampling +   Contents +   Index +
+
+ + +

+ +
+Enveloping samplers +

+ +

+In the previous section we considered reading a wavetable either sporadically +or repeatedly to make a sampler. In most real applications we must deal with +getting the samples to start and stop cleanly, so that the output signal +doesn't jump discontinuously at the beginnings and ends of samples. This +discontinuity can sound like a click or a thump depending on the wavetable. + +

+The easiest way to do this, assuming we will always play a wavetable completely +from beginning to end, is simply to prepare it in advance so that it +fades in cleanly at the beginning and out cleanly at the end. This may even +be done when the wavetable is sampled live, by multiplying the +input signal by a line segment envelope timed to match the length of the +recording. + +

+In many situations, however, it is either inconvenient or impossible to +pre-envelope the wavetable--for example, we might want to play only part of +it back, or we may want to change the sharpness of the enveloping +dynamically. In Section 1.5 we had already seen how +to control the amplitude of sinusoidal oscillators using multiplication by a +ramp function (also known as an envelope generator), and we built this notion +into the wavetable oscillators of Figures 2.3 and 2.4. +This also works fine for turning samplers on and off to avoid discontinuities, +but with one major difference: whereas in wavetable synthesis, we were free to +assume that the waveform lines up end to end, so that we may choose +any envelope timing we want, in the case of sampling using unprepared waveforms, +we are obliged to get the envelope generator's output to zero by the time we +reach the end of the wavetable for the first time. This situation is pictured +in Figure 2.6. + +

+ +

+ + + +
Figure 2.6: +Differing envelope requirements for oscillators and samplers: (a) +in an oscillator, the envelope can be chosen to conform to any desired +timescale; (b) when the wavetable is a recorded sound, it's up to you +to get the envelope to zero before you hit the end of the wavetable for the +first time.
\begin{figure}\psfig{file=figs/fig02.06.ps}\end{figure}
+
+ +

+In situations where an arbitrary wavetable must be repeated as needed, the +simplest way to make the looping work continuously is to arrange for amplitude +change to be synchronized with the looping, using a separate wavetable (the +envelope). This may be implemented as shown in Figure 2.7. A single +sawtooth oscillator is used to calculate lookup indices for two wavetables, one +holding the recorded sound, and the other, an envelope shape. The main thing +to worry about is getting the inputs of the two wavetables each into its own +appropriate range. + +

+ +

+ + + +
Figure 2.7: +A sampler as in Figure 2.5, but with an additional +wavetable lookup for enveloping.
\begin{figure}\psfig{file=figs/fig02.07.ps}\end{figure}
+
+ +

+In many situations it is desirable to combine two or more copies of the looping +wavetable sampler at the same frequency and at a specified phase relationship. +This may be done so that when any particular one is at the end of its segment, +one or more others is in the middle of the same segment, so that the aggregate +is continuously making sound. To accomplish this, we need a way to generate +two or more sawtooth waves at the desired phase relationship that we can use in +place of the oscillator at the top of Figure 2.7. We can start with +a single sawtooth wave and then produce others at fixed phase relationships +with the first one. If we wish a sawtooth which is, say, $a$ cycles ahead of +the first one, we simply add the parameter $a$ and then take the fractional +part, which is the desired new sawtooth wave, as shown in Figure 2.8. + +

+ +

+ + + +
Figure 2.8: +A technique for generating two or more sawtooth waves with +fixed phase relationships between +them. The relative phase is controlled by the parameter $a$ (which takes the +value 0.3 in the graphed signals). The ``wrap" operation computes the fractional +part of its input.
\begin{figure}\psfig{file=figs/fig02.08.ps}\end{figure}
+
+ +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Timbre stretching + Up: Wavetables and samplers + Previous: Sampling +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node3.html b/node3.html new file mode 100644 index 0000000..46a0c9d --- /dev/null +++ b/node3.html @@ -0,0 +1,154 @@ + + + + + +#1 + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Contents + Up: book + Previous: #1 +   Contents +   Index +
+
+ + +

+#1 +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ +

+ + +

+ +

+ +
+ +The Theory and Technique of Electronic Music +
+
DRAFT: December 30, 2006 +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Miller Puckette +
+
+
+ + +

+ +

+
+Copyright ©2007 by World Scientific Publishing Co. Pte. Ltd. + +

+
+
+All rights reserved. + +

+


+
+Miller Puckette +2006-12-30 +
+ + diff --git a/node30.html b/node30.html new file mode 100644 index 0000000..25d90c4 --- /dev/null +++ b/node30.html @@ -0,0 +1,541 @@ + + + + + +Timbre stretching + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Interpolation + Up: Wavetables and samplers + Previous: Enveloping samplers +   Contents +   Index +
+
+ + +

+ +
+Timbre stretching +

+ +

+The wavetable oscillator of Section 2.1, which we extended in +Section 2.2 to encompass grabbing waveforms from arbitrary +wavetables such as recorded sounds, may additionally be extended in +a complementary way, that we'll refer to as +timbre stretching, for reasons we'll develop in this section. There are +also many other possible ways to extend wavetable synthesis, using for +instance frequency modulation and waveshaping, but we'll leave them to later +chapters. + +

+The central idea of timbre stretching is to reconsider the idea of the wavetable +oscillator as a mechanism for playing a stored wavetable (or part of one) end +to end. There is no reason the end of one cycle has to coincide with the +beginning of another. Instead, we could ask for copies of the waveform to +be spaced with alternating segments of silence; or, going in the opposite +direction, the waveform copies could be spaced more closely together so that +they overlap. The single parameter available in Section +2.1--the frequency--has been heretofore used to control +two separate aspects of the output: the period at which we start new +copies of the waveform, and also the length of each individual copy. The +idea of timbre stretching is to control the two independently. + +

+Figure 2.9 shows the result of playing a wavetable in three ways. +In each case the output waveform has period 20; in other words, the output frequency +is $R/20$ if $R$ is the output sample rate. In part (a) of the figure, each +copy of the waveform is played over 20 samples, so that the wave form fits +exactly into the cycle with no gaps and no overlap. In part (b), although the +period is still 20, the waveform is compressed into the middle half of the +period (10 samples); or in other words, the +duty cycle--the relative amount of time the waveform fills the +cycle--equals 50 percent. The remaining 50 percent of the time, the output +is zero. + +

+ +

+ + + +
Figure 2.9: +A waveform is played at a period of 20 samples: (a) at 100 percent +duty cycle; (b) at 50 percent; (c) at 200 percent
\begin{figure}\psfig{file=figs/fig02.09.ps}\end{figure}
+
+ +

+In part (c), the waveform is stretched to 40 samples, and since it is still +repeated every 20 samples, the waveforms overlap two to one. The duty cycle +is thus 200 percent. + +

+Suppose now that the 100 percent duty cycle waveform has a Fourier series +(Section 1.7) equal to: +

+
+ + +\begin{displaymath}
+{x_{100}}[n] = {a_0} +
+{a_1} \cos \left ( \omega n + {\phi...
+...+
+{a_2} \cos \left ( 2 \omega n + {\phi_2} \right ) + \cdots
+\end{displaymath} +
+
+

+where $\omega $ is the angular frequency (equal to $\pi/10$ in our example since +the period is 20.) To simplify this example we won't worry about where +the series must end, and will just let it go on forever. + +

+We would like to relate this to the Fourier series of the other two waveforms +in the example, in order to show how changing the duty cycle changes the +timbre of the result. For the 50 percent duty cycle case (calling the +signal ${x_{50}}[n]$), we observe that the waveform, if we replicate it out +of phase by a half period and add the two, gives exactly the original waveform +at twice the frequency: +

+
+ + +\begin{displaymath}
+{x_{100}}[2n] = {x_{50}}[n] + {x_{50}}[n+{\pi \over \omega}]
+\end{displaymath} +
+
+

+where $\omega $ is the angular frequency (and so $\pi / \omega$ is half the +period) of both signals. So if we denote the Fourier series of ${x_{50}}[n]$ +as: +

+
+ + +\begin{displaymath}
+{x_{50}}[n] = {b_0} +
+{b_1} \cos \left ( \omega n + {\thet...
+...
+{b_2} \cos \left ( 2 \omega n + {\theta_2} \right ) + \cdots
+\end{displaymath} +
+
+

+and substitute the Fourier series for all three terms above, we get: +

+
+ + +\begin{displaymath}
+{a_0} +
+{a_1} \cos \left ( 2 \omega n + {\phi_1} \right ) +
+{a_2} \cos \left ( 4 \omega n + {\phi_2} \right ) + \cdots
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+=
+{b_0} +
+{b_1} \cos \left ( \omega n + {\theta_1} \right...
+...
+{b_2} \cos \left ( 2 \omega n + {\theta_2} \right ) + \cdots
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
++
+{b_0} +
+{b_1} \cos \left ( \omega n + \pi + {\theta_1} ...
+...\cos \left ( 2 \omega n + 2 \pi + {\theta_2} \right ) + \cdots
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+= 2 {b_0} +
+2 {b_2} \cos \left ( 2 \omega n + {\theta_2} \...
+... {b_4} \cos \left ( 4 \omega n + {\theta_4} \right ) + \cdots
+\end{displaymath} +
+
+

+and so +

+
+ + +\begin{displaymath}
+{a_0} = 2{b_0}, \,\, {a_1} = 2{b_2}, \,\, {a_2} = 2{b_4}
+\end{displaymath} +
+
+

+and so on: the even partials of $x_{50}$, at least, are obtained by stretching +the partials of $x_{100}$ out twice as far. (We don't yet know about the odd +partials of $x_{50}$, and these might be in line with the even ones or not, +depending on factors we can't control yet. Suffice it to say for the moment, +that if the waveform connects smoothly with the horizontal axis at both +ends, the odd partials will act globally like the even ones. To make this +more exact we'll need Fourier analysis, which is developed in Chapter 9.) + +

+Similarly, $x_{100}$ and $x_{200}$ are related in exactly the same way: +

+
+ + +\begin{displaymath}
+{x_{200}}[2n] = {x_{100}}[n] + {x_{100}}[n+{\pi \over \omega}]
+\end{displaymath} +
+
+

+so that, if the amplitudes of the fourier series of $x_{200}$ are denoted +by $c_0$, $c_1$, $\ldots$, we get: +

+
+ + +\begin{displaymath}
+{c_0} = 2{a_0}, {c_1} = 2{a_2}, {c_2} = 2{a_4}, \ldots
+\end{displaymath} +
+
+

+so that the partials of $x_{200}$ are those of $x_{100}$ shrunk, by half, +to the left. + +

+We see that squeezing the waveform by a factor of 2 has the effect of +stretching the Fourier series out by two, and on the other hand stretching the +waveform by a factor of two squeezes the Fourier series by two. By the same +sort of argument, in general it turns out that stretching the waveform by a +factor of any positive number $f$ squeezes the overtones, in frequency, by the +reciprocal $1/f$--at least approximately, and the approximation is at least +fairly good if the waveform ``behaves well" at its ends. +(As we'll see later, the waveform can always be forced to behave at least +reasonably well by enveloping it as in Figure 2.7.) + +

+Figure 2.10 shows the spectra of the three waveforms--or in +other words the one waveform at three duty cycles--of Figure +2.9. The figure emphasizes the relationship between the three +spectra by drawing curves through each, which, on inspection, turn out to be +the same curve, only stretched differently; as the duty cycle goes up, the +curve is both compressed to the left (the frequencies all drop) and amplified +(stretched upward). + +

+ +

+ + + +
Figure 2.10: +The Fourier series magnitudes for the waveforms shown in Figure +2.9. The horizontal axis is the harmonic number. We only ``hear" +the coefficients for integer harmonic numbers; the continuous curves are the +``ideal" contours.
\begin{figure}\psfig{file=figs/fig02.10.ps}\end{figure}
+
+ +

+The continuous curves have a very simple interpretation. Imagine squeezing the +waveform into some tiny duty cycle, say 1 percent. The contour will be +stretched by a factor of 100. Working backward, this would allow us to +interpolate between each pair of consecutive points of the 100 percent duty +cycle contour (the original one) with 99 new ones. Already in the figure the +50 percent duty cycle trace defines the curve with twice the resolution of +the original one. In the limit, as the duty cycle gets arbitrarily small, the +spectrum is filled in more and more densely; and the limit is the ``true" +spectrum of the waveform. + +

+This ``true" spectrum is only audible at suitably low duty cycles, though. The +200 percent duty cycle example actually misses the peak in the ideal +(continuous) spectrum because the peak falls below the first harmonic. In +general, higher duty cycles sample the ideal curve at lower resolutions. + +

+Timbre stretching is an extremely powerful technique for generating +sounds with systematically variable spectra. Combined with the possibilities of +mixtures of waveforms (Section 2.1) and of snatching +endlessly variable waveforms from recorded samples (Section +2.2), it is possible to generate all sorts of sounds. +For example, the block diagram of Figure 2.7 gives us a +way to to grab and stretch timbres from a recorded wavetable. When the +``frequency" parameter $f$ is high enough to be audible as a pitch, the +``size" +parameter $s$ can be thought of as controlling timbre stretch, via the +formula $t = fs/R$ from Section 2.2, where we now +reinterpret $t$ as the factor by which the timbre is to be stretched. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Interpolation + Up: Wavetables and samplers + Previous: Enveloping samplers +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node31.html b/node31.html new file mode 100644 index 0000000..d46e44d --- /dev/null +++ b/node31.html @@ -0,0 +1,644 @@ + + + + + +Interpolation + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Examples + Up: Wavetables and samplers + Previous: Timbre stretching +   Contents +   Index +
+
+ + +

+ +
+Interpolation +

+ +

+As mentioned before, interpolation schemes are often used to increase the +accuracy of table lookup. Here we will give a somewhat simplified account of +the effects of table sizes and interpolation schemes on the result of table +lookup. + +

+To speak of error in table lookup, we must view the wavetable as a sampled +version of an underlying function. When we ask for a value of the +underlying function which lies between the points of the wavetable, the error +is the difference between the result of the wavetable lookup and the ``ideal" +value of the function at that point. The most revealing study of wavetable +lookup error assumes that the underlying function is a sinusoid (Page +[*]). We can then understand what happens to other wavetables by +considering them as superpositions (sums) of sinusoids. + +

+The accuracy of lookup from a wavetable containing a sinusoid depends +on two factors: the quality of the interpolation scheme, and the period +of the sinusoid. In general, the longer the period of the sinusoid, the more +accurate the result. + +

+In the case of a synthetic wavetable, we might know its sinusoidal components +from having specified them--in which case the issue becomes one of choosing a +wavetable size appropriately, when calculating the wavetable, to match the +interpolation algorithm and meet the desired standard of accuracy. In the case +of recorded sounds, the accuracy analysis might lead us to adjust the sample +rate of the recording, either at the outset or else by resampling later. + +

+Interpolation error for a sinusoidal wavetable can have two components: first, +the continuous signal (the theoretical result of reading the wavetable +continuously in time, as if the output sample rate were infinite) might +not be a pure sinusoid; and second, the amplitude might be wrong. (It +is possible to get phase errors as well, but only through +carelessness.) + +

+In this treatment we'll only consider polynomial interpolation schemes such as +rounding, linear interpolation, and cubic interpolation. These schemes amount +to evaluating polynomials (of degree zero, one, and three, respectively) in the +interstices between points of the wavetable. The idea is that, for any index +$x$, we choose a nearby reference point ${x_0}$, and let the output be calculated +by some polynomial: +

+
+ + +\begin{displaymath}
+{y_{\mathrm{INT}}}(x) =
+{a_0} + {a_1} (x - {x_0}) + {a_2} {{({x - x_0})}^ 2 } + \cdots +
+{a_n} {{({x - x_0})}^ n }
+\end{displaymath} +
+
+

+Usually we choose the polynomial which passes through the $n+1$ nearest +points of the wavetable. For 1-point interpolation (a zero-degree polynomial) +this means letting $a_0$ equal the nearest point of the wavetable. For +two-point interpolation, we draw a line segment between the two points of the +wavetable on either side of the desired point $x$. We can let $x_0$ be the +closest integer to the left of $x$ (which we write as +$\lfloor x \rfloor$) and then the +formula for linear interpolation is: +

+
+ + +\begin{displaymath}
+{y_{\mathrm{INT}}}(x) =
+y[{x_0}] + (y[{x_0} + 1]- y[{x_0}]) \cdot (x - {x_0})
+\end{displaymath} +
+
+

+which is a polynomial, as in the previous formula, with +

+
+ + +\begin{displaymath}
+{a_0} = y[{x_0}]
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+{a_1} = y[{x_0} + 1]- y[{x_0}]
+\end{displaymath} +
+
+

+In general, you can fit exactly one polynomial of degree $n-1$ through any +$n$ points as long as their $x$ values are all different. + +

+Figure 2.11 shows the effect of using linear (two-point) interpolation +to fill in a sinusoid of period 6. At the top are three traces: the original +sinusoid, the linearly-interpolated result of using 6 points per period to +represent the sinusoid, and finally, another sinusoid, of slightly smaller +amplitude, which better matches the six-segment waveform. The error introduced +by replacing the original sinusoid by the linearly interpolated version has +two components: first, a (barely perceptible) change in amplitude, and second, +a (very perceptible) distortion of the wave shape. + +

+ +

+ + + +
Figure 2.11: +Linear interpolation of a sinusoid: (upper graph) the original sinusoid, the +interpolated sinusoid, and the best sinusoidal fit back to the interpolated +version; (lower graph) the error, rescaled vertically.
\begin{figure}\psfig{file=figs/fig02.11.ps}\end{figure}
+
+ +

+The bottom graph in the figure shows the difference between the interpolated +waveform and the best-fitting sinusoid. This is a residual signal all of +whose energy lies in overtones of the original sinusoid. +As the number of points increases, +the error decreases in magnitude. Since the error is the difference between +a sinusoid and a sequence of approximating line segments, the magnitude of +the error is +roughly proportional to the square of the phase difference between each +pair of points, or in other words, inversely proportional to the square +of the number of points in the wavetable. Put another way, wavetable +error decreases by 12 dB each time the table doubles in size. (This +rule of thumb is only good for tables with 4 or more points.) + +

+Four-point (cubic) interpolation works similarly. The interpolation formula +is: +

+
+ + +\begin{displaymath}
+{y_{\mathrm{INT}}}(x) =
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+-f (f-1)(f-2)/6 \cdot y[{x_0}-1]
++ (f+1)(f-1)(f-2)/2 \cdot y[{x_0}]
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+- (f+1) f (f-2) / 2 \cdot y[{x_0}+1]
++ (f+1) f (f-1) / 6 \cdot y[{x_0}+2]
+\end{displaymath} +
+
+

+where $f = x - {x_0}$ is the fractional part of the index. For tables +with 4 or more points, doubling the number of points on the table tends +to improve the RMS error by 24 dB. Table 2.1 shows the +calculated RMS error for sinusoids at various periods for 1, 2, and +4 point interpolation. (A slightly different quantity is measured in +[Moo90, p.164]. There, the errors in amplitude and phase are also +added in, yielding slightly more pessimistic results. See also +[Har87].) + +

+

+
+ + + +
Table 2.1: +RMS error for table lookup using 1, 2, and 4 point interpolation +at various table sizes.
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
periodinterpolation points
 124
2-1.2-17.1-20.2
3-2.0-11.9-15.5
4-4.2-17.1-24.8
8-10.0-29.6-48.4
16-15.9-41.8-72.5
32-21.9-53.8-96.5
64-27.9-65.9-120.6
128-34.0-77.9-144.7
+ +
+

+
+ +

+The allowable input domain for table lookup depends on the number of points of +interpolation. In general, when using $k$-point interpolation into a table +with $N$ points, the input may range over an interval of $N + 1 - k$ points. +If $k=1$ (i.e., no interpolation at all), the domain is from $0$ to $N$ +(including the endpoint at $0$ but excluding the one at $N$) assuming input +values are truncated (as is done for non-interpolated table lookup in Pd). The +domain is from -$1/2$ to $N-1/2$ if, instead, we round the input to the nearest +integer instead of interpolating. In either case, the domain stretches over a +length of $N$ points. + +

+For two-point interpolation, the input must lie between the first and last +points, that is, between $0$ and $N-1$. So the $N$ points suffice to define +the function over a domain of length $N-1$. For four-point interpolation, +we cannot get values for inputs between 0 and 1 (not having the required +two points to the left of the input) and neither can we for the space between +the last two points ($N-2$ and $N-1$). So in this case the domain reaches from +$1$ to $N-2$ and has length $N-3$. + +

+Periodic waveforms stored in wavetables require special treatment at the +ends of the table. For example, suppose we wish to store a pure sinusoid of +length $N$. For non-interpolating table lookup, it suffices to set, for +example, +

+
+ + +\begin{displaymath}
+x[n] = \cos(2 \pi n / N) ,\, n = 0, \ldots, N-1
+\end{displaymath} +
+
+

+For two-point interpolation, we need $N+1$ points: +

+
+ + +\begin{displaymath}
+x[n] = \cos(2 \pi n / N) ,\, n = 0, \ldots, N
+\end{displaymath} +
+
+

+In other words, we must repeat the first ($n=0$) point at the end, so that the +last segment from $N-1$ to $N$ reaches back to the beginning value. + +

+For four-point interpolation, the cycle must be adjusted to start at the point +$n=1$, since we can't get properly interpolated values out for inputs less than +one. If, then, one cycle of the wavetable is arranged from $1$ to $N$, we +must supply extra points for $0$ (copied from $N$), and also $N+1$ and $N+2$, +copied from $1$ and $2$, to make a table of length $N+3$. For the same sinusoid +as above, the table should contain: +

+
+ + +\begin{displaymath}
+x[n] = \cos(2 \pi (n-1) / N) ,\, n = 0, \ldots, N+2
+\end{displaymath} +
+
+

+ +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Examples + Up: Wavetables and samplers + Previous: Timbre stretching +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node32.html b/node32.html new file mode 100644 index 0000000..37deba2 --- /dev/null +++ b/node32.html @@ -0,0 +1,94 @@ + + + + + +Examples + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Wavetable oscillator + Up: Wavetables and samplers + Previous: Interpolation +   Contents +   Index +
+
+ + +

+Examples +

+ +

+


+ +Subsections + + + +

+
+Miller Puckette +2006-12-30 +
+ + diff --git a/node33.html b/node33.html new file mode 100644 index 0000000..90c11c2 --- /dev/null +++ b/node33.html @@ -0,0 +1,161 @@ + + + + + +Wavetable oscillator + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Wavetable lookup in general + Up: Examples + Previous: Examples +   Contents +   Index +
+
+ + +

+Wavetable oscillator +

+ +

+Example B01.wavetables.pd, shown in Figure 2.12, implements a wavetable +oscillator, which plays back from a wavetable named ``table10". Two new Pd +primitives are shown here. First is the wavetable itself, which appears at +right in the figure. You can ``mouse" on the wavetable to change its shape and +hear the sound change as a result. Not shown in the figure but demonstrated in +the patch is Pd's facility for automatically calculating wavetables with +specified partial amplitudes, which is often preferable to drawing waveforms by +hand. You can also read and write tables to (text or sound) files for +interchanging data with other programs. The other novelty is an object class: + +

+ +

+ + + +
Figure 2.12: +A wavetable oscillator: B01.wavetables.pd.
\begin{figure}\psfig{file=figs/fig02.12.ps}\end{figure}
+
+ +

+
+\fbox{ $ \mathrm{tabosc4}\sim $}: +a wavetable oscillator. The ``4" indicates that this class uses 4-point +(cubic) interpolation. In the example, the table's name, ``table10", is +specified as a creation argument to the tabosc4~ object. +(You can also switch between wavetables dynamically by sending appropriate +messages to the object.) + +

+Wavetables used by tabosc4~ must always have a period +equal to a power of two; but as shown above, the wavetable must have three +extra points wrapped around the ends. Allowable table lengths are thus +of the form ${2^m} + 3$, such as 131, 259, 515, etc. + +

+Wavetable oscillators are not limited to use as audio oscillators. Patch +B02.wavetable.FM.pd (not pictured here) uses a pair of wavetable oscillators in series. +The first one's output is used as the input of the second one, and thus +controls its frequency which changes periodically in time. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Wavetable lookup in general + Up: Examples + Previous: Examples +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node34.html b/node34.html new file mode 100644 index 0000000..1489e1a --- /dev/null +++ b/node34.html @@ -0,0 +1,219 @@ + + + + + +Wavetable lookup in general + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Using a wavetable as + Up: Examples + Previous: Wavetable oscillator +   Contents +   Index +
+
+ + +

+Wavetable lookup in general +

+ +

+The tabosc4~ class, while handy and efficient, is somewhat +specialized and for many of the applications described in this chapter we need +something more general. Example B03.tabread4.pd (Figure 2.13) demonstrates +the timbre stretching technique discussed in Section 2.4. +This is a simple example of a situation where tabosc4~ would +not have sufficed. There are new classes introduced here: + +

+ +

+ + + +
Figure 2.13: +A wavetable oscillator with variable duty cycle: B03.tabread4.pd.
\begin{figure}\psfig{file=figs/fig02.13.ps}\end{figure}
+
+ +

+
+\fbox{ $\mathrm{tabread4}\sim$\ }: +wavetable lookup. As in tabosc4~ the table is read using +4-point interpolation. But whereas tabosc4~ takes a frequency +as input and automatically reads the waveform in a repeating pattern, the +simpler tabread4~ expects the table lookup index as input. +If you want to use it to do something repetitious, as in this example, the +input itself has to be a repeating waveform. Like tabosc4~ (and all the other table reading and writing objects), +you can send messages to select which table to use. + +

+
+\fbox{ $\mathrm{tabwrite}\sim$\ }: +record an audio signal into a wavetable. In this example the +tabwrite~ is used to display the output (although later +on it will be used for all sorts of other things.) Whenever it receives a +``bang" message from the pushbutton icon above it, tabwrite~ begins +writing successive samples of its input to the named table. + +

+Example B03.tabread4.pd shows how to combine a phasor~ and a tabread4~ object to make a wavetable oscillator. The phasor~'s output ranges from +0 to 1 in value. In this case the input wavetable, named ``waveform12", is 131 +elements long. The domain for the tabread4~ object is thus from 1 to +129. To adjust the range of the phasor~ accordingly, we multiply it by +the length of the domain (128) so that it reaches between 0 and 128, and then +add 1, effectively sliding the interval to the right by one point. This +rescaling is accomplished by the *~ and +~ objects +between the phasor~ and the tabread4~. + +

+With only these four boxes we would have essentially reinvented the +tabosc4~ class. In this example, however, the multiplication +is not by a constant 128 but by a variable amount controlled by the ``squeeze" +parameter. The function of the four boxes at the right hand side of the patch +is to supply the *~ object with values to scale the +phasor~ by. This makes use of one more new object class: + +

+
+\fbox{ $\mathrm{pack}$\ }: +compose a list of two or more elements. The creation arguments establish the +number of arguments, their types (usually numbers) and their initial values. +The inlets (there will be as many as you specified creation arguments) update +the values of the message arguments, and, if the leftmost inlet is changed +(or just triggered with a ``bang" message), the message is output. + +

+In this patch the arguments are initially 0 and 50, but the number box will +update the value of the first argument, so that, as pictured, the most recent +message to leave the pack object was ``206 50". The effect of this +on the line~ object below is to ramp to 206 in 50 milliseconds; in +general the output of the line~ object is an audio signal that smoothly +follows the sporadically changing values of the number box labeled ``squeeze". + +

+Finally, 128 is added to the ``squeeze" value; if ``squeeze" takes non-negative +values (as the number box in this patch enforces), the range-setting multiplier +ranges the phasor by 128 or more. If the value is greater than 128, the effect +is that the rescaled phasor spends some fraction of its cycle stuck at the end +of the wavetable (which clips its input to 129). The result is that the +waveform is scanned over some fraction of the cycle. As shown, the waveform +is squeezed into 128/(128+206) of the cycle, so the spectrum is stretched by +a factor of about 1/2. + +

+For simplicity, this patch is subtly different from the example of Section +2.4 in that the waveforms are squeezed toward the beginning +of each cycle and not toward the middle. This has the effect of slightly +changing the phase of the various partials of the waveform as it is stretched +and squeezed; if the squeezing factor changes quickly, the corresponding phase +drift will sound like a slight wavering in pitch. This can be avoided by +using a slightly more complicated arrangement: subtract 1/2 from the +phasor~, multiply it by 128 or more, and then add 65 instead of one. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Using a wavetable as + Up: Examples + Previous: Wavetable oscillator +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node35.html b/node35.html new file mode 100644 index 0000000..fb505c5 --- /dev/null +++ b/node35.html @@ -0,0 +1,158 @@ + + + + + +Using a wavetable as a sampler + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Looping samplers + Up: Examples + Previous: Wavetable lookup in general +   Contents +   Index +
+
+ + +

+Using a wavetable as a sampler +

+ +

+Example B04.sampler.pd (Figure 2.14) shows how to use a wavetable as a +sampler. In this example the index into the sample (the wavetable) is controlled +by mousing on a number box at top. A convenient scaling for the number box is +hundredths of a second; to convert to samples (as the input of +tabread4~ requires) we multiply by 44100 samples/sec times 0.01 sec to get 441 samples +per unit, before applying pack and line~ in much the same way +as they were used in the previous example. +The transposition you hear depends on how quickly you mouse up and down. +This example has introduced one new object class: + +

+ +

+ + + +
Figure 2.14: +A sampler with mouse-controlled index: B04.sampler.pd.
\begin{figure}\psfig{file=figs/fig02.14.ps}\end{figure}
+
+ +

+
+\fbox{ $\mathrm{hip}\sim$\ }: +simple high-pass (low-cut) filter. The creation argument gives the roll-off +frequency in cycles per second. We use it here to eliminate the constant +(zero-frequency) +output when the input sits in a single sample (whenever you aren't actively +changing the wavetable reading location with the mouse). Filters are discussed +in Chapter 8. + +

+The pack and line~ in this example are not included merely to +make the sound more continuous, but are essential to making the sound +intelligible at all. If the index into the wavetable lookup simply changed +every time the mouse moved a pixel (say, twenty to fifty times a second) the +overwhelming majority of samples would get the same index as the previous +sample (the other 44000+ samples, not counting the ones where the mouse +moved.) So the speed of precession would almost always be zero. Instead of +changing transpositions, you would hear 20 to 50 cycles-per-second grit. (Try +it to find out what that sounds like!) + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Looping samplers + Up: Examples + Previous: Wavetable lookup in general +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node36.html b/node36.html new file mode 100644 index 0000000..d2c9cb1 --- /dev/null +++ b/node36.html @@ -0,0 +1,228 @@ + + + + + +Looping samplers + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Overlapping sample looper + Up: Examples + Previous: Using a wavetable as +   Contents +   Index +
+
+ + +

+Looping samplers +

+ +

+In most situations, you'll want a more automated way than moving the mouse to +specify wavetable read locations; for instance, you might want to be able to +play a sample at a steady transposition; you might have several samples playing +back at once (or other things requiring attention), or you might want to switch +quickly between samples or go to prearranged locations. In the next few +examples we'll develop an automated looping sample reader, which, although only +one of many possible approaches, is a powerful and often-used one. + +

+Patches B05.sampler.loop.pd and B06.sampler.loop.smooth.pd show how to do this: the former in the simplest +possible way and the latter (pictured in Figure 2.15, part a) +incorporating a second waveshape to envelope the sound as described in +Section 2.3. One new object class +is introduced here: + +

+ +

+ + + +
Figure 2.15: +(a) a looping sampler with a synchronized envelope (B06.sampler.loop.smooth.pd); (b) the +same, but with a control for read location (B08.sampler.nodoppler.pd).
\begin{figure}\psfig{file=figs/fig02.15.ps}\end{figure}
+
+ +

+
+\fbox{ $\mathrm{cos}\sim$\ }: +compute the cosine of $2\pi $ times the input signal (so that 0 to 1 makes a whole +cycle). Unlike the table reading classes in Pd, cos~ handles +wraparound so that there is no range limitation on its input. + +

+In Figure 2.15 (part a), a phasor~ object supplies both +indices into the wavetable (at right) and phases for a half-cosine-shaped +envelope function at left. These two are multiplied, and the product is +high-pass filtered and output. Reading the wavetable is straightforward; the +phasor is multiplied by a ``chunk size" parameter, added to 1, and used as an +index to tabread4~The chunk size parameter is multiplied by +441 to convert it from hundredths of a second to samples. This corresponds +exactly to the block diagram shown in Figure 2.5, with a segment +location of 1. (The segment location can't be 0 because 1 is the minimum index +for which tabread4~ works.) + +

+The left-hand signal path in the example corresponds to the enveloping +wavetable lookup technique shown in Figure 2.7. Here the sawtooth +wave is adjusted to the range (-1/4, 1/4) (by subtracting and multiplying by +0.5), and then sent to cos~. This reads the cosine +function in the range ($-\pi/2$, $\pi /2$), thus giving only the positive half +of the waveform. + +

+Part (b) of Figure 2.15 introduces a third parameter, the ``read +point", which specifies where in the sample the loop is to start. (In part (a) +we always started at the beginning.) The necessary change is simple enough: +add the ``read point" control value, in samples, +to the wavetable index and proceed as before. To avoid discontinuities +in the index we smooth the read point value using +pack and line~ objects, just as we did in +the first sampler example (Figure 2.14). + +

+This raises an important, though subtle, issue. The Momentary +Transposition Formula (Page [*]) predicts that, as +long as the chunk size and read point aren't changing in time, the +transposition is just the frequency times the chunk size (as always, using +appropriate units; Hertz and seconds, for example, so that the product is +dimensionless). However, varying the chunk size and read point in time will +affect the momentary transposition, often in very noticeable ways, as can be +heard in Example B07.sampler.scratch.pd. Example B08.sampler.nodoppler.pd (the one shown in the figure) shows +one possible way of controlling this effect, while introducing a new object +class: + +

+
+\fbox{ $\mathrm{samphold}\sim$\ }: +a sample and hold unit. (This will be familiar to analog synthesizer users, +but with a digital twist; for more details see Section 3.7.) +This stores a single sample of the left-hand-side +input and outputs it repeatedly, until caused by the right-hand-side input (also +a digital audio signal, called the trigger) to overwrite the stored +sample with a new one--again +from the left-hand-side input. The unit acquires a new sample whenever +the trigger's numerical value falls from one sample to the next. This is +designed to be easy to pair with phasor~ objects, to facilitate +triggering on phase wraparounds. + +

+Example B08.sampler.nodoppler.pd uses two samphold~ objects to update the values +of the chunk size and read point, exactly when the phasor~ wraps around, at which moments the cosine envelope is at zero so the effect +of the instantaneous changes can't be heard. In this situation we can apply +the simpler Transposition Formula for Looping Wavetables to relate frequency, +chunk size, and transposition. This is demonstrated in Example B09.sampler.transpose.pd (not shown). + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Overlapping sample looper + Up: Examples + Previous: Using a wavetable as +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node37.html b/node37.html new file mode 100644 index 0000000..ce3a563 --- /dev/null +++ b/node37.html @@ -0,0 +1,219 @@ + + + + + +Overlapping sample looper + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Automatic read point precession + Up: Examples + Previous: Looping samplers +   Contents +   Index +
+
+ + +

+Overlapping sample looper +

+ +

+As described in Section 2.3, it is sometimes desirable to +use two or more overlapping looping samplers to produce a reasonably continuous +sound without having to envelope too sharply at the ends of the loop. This is +especially likely in situations where the chunk that is looped is short, +a tenth of a second or less. Example B10.sampler.overlap.pd, shown in Figure 2.16 +(part a), realizes two looping samplers a half-cycle out of phase from each +other. New object classes are: + +

+ +

+ + + +
Figure 2.16: +(a) two overlapped looping samplers (B10.sampler.overlap.pd); (b) the +same, but with a phasor-controlled read point (B11.sampler.rockafella.pd).
\begin{figure}\psfig{file=figs/fig02.16.ps}\end{figure}
+
+ +

+
+\fbox{ $\mathrm{loadbang}$\ }: +output a ``bang" message on load. This is used in this patch to make sure the +division of transposition by chunk size will have a valid transposition factor +in case ``chunk size" is moused on first. + +

+
+\fbox{ $\mathrm{expr}$\ }: +evaluate mathematical expressions. Variables appear as $f1, $f2, and so on, +corresponding to the object's inlets. Arithmetic operations are allowed, +with parentheses for grouping, and many library functions are supplied, +such as exponentiation, which shows up in this example as ``pow" (the +power function). + +

+
+\fbox{$\mathrm{wrap}\sim$}: +wrap to the interval from 0 to 1. So, for instance, 1.2 becomes 0.2; 0.5 +remains unchanged; and -0.6 goes to 0.4. + +

+
+\fbox{ $\mathrm{send}\sim$\ }, + +\fbox{ $\mathrm{s}\sim$\ }, + +\fbox{ $\mathrm{receive}\sim$\ }, + +\fbox{ $\mathrm{r}\sim$\ }: +signal versions of send and receive. An audio +signal sent to a send~ object appears at the outlets of any and +all receive~ objects of the same name. Unlike +send and receive, you may not have more than one +send~ object with the same name (in that connection, see +the throw~ and catch~ objects). + +

+In the example, part of the wavetable reading machinery is duplicated, using +identical calculations of ``chunk-size-samples" (a message stream) and +``read-pt" (an audio signal smoothed as before). However, the ``phase" +audio signal, in the other copy, is replaced by ``phase2". The top part +of the figure shows the calculation of the two phase signals: the first one +as the output of a phasor~ object, and the second by adding +0.5 and wrapping, thereby adding 0.5 cycles ($\pi $ radians) to the +phase. The two phase signals are each used, with the same range adjustments as +before, to calculate indices into the wavetable and the cos~ object, and to control the two samphold~ objects. Finally, the +results of the two copies are added for output. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Automatic read point precession + Up: Examples + Previous: Looping samplers +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node38.html b/node38.html new file mode 100644 index 0000000..5973910 --- /dev/null +++ b/node38.html @@ -0,0 +1,208 @@ + + + + + +Automatic read point precession + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Exercises + Up: Examples + Previous: Overlapping sample looper +   Contents +   Index +
+
+ + +

+Automatic read point precession +

+ +

+Example B11.sampler.rockafella.pd, shown in part (b) of Figure 2.16, adapts the ideas +shown above to a situation where the read point is computed automatically. +Here we precess the read-point through the sample in a loop, permitting us +to speed up or slow down the playback independently of the transposition. + +

+This example addresses a weakness of the preceding one, which is that, if the +relative precession speed is anywhere near one (i.e., the natural speed of +listening to the recorded wavetable), and if there is not much transposition +either, it becomes preferable to use larger grains and lower the frequency of +repetition accordingly (keeping the product constant to achieve the desired +transposition.) However, if the grain size is allowed to get large, it is no +longer convenient to quantize control changes at phase wrappings, because +they might be too far apart to allow for a reasonable response time to control +changes. + +

+In this patch we remove the samphold~ object that had controlled +the read point (but we leave in the one for chunk size which is much harder +to change in mid-loop). Instead, we use the (known) rate of precession of the +read point to correct the sawtooth frequency, so that we maintain the desired +transposition. It turns out that, when transposition factor and precession +are close to each other (so that we are nearly doing the same thing as simple +speed change) the frequency will drop to a value close to zero, so we will +have increased the naturalness of the result at the same time. + +

+In this patch we switch from managing read points, chunk sizes, etc., in +samples and use seconds instead, converting to samples (and shifting by +one) only just before the tabread4~ object. +The wavetable holds one second of sound, and we'll assume here that the +nominal chunk size will not exceed 0.1 second, so that we can safely let +the read point range from 0 to 0.9; the ``real" chunk size will vary, and +can become quite large, because of the moving read pointer. + +

+The precession +control sets the frequency of a phasor of amplitude 0.9, and therefore the +precession must be multiplied by 0.9 to set the frequency of the phasor (so +that, for a precession of one for instance, the amplitude and frequency of +the read point are both 0.9, so that the slope, equal to amplitude over +frequency, is one). The output of this is named ``read-pt" as before, and +is used by both copies of the wavetable reader. + +

+The precession $p$ and the chunk size $c$ being known, and if we denote +the frequency of the upper (original) phasor~ by $f$, the transposition factor is given by: +

+
+ + +\begin{displaymath}
+t = p + cf
+\end{displaymath} +
+
+

+and solving for $f$ gives: +

+
+ + +\begin{displaymath}
+f = {{t - p} \over c} = {{{{2 ^ {h/12}}} - p} \over c}
+\end{displaymath} +
+
+

+where $h$ is the desired transposition in half-steps. This is the formula +used in the expr object. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Exercises + Up: Examples + Previous: Overlapping sample looper +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node39.html b/node39.html new file mode 100644 index 0000000..8669e08 --- /dev/null +++ b/node39.html @@ -0,0 +1,165 @@ + + + + + +Exercises + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Audio and control computations + Up: Wavetables and samplers + Previous: Automatic read point precession +   Contents +   Index +
+
+ + +

+Exercises +

+ +

+ +

    +
  1. If a wavetable with $1000$ samples is played back at unit transposition, +at a sample rate of 44100 Hertz, how long does the resulting sound last? + +

    +

  2. +
  3. A one-second wavetable is played back in 0.5 seconds. By what +interval is the sound transposed? + +

    +

  4. +
  5. Still assuming a one-second wavetable, if we play it back periodically +(in a loop), at how many Hertz should we loop the wavetable to transpose the +original sound upward one half-step? + +

    +

  6. +
  7. We wish to play a wavetable (recorded at $R=44100$), looping ten times +per second, so that the original sound stored in the wavetable is transposed up +a perfect fifth (see Page [*]). How large a segment of the +wavetable, in samples, should be played back? + +

    +

  8. +
  9. Suppose you wish to use waveform stretching on a wavetable that holds a +periodic waveform of period 100. You wish to hear the untransposed spectrum at +a period of 200 samples. By what duty factor should you squeeze the waveform? + +

    +

  10. +
  11. The first half of a wavetable contains a cycle of a sinusoid of peak +amplitude one. The second half contains zeros. What is the strength of the +second partial of the wavetable? + +

    +

  12. +
  13. A sinusoid is stored in a wavetable with period 4 so that the first four +elements are 0, 1, 0, and -1, corresponding to indices 0, 1, 2, and 3. What +value do we get for an input of 1.5: (a) using 2-point interpolation? (b) +using 4-point interpolation? (c) What's the value of the original sinusoid +there? + +

    +

  14. +
  15. If a wavetable's contents all fall between -1 and 1 in value, what is the +range of possible outputs of wavetable lookup using 4-point interpolation? + +

    +

  16. +
+
+ + +next + +up + +previous + +contents + +index +
+ Next: Audio and control computations + Up: Wavetables and samplers + Previous: Automatic read point precession +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node4.html b/node4.html new file mode 100644 index 0000000..571ce2f --- /dev/null +++ b/node4.html @@ -0,0 +1,390 @@ + + + + + +Contents + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +index +
+ Next: Foreword + Up: book + Previous: #1 +   Index +
+
+ +
+ +

+Contents +

+ + + + +

+


+
+Miller Puckette +2006-12-30 +
+ + diff --git a/node40.html b/node40.html new file mode 100644 index 0000000..2b5cc2e --- /dev/null +++ b/node40.html @@ -0,0 +1,119 @@ + + + + + +Audio and control computations + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: The sampling theorem + Up: book + Previous: Exercises +   Contents +   Index +
+
+ + +

+Audio and control computations +

+ +

+


+ +Subsections + + + +

+
+Miller Puckette +2006-12-30 +
+ + diff --git a/node41.html b/node41.html new file mode 100644 index 0000000..88363c9 --- /dev/null +++ b/node41.html @@ -0,0 +1,407 @@ + + + + + +The sampling theorem + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Control + Up: Audio and control computations + Previous: Audio and control computations +   Contents +   Index +
+
+ + +

+ +
+The sampling theorem +

+ +

+So far we have discussed digital audio signals as if they were capable of +describing any function of time, in the sense that knowing the values the +function takes on the integers should somehow determine the values it takes +between them. This isn't really true. For instance, suppose some function +$f$ (defined for real numbers) happens to attain the value 1 at all integers: +

+
+ + +\begin{displaymath}
+f(n) = 1 \, , \, \, \, \, \, n = \, \, \ldots, -1, 0, 1, \ldots
+\end{displaymath} +
+
+

+We might guess that $f(t)=1$ for all real $t$. But perhaps $f$ happens +to be one for integers and zero everywhere else--that's a perfectly +good function too, and nothing about the function's values at the integers +distinguishes it from the simpler $f(t)=1$. But intuition tells us that +the constant function is in the spirit of digital audio signals, +whereas the one that hides a secret between the samples isn't. A function +that is ``possible to sample" should be one for which we can use some reasonable +interpolation scheme to deduce its values on non-integers from its values on +integers. + +

+It is customary at this point in discussions of computer music to invoke +the famous +Nyquist theorem. +This states (roughly speaking) that if a function is a finite or even infinite +combination of sinusoids, none of whose angular frequencies exceeds $\pi $, +then, theoretically at least, it is fully determined by the function's values +on the integers. One possible way of reconstructing the function would be +as a limit of higher- and higher-order polynomial interpolation. + +

+The angular frequency $\pi $, called the Nyquist frequency, corresponds +to $R/2$ cycles per second if $R$ is the sample rate. The corresponding period +is two samples. The Nyquist frequency is the best we can do in the sense that +any real sinusoid of higher frequency is equal, at the integers, to one whose +frequency is lower than the Nyquist, and it is this lower frequency that will +get reconstructed by the ideal interpolation process. For instance, a +sinusoid with angular frequency between $\pi $ and $2\pi $, say $\pi + \omega$, +can be written as +

+
+ + +\begin{displaymath}
+\cos((\pi + \omega)n + \phi) = \cos((\pi + \omega)n + \phi - 2\pi n)
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+= \cos((\omega - \pi)n + \phi)
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+= \cos((\pi - \omega)n - \phi)
+\end{displaymath} +
+
+

+for all integers $n$. (If $n$ weren't an integer the first step would fail.) +So a sinusoid with frequency between $\pi $ and $2\pi $ is equal, on the +integers at least, to one with frequency between 0 and $\pi $; you simply can't +tell the two apart. And since any conversion hardware should do the ``right" +thing and reconstruct the lower-frequency sinusoid, any higher-frequency one +you try to synthesize will come out your speakers at the wrong +frequency--specifically, you will hear the unique frequency between 0 and $\pi $ +that the higher frequency lands on when reduced in the above way. This +phenomenon is called +foldover, + +because the half-line of frequencies from 0 +to $\infty$ is folded back and forth, in lengths of $\pi $, onto the interval +from 0 to $\pi $. The word +aliasing +means the same thing. Figure 3.1 shows that sinusoids of angular +frequencies $\pi /2$ and $3\pi /2$, for instance, can't be distinguished +as digital audio signals. + +

+ +

+ + + +
Figure 3.1: +Two real sinusoids, with angular frequencies $\pi /2$ and $3\pi /2$, +showing that they coincide at integers. A digital audio signal can't +distinguish between the two.
\begin{figure}\psfig{file=figs/fig03.01.ps}\end{figure}
+
+ +

+We conclude that when, for instance, we're computing values of a +Fourier series (Page [*]), +either as a wavetable or as a real-time signal, we had better leave out any +sinusoid +in the sum whose frequency exceeds $\pi $. But the picture in general is not +this simple, since most techniques other than additive synthesis don't lead to +neat, band-limited signals (ones whose components stop at some limited +frequency). For example, a sawtooth wave of frequency $\omega $, of the form +put out by Pd's phasor~ object but considered as a continuous +function $f(t)$, expands to: +

+
+ + +\begin{displaymath}
+f(t) = {1 \over 2} - {1 \over \pi}
+{ \left (
+\sin(\omega ...
+...\over 2} +
+{{\sin(3 \omega t)} \over 3} + \cdots
+\right ) }
+\end{displaymath} +
+
+

+which enjoys arbitrarily high frequencies; and moreover the hundredth partial +is only 40 dB weaker than the first one. At any but very low values of +$\omega $, the partials above $\pi $ will be audibly present--and, because of +foldover, they will be heard at incorrect frequencies. (This does not mean +that one shouldn't use sawtooth waves as phase generators--the wavetable +lookup step magically corrects the sawtooth's foldover--but one should think +twice before using a sawtooth wave itself as a digital sound source.) + +

+Many synthesis techniques, even if not strictly band-limited, give partials +which may be made to drop off more rapidly than $1/n$ as in the sawtooth +example, and are thus more forgiving to work with digitally. In any case, +it is always a good idea to keep the possibility of foldover in mind, and +to train your ears to recognize it. + +

+The first line of defense against foldover is simply to use high sample rates; +it is a good practice to systematically use the highest sample rate that your +computer can easily handle. The highest practical rate will vary according to +whether you are working in real time or not, CPU time and memory constraints, +and/or input and output hardware, and sometimes even software-imposed +limitations. + +

+A very non-technical treatment of sampling theory is given in +[Bal03]. More detail can be found in [Mat69, pp. 1-30]. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Control + Up: Audio and control computations + Previous: Audio and control computations +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node42.html b/node42.html new file mode 100644 index 0000000..f48154c --- /dev/null +++ b/node42.html @@ -0,0 +1,226 @@ + + + + + +Control + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Control streams + Up: Audio and control computations + Previous: The sampling theorem +   Contents +   Index +
+
+ + +

+ +
+Control +

+ +

+So far we have dealt with audio signals, which are just sequences $x[n]$ +defined for integers $n$, which correspond to regularly spaced points in time. +This is often an adequate framework for describing synthesis techniques, but +real electronic music applications usually also entail other computations +which have to be made at irregular points in time. In this section we'll +develop a framework for describing what we will call +control +computations. We will always require that any computation correspond to +a specific +logical time. +The logical time controls which sample of audio output will be the first to +reflect the result of the computation. + +

+In a non-real-time system (such as Csound in its classical form), +this means that logical time proceeds from zero to the length of the +output soundfile. Each ``score card" has an associated logical time (the +time in the score), and is acted upon once the audio computation has reached +that time. So audio and control calculations (grinding out the samples and +handling note cards) are each handled in turn, all in increasing order of +logical time. + +

+In a real-time system, logical time, which still corresponds to the time of the +next affected sample of audio output, is always slightly in advance of +real time, +which is measured by the sample that is actually leaving the computer. Control +and audio computations still are carried out in alternation, sorted by logical +time. + +

+The reason for using logical time and not real time in computer music +computations is to keep the calculations independent of the actual execution +time of the computer, which can vary for a variety of reasons, even for two +seemingly identical calculations. When we are calculating a new value of an +audio signal or processing some control input, real time may pass but we +require that the logical time stay the same through the whole calculation, as +if it took place instantaneously. As a result of this, electronic music +computations, if done correctly, are deterministic: two runs of the same +real-time or non-real-time audio computation, each having the same inputs, +should have identical results. + +

+ +

+ + + +
Figure 3.2: +Timeline for digital audio and control computation: (a) with a +block size of one sample; (b) with a block size of four samples.
\begin{figure}\psfig{file=figs/fig03.02.ps}\end{figure}
+
+ +

+Figure 3.2 (part a) shows schematically how logical time and +sample computation are lined up. Audio samples are computed at regular +periods +(marked as wavy lines), but +before the calculation of each sample we do all the control calculations +that might affect it +(marked as straight line segments). First we do the control computations +associated with logical times starting at zero, up to but not including one; +then we compute the first audio sample (of index zero), at logical time +one. We then do all control calculations up to but not including logical +time 2, then the sample of index one, and so on. (Here we are adopting +certain conventions about labeling that could be chosen differently. For +instance, there is no fundamental reason control should be pictured as +coming ``before" audio computation but it is easier to think that way.) + +

+Part (b) of the figure shows the situation if we wish to compute the audio +output in blocks of more than one sample at a time. Using the variable +$B$ to denote the number of elements in a block (so $B=4$ in the figure), +the first audio computation will output samples $0, 1, ... B-1$ all at once +in a block computed at logical time $B$. We have +to do the relevant control computations for all $B$ periods of time in +advance. There is a delay of $B$ samples between logical time and the +appearance of audio output. + +

+Most computer music software computes audio in blocks. This is done to +increase the efficiency of individual audio operations (such as Csound's unit +generators and Max/MSP and Pd's tilde objects). Each unit generator or tilde +object incurs overhead each time it is called, equal to perhaps twenty times +the cost of computing one sample on average. If the block size is one, this +means an overhead of 2,000%; if it is sixty-four (as in Pd by default), the +overhead is only some 30%. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Control streams + Up: Audio and control computations + Previous: The sampling theorem +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node43.html b/node43.html new file mode 100644 index 0000000..b47ee88 --- /dev/null +++ b/node43.html @@ -0,0 +1,481 @@ + + + + + +Control streams + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Converting from audio signals + Up: Audio and control computations + Previous: Control +   Contents +   Index +
+
+ + +

+ +
+Control streams +

+ +

+Control computations may come from a variety of sources, both internal and +external to the overall computation. Examples of internally engendered control +computations include sequencing (in which control computations must take place +at pre-determined times) or feature detection of the audio output (for +instance, watching for zero crossings in a signal). Externally engendered ones +may come from input devices such as MIDI controllers, the mouse and keyboard, +network packets, and so on. In any case, control computations may occur at +irregular intervals, unlike audio samples which correspond to a steadily +ticking sample clock. + +

+ +

+ + + +
Figure 3.3: +Graphical representation of a control stream as a sequence +of points in time.
\begin{figure}\psfig{file=figs/fig03.03.ps}\end{figure}
+
+ +

+We will need a way of describing how information +flows between control and audio computations, which we will base on the +notion of a +control stream. +This is simply a collection of numbers--possibly empty--that appear as a result of control +computations, whether +regularly or irregularly spaced in logical time. +The simplest possible control stream has no information other than a + +time sequence: +

+
+ + +\begin{displaymath}
+\ldots , t[0], t[1], t[2], \ldots
+\end{displaymath} +
+
+

+Although the time values are best given in units of samples, +their values aren't quantized; they may be arbitrary real numbers. +We do require them to be sorted in nondecreasing order: +

+
+ + +\begin{displaymath}
+\cdots \le t[0] \le t[1] \le t[2] \le \cdots
+\end{displaymath} +
+
+

+Each item in the sequence +is called an +event. + +

+Control streams may be shown graphically as in Figure 3.3. A number +line shows time and a sequence of arrows points to the times associated +with each event. +The control +stream shown has no data (it is a time sequence). If we want to show +data in the control stream we will write it at the base of each arrow. + +

+A +numeric control stream +is one that contains one number per time point, so that it +appears as a sequence of +ordered pairs: +

+
+ + +\begin{displaymath}
+\ldots , \, (t[0], x[0]), \, (t[1], x[1]), \, \ldots
+\end{displaymath} +
+
+

+where the $t[n]$ are the time points +and the $x[n]$ are the signal's values +at those times. + +

+A numeric control stream is roughly analogous to a ``MIDI controller", whose +values change irregularly, for example when a physical control is moved by a +performer. Other control stream sources may have higher possible rates of +change and/or more precision. On the other hand, a time sequence might be a +sequence of pedal hits, which (MIDI implementation notwithstanding) shouldn't be +considered as having values, just times. + +

+Numeric control streams are like audio signals in that +both are just time-varying numeric values. But +whereas the audio signal comes at a steady rate (and so the time values need +not be specified per sample), the control stream comes +unpredictably--perhaps evenly, perhaps unevenly, perhaps never. + +

+Let us now look at what happens when we try to convert a numeric +control stream to +an audio signal. As before we'll choose a block size $B=4$. We will consider +as a control stream a square wave of period 5.5: + +

+

+
+ + +\begin{displaymath}
+(2, 1), (4.75, 0), (7.5, 1), (10.25, 0), (13, 1), \ldots
+\end{displaymath} +
+
+

+and demonstrate three ways it could be converted to an audio signal. Figure +3.4 (part a) shows the simplest, fast-as-possible, conversion. +Each audio sample of output simply reflects the most recent value of the +control signal. So samples 0 through 3 (which are computed at logical time +4 because of the block size) are 1 in value because of the point (2, 1). The +next four samples are also one, because of the two points, (4.75, 0) and +(7.5, 1), the most recent still has the value 1. + +

+Fast-as-possible conversion is most appropriate for control streams which do +not change frequently compared to the block size. Its main advantages are +simplicity of computation and the fastest possible response to changes. As the +figure shows, when the control stream's updates are too fast (on the order of +the block size), the audio signal may not be a good likeness of the sporadic +one. (If, as in this case, the control stream comes at regular intervals of +time, we can use the sampling theorem to analyze the result. Here the Nyquist +frequency associated with the block rate $R/B$ is lower than the input square +wave's frequency, and so the output is aliased to a new frequency lower than +the Nyquist frequency.) + +

+ +

+ + + +
Figure 3.4: +Three ways to change a control stream into an audio signal: (a) +as fast as possible; (b) delayed to the nearest sample; (c) with +two-point interpolation for higher delay accuracy.
\begin{figure}\psfig{file=figs/fig03.04.ps}\end{figure}
+
+ +

+Part (b) shows the result of nearest-sample conversion. Each new value of the +control stream at a time $t$ affects output samples starting from index + +$\lfloor t \rfloor$ (the greatest integer not exceeding $t$). +This is equivalent to using fast-as-possible conversion at a block size of 1; +in other words, nearest-sample conversion hides the effect of the larger block +size. This is better than fast-as-possible conversion in cases where the +control stream might change quickly. + +

+Part (c) shows sporadic-to-audio conversion, again at the nearest sample, +but now also using two-point interpolation to further increase the time +accuracy. Conceptually we can describe this as follows. Suppose the value +of the control stream was last equal to $x$, and that the next point is +$(n+f, y)$, where $n$ is an integer and $f$ is the fractional part of the +time value (so $0 \le f < 1$). The first point affected in the audio +output will be the sample at index $n$. But instead of setting the output +to $y$ as before, we set it to +

+
+ + +\begin{displaymath}
+fx + (1-f)y,
+\end{displaymath} +
+
+

+in other words, to a weighted average of the previous and the new value, whose +weights favor the new value more if the time of the sporadic value is earlier, +closer to $n$. In the example shown, the transition from 0 to 1 at time 2 +gives +

+
+ + +\begin{displaymath}
+0 \cdot x + 1 \cdot y = 1,
+\end{displaymath} +
+
+

+while the transition from 1 to 0 at time 4.75 gives: +

+
+ + +\begin{displaymath}
+0.75 \cdot x + 0.25 \cdot y = 0.75.
+\end{displaymath} +
+
+

+This technique gives a still closer representation of the control signal +(at least, the portion of it that lies below the Nyquist frequency), at +the expense of more computation and slightly greater delay. + +

+Numeric control streams may also be converted to audio signals using ramp +functions to smooth discontinuities. This is often used when a control stream +is used to control an amplitude, as described in Section 1.5. In +general there are three values to specify to set a ramp function in motion: a +start time and target value (specified by the control stream) and a target +time, often expressed as a delay after the start time. + +

+In such situations it is almost always accurate enough to adjust the start and +ending times to match the first audio sample computed at a later logical time, +a choice which corresponds to the fast-as-possible scenario above. Figure +3.5 (part a) shows the effect of ramping from 0, starting at +time 3, to a value of 1 at time 9, immediately starting back toward 0 at +time 15, with block size $B=4$. The times 3, 9, and 15 are truncated to +0, 8, and 12, respectively. + +

+ +

+ + + +
Figure 3.5: +Line segment smoothing of numeric control streams: (a) aligned to block +boundaries; (b) aligned to nearest sample.
\begin{figure}\psfig{file=figs/fig03.05.ps}\end{figure}
+
+ +

+In real situations the block size might be on the order of a millisecond, and +adjusting ramp endpoints to block boundaries works fine for controlling +amplitudes; reaching a target a fraction of a millisecond early or late rarely +makes an audible difference. However, other uses of ramps are more sensitive +to time quantization of endpoints. For example, if we wish to do something +repetitively every few milliseconds, the variation in segment lengths will make +for an audible aperiodicity. + +

+For situations such as these, we can improve the ramp generation algorithm to +start and stop at arbitrary samples, as shown in Figure 3.5 (part b), +for example. Here the endpoints of the line segments line up exactly with +the requested samples 3, 9, and 15. We can go even further and adjust for +fractional samples, making the line segments touch the values 0 and 1 at +exactly specifiable points on a number line. + +

+For example, suppose we want to repeat a recorded sound out of a wavetable 100 +times per second, every 441 samples at the usual sample rate. Rounding errors +due to blocking at 64-sample boundaries could detune the playback by as +much as a whole tone in pitch; and even rounding to one-sample boundaries +could introduce variations up to about 0.2%, or three cents. This +situation would call for sub-sample accuracy in sporadic-to-audio conversion. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Converting from audio signals + Up: Audio and control computations + Previous: Control +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node44.html b/node44.html new file mode 100644 index 0000000..958efd3 --- /dev/null +++ b/node44.html @@ -0,0 +1,177 @@ + + + + + +Converting from audio signals to numeric control streams + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Control streams in block + Up: Audio and control computations + Previous: Control streams +   Contents +   Index +
+
+ + +

+Converting from audio signals to numeric control streams +

+ +

+We sometimes need to convert in the other direction, from an audio signal to a +sporadic one. To go in this direction, we somehow provide a series of logical +times (a time sequence), as well as an audio signal. For output we want +a control stream combining the time sequence with values taken from the +audio signal. We do this when we want to incorporate the signal's value as +part of a control computation. + +

+For example, we might be controlling the amplitude of a signal using a +line~ object as in Example A03.line.pd (Page +[*]). Suppose we wish to turn off the sound at a fixed rate +of speed instead of in a fixed amount of time. For instance, we might want to +re-use the network for another sound and wish to mute it as quickly as possible +without audible artifacts; we probably can ramp it off in less time if the +current amplitude is low than if it is high. To do this we must confect a +message to the line~ object to send it to zero in an amount of +time we'll calculate on the basis of its current output value. This will +require, first of all, that we ``sample" the line~ object's +output (an audio signal) into a control stream. + +

+The same issues of time delay and accuracy appear as for sporadic to audio +conversion. Again there will be a tradeoff between immediacy and accuracy. +Suppose as before that we are calculating audio in blocks of 4 samples, and +suppose that at logical time 6 we want to look at the value of an audio signal, +and use it to change the value of another one. As shown in Figure +3.2 (part b), the most recently calculated value of the signal will +be for index 3 and the earliest index at which our calculation can affect a +signal is 4. We can therefore carry out the whole affair with a delay of only +one sample. However, we can't choose exactly which sample--the update +can occur only at a block boundary. + +

+As before, we can trade immediacy for increased time accuracy. If it matters +exactly at which sample we carry out the audio-to-control-to-audio computation, +we read the sample of index 2 and update the one at index 6. Then if we want +to do the same thing again at logical time 7, we read from index 3 and update +at index 7, and so on. In general, if the block size is $B$, and for any +index $n$, we can always read the sample at index $n-B$ and affect the +one at index $n$. There is thus a round-trip delay of $B$ samples in going +from audio to control to audio computation, which is the price incurred for +being able to name the index $n$ exactly. + +

+If we wish to go further, to being able to specify a fraction of a sample, then +(as before) we can use interpolation--at a slight further increase in delay. +In general, as in the case of sporadic-to-audio conversion, in most cases the +simplest solution is the best, but occasionally we have to do extra work. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Control streams in block + Up: Audio and control computations + Previous: Control streams +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node45.html b/node45.html new file mode 100644 index 0000000..c89645f --- /dev/null +++ b/node45.html @@ -0,0 +1,106 @@ + + + + + +Control streams in block diagrams + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Event detection + Up: Audio and control computations + Previous: Converting from audio signals +   Contents +   Index +
+
+ + +

+Control streams in block diagrams +

+ +

+ +

+ + + +
Figure 3.6: +Conversion between control and audio: (a) control to signal; (b) +signal to control by snapshots.
\begin{figure}\psfig{file=figs/fig03.06.ps}\end{figure}
+
+ +

+Figure 3.6 shows how control streams are expressed in block diagrams, +using control-to-signal and signal-to-control conversion as examples. Control +streams are represented using dots (as opposed to audio signals which appear +as solid arrows). + +

+The signal block converts from a numeric control stream to an audio +signal. The exact type of conversion isn't specified at this level of +detail; in the Pd examples the choice of conversion operator +will determine this. + +

+The snapshot block converts from audio signals back to numeric +control streams. In addition to the audio signal, a separate, control input +is needed to specify the time sequence at which the audio signal is sampled. + +

+


+
+Miller Puckette +2006-12-30 +
+ + diff --git a/node46.html b/node46.html new file mode 100644 index 0000000..d69c4cb --- /dev/null +++ b/node46.html @@ -0,0 +1,195 @@ + + + + + +Event detection + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Audio signals as control + Up: Audio and control computations + Previous: Control streams in block +   Contents +   Index +
+
+ + +

+Event detection +

+ +

+Besides taking snapshots, a second mode of passing information from +audio signals to control computations is + +event detection. +Here we derive time information from the audio signal. An example +is +threshold detection, +in which the input is an audio signal and the output is a time sequence. +We'll consider the example of threshold detection in some detail here. + +

+A +typical reason to use threshold detection is to find out when +some kind of activity starts and stops, such as a performer playing +an instrument. We'll suppose we already have a continuous measure of activity +in the form of an audio signal. (This can be done, for example, using an +envelope follower). What we want is a pair of time sequences, one which +marks times in which activity starts, and the other marking stops. + +

+ +

+ + + +
Figure 3.7: +Threshold detection: (a) with no debouncing; (b) debounced using two +threshold levels; (c) debounced using dead periods.
\begin{figure}\psfig{file=figs/fig03.07.ps}\end{figure}
+
+ +

+Figure 3.7 (part a) shows a simple realization of this idea. +We assume the signal input is as shown in the continuous graph. A horizontal +line shows the constant value of the threshold. The time sequence marked +``onsets" contains one event for each time the signal crosses the threshold +from below to above; the one marked ``turnoffs" marks crossings in the other +direction. + +

+In many situations we will get undesirable onsets and turnoffs +caused by small ripples in the signal close to the threshold. This is +avoided by +debouncing, +which can be +done in at least two simple ways. First, as shown in part (b) of the figure, +we can set two thresholds: a high one for marking onsets, and a lower one for +turnoffs. In this scheme the rule is that we only report the first onset after +each turnoff, and, vice versa, we only report one turnoff after each onset. Thus +the third time the signal crosses the high threshold in the figure, there is +no reported onset because there was no turnoff since the previous one. (At +startup, we act as if the most recent output was a turnoff, so that the first +onset is reported.) + +

+A second approach to filtering out multiple onsets and turnoffs, shown in +part (c) of the figure, is to associate a dead period to each onset. +This is a constant interval of time after each reported onset, during which +we refuse to report more onsets or turnoffs. After the period ends, if +the signal has dropped below the threshold in the meantime, we belatedly +report a turnoff. Dead periods may also be associated with turnoffs, and the +two time periods may have different values. + +

+The two filtering strategies may be used separately or simultaneously. It +is usually necessary to tailor the threshold values and/or dead +times by hand to each specific situation in which thresholding is used. + +

+Thresholding is often used as a first step in the design of higher-level +strategies for arranging computer responses to audible cues from performers. +A simple example could be to set off a sequence of pre-planned processes, each +one to be set off by an onset of sound after a specified period of relative +silence, such as you would see if a musician played a sequence of phrases +separated by rests. + +

+More sophisticated detectors (built on top of threshold detection) could detect +continuous sound or silence within an expected range of durations, or sequences +of quick alternation between playing and not playing, or periods of time in +which the percentage of playing time to rests is above or below a threshold, or +many other possible features. These could set off predetermined reactions or +figure in an improvisation. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Audio signals as control + Up: Audio and control computations + Previous: Control streams in block +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node47.html b/node47.html new file mode 100644 index 0000000..12c8fc9 --- /dev/null +++ b/node47.html @@ -0,0 +1,203 @@ + + + + + +Audio signals as control + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Operations on control streams + Up: Audio and control computations + Previous: Event detection +   Contents +   Index +
+
+ + +

+ +
+Audio signals as control +

+ +

+From the tradition of analog synthesis comes an elegant, old-fashioned approach +to control problems that can be used as an alternative to the control +streams we have been concerned with so far in this chapter. Instead, or +in addition to using control streams, we can use audio signals themselves to +control the production of other audio signals. Two specific techniques from +analog synthesis lend themselves well to this treatment: analog sequencing +and sample-and-hold. + +

+The analog sequencer [Str95, pp. 70-79] +[Cha80, pp. 93,304-308] +was often used to set off a regularly or semi-regularly +repeating sequence of sounds. The sequencer itself typically put out a +repeating sequence of voltages, along with a trigger signal which pulsed at +each transition between voltages. One used the voltages for pitches or +timbral parameters, and the trigger to control one or more envelope generators. +Getting looped sequences of predetermined values in digital audio practice is +as simple as sending a phasor~ object into a non-interpolating table +lookup. If you want, say, four values in the sequence, scale the +phasor~ output to take values from 0 to $3.999\ldots$ so that the +first fourth of the cycle reads point 0 of the table and so on. + +

+ +

+ + + +
Figure 3.8: +Multiplying and wrapping a sawtooth wave to generate a higher +frequency.
\begin{figure}\psfig{file=figs/fig03.08.ps}\end{figure}
+
+ +

+To get repeated triggering, the first step is to synthesize another sawtooth +that runs in synchrony with the phasor~ output but four times +as fast. This is done using a variant of the technique of Figure +2.8, in which we used an adder and a wraparound operator to get +a desired phase shift. Figure 3.8 shows the effect of multiplying +a sawtooth wave by an integer, then wrapping around to get a sawtooth at +a multiple of the original frequency. + +

+From there is is easy to get to a repeated envelope shape by wavetable lookup +for example (using an interpolating table lookup this time, unlike the +sequence voltages). All the waveform generation and altering techniques +used for making pitched sounds can also be brought to use here. + +

+The other standard control technique from analog synthesizer control is the +sample and hold unit [Str95, pp. 80-83] +[Cha80, p. 92]. This takes an incoming signal, picks out certain +instantaneous values from it, and ``freezes" those values for its output. The +particular values to pick out are selected by a secondary, ``trigger" input. +At points in time specified by the trigger input a new, single value is taken +from the primary input and is output continuously until the next time point, +when it is replaced by a new value of the primary input. + +

+ +

+ + + +
Figure 3.9: +Sample and hold (``S/H"), using falling edges of the trigger signal.
\begin{figure}\psfig{file=figs/fig03.09.ps}\end{figure}
+
+ +

+In digital audio it is often useful to sample a new value on falling edges +of the trigger signal, i.e., whenever the current value +of the trigger signal is smaller than its previous value, as shown in +Figure 3.9. This is especially convenient for +use with a sawtooth trigger, when we wish to sample signals in +synchrony with an oscillator-driven process. Pd's sample and hold object +was previously introduced in the context of sampling +(Example B08.sampler.nodoppler.pd, Page [*]). + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Operations on control streams + Up: Audio and control computations + Previous: Event detection +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node48.html b/node48.html new file mode 100644 index 0000000..14c368b --- /dev/null +++ b/node48.html @@ -0,0 +1,206 @@ + + + + + +Operations on control streams + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Control operations in Pd + Up: Audio and control computations + Previous: Audio signals as control +   Contents +   Index +
+
+ + +

+Operations on control streams +

+ +

+So far we've discussed how to convert between control streams and audio +streams. In addition to this possibility, there are four types of +operations +you can perform on control streams to get other control streams. These control +stream operations have no corresponding operations on audio signals. Their +existence explains in large part why it is useful to introduce a whole +control structure in parallel with that of audio signals. + +

+The first type consists of + +delay +operations, which offset the time values associated with a control stream. +In real-time systems the delays can't be negative in value. A control stream +may be delayed by a constant amount, or alternatively, you can delay each event +separately by different amounts. + +

+Two different types of delay are used in practice: + +simple and + +compound. Examples of each are shown in Figure 3.10. A simple +delay acting on a control stream schedules each event, as it comes in, +for a time in the future. However, if another event arrives at the input +before the first event is output, the first event is forgotten in favor of the +second. In a compound delay, each event at the input produces an output, even +if other inputs arrive before the output appears. + +

+ +

+ + + +
Figure 3.10: +Delay as an operation on a control stream: (a) block +diagram; (b) effect of a simple delay on a control stream; (c) effect +of a compound delay.
\begin{figure}\psfig{file=figs/fig03.10.ps}\end{figure}
+
+ +

+A second operation on control steams is +merging: +taking two control streams and combining +all the events into a new one. Figure 3.11 (part a) shows how this +and the remaining operations are represented in block diagrams. + +

+Part (b) of the figure shows the effect of merging two streams. Streams may +contain more than one event at the same time. If two streams to be merged +contain events at the same time, the merged stream contains them both, in a +well-defined order. + +

+A third type of operation on control streams is +pruning. +Pruning a control stream means looking at the associated data and letting only +certain elements through. Part (c) shows an example, in +which events (which each have an associated number) are passed through only if +the number is positive. + +

+ +

+ + + +
Figure 3.11: +Operations on control streams (besides delay): (a) block diagrams; +(b) merging; (c) pruning; (d) resynchronizing.
\begin{figure}\psfig{file=figs/fig03.11.ps}\end{figure}
+
+ +

+Finally, there is the concept of +resynchronizing one control stream to another, as shown in part (d). +Here one control stream (the source) contributes values which are +put onto the time sequence of a second one (the sync). The value given the +output is always the most recent one from the source stream. Note that any +event from the source may appear more than once (as suggested in the figure), +or, on the other hand, it might not appear at all. + +

+Again, we have to consider what happens when the two streams each contain an +event at the same time. Should the sync even be considered as happening before +the source (so that the output gets the value of the previous source event)? +Or should the source event be considered as being first so that its value goes +to the output at the same time? How this should be disambiguated is a design +question, to which various software environments take various approaches. (In +Pd it is controlled explicitly by the user.) + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Control operations in Pd + Up: Audio and control computations + Previous: Audio signals as control +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node49.html b/node49.html new file mode 100644 index 0000000..3a79c44 --- /dev/null +++ b/node49.html @@ -0,0 +1,241 @@ + + + + + +Control operations in Pd + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Examples + Up: Audio and control computations + Previous: Operations on control streams +   Contents +   Index +
+
+ + +

+Control operations in Pd +

+ +

+So far we have used Pd mostly for processing audio signals, although as early +as Figure 1.10 we have had to make the distinction between Pd's +notion of audio signals and of control streams: thin connections carry +control streams and thick ones carry audio. Control streams in Pd appear +as sequences of + +messages. The messages may contain data (most often, one or more +numbers), or not. A + +numeric control stream +(Section 3.3) appears as a (thin) connection that +carries numbers as messages. + +

+Messages not containing data make up time sequences. So that you can +see messages with no data, in Pd they are given the (arbitrary) symbol ``bang". + +

+ +

+ + + +
Figure 3.12: +The four control operations in Pd: (a) delay; (b) merging; +(c) pruning; (d) resynchronizing.
\begin{figure}\psfig{file=figs/fig03.12.ps}\end{figure}
+
+ +

+The four types of control operations described in the previous section can +be expressed in Pd as shown in Figure 3.12. + +Delays +are accomplished +using two explicit delay objects: + +

+
+\fbox{ $\mathrm{del}$\ }, +
+\fbox{ $\mathrm{delay}$\ }: +simple delay. You can specify the delay time in a creation argument or via +the right inlet. A ``bang" in the left inlet sets the delay, which then outputs +``bang" after the specified delay in milliseconds. The delay is simple +in the sense that sending a bang to an already set delay resets it to a new +output time, canceling the previously scheduled one. + +

+
+\fbox{ $\mathrm{pipe}$\ }: +compound delay. Messages coming in the left inlet appear on the output +after the specified delay, which is set by the first creation argument. If +there are more creation arguments, they specify one or more inlets for numeric +or symbolic data the messages will contain. Any number of messages may be +stored by pipe simultaneously, and messages may be reordered as +they are output depending on the various delay times given for them. + +

+ +Merging +of control streams in Pd is accomplished not by explicit objects +but by Pd's connection mechanism itself. This is shown in part (b) of the +figure with number boxes as an example. In general, whenever more than one +connection is made to a control inlet, the control streams are merged. + +

+Pd offers several objects for + +pruning control streams, of which two are shown in part (c) of the +figure: + +

+
+\fbox{ $\mathrm{moses}$\ }: +prune for numeric range. Numeric messages coming in the left inlet +appear on the left output if they are smaller than a threshold value (set +by a creation argument or by the right inlet), and out the right inlet +otherwise. + +

+
+\fbox{ $\mathrm{select}$\ }, +
+\fbox{ $\mathrm{sel}$\ }: +prune for specific numbers. Numeric messages coming in the left inlet produce +a ``bang" on the output only if they match a test value exactly. The test +value is set either by creation argument or from the right inlet. + +

+Finally, Pd takes care of + +resynchronizing +control streams implicitly in its connection mechanism, as illustrated by part +(d) of the figure. Most objects with more than one inlet synchronize all other +inlets to the leftmost one. So the float object shown in the figure +resynchronizes its right-hand-side inlet (which takes numbers) to its +left-hand-side one. Sending a ``bang" to the left inlet outputs the most +recent number float has received beforehand. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Examples + Up: Audio and control computations + Previous: Operations on control streams +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node5.html b/node5.html new file mode 100644 index 0000000..87b147a --- /dev/null +++ b/node5.html @@ -0,0 +1,158 @@ + + + + + +Foreword + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Preface + Up: book + Previous: Contents +   Contents +   Index +
+
+ + +

+Foreword +

+ +

+The Theory and Technique of Electronic Music is a uniquely complete +source of information for the computer synthesis of rich and interesting +musical timbres. The theory is clearly presented in a completely general +form. But in addition, examples of how to synthesize each theoretical aspect +are presented in the Pd language so the reader of the book can immediately use +the theory for his musical purposes. I know of no other book which combines +theory and technique so usefully. + +

+By far the most popular music and sound synthesis programs in use today are +block diagram compilers with graphical interfaces. These allow the composer to +design instruments by displaying the ``objects" of his instrument on a computer +screen and drawing the connecting paths between the objects. The resulting +graphical display is very congenial to musicians. A naive user can design a +simple instrument instantly. He can rapidly learn to design complex +instruments. He can understand how complex instruments work by looking at +their graphical images. + +

+The first graphical compiler program, Max, was written by Miller Puckette in +1988. Max dealt only with control signals for music synthesis because the +computers available at the time were not fast enough to deal with sound. As +soon as faster computers which could compute soundwave samples in real-time +were available, Puckette and David Zicarelli appended MSP to Max (Max/MSP) thus +making the computer, usually a laptop computer, into a complete musical +instrument capable of live performance. + +

+Development of Max/MSP was done by Puckette and Zicarelli at IRCAM in the +period 1993 to 1994 . Both have now moved to California. Zicarelli +commercialized and sells Max, MSP, and JITTER (an extension to video synthesis) +as products. Puckette, now a professor at UCSD, wrote Pd (Pure Data). It is +an open source program which is a close equivalent to Max/MSP. + +

+Max and Pd allow almost anyone to synthesize uninteresting timbres almost +instantly. Making interesting timbres is much more difficult and requires much +additional knowledge. The Theory and Technique of Electronic Music is +that body of knowledge. The theory is important for any synthesis program. +The Theory and Technique of Electronic Music gives copious examples of +how to apply the theory using Pd. The combination of theory plus Pd examples +makes this book uniquely useful. It also contains problem sets for each +chapter so it is a fine textbook. + +

+I expect Puckette's book to become THE essential book in any electronic +musician's library. + +

+Max Mathews +


+ + +next + +up + +previous + +contents + +index +
+ Next: Preface + Up: book + Previous: Contents +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node50.html b/node50.html new file mode 100644 index 0000000..b3cb9ef --- /dev/null +++ b/node50.html @@ -0,0 +1,94 @@ + + + + + +Examples + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Sampling and foldover + Up: Audio and control computations + Previous: Control operations in Pd +   Contents +   Index +
+
+ + +

+Examples +

+ +

+


+ +Subsections + + + +

+
+Miller Puckette +2006-12-30 +
+ + diff --git a/node51.html b/node51.html new file mode 100644 index 0000000..5fae84d --- /dev/null +++ b/node51.html @@ -0,0 +1,149 @@ + + + + + +Sampling and foldover + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Converting controls to signals + Up: Examples + Previous: Examples +   Contents +   Index +
+
+ + +

+Sampling and foldover +

+ +

+Example C01.nyquist.pd (Figure 3.13, part a) shows an oscillator +playing a wavetable, sweeping through frequencies from 500 to 1423. The +wavetable consists of only the 46th partial, which therefore varies from 23000 +to 65458 Hertz. At a sample rate of 44100 these two frequencies +theoretically sound at 21100 +and 21358 Hertz, but sweeping from one to the other folds down through +zero and back up. + +

+ +

+ + + +
Figure 3.13: +(a) sending an oscillator over the Nyquist frequency; +(b) zipper noise from the line (control) object; (c) the +line~ and vline~ objects compared.
\begin{figure}\psfig{file=figs/fig03.13.ps}\end{figure}
+
+ +

+Two other waveforms are provided to show the interesting effects of beating +between partials which, although they ``should" have been far apart, find +themselves neighbors through foldover. For instance, at 1423 Hertz, the second +harmonic is 2846 Hertz whereas the 33rd harmonic sounds at 1423*33-44100 = 2859 +Hertz--a rude dissonance. + +

+Other less extreme examples can still produce audible foldover in less striking +forms. Usually it is still objectionable and it is worth learning to +hear it. Example C02.sawtooth-foldover.pd (not pictured here) demonstrates this for a sawtooth +(the phasor~ object). For wavetables holding audio recordings, +interpolation error can create extra foldover. The effects of this can +vary widely; the sound is sometimes described as +``crunchy" or ``splattering", depending on the recording, the transposition, +and the interpolation algorithm. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Converting controls to signals + Up: Examples + Previous: Examples +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node52.html b/node52.html new file mode 100644 index 0000000..118a9bc --- /dev/null +++ b/node52.html @@ -0,0 +1,179 @@ + + + + + +Converting controls to signals + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Non-looping wavetable player + Up: Examples + Previous: Sampling and foldover +   Contents +   Index +
+
+ + +

+Converting controls to signals +

+ +

+Example C03.zipper.noise.pd (Figure 3.13, part b) demonstrates the effect of +converting a slowly-updated control stream to an audio signal. This introduces +a new object: + +

+
+\fbox{ $\mathrm{line}$}: +a ramp generator with control output. Like line~, line takes pairs of numbers as (target, time) pairs and ramps to the target in the +given amount of time; however, unlike line~, the output is +a numeric control stream, appearing, by default, at 20 msec time intervals. + +

+In the example you can compare the sound of the rising and falling amplitude +controlled by the line output with one controlled by the audio +signal generated by line~. + +

+The output of line is converted to an audio signal at the input of +the *~ object. The conversion is implied here by connecting a +numeric control stream into a signal inlet. In Pd, implicit conversions from +numeric control streams to audio streams is done in the fast-as-possible mode +shown in Figure 3.4 (part a). The line output becomes a +staircase signal with 50 steps per second. The result is commonly called +``zipper noise". + +

+Whereas the limitations of the line object for generating audio +signals were clearly audible even over such long time periods as 300 msec, the +signal variant, line~, does not yield audible problems until the time +periods involved become much shorter. Example C04.control.to.signal.pd (Figure 3.13, +part c) demonstrates the effect of using line~ to generate a 250 Hertz +triangle wave. Here the effects shown in Figure 3.5 come into +play. Since line~ always aligns line segments to block boundaries, the +exact durations of line segments vary, and in this example the variation (on +the order of a millisecond) is a significant fraction of their +length. + +

+A more precise object (and a more expensive one, in terms of computation time) +is provided for these situations: + +

+
+\fbox{ $\mathrm{vline}\sim$}: +exact line segment generator. This third member of the ``line" family +outputs an audio signal (like line~), but aligns the endpoints of the signal to +the desired time points, accurate to a fraction of a sample. (The accuracy +is limited only by the floating-point numerical format used by Pd.) Further, +many line segments may be specified withing a single audio block; +vline~ can generate waveforms at periods down to two samples +(beyond which you will just get foldover instead). + +

+The vline~ object can also be used for converting numeric +control streams to audio streams in the nearest-sample and two-point-interpolation +modes as shown in Figure 3.4 (parts b and +c). To get nearest-sample conversion, simply give vline~ a +ramp time of zero. For linear interpolation, give it a ramp time of +one sample (0.0227 msec if the sample rate is 44100 Hertz). + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Non-looping wavetable player + Up: Examples + Previous: Sampling and foldover +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node53.html b/node53.html new file mode 100644 index 0000000..be8099a --- /dev/null +++ b/node53.html @@ -0,0 +1,184 @@ + + + + + +Non-looping wavetable player + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Signals to controls + Up: Examples + Previous: Converting controls to signals +   Contents +   Index +
+
+ + +

+Non-looping wavetable player +

+ +

+One application area requiring careful attention to the control stream/audio +signal boundary is sampling. Until now our samplers have skirted the issue +by looping perpetually. This allows for a rich variety of sound that can be +accessed by making continuous changes in parameters such as loop size and +envelope shape. However, many uses of sampling require the internal features +of a wavetable to emerge at predictable, synchronizable moments in time. For +example, recorded percussion sounds are usually played from the beginning, are not +often looped, and are usually played in a determined time +relationship with the rest of the music. + +

+In this situation, control streams are better adapted than audio signals as +triggers. Example C05.sampler.oneshot.pd (Figure 3.14) shows one possible +way to accomplish this. The four tilde objects at bottom left form the +signal processing network for playback. One vline~ object +generates a phase signal (actually just a table lookup index) to the +tabread4~ object; this replaces the phasor~ of +Example B03.tabread4.pd (Page [*]) and its derivatives. + +

+ +

+ + + +
Figure 3.14: +Non-looping sampler.
\begin{figure}\psfig{file=figs/fig03.14.ps}\end{figure}
+
+ +

+The amplitude of the output of tabread4~ is controlled by a +second vline~ object, in order to prevent discontinuities +in the output in case a new event is started while the previous event is still +playing. The ``cutoff" vline~ object ramps the output down to zero +(whether or not it is playing) so that, once the output is zero, the index +of the wavetable may be changed discontinuously. + +

+In order to start a new ``note", first, the ``cutoff" vline~ object is +ramped to zero; then, after a delay of 5 msec (at which point vline~ has reached zero) the phase is reset. This is done with two messages: first, +the phase is set to 1 (with no time value so that it jumps to 1 with no +ramping). The value ``1" specifies the first readable point of the wavetable, +since we are using 4-point interpolation. Second, in the same message box, +the phase is ramped to 441,000,000 over a time period of 10,000,000 msec. (In +Pd, large numbers are shown using exponential notation; these two appear as +4.41e+08 and 1e+07.) The quotient is 44.1 (in units per millisecond) giving +a transposition of one. The upper vline~ object (which generates the +phase) receives these messages via the ``r phase" object above it. + +

+The example assumes that the wavetable is ramped smoothly to zero at either +end, and the bottom right portion of the patch shows how to record such a +wavetable (in this case four seconds long). Here a regular (and +computationally cheaper) line~ object suffices. Although the wavetable +should be at least 4 seconds long for this to work, you may record shorter +wavetables simply by cutting the line~ object off earlier. The only +caveat is that, if you are simultaneously reading and writing from the same +wavetable, you should avoid situations where read and write operations attack +the same portion of the wavetable at once. + +

+The vline~ objects surrounding the tabread4~ were chosen over line~ because the latter's rounding of +breakpoints to the nearest block boundary (typically 1.45 msec) can make +for audible aperiodicities in the sound if the wavetable is repeated more than +10 or 20 times per second, and would prevent you from getting a nice, periodic +sound at higher rates of repetition. + +

+We will return to vline~-based sampling in the next chapter, to +add transposition, envelopes, and polyphony. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Signals to controls + Up: Examples + Previous: Converting controls to signals +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node54.html b/node54.html new file mode 100644 index 0000000..90a61dc --- /dev/null +++ b/node54.html @@ -0,0 +1,109 @@ + + + + + +Signals to controls + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Analog-style sequencer + Up: Examples + Previous: Non-looping wavetable player +   Contents +   Index +
+
+ + +

+Signals to controls +

+ +

+Example C06.signal.to.control.pd (not pictured) demonstrates conversion from audio signals back to numeric +control streams, via a new tilde object introduced here. + +

+
+\fbox{ $\mathrm{snapshot}\sim$}: +convert audio signal to control messages. This always gives the most recently +computed audio sample (fast-as-possible conversion), so the exact sampling +time varies by up to one audio block. + +

+It is frequently desirable to sense the audio signal's amplitude rather than +peek at a single sample; Example C07.envelope.follower.pd (also not pictured) introduces another +object which does this: + +

+
+\fbox{ $\mathrm{env}\sim$}: +RMS envelope follower. Outputs control messages giving the short-term RMS +amplitude (in decibels) of the incoming audio signal. A creation argument allows +you to select the number of samples used in the RMS computation; smaller numbers +give faster (and possibly less stable) output. + +

+


+
+Miller Puckette +2006-12-30 +
+ + diff --git a/node55.html b/node55.html new file mode 100644 index 0000000..cc0497a --- /dev/null +++ b/node55.html @@ -0,0 +1,141 @@ + + + + + +Analog-style sequencer + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: MIDI-style synthesizer + Up: Examples + Previous: Signals to controls +   Contents +   Index +
+
+ + +

+Analog-style sequencer +

+ +

+Example C08.analog.sequencer.pd (Figure 3.15) realizes the analog sequencer and envelope +generation described in Section 3.7. The ``sequence" table, +with nine elements, holds a sequence of frequencies. The phasor~ object at top cycles through the sequence table at 0.6 Hertz. Non-interpolating +table lookup (tabread~ instead of tabread4~) is +used to read the frequencies in discrete steps. (Such situations, in +which we prefer non-interpolating table lookup, are rare.) + +

+ +

+ + + +
Figure 3.15: +An analog-synthesizer-style sequencer.
\begin{figure}\psfig{file=figs/fig03.15.ps}\end{figure}
+
+ +

+The wrap~ object converts the amplitude-9 sawtooth to a unit-amplitude +one as described earlier in Figure 3.8, which is then used to obtain +an envelope function from a second wavetable. This is used to control grain +size in a looping sampler (from Section 2.6). Here the +wavetable consists of six periods of a sinusoid. The grains are smoothed by +multiplying by a raised cosine function (cos~ and + 1). + +

+Example C09.sample.hold.pd (not pictured here) shows a sample-and-hold unit, another +useful device for doing control tasks in the audio signal domain. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: MIDI-style synthesizer + Up: Examples + Previous: Signals to controls +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node56.html b/node56.html new file mode 100644 index 0000000..79e92a0 --- /dev/null +++ b/node56.html @@ -0,0 +1,200 @@ + + + + + +MIDI-style synthesizer + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Exercises + Up: Examples + Previous: Analog-style sequencer +   Contents +   Index +
+
+ + +

+MIDI-style synthesizer +

+ +

+Example C10.monophonic.synth.pd (Figure 3.16) also implements a monophonic, +note-oriented synthesizer, but in this case oriented toward MIDI +controllability. Here the tasks of envelope generation and sequencing pitches +are handled using control streams instead of audio signals. New +control objects are needed for this example: + +

+ +

+ + + +
Figure 3.16: +A MIDI-style monophonic synthesizer.
\begin{figure}\psfig{file=figs/fig03.16.ps}\end{figure}
+
+ +

+
+\fbox{ $\mathrm{notein}$}: +MIDI note input. Three outlets give the pitch, velocity, and channel of +incoming MIDI note-on and note-off events (with note-off events appearing as +velocity-zero note-on events). The outputs appear in Pd's customary +right-to-left order. + +

+
+\fbox{ $\mathrm{stripnote}$}: +filter out note-off messages. This passes +(pitch, velocity) pairs through whenever the velocity is nonzero, dropping +the others. Unlike notein, stripnote does not +directly use hardware MIDI input or output. + +

+
+\fbox{ $\mathrm{trigger}$}, +
+\fbox{ $\mathrm{t}$}: +copy a message to outlets in right to left order, with type conversion. The +creation arguments (``b" and ``f" in this example) specify two outlets, one +giving ``bang" messages, the other ``float" (i.e., numbers). One outlet +is created for each creation argument. The outputs appear in Pd's standard +right-to-left order. + +

+The patch's control objects feed frequencies to the phasor~ object +whenever a MIDI note-on message is received. Controlling the amplitude (via +the line~ object) is more difficult. When a note-on message is +received, the sel 0 object outputs the velocity at right (because +the input failed to match 0); this is divided by the maximum MIDI velocity of +127 and packed into a message for line~ with a time of 100 msec. + +

+However, when a note-off is received, it is only appropriate to stop the sound +if the note-off pitch actually matches the pitch the instrument is playing. +For example, suppose the messages received are ``60 127", ``72 127", +``60 0", and ``72 0". When the note-on at pitch 72 arrives the pitch should +change to 72, and then the ``60 0" message should be ignored, with the note +playing until the ``72 0" message. + +

+To accomplish this, first we store the velocity in the upper float object. Second, when the pitch arrives, it too is stored (the lower +float object) and then the velocity is tested against zero (the +``bang" outlet of t b f recalls the velocity which is sent to +sel 0). If this is zero, the second step is to recall the pitch and +test it (the select object) against the most recently received +note-on pitch. Only if these are equal (so that ``bang" appears at the +left-hand-side outlet of select) does the message ``0 1000" go to the +line~ object. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Exercises + Up: Examples + Previous: Analog-style sequencer +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node57.html b/node57.html new file mode 100644 index 0000000..e6c6ef4 --- /dev/null +++ b/node57.html @@ -0,0 +1,174 @@ + + + + + +Exercises + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Automation and voice management + Up: Audio and control computations + Previous: MIDI-style synthesizer +   Contents +   Index +
+
+ + +

+Exercises +

+ +

+ +

    +
  1. How many partials of a tone at A 440 can be represented digitally at a +sample rate of 44100 Hertz? + +

    +

  2. +
  3. What frequency would you hear if you synthesized a sinusoid at 88000 Hertz +at a sample rate of 44100? + +

    +

  4. +
  5. Suppose you are synthesizing sound at 44100 Hertz, and are computing +64-sample audio blocks. A control event is scheduled to happen at an elapsed +time of exactly one second, using the fast-as-possible update scheme. At what +sample does the update actually occur? + +

    +

  6. +
  7. Sampling at 44100, we wish to approximately play a tone at middle C by +repeating a fixed waveform every N samples. What value of $N$ should we +choose, and how many cents (Page [*]) are we off from the +``true" middle C? + +

    +

  8. +
  9. Two sawtooth waves, of unit amplitude, have frequencies 200 and 300 Hertz, +respectively. What is the periodicity of the sum of the two? What if you +then wrapped the sum back to the range from 0 to 1? Does this result change +depending on the relative phase of the two? + +

    +

  10. +
  11. Two sawtooth waves, of equal frequency and amplitude and one half cycle +out of phase, are summed. What is the waveform of the sum, and what are its +amplitude and frequency? + +

    +

  12. +
  13. What is the relative level, in decibels, of a sawtooth wave's third +harmonic (three times the fundamental) compared to that of the fundamental? + +

    +

  14. +
  15. Suppose you synthesize a 44000-Hertz sawtooth wave at a sample rate +of 44100 Hertz. What is the resulting waveform? + +

    +

  16. +
  17. Using the techniques of Section 3.7, draw a block diagram +for generating two phase-locked sinusoids at 500 and 700 Hertz. + +

    +

  18. +
  19. Draw a block diagram showing how to use thresholding to detect when one +audio signal exceeds another one in value. (You might want to do this to +detect and filter out feedback from speakers to microphones.) + +

    +

  20. +
+ +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Automation and voice management + Up: Audio and control computations + Previous: MIDI-style synthesizer +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node58.html b/node58.html new file mode 100644 index 0000000..2fd79c3 --- /dev/null +++ b/node58.html @@ -0,0 +1,137 @@ + + + + + +Automation and voice management + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Envelope Generators + Up: book + Previous: Exercises +   Contents +   Index +
+
+ + +

+Automation and voice management +

+ +

+It is often desirable to control musical objects or events as aggregates rather +than individually. Aggregates might take the form of a series of events spaced +in time, in which the details of the events follow from the larger arc (for +instance, notes in a melody). Or the individuals might sound simultaneously, +as with voices in a chord, or partials in a complex tone. Often some or all +properties of the individual elements are best inferred from those of the +whole. + +

+A rich collection of tools and ideas has arisen in the electronic music +repertory for describing individual behaviors from aggregate ones. In this +chapter we cover two general classes of such tools: envelope generators and +voice banks. The envelope generator automates behavior over time, and the +voice bank over aggregates of simultaneous processes (such as signal +generators). + +

+


+ +Subsections + + + +

+
+Miller Puckette +2006-12-30 +
+ + diff --git a/node59.html b/node59.html new file mode 100644 index 0000000..ab88815 --- /dev/null +++ b/node59.html @@ -0,0 +1,195 @@ + + + + + +Envelope Generators + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Linear and Curved Amplitude + Up: Automation and voice management + Previous: Automation and voice management +   Contents +   Index +
+
+ + +

+ +
+Envelope Generators +

+ +

+An +envelope generator (sometimes, and more justly, called a +transient generator) makes an audio signal that smoothly rises and +falls as if to control the loudness of a musical note. +Envelope generators were touched on earlier in Section 1.5. +Amplitude control by multiplication (Figure 1.4) is the most direct, +ordinary way to use one, but there are many other possible uses. + +

+Envelope generators have come in many forms over the years, but the simplest +and the perennial favorite is the +ADSR envelope generator. ``ADSR" is an acronym for +``Attack, Decay, Sustain, Release", the four segments of the +ADSR generator's output. The ADSR generator is turned on and off by a control +stream called a ``trigger". Triggering the ADSR generator ``on" sets off its +attack, decay, and sustain segments. Triggering it ``off" starts the +release segment. Figure 4.1 shows the block +diagram representation of an ADSR envelope generator. + +

+ +

+ + + +
Figure 4.1: +ADSR envelope as a block diagram, showing the trigger input (a +control stream) and the audio output.
\begin{figure}\psfig{file=figs/fig04.01.ps}\end{figure}
+
+ +

+There are five parameters controlling the ADSR generator. First, a +level parameter sets the output value at the end of the attack segment +(normally the highest value output by the ADSR generator). Second and third, +the attack and decay parameters give the time duration of the +attack and decay segments. Fourth, a sustain parameter gives the level +of the sustain segment, as a fraction of the level parameter. Finally, the +release parameter gives the duration of the release segment. These five +values, together with the timing of the ``on" and ``off" triggers, fully +determines the output of the ADSR generator. For example, the duration of the +sustain portion is equal to the time between ``on" and ``off" triggers, minus +the durations of the attack and decay segments. + +

+ +

+ + + +
Figure 4.2: +ADSR envelope output: (a) with ``on" and ``off" triggers separated; +(b), (c) with early ``off" trigger; (d), (e) re-attacked.
\begin{figure}\psfig{file=figs/fig04.02.ps}\end{figure}
+
+ +

+Figure 4.2 graphs some possible outputs of an ADSR +envelope generator. In +part (a) we assume that the ``on" and ``off" triggers are widely enough +separated that the sustain segment is reached before the ``off" trigger is +received. +Parts (b) and (c) of Figure 4.2 show the result of following an +``on" trigger quickly by an ``off" one: (b) during the decay segment, and (c) +even earlier, during the attack. The ADSR generator reacts to these situations +by canceling whatever remains of the attack and decay segments and continuing +straight to the release segment. Also, an ADSR generator may be retriggered +``on" before the release segment is finished or even during the attack, decay, +or sustain segments. Part (d) of the figure shows a reattack during the +sustain segment, and part (e), during the decay segment. + +

+The classic application of an ADSR envelope is using a voltage-control keyboard +or sequencer to make musical notes on a synthesizer. Depressing and releasing +a key (for example) would generate ``on" and ``off" triggers. The ADSR +generator could then control the amplitude of synthesis so that ``notes" would +start and stop with the keys. In addition to amplitude, the ADSR generator +can (and often is) used to control timbre, which can then be made to evolve +naturally over the course of each note. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Linear and Curved Amplitude + Up: Automation and voice management + Previous: Automation and voice management +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node6.html b/node6.html new file mode 100644 index 0000000..c2ea0f2 --- /dev/null +++ b/node6.html @@ -0,0 +1,191 @@ + + + + + +Preface + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Sinusoids, amplitude and frequency + Up: book + Previous: Foreword +   Contents +   Index +
+
+ + +

+Preface +

+ +

+This is a book about using electronic techniques to record, synthesize, +process, and analyze musical sounds, a practice which came into its modern form +in the years 1948-1952, but whose technological means and artistic uses have +undergone several revolutions since then. Nowadays most electronic music is +made using computers, and this book will focus exclusively on what used to be +called ``computer music", but which should really now be called ``electronic +music using a computer". + +

+Most of the computer music tools available today have antecedents in earlier +generations of equipment. The computer, however, is relatively cheap and the +results of using one are easy to document and re-create. In these respects at +least, the computer makes the ideal electronic music instrument--it is hard to +see what future technology could displace it. + +

+The techniques and practices of electronic music can be studied (at least in +theory) without making explicit reference to the current state of technology. +Still, it's important to provide working examples. So each chapter starts with +theory (avoiding any reference to implementation) and ends with a series of +examples realized in a currently available software package. + +

+The ideal reader of this book is anyone who knows and likes electronic +music of any genre, has plenty of facility with computers in general, and who +wants to learn how to make electronic music from the ground up, starting +with the humble oscillator and continuing through sampling, FM, filtering, +waveshaping, delays, and so on. This will take plenty of time. + +

+This book doesn't take the easy route of recommending pre-cooked software to +try out these techniques; instead, the emphasis is on learning how to use a +general-purpose computer music environment to realize them yourself. Of the +several such packages available, we'll use Pd, but that shouldn't stop you +from using these same techniques in other environments such as Csound or +Max/MSP. + +

+To read this book you must understand mathematics through intermediate algebra +and trigonometry; starting in Chapter 7, complex numbers also make an +appearance, although not complex analyis. (For instance, complex numbers are +added, multiplied, and conjugated, but there are no complex exponentials.) A +review of mathematics for computer music by F. Richard Moore +appears in [Str85, pp. 1-68]. + +

+Although the ``level" of mathematics is not high, the mathematics itself is +sometimes quite challenging. All sorts of cool mathematics is in the reach of +any student of algebra or geometry. In the service of computer music, for +instance, we'll run into Bessel functions, Chebychev polynomials, the Central +Limit Theorem, and, of course, Fourier analysis. + +

+You don't need much background in music as it is taught in the West; in +particular, Western written music notation is not needed. Some elementary bits +of Western music theory are used, such as the tempered scale, the A-B-C system +of naming pitches, and terms like ``note" and ``chord". Also you should be +familiar with terms of musical acoustics such as sinusoids, amplitude, +frequency, and the overtone series. + +

+Each chapter starts with a theoretical discussion of some family of +techniques or theoretical issues, followed by a series of examples realized +in Pd to illustrate them. The examples are included in the Pd distribution, +so you can run them and/or edit them into your own spinoffs. In addition, +all the figures were created using Pd patches, which appear in an electronic +supplement. These aren't carefully documented but in principle could be +used as an example of Pd's drawing capabilities for anyone interested in +that. + +

+I would like to thank some people who have made it possible for me to write +this. Barry Vercoe is almost entirely responsible for my music education. +Meanwhile I was taught mathematics by Wayne Holman, Samuel Greitzer, Murray +Klamkin, Gian-Carlo Rota, Frank Morgan, Michael Artin, Andrew Gleason, and many +others. Phil White taught me English and Rosie Paschall visual composition. +Finally, my parents (one deceased) are mighty patient; I'm now 47. Thank +you. + +

+ +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Sinusoids, amplitude and frequency + Up: book + Previous: Foreword +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node60.html b/node60.html new file mode 100644 index 0000000..ad10a9d --- /dev/null +++ b/node60.html @@ -0,0 +1,317 @@ + + + + + +Linear and Curved Amplitude Shapes + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Continuous and discontinuous control + Up: Automation and voice management + Previous: Envelope Generators +   Contents +   Index +
+
+ + +

+ +
+Linear and Curved Amplitude Shapes +

+ +

+Suppose you wish to fade a signal in over a period of ten seconds--that is, +you wish to multiply it by an amplitude-controlling signal $y[n]$ which rises +from 0 to 1 in value over $10R$ samples, where $R$ is the sample rate. The +most obvious choice would be a linear ramp: +$y[n] = n/(10R)$. But this will +not turn out to yield a smooth increase in perceived loudness. Over the first +second $y[n]$ rises from $-\infty$ dB to -20 dB, over the next four by another +14 dB, and over the remaining five, only by the remaining 6 dB. Over most of +the ten second period the rise in amplitude will be barely perceptible. + +

+Another possibility would be to ramp $y[n]$ exponentially, so that it rises at +a constant rate in dB. You would have to fix the initial amplitude to be +inaudible, say 0 dB (if we fix unity at 100 dB). Now we have the opposite +problem: for the first five seconds the amplitude control will rise from 0 dB +(inaudible) to 50 dB (pianissimo); this part of the fade-in should only have +taken up the first second or so. + +

+A more natural progression would perhaps have been to regard the fade-in +as a timed succession of dynamics, 0-ppp-pp-p-mp-mf-f-ff-fff, +with each step taking roughly one second. + +

+A fade-in ideally should obey some scale in between logarithmic and linear. A +somewhat arbitrary choice, but useful in practice, is the quartic curve: +

+
+ + +\begin{displaymath}
+y[n] = {{ \left ( {{n} \over {N}} \right ) } ^ 4} ,
+\end{displaymath} +
+
+

+where $N$ is the number of samples to fade in over (in the example above, it's +$10R$). So, after the first second of the ten we would have risen to -80 dB, +after five seconds to -24 dB, and after nine, about -4 dB. + +

+Figure 4.3 shows three amplitude transfer functions: +

+
+ + +\begin{displaymath}
+{f_1} (x) = x \hspace{0.2in} \mathrm{(linear),}
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+\ \ \ \ \ \ \ %
+{f_2} (x) = 10^{2(x-1)} \hspace{0.2in}\mathrm{(dB\ to\ linear),}
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+{f_3} (x) = {x^4} \hspace{0.2in}\mathrm{(quartic).}
+\end{displaymath} +
+
+

+The second function converts from dB to linear, arranged so that the input +range, from 0 to 1, corresponds to 40 dB. (This input range of 40 dB +corresponds to a reasonable dynamic range, allowing +5 dB for each of 8 steps in dynamic.) The quartic curve imitates the +exponential (dB) curve fairly well for higher amplitudes, but drops off more +rapidly +for small amplitudes, reaching true zero at right (whereas the exponential curve +only goes down to $1/100$). + +

+ +

+ + + +
Figure 4.3: +Three amplitude transfer functions. The horizontal axis is in linear, +logarithmic, or fourth-root units depending on the curve.
\begin{figure}\psfig{file=figs/fig04.03.ps}\end{figure}
+
+ +

+We can think of the three curves as showing +transfer functions, from an abstract control (ranging from 0 to 1) to a +linear amplitude. After we choose a suitable transfer function $f$, we +can compute a corresponding amplitude control signal; if we wish to ramp +over $N$ samples from silence to unity gain, the control signal would be: +

+
+ + +\begin{displaymath}
+y[n] = f(n/N) .
+\end{displaymath} +
+
+

+A block diagram for this is shown in Figure 4.4. Here we are +introducing a new type of block to represent the application of a + +transfer function. For now we won't worry about its implementation; +depending on the function desired, this might be best done arithmetically or +using table lookup. + +

+ +

+ + + +
Figure 4.4: +Using a transfer function to alter the shape of amplitude curves.
\begin{figure}\psfig{file=figs/fig04.04.ps}\end{figure}
+
+ +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Continuous and discontinuous control + Up: Automation and voice management + Previous: Envelope Generators +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node61.html b/node61.html new file mode 100644 index 0000000..f9cf23a --- /dev/null +++ b/node61.html @@ -0,0 +1,160 @@ + + + + + +Continuous and discontinuous control changes + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Muting + Up: Automation and voice management + Previous: Linear and Curved Amplitude +   Contents +   Index +
+
+ + +

+ +
+Continuous and discontinuous control changes +

+ +

+Synthesis algorithms vary widely in their ability to deal with discontinuously +changing controls. Until now in this chapter we have assumed that controls +must change continuously, and the ADSR envelope generator turns out +to be ideally suited for such controls. It may even happen that +the maximum amplitude of a note is less than the current value of the amplitude +of its predecessor (using the same generator) and the ADSR envelope will simply +ramp down (instead of up) to the new value for an attack. + +

+This isn't necessarily desirable, however, in situations where an envelope +generator is in charge of some aspect of timbre: perhaps, for example, we don't +want the sharpness of a note to decrease during the attack to a milder one, but +rather to jump to a much lower value so as always to be able to rise during the +attack. + +

+This situation also can arise with pitch envelopes: it may be desirable to +slide pitch from one note to the next, or it may be desirable that the pitch +trajectory of each note start anew at a point independent of the previous +sound. + +

+Two situations arise when we wish to make discontinuous changes to synthesis +parameters: either we can simply make them without disruption (for instance, +making a discontinuous change in pitch); or else we can't, such as a change in +a wavetable index (which makes a discontinuous change in the output). There +are even parameters that can't possibly be changed continuously; for +example, a selection among a collection of wavetables. In general, +discontinuously changing the phase of an oscillator or the amplitude of a +signal will cause an audible artifact, but phase increments (such as pitches) +may jump without bad results. + +

+In those cases where a parameter change can't be made continuously for one +reason or another, there are at least two strategies for making the change +cleanly: +muting and switch-and-ramp. + +

+


+ +Subsections + + + +
+ + +next + +up + +previous + +contents + +index +
+ Next: Muting + Up: Automation and voice management + Previous: Linear and Curved Amplitude +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node62.html b/node62.html new file mode 100644 index 0000000..c7fb920 --- /dev/null +++ b/node62.html @@ -0,0 +1,173 @@ + + + + + +Muting + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Switch-and-ramp + Up: Continuous and discontinuous control + Previous: Continuous and discontinuous control +   Contents +   Index +
+
+ + +

+ +
+Muting +

+ +

+The +muting +technique is to apply an envelope to the output amplitude, which is quickly +ramped to zero before the parameter change and then restored afterward. It +may or may not be the case that the discontinuous changes will result in a signal +that rises smoothly from zero afterward. In Figure 4.5 (part a), +we take the example of an amplitude envelope (the output signal of an ADSR +generator), and assume that the discontinuous change is to start a new note at +amplitude zero. + +

+ +

+ + + +
Figure 4.5: +Muting technique for hiding discontinuous changes: (a) the +envelope (upper graph) is set discontinuously to zero and +the muting signal (lower graph) ramps down in advance to prepare for the change, and +then is restored (discontinuously) to its previous value; (b) the envelope +changes discontinuously between two nonzero values; the muting signal must +both ramp down beforehand and ramp back up afterward.
\begin{figure}\psfig{file=figs/fig04.05.ps}\end{figure}
+
+ +

+To change the ADSR generator's output discontinuously we +reset it. This is a different operation from triggering it; the +result is to make it jump to a new value, after which we may either simply +leave it there or trigger it anew. Figure 4.5 (part a) +shows the effect of resetting and retriggering an ADSR generator. + +

+Below the ADSR generator output we see the appropriate muting signal, which ramps to zero +to prepare for the discontinuity. The amount of time we allow for muting +should be small (so as to disrupt the previous sound as little as possible) +but not so small as to cause audible artifacts in the output. +A working example of this type of muting was already shown on Page +[*]; there we allowed 5 msec for ramping down. +The muting signal is multiplied by the output of the process to be de-clicked. + +

+Figure 4.5 (part b) shows the situation in which we suppose the +discontinuous change is between two possibly nonzero values. Here the muting +signal must not only ramp down as before (in advance of the discontinuity) but +must also ramp back up afterward. The ramp-down time need not equal the +ramp-up time; these must be chosen, as always, by listening to the output +sound. + +

+In general, muting presents the difficulty that you must start the muting +operation in advance of making the desired control change. In real-time +settings, this often requires that we intentionally delay the control change. +This is another reason for keeping the muting time as low as possible. +(Moreover, it's a bad idea to try to minimize delay by conditionally +omitting the ramp-down period when it isn't needed; a constant delay +is much better than one that varies, even if it is smaller on average.) + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Switch-and-ramp + Up: Continuous and discontinuous control + Previous: Continuous and discontinuous control +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node63.html b/node63.html new file mode 100644 index 0000000..0f14078 --- /dev/null +++ b/node63.html @@ -0,0 +1,173 @@ + + + + + +Switch-and-ramp + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Polyphony + Up: Continuous and discontinuous control + Previous: Muting +   Contents +   Index +
+
+ + +

+Switch-and-ramp +

+ +

+The + +switch-and-ramp +technique also seeks to remove discontinuities resulting from discontinuous +control changes, but does so in a different way: by synthesizing an opposing +discontinuity which we add to cancel the original one out. Figure +4.6 shows an example in which a synthetic percussive sound (an +enveloped sinusoid) starts a note in the middle of a previous one. The attack +of the sound derives not from the amplitude envelope but from the initial phase +of the sinusoid, as is often appropriate for percussive sounds. The lower +graph in the figure shows a compensating audio signal with an opposing +discontinuity, which can be added to the upper one to remove the discontinuity. +The advantages of this technique over muting are, first, that there need be no +delay between the decision to make an attack and the sound of the attack; and +second, that any artifacts arising from this technique are more likely to be +masked by the new sound's onset. + +

+ +

+ + + +
Figure 4.6: +The switch-and-ramp technique for canceling out discontinuous changes. +A discontinuity (upper graph) is measured and canceled out with a signal +having the opposite discontinuity (lower graph), which then decays smoothly.
\begin{figure}\psfig{file=figs/fig04.06.ps}\end{figure}
+
+ +

+Figure 4.7 shows how the switch-and-ramp technique can be realized +in a block diagram. The box marked with ellipsis (``...") may hold any +synthesis algorithm, which we wish to interrupt discontinuously so that it +restarts from zero (as in, for example, part (a) of the previous figure). At +the same time that we trigger whatever control changes are necessary (exemplified by +the top ADSR generator), we also reset and trigger another ADSR generator +(middle right) to cancel out the discontinuity. The discontinuity is minus the +last value of the synthesis output just before it is reset to zero. + +

+ +

+ + + +
Figure 4.7: +Block diagram for the switch-and-ramp technique.
\begin{figure}\psfig{file=figs/fig04.07.ps}\end{figure}
+
+ +

+To do this we measure the level the ADSR generator must now jump to. This is +its own current level (which might not be zero) minus the discontinuity (or +equivalently, plus the synthesis output's last value). The two are +added (by the +~ object at bottom), and then a snapshot is taken. +The cancelling envelope generator (at right) is reset discontinuously to this +new value, and then triggered to ramp back to zero. The +~ object's +output (the sum of the synthesizer output and the discontinuity-cancelling +signal) is the de-clicked signal. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Polyphony + Up: Continuous and discontinuous control + Previous: Muting +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node64.html b/node64.html new file mode 100644 index 0000000..3ff5750 --- /dev/null +++ b/node64.html @@ -0,0 +1,157 @@ + + + + + +Polyphony + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Voice allocation + Up: Automation and voice management + Previous: Switch-and-ramp +   Contents +   Index +
+
+ + +

+ +
+Polyphony +

+ +

+In music, the term +polyphony +is usually used to mean ``more than one separate voices singing or playing at +different pitches one from another". When speaking of electronic musical +instruments we use the term to mean ``maintaining several copies of some +process in parallel." We usually call each copy a ``voice" in keeping with the +analogy, although the voices needn't be playing separately distinguishable +sounds. + +

+In this language, a piano is a polyphonic instrument, with 88 ``voices". Each +voice of the piano is normally capable of playing exactly one pitch. There +is never a question of which voice to use to play a note of a given pitch, +and no question, either, of playing several notes simultaneously at the +same pitch. + +

+Many polyphonic electronic musical instruments take a more flexible approach +to voice management. Most software synthesis programs (like Csound) use +a dynamic voice allocation scheme, so that, in effect, a new voice is +created for every note in the score. In systems such as Max or Pd, which are +oriented toward real-time interactive use, a +voice bank is allocated in advance, and the work to be done (playing +notes, or whatever) is distributed among the voices in the bank. + +

+ +

+ + + +
Figure 4.8: +A voice bank for polyphonic synthesis.
\begin{figure}\psfig{file=figs/fig04.08.ps}\end{figure}
+
+ +

+This is diagrammed in Figure 4.8, where the several voices each +produce one output signal, which are all added to make the total output of the +voice bank. Frequently the individual voices will need several +separate outputs; for instance, they might output several channels so that +they may be panned individually; or they might have individual effect +sends so that each may have its own send level. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Voice allocation + Up: Automation and voice management + Previous: Switch-and-ramp +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node65.html b/node65.html new file mode 100644 index 0000000..a428ef0 --- /dev/null +++ b/node65.html @@ -0,0 +1,225 @@ + + + + + +Voice allocation + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Voice tags + Up: Automation and voice management + Previous: Polyphony +   Contents +   Index +
+
+ + +

+ +
+Voice allocation +

+ +

+It is frequently desirable to automate the selection of voices to associate +with individual +tasks +(such as notes to play). For example, a musician playing +at a keyboard can't practically choose which voice should go with each note +played. To automate voice selection we need a voice allocation algorithm, to +be used as shown in Figure 4.9. + +

+Armed with a suitable voice allocation algorithm, the control source need not +concern itself with the detail of which voice is taking care of which task; +algorithmic note generators and sequencers frequently rely on this. On the +other hand, musical writing for ensembles frequently specifies explicitly +which instrument plays which note, so that the notes will connect to each other +end-to-end in a desirable way. + +

+ +

+ + + +
Figure 4.9: +Polyphonic voice allocation.
\begin{figure}\psfig{file=figs/fig04.09.ps}\end{figure}
+
+ +

+One simple voice allocation algorithm works as shown in Figure 4.10. Here we +suppose that the voice bank has only two voices, and we try to allocate voices +for the tasks $a$, $b$, $c$, and $d$. Things go smoothly until task $d$ +comes along, but then we see no free voices (they are taken up by $b$ and $c$). +We could now elect either to drop task $d$, or else to steal the voice of +either task $b$ or $c$. In practice the best choice is usually to steal one. +In this particular example, we chose to steal the voice of the oldest task, +$b$. + +

+ +

+ + + +
Figure 4.10: +A polyphonic voice allocation algorithm, showing voice stealing.
\begin{figure}\psfig{file=figs/fig04.10.ps}\end{figure}
+
+ +

+If we happen to know the length of the tasks $b$ and $c$ at the +outset of task $d$, we may be able to make a better choice of which voice +to steal. In this example it might have been better to steal from $c$, so +that $d$ and $b$ would be playing together at the end and not $d$ alone. +In some situations this information will be available when the choice must be +made, and in some (live keyboard input, for example) it will not. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Voice tags + Up: Automation and voice management + Previous: Polyphony +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node66.html b/node66.html new file mode 100644 index 0000000..4bf3bf6 --- /dev/null +++ b/node66.html @@ -0,0 +1,218 @@ + + + + + +Voice tags + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Encapsulation in Pd + Up: Automation and voice management + Previous: Voice allocation +   Contents +   Index +
+
+ + +

+ +
+Voice tags +

+ +

+Suppose now that we're using a voice bank to play notes, as in the example +above, but suppose the notes $a$, $b$, $c$, and $d$ all have the same +pitch, and furthermore that all their other parameters are identical. How +can we design a control stream so that, when any one note is turned off, +we know which one it is? + +

+This question doesn't come up if the control source is a clavier keyboard +because it's impossible to play more than one simultaneous note on a single key. +But it could easily arise algorithmically, or simply as a result of merging +two keyboard streams together. Moreover, turning notes off is only the +simplest example of a more general problem, which is how, once having set +a task off in a voice bank, we can get back to the same voice to guide +its evolution as a function of real-time inputs or any other unpredictable +factor. + +

+To deal with situations like this we can add one or more +tags to the message starting a note (or, in general, a task). +A tag is any collection of data with which we can later identify the task, +which we can then use to search for the voice that is allocated for it. + +

+Taking again the example of Figure 4.10, here is one way we might +write those four tasks as a control stream: + +

+

+start-time end-time   pitch   ...
+
+    1          3        60    ...
+    2          8        62
+    4          6        64
+    5          8        65
+
+ +

+In this representation we have no need of tags because each message (each line +of text) contains all the information we need in order to specify the entire +task. (Here we have assumed that the tasks $a$, ..., $d$ are in +fact musical notes with pitches 60, 62, 64, and 65.) +In effect we're representing each task as a single event in a control stream +(Section 3.3). + +

+On the other hand, if we suppose now that we do not know in advance the length +of each note, a better representation would be this one: + +

+

+time    tag  action   parameters
+
+  1      a   start     60 ...
+  2      b   start     62 ...
+  3      a   end
+  4      c   start     64 ...
+  5      d   start     65 ...
+  6      c   end
+  8      b   end
+  8      d   end
+
+ +

+Here each note has been split into two separate events to start and end it. +The labels $a$, ..., $d$ are used as tags; +we know which start goes with which end since their tags are the same. Note +that the tag is not necessarily related at all to the voice that will be used +to play each note. + +

+The MIDI standard does not supply tags; in normal use, the pitch of a note +serves also as its tag (so tags are constantly being re-used.) If two +notes having the same pitch must be addressed separately (to slide their +pitches in different directions for example), the MIDI channel may be used (in +addition to the note) as a tag. + +

+In real-time music software it is often necessary to pass back and forth +between the event-per-task representation and the tagged one above, +since the first representation is better suited to storage and graphical +editing, while the second is often better suited to real-time +operations. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Encapsulation in Pd + Up: Automation and voice management + Previous: Voice allocation +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node67.html b/node67.html new file mode 100644 index 0000000..391701d --- /dev/null +++ b/node67.html @@ -0,0 +1,227 @@ + + + + + +Encapsulation in Pd + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Examples + Up: Automation and voice management + Previous: Voice tags +   Contents +   Index +
+
+ + +

+ +
+Encapsulation in Pd +

+ +

+The examples for this chapter will use Pd's +encapsulation +mechanism, which permits the building of patches that +may be reused any number of times. One or more object boxes in a Pd patch may +be + +subpatches, +which are separate patches encapsulated inside the boxes. These come in +two types: +one-off subpatches and +abstractions. +In either case the subpatch appears as an object box in another patch, +called the +parent. + +

+If you type ``pd" or ``pd my-name" into an object box, this creates a one-off +subpatch. The contents of the subpatch are saved as part of the parent patch, +in one file. If you make several copies of a subpatch you may change them +individually. On the other hand, you can invoke an abstraction by typing into +the box the name of a Pd patch saved to a file (without the ``.pd" extension). +In this situation Pd will read that file into the subpatch. In this way, +changes to the file propagate everywhere the abstraction is invoked. + +

+A subpatch (either one-off or abstraction) may have inlets and outlets that +appear on the box in the parent patch. This is specified using the following +objects: + +

+
+\fbox{ $ \mathrm{inlet} $}, + +\fbox{ $ \mathrm{inlet}\sim $}: +create inlets for the object box containing the subpatch. The +inlet~ version creates an inlet for audio signals, whereas +inlet creates one for control streams. In either case, whatever +comes to the inlet of the box in the parent patch comes out of the +inlet or inlet~ object in the subpatch. + +

+
+\fbox{ $\mathrm{outlet}$\ }, + +\fbox{ $\mathrm{outlet}\sim$\ }: +Corresponding objects for output from subpatches. + +

+Pd provides an argument-passing mechanism so that you can parametrize different +invocations of an abstraction. If in an object box you type ``$1", +it is expanded to mean ``the first creation argument in my box on the +parent patch", and similarly for ``$2" and so on. The text in +an object box is interpreted at the time the box is created, unlike the +text in a message box. In message boxes, the same ``$1" means ``the +first argument of the message I just received" and is interpreted whenever +a new message comes in. + +

+An example of an abstraction, using inlets, outlets, and parametrization, is +shown in Figure 4.11. In part (a), a patch invokes +plusminus in an object box, with a creation argument equal to 5. The number 8 is fed to +the plusminus object, and out comes the sum and difference of 8 +and 5. + +

+ +

+ + + +
Figure 4.11: +Pd's abstraction mechanism: (a) invoking the abstraction, +plusminus with 5 as a creation argument; (b) the contents of the +file, +``plusminus.pd".
\begin{figure}\psfig{file=figs/fig04.11.ps}\end{figure}
+
+ +

+The plusminus object is not defined by Pd, but is rather defined +by the patch residing in the file named ``plusminus.pd". This patch is shown +in part (b) of the figure. The one inlet and +two outlet objects correspond to the inlets and outlets of +the plusminus object. The two ``$1" arguments (to the ++ and - objects) are replaced by 5 (the creation argument of the +plusminus object). + +

+We have already seen one abstraction in the examples: the output~ object introduced in Figure 1.10 (Page [*]). That +example also shows that an abstraction may display controls as part of its box +on the parent patch; see the Pd documentation for a description of this +feature. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Examples + Up: Automation and voice management + Previous: Voice tags +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node68.html b/node68.html new file mode 100644 index 0000000..d7d9ef9 --- /dev/null +++ b/node68.html @@ -0,0 +1,92 @@ + + + + + +Examples + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: ADSR envelope generator + Up: Automation and voice management + Previous: Encapsulation in Pd +   Contents +   Index +
+
+ + +

+Examples +

+ +

+


+ +Subsections + + + +

+
+Miller Puckette +2006-12-30 +
+ + diff --git a/node69.html b/node69.html new file mode 100644 index 0000000..46ce3c8 --- /dev/null +++ b/node69.html @@ -0,0 +1,203 @@ + + + + + +ADSR envelope generator + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Transfer functions for amplitude + Up: Examples + Previous: Examples +   Contents +   Index +
+
+ + +

+ADSR envelope generator +

+ +

+Example D01.envelope.gen.pd (Figure 4.12) shows how the line~ object may +be used to generate an ADSR envelope to control a synthesis patch (only the +ADSR envelope is shown in the figure). The ``attack" button, when pressed, has +two effects. The first (leftmost in the figure) is to set the line~ object on its attack segment, with a target of 10 (the peak amplitude) over 200 +msec (the attack time). Second, the attack button sets a delay 200 object, so that after the attack segment is done, the decay segment can start. +The decay segment falls to a target of 1 (the sustain level) after another 2500 +msec (the decay time). + +

+ +

+ + + +
Figure 4.12: +Using a line~ object to generate an +ADSR envelope.
\begin{figure}\psfig{file=figs/fig04.12.ps}\end{figure}
+
+ +

+The ``release" button sends the same line~ object back to zero over +500 more milliseconds (the release time). Also, in case the +delay 200 object happens to be set at the moment the ``release" button is pressed, a +``stop" message is sent to it. This prevents the ADSR generator from +launching its decay segment after launching its release segment. + +

+In Example D02.adsr.pd (Figure 4.13) +we encapsulate the ADSR generator in a Pd abstraction +(named adsr) so that it can easily be replicated. The design of the +adsr abstraction makes it possible to control the five ADSR parameters +either by supplying creation arguments or by connecting control streams to its +inlets. + +

+ +

+ + + +
Figure 4.13: +Invoking the adsr abstraction.
\begin{figure}\psfig{file=figs/fig04.13.ps}\end{figure}
+
+ +

+In this example the five creation arguments (1, 100, 200, 50, and 300) specify +the peak level, attack time, decay time, sustain level (as a percentage of peak +level), and release time. There are six control inlets: the first to trigger +the ADSR generator, and the others to update the values of the five parameters. +The output of the abstraction is an audio signal. + +

+This abstraction is realized as shown in Figure 4.14. (You can open +this subpatch by clicking on the adsr object in the patch.) The only +signal objects are line~ and outlet~. The three pack objects correspond to the three message objects from the earlier Figure +4.12. From left to right, they take care of the attack, decay, +and release segments. + +

+ +

+ + + +
Figure 4.14: +Inside the adsr abstraction.
\begin{figure}\psfig{file=figs/fig04.14.ps}\end{figure}
+
+ +

+The attack segment goes to a target specified as ``$1" (the first +creation argument of the abstraction) over ``$2" milliseconds; these +values may be overwritten by sending numbers to the ``peak level" and ``attack" +inlets. The release segment is similar, but simpler, since the target is +always zero. The hard part is the decay segment, which again must be set +off after a delay equal to the attack time (the del $2 object). +The sustain level is calculated from the peak level and the sustain percentage +(multiplying the two and dividing by 100). + +

+The trigger inlet, if sent a number other than zero, triggers an +onset (the attack +and decay segments), and if sent zero, triggers the release segment. +Furthermore, the ADSR generator may be reset to zero by sending a negative +trigger (which also generates an onset). + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Transfer functions for amplitude + Up: Examples + Previous: Examples +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node7.html b/node7.html new file mode 100644 index 0000000..b7912b2 --- /dev/null +++ b/node7.html @@ -0,0 +1,338 @@ + + + + + +Sinusoids, amplitude and frequency + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Measures of Amplitude + Up: book + Previous: Preface +   Contents +   Index +
+
+ + +

+Sinusoids, amplitude and frequency +

+ +

+Electronic music is usually made using a computer, by synthesizing or processing + digital audio signals. These are sequences of numbers, + +

+

+
+ + +\begin{displaymath}
+..., x[n-1], x[n], x[n+1], ...
+\end{displaymath} +
+
+

+where the index $n$, called the + sample number, may range over some or all the integers. A single +number in the sequence is called a sample. +An example of a digital audio signal is the Sinusoid: + +

+
+ + +\begin{displaymath}
+x[n] = a \cos (\omega n + \phi )
+\end{displaymath} +
+
+

+where $a$ is the + amplitude, $\omega $ is the + angular frequency, and +$\phi$ is the initial + phase. +The phase is a function of the sample number $n$, equal to + +$\omega n + \phi$. The initial phase is the phase at the zeroth sample ($n=0$). + +

+Figure 1.1 (part a) shows a sinusoid graphically. +The +horizontal axis shows successive values of $n$ and the vertical axis shows the +corresponding values of $x[n]$. The graph is drawn in such a way as to +emphasize the sampled nature of the signal. Alternatively, we could draw it +more simply as a continuous curve (part b). The upper drawing is the most +faithful representation of the (digital audio) sinusoid, whereas the lower +one can be considered an idealization of it. + +

+ +

+ + + +
Figure 1.1: +A digital audio signal, showing its discrete-time nature (part a), and +idealized as a continuous function (part b). This signal is +a (real-valued) sinusoid, fifty points long, with amplitude 1, angular frequency +0.24, and initial phase zero.
\begin{figure}\psfig{file=figs/fig01.01.ps}\end{figure}
+
+ +

+Sinusoids play a key role in audio processing because, if you shift one of them +left or right by any number of samples, you get another one. This makes it +easy to calculate the effect of all sorts of operations on sinusoids. Our ears +use this same special property to help us parse incoming sounds, which is why +sinusoids, and combinations of sinusoids, can be used to achieve many musical +effects. + +

+Digital audio signals do not have any intrinsic relationship with time, but +to listen to them we must choose a +sample rate, usually given the variable name $R$, which is the number +of samples that fit into a second. The time $t$ is related to the sample number +$n$ by +$Rt = n$, or $t = n/R$. A sinusoidal signal with angular frequency $\omega $ +has a real-time frequency equal to +

+
+ + +\begin{displaymath}
+f = {{\omega R} \over {2 \pi}}
+\end{displaymath} +
+
+

+in Hertz (i.e., cycles per second), because a cycle is $2\pi $ radians and a +second is $R$ samples. + +

+A real-world audio signal's amplitude might be expressed as a time-varying +voltage or air pressure, but the samples of a digital audio signal are unitless +numbers. We'll casually assume here that there is ample numerical accuracy +so that we can ignore round-off errors, and that the numerical format is +unlimited in range, so that samples may take any value we wish. However, most +digital audio hardware works only over a fixed range of input and output +values, most often between -1 and 1. Modern digital audio processing software +usually uses a floating-point representation for signals. This allows us to +use whatever units are most convenient for any given task, as long as the final +audio output is within the hardware's range [Mat69, pp. 4-10]. + +

+


+ +Subsections + + + +
+ + +next + +up + +previous + +contents + +index +
+ Next: Measures of Amplitude + Up: book + Previous: Preface +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node70.html b/node70.html new file mode 100644 index 0000000..b87ab09 --- /dev/null +++ b/node70.html @@ -0,0 +1,167 @@ + + + + + +Transfer functions for amplitude control + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Additive synthesis: Risset's bell + Up: Examples + Previous: ADSR envelope generator +   Contents +   Index +
+
+ + +

+Transfer functions for amplitude control +

+ +

+Section 4.2 described using ADSR envelopes to control +amplitude, for which exponential or quartic-curve segments often give more +natural-sounding results than linear ones. Patches D03.envelope.dB.pd and D04.envelope.quartic.pd (the latter shown in Figure 4.15) +demonstrate the use of decibel and quartic segments. In addition to amplitude, +in Example D04.envelope.quartic.pd the frequency of a sound is also controlled, using linear +and quartic shapes, for comparison. + +

+ +

+ + + +
Figure 4.15: +Linear and quartic transfer functions for changing amplitude and +pitch.
\begin{figure}\psfig{file=figs/fig04.15.ps}\end{figure}
+
+ +

+Since converting decibels to linear amplitude units is a costly operation +(at least when compared to an oscillator or a ramp generator), Example D03.envelope.dB.pd uses table lookup to implement the necessary transfer function. This has the +advantage of efficiency, but the disadvantage that we must decide on the +range of admissible values in advance (here from 0 to 120 dB). + +

+For a +quartic segment as in Example D04.envelope.quartic.pd no table lookup is required; +we simply square the line~ object's output signal twice in succession. +To compensate for raising the output to the fourth power, the target values +sent to the line~ object must be the fourth root of the desired +ones. Thus, messages to ramp the frequency or amplitude are first unpacked to +separate the target and time interval, the target's fourth root is taken +(via two square roots in succession), and the two are then sent to the +line~ object. Here we have made use of one new Pd object: + +

+
+\fbox{ $\mathrm{unpack}$}: +unpack a list of numbers (and/or symbols) and distribute them to separate +outlets. As usual the outputs appear in right-to-left order. The number of +outlets and their types are determined by the creation arguments. (See also +pack, Page [*]). + +

+The next two patches, D05.envelope.pitch.pd and D06.envelope.portamento.pd, use an ADSR envelope generator +to make a pitch envelope and a simple line~ object, also controlling +pitch, to make portamento. In both cases exponential segments are desirable, +and they are calculated using table lookup. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Additive synthesis: Risset's bell + Up: Examples + Previous: ADSR envelope generator +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node71.html b/node71.html new file mode 100644 index 0000000..29b136a --- /dev/null +++ b/node71.html @@ -0,0 +1,248 @@ + + + + + +Additive synthesis: Risset's bell + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Additive synthesis: spectral envelope + Up: Examples + Previous: Transfer functions for amplitude +   Contents +   Index +
+
+ + +

+Additive synthesis: Risset's bell +

+ +

+The abstraction mechanism of Pd, which we used above to make a reusable ADSR +generator, is also useful for making voice banks. Here we will use +abstractions to organize banks of oscillators for additive synthesis. There +are many possible ways of organizing oscillator banks besides +those shown here. + +

+The simplest and most direct organization of the sinusoids is to form +partials to add up to a note. The result is monophonic, in the sense that +the patch will play only one note at a time, which, however, will consist of +several sinusoids whose individual frequencies and amplitudes might depend both +on those of the note we're playing, and also on their individual placement +in a harmonic (or inharmonic) overtone series. + +

+Example D07.additive.pd (Figure 4.16) uses a bank of 11 copies +of an abstraction named partial (Figure 4.17) in an +imitation of a well-known bell instrument by Jean-Claude Risset. As described +in [DJ85, p. 94], the bell sound has 11 partials, each with its own +relative amplitude, frequency, and duration. + +

+ +

+ + + +
Figure 4.16: +A Pd realization of Jean-Claude Risset's bell instrument. The +bell sound is made by summing 11 sinusoids, each made by a copy of the +partial abstraction.
\begin{figure}\psfig{file=figs/fig04.16.ps}\end{figure}
+
+ +

+ +

+ + + +
Figure 4.17: +The partial abstraction used by Risset's bell instrument +from Figure 4.16.
\begin{figure}\psfig{file=figs/fig04.17.ps}\end{figure}
+
+ +

+For each note, the partial abstraction computes a simple (quartic) +amplitude envelope consisting only of an attack and a decay segment; there is +no sustain or release segment. This is multiplied by a sinusoid, and the +product is added into a summing bus. Two new object classes are introduced +to implement the summing bus: + +

+
+\fbox{ \texttt{catch\~}}: +define and output a summing bus. The creation argument (``sum-bus" in this example) +gives the summing bus a name so that throw~ objects below can refer +to it. You may have as many summing busses (and hence catch~ objects) +as you like but they must all have different names. + +

+
+\fbox{ \texttt{throw\~}}: +add to a summing bus. The creation argument selects which summing bus to +use. + +

+The control interface is crude: number boxes control the ``fundamental" +frequency of the bell and its duration. Sending a ``bang" message to +the s trigger object starts a note. (The note then decays over +the period of time controlled by the duration parameter; there is no +separate trigger to stop the note). There is no amplitude +control except via the output~ object. + +

+The four arguments to each invocation of the partial abstraction specify: + +

    +
  1. amplitude. The amplitude of the partial at its peak, at the +end of the attack and the beginning of the decay of the note. + +

    +

  2. +
  3. relative duration. This is multiplied by the overall note duration +(controlled in the main patch) to +determine the duration of the decay portion of the sinusoid. Individual partials +may thus have different decay times, so that some partials die out faster than +others, under the main patch's overall control. + +

    +

  4. +
  5. relative frequency. As with the relative duration, this controls each +partial's frequency as a multiple of the overall frequency controlled in the +main patch. + +

    +

  6. +
  7. detune. A frequency in Hertz to be added to the product of the global +frequency and the relative frequency. + +

    +

  8. +
+Inside the partial abstraction, the amplitude is simply taken +directly from the ``$1" argument (multiplying by 0.1 to adjust for +the high individual amplitudes); the duration is calculated from the +r duration object, multiplying it by the ``$2" argument. +The frequency is computed as $fp+d$ where $f$ is the global frequency (from +the r frequency object), $p$ is the relative frequency of the +partial, and $d$ is the detune frequency. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Additive synthesis: spectral envelope + Up: Examples + Previous: Transfer functions for amplitude +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node72.html b/node72.html new file mode 100644 index 0000000..faf98be --- /dev/null +++ b/node72.html @@ -0,0 +1,165 @@ + + + + + +Additive synthesis: spectral envelope control + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Polyphonic synthesis: sampler + Up: Examples + Previous: Additive synthesis: Risset's bell +   Contents +   Index +
+
+ + +

+Additive synthesis: spectral envelope control +

+ +

+The next patch example, D08.table.spectrum.pd (Figure 4.18), shows a very different application of +additive synthesis from the previous one. Here the sinusoids are +managed by the spectrum-partial abstraction shown in Figure +4.19. Each partial computes its own frequency as in the previous +patch. Each partial also computes its own amplitude +periodically (when triggered by the r poll-table object), using a +tabread4 object. The contents of the table (which has a nominal range of +50 dB) are converted to linear units and used as an amplitude control in the +usual way. + +

+A similar example, D09.shepard.tone.pd (not pictured), makes a Shepard tone using +the same technique. Here the frequencies of the sinusoids sweep +over a fixed range, finally jumping from the end back to the beginning and +repeating. The spectral envelope is arranged to have a peak at the middle of +the pitch range and drop off to inaudibility at the edges of the range so +that we hear only the continuous sweeping and not the jumping. The result +is a famous auditory conundrum, an indefinitely ascending or descending +tone. + +

+ +

+ + + +
Figure 4.18: +Additive synthesis for a specified spectral envelope, drawn in a +table.
\begin{figure}\psfig{file=figs/fig04.18.ps}\end{figure}
+
+ +

+ +

+ + + +
Figure 4.19: +The spectrum-partial abstraction used in +Figure 4.18.
\begin{figure}\psfig{file=figs/fig04.19.ps}\end{figure}
+
+ +

+The technique of synthesizing to a specified spectral envelope can +be generalized in many ways: the envelope may be made to vary in time +either as a result of a live analysis of another signal, or by calculating +from a set of compositional rules, or by cross-fading between a collection +of pre-designed spectral envelopes, or by frequency-warping the envelopes, +to name a few possibilities. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Polyphonic synthesis: sampler + Up: Examples + Previous: Additive synthesis: Risset's bell +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node73.html b/node73.html new file mode 100644 index 0000000..3727430 --- /dev/null +++ b/node73.html @@ -0,0 +1,300 @@ + + + + + +Polyphonic synthesis: sampler + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Exercises + Up: Examples + Previous: Additive synthesis: spectral envelope +   Contents +   Index +
+
+ + +

+Polyphonic synthesis: sampler +

+ +

+We move now to an example using dynamic voice allocation as described in +Section 4.5. In the additive synthesis examples shown +previously, each voice is used for a fixed purpose. In the +present example, we allocate voices from a bank as needed to play +notes in a control stream. + +

+Example D11.sampler.poly.pd (Figure 4.20) shows the polyphonic sampler, which +uses the abstraction sampvoice (whose interior +is shown in Figure 4.21). +The techniques for altering the pitch and other parameters in a one-shot +sampler are shown in Example D10.sampler.notes.pd (not shown) which in turn is derived from +the original one-shot sampler from the previous chapter (C05.sampler.oneshot.pd, shown +in Figure 3.14). + +

+ +

+ + + +
Figure 4.20: +A polyphonic sampler demonstrating voice allocation and use +of tags.
\begin{figure}\psfig{file=figs/fig04.20.ps}\end{figure}
+
+ +

+ +

+ + + +
Figure 4.21: +The sampvoice abstraction used in the polyphonic sampler +of Figure 4.20.
\begin{figure}\psfig{file=figs/fig04.21.ps}\end{figure}
+
+ +

+The sampvoice objects in Figure 4.20 are arranged in a +different kind of summing bus from the ones before; here, each one adds its +own output to the signal on its inlet, and puts the sum on its outlet. At the +bottom of the eight objects, the outlet therefore holds the sum of all eight. +This has the advantage of being more explicit than the throw~ / +catch~ busses, and is preferable when visual clutter is not a +problem. + +

+The main job of the patch, though, is to distribute the ``note" messages to +the sampvoice objects. To do this we must introduce some new Pd +objects: + +

+
+\fbox{ $\mathrm{mod}$}: +Integer modulus. For instance, 17 mod 10 gives 7, and -2 mod 10 gives 8. +There is also an integer division object named div ; dividing 17 by +10 via div gives 1, and -2 by 10 gives -1. + +

+
+\fbox{ $\mathrm{poly}$}: +Polyphonic voice allocator. Creation arguments give the number of +voices in the bank and a flag (1 if voice stealing is needed, 0 if not). +The inlets are a numeric tag at left and a flag at right indicating whether +to start or stop a voice with the given tag (nonzero numbers meaning ``start" +and zero, ``stop"). The outputs are, at left, the voice number, the tag +again at center, and the start/stop flag at right. In MIDI applications, the +tag can be pitch and the start/stop flag can be the note's velocity. + +

+
+\fbox{ \texttt{makenote}}: +Supply delayed note-off messages to match note-on messages. The inlets are +a tag and start/stop flag (``pitch" and ``velocity" in MIDI usage) and the +desired duration in milliseconds. The tag/flag pair are repeated to +the two outlets as they are received; then, after the delay, the tag is +repeated with flag zero to stop the note after the desired duration. + +

+The ``note" messages contain fields for pitch, amplitude, duration, +sample number, start location in the sample, rise time, and decay time. For +instance, the message, +

+     60 90 1000 2 500 10 20
+
+(if received by the r note object) +means to play a note at pitch 60 (MIDI units), amplitude 90 dB, one second +long, from the wavetable named ``sample2", starting at a point 500 msec +into the wavetable, with rise and decay times of 10 and 20 msec. + +

+After unpacking the message into its seven components, the patch +creates a tag for the note. To do this, first the t b f object +outputs a bang after the last of the seven parameters appear separately. The +combination of the +, f, and mod objects acts +as a counter that repeats after a million steps, essentially generating +a unique number corresponding to the note. + +

+The next step is to use the poly object to determine which voice to play +which note. The poly object expects separate messages to start +and stop tasks (i.e., notes). So the tag and duration are first fed to the +makenote object, whose outputs include a flag (``velocity") at +right and the tag again at left. For each tag makenote receives, two pairs +of numbers are output, one to start the note, and another, after a delay +equal to the note duration, to stop it. + +

+Having treated poly to this separated input, we now have to strip +the messages corresponding to the ends of notes, since we really only need +combined ``note" messages with +duration fields. The stripnote object does this job. Finally, the +voice number we have calculated is prepended to the seven parameters we +started with (the pack object), so that the output of the +pack object looks like this: +

+     4 60 90 1000 2 500 10 20
+
+where the ``4" is the voice number output by the poly object. +The voice number is used to route the message +to the desired voice using the route object. The appropriate +sampvoice object then gets the original list starting with +``60". + +

+Inside the sampvoice object (Figure 4.21), the message +is used to control the tabread4~ and surrounding line~ and vline~ objects. The control takes place with a delay of +5 msec as in the earlier sampler example. Here, however, we must +store the seven parameters of the note (earlier there were no +parameters). This is done using the six f objects, plus the +right inlet of the rightmost delay object. These values are used after +the delay of 5 msec. This is done in tandem with the muting +mechanism described on Page [*], using another +vline~ object. + +

+When the 5 msec have elapsed, the vline~ object in charge of +generating the wavetable index gets its marching orders (and, +simultaneously, the wavetable number is set for the tabread4~ object and the amplitude envelope generator starts its attack.) +The wavetable index must be set discontinuously to the starting index, then +ramped to an ending index over an appropriate time duration to obtain the +needed transposition. The starting index in samples is just 44.1 times the +starting location in milliseconds, plus one to allow for four-point table +interpolation. This becomes the third number in a packed +list generated by the pack object at the center of the voice patch. + +

+We arbitrarily decide that the ramp will last ten thousand seconds (this is the +``1e+07" appearing in the message box sent to the wavetable index generator), +hoping that this is at least as long as any note we will play. The ending index +is the starting index plus the number of samples to ramp through. At a +transposition factor of one, we should move by 441,000,000 samples during those +10,000,000 milliseconds, or proportionally more or less depending on the +transposition factor. This transposition factor is computed by the mtof object, dividing by 261.62 (the frequency corresponding to MIDI note 60) so +that a specified ``pitch" of 60 results in a transposition factor of one. + +

+These and other parameters are combined in one message +via the pack object so that the following message boxes can +generate the needed control messages. The only novelty is +the makefilename object, which converts numbers such as ``2" to +symbols such as ``sample2" so that the tabread4~ object's +wavetable may be set. + +

+At the bottom of the voice patch we see how a summing bus is implemented inside +a subpatch; an inlet~ object picks up the sum of all the preceding +voices, the output of the current voice is added in, and the result is +sent on to the next voice via the outlet~ object. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Exercises + Up: Examples + Previous: Additive synthesis: spectral envelope +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node74.html b/node74.html new file mode 100644 index 0000000..f3493d8 --- /dev/null +++ b/node74.html @@ -0,0 +1,159 @@ + + + + + +Exercises + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Modulation + Up: Automation and voice management + Previous: Polyphonic synthesis: sampler +   Contents +   Index +
+
+ + +

+Exercises +

+ +

+ +

    +
  1. What input to a fourth-power transfer function gives an output of -12 +dB, if an input of 1 outputs 0 dB? + +

    +

  2. +
  3. An envelope generator rises from zero to a peak value during its attack +segment. How many decibels less than the peak has the output reached +halfway into the attack, assuming linear output? Fourth-power output? + +

    +

  4. +
  5. What power-law transfer function (i.e. what choice of $n$ for the +function $f(x) = {x^n}$) would you use if you wish the halfway-point value +to be -12 decibels? + +

    +

  6. +
  7. Suppose you wish to cross-fade two signals, i.e., to ramp one signal in +and simultaneously another one out. If they have equal power and are +uncorrelated, a linear cross-fade would result in a drop of 3 decibels halfway +though the cross-fade. What power law would you use to maintain constant power +throughout the cross-fade? + +

    +

  8. +
  9. A three-note chord, lasting 1.5 seconds, is played starting once every +second. How many voices would be needed to synthesize this without cutting +off any notes? + +

    +

  10. +
  11. Suppose a synthesis patch gives output between $-1$ and $1$. While +a note is playing, a new note is started using the ``rampdown" voice-stealing +technique. What is the maximum output? + +

    +

  12. +
+
+ + +next + +up + +previous + +contents + +index +
+ Next: Modulation + Up: Automation and voice management + Previous: Polyphonic synthesis: sampler +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node75.html b/node75.html new file mode 100644 index 0000000..f255e76 --- /dev/null +++ b/node75.html @@ -0,0 +1,125 @@ + + + + + +Modulation + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Taxonomy of spectra + Up: book + Previous: Exercises +   Contents +   Index +
+
+ + +

+ +
+Modulation +

+ +

+Having taken a two-chapter detour into aspects of control and organization +in electronic music, we return to describing audio synthesis and processing +techniques. So far we have seen additive and wavetable-based methods. In this +chapter we will introduce three so-called modulation techniques: +amplitude modulation, frequency modulation, and +waveshaping. The term ``modulation" refers loosely to any technique +that systematically alters the shape of a waveform by bending its graph +vertically or horizontally. Modulation is widely used for building synthetic +sounds with various families of spectra, for which we must develop some +terminology before getting into the techniques. + +

+


+ +Subsections + + + +

+
+Miller Puckette +2006-12-30 +
+ + diff --git a/node76.html b/node76.html new file mode 100644 index 0000000..194cd4d --- /dev/null +++ b/node76.html @@ -0,0 +1,294 @@ + + + + + +Taxonomy of spectra + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Multiplying audio signals + Up: Modulation + Previous: Modulation +   Contents +   Index +
+
+ + +

+ +
+Taxonomy of spectra +

+ +

+Figure 5.1 introduces a way of visualizing the +spectrum of an audio signal. The spectrum describes, roughly speaking, +how the signal's power is distributed into frequencies. (Much more precise +definitions can be given than those that we'll develop here, but they would +require more mathematical background.) + +

+ +

+ + + +
Figure 5.1: +A taxonomy of timbres. The spectral envelope describes the shape of +the spectrum. The sound may be discretely or continuously distributed in +frequency; if discretely, it may be harmonic or inharmonic.
\begin{figure}\psfig{file=figs/fig05.01.ps}\end{figure}
+
+ +

+Part (a) of the figure shows the spectrum of a +harmonic signal, +which is a periodic signal whose fundamental frequency is in the range of +perceptible pitches, roughly between 50 and 4000 Hertz. +The Fourier series (Page [*]) gives a description of +a periodic signal as a sum of sinusoids. The frequencies of the sinusoids +are in the ratio $0:1:2:\cdots$. (The constant term in the Fourier series +may be thought of as a sinusoid, +

+
+ + +\begin{displaymath}
+{a_0} = {a_0}\cos(0 \cdot \omega n),
+\end{displaymath} +
+
+

+whose frequency is zero.) + +

+In a harmonic signal, the power shown in the spectrum is +concentrated on a discrete subset of the frequency axis (a discrete +set consists of isolated points, only finitely many in any bounded interval). +We call +this a +discrete spectrum. +Furthermore, the frequencies where the signal's power lies are in the +$0:1:2\cdots$ ratio that arises from a periodic signal. (It's not +necessary for all of the harmonic frequencies to be present; some +harmonics may have zero amplitude.) +For a harmonic signal, the graph of the spectrum shows the amplitudes of the +partials of the signals. +Knowing the amplitudes and phases of all the partials fully determines +the original signal. + +

+Part (b) of the figure shows a spectrum which is also discrete, so that the +signal can again be considered as a sum of a series of +partials. In this case, however, there is no fundamental frequency, i.e., no +audible common submultiple of all the partials. This is called an + +inharmonic signal. (The terms $harmonic$ and +$inharmonic$ may be used to describe both the signals and their spectra.) + +

+When dealing with discrete spectra, we report a partial's amplitude in a +slightly non-intuitive way. Each component sinusoid, +

+
+ + +\begin{displaymath}
+a \cos (\omega n + \phi)
+\end{displaymath} +
+
+

+only counts as having amplitude $a/2$ as long as the angular frequency $\omega $ +is nonzero. But for a +component of zero frequency, for which + +$\omega = \phi = 0$, the amplitude is given as $a$--without dividing by two. +(Components of zero frequency are often called +DC +components; ``DC" is historically an acronym for ``direct current"). +These conventions for amplitudes in spectra will simplify the mathematics later +in this chapter; a deeper reason for them will become apparent in +Chapter 7. + +

+Part (c) of the figure shows a third possibility: +the spectrum might not be concentrated into a discrete set of frequencies, but +instead might be spread out among all possible frequencies. This can be called a +continuous, or +noisy spectrum. +Spectra don't necessarily fall into either the discrete or continuous categories; +real sounds, in particular, are usually somewhere in between. + +

+Each of the three parts of the figure shows a continuous curve called the +spectral envelope. In general, sounds don't have a single, +well-defined +spectral envelope; there may be many ways to draw a smooth-looking curve +through a spectrum. On the other hand, a spectral envelope may be specified +intentionally; in that case, it is usually +clear how to make a spectrum conform to it. For +a discrete spectrum, for example, we could +simply read off, from the spectral envelope, the desired amplitude of each +partial and make it so. + +

+A sound's pitch can sometimes be inferred from its spectrum. For discrete +spectra, the pitch is primarily encoded in the frequencies of the partials. +Harmonic signals have a pitch determined by their fundamental frequency; for +inharmonic ones, the pitch may be clear, ambiguous, or absent altogether, +according to complex and incompletely understood rules. A noisy spectrum may +also have a perceptible pitch if the spectral envelope contains one or more +narrow peaks. In general, a sound's loudness and timbre depend more on its +spectral envelope than on the frequencies in the spectrum, although the +distinction between continuous and discrete spectra may also be heard as a +difference in timbre. + +

+Timbre, as well as pitch, may evolve over the life of a sound. We have been +speaking of spectra here as static entities, not considering whether they +change in time or not. If a signal's pitch and timbre are changing over time, +we can think of the spectrum as a time-varying description of +the signal's momentary behavior. + +

+This way of viewing sounds is greatly oversimplified. The true behavior of +audible pitch and timbre has many aspects which can't be explained in terms of +this model. For instance, the timbral quality called ``roughness" is sometimes +thought of as being reflected in rapid changes in the spectral envelope over +time. The simplified description developed here is useful nonetheless in +discussions about how to construct discrete or continuous spectra for a wide +variety of musical purposes, as we will begin to show in the rest of this +chapter. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Multiplying audio signals + Up: Modulation + Previous: Modulation +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node77.html b/node77.html new file mode 100644 index 0000000..ca7c7b9 --- /dev/null +++ b/node77.html @@ -0,0 +1,615 @@ + + + + + +Multiplying audio signals + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Waveshaping + Up: Modulation + Previous: Taxonomy of spectra +   Contents +   Index +
+
+ + +

+ +
+Multiplying audio signals +

+ +

+We have been routinely adding audio signals together, and multiplying them +by slowly-varying signals (used, for example, as amplitude envelopes) since +Chapter 1. For a full understanding of the algebra of audio +signals we must also consider the situation where two audio signals, +neither of which may be assumed to change slowly, are multiplied. The key to understanding +what happens is the Cosine Product Formula: + +

+
+ + +\begin{displaymath}
+\cos(a) \cos (b) = {1 \over 2}
+{ \left [
+\parbox[t][0.1in]{0in}{\mbox{}}
+\cos (a+b) + \cos(a-b)
+\right ] }
+\end{displaymath} +
+
+

+To see why this formula holds, we can use the formula for the cosine of a +sum of two angles: +

+
+ + +\begin{displaymath}
+\cos(a+b) = \cos(a)\cos(b) - \sin(a) \sin(b)
+\end{displaymath} +
+
+

+to evaluate the right hand side of the cosine product formula; it then +simplifies to the left hand side. + +

+We can use this formula to see what happens when we multiply two sinusoids +(Page [*]): +

+
+ + +\begin{displaymath}
+{\cos(\alpha n + \phi) \cos (\beta n + \xi)}
+=
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+= {1 \over 2} { \left [ {
+\parbox[t][0.1in]{0in}{\mbox{}}...
+...t ( (\alpha - \beta) n + (\phi - \xi) \right ) }
+} \right ] }
+\end{displaymath} +
+
+

+In words, multiply two sinusoids and you get a result with two partials, +one at the sum of the two original frequencies, and one at their difference. +(If the difference $\alpha-\beta$ happens to be negative, simply switch the +original two sinusoids and the difference will then be positive.) These +two new components are called +sidebands. + +

+This gives us a technique for shifting the component frequencies +of a sound, called +ring modulation, which is shown in its simplest form in Figure +5.2. An oscillator provides a +carrier signal, which +is simply multiplied by the input. In this context the input is called the +modulating signal. +The term ``ring modulation" is often used +more generally to mean multiplying any two signals together, but here we'll +just consider using a sinusoidal carrier signal. (The technique of ring +modulation dates from the analog era [Str95]; digital +multipliers now replace both the VCA (Section 1.5) and the +ring modulator.) + +

+ +

+ + + +
Figure 5.2: +Block diagram for ring modulating an input signal with a sinusoid.
\begin{figure}\psfig{file=figs/fig05.02.ps}\end{figure}
+
+ +

+Figure 5.3 shows a variety of results that may be obtained by +multiplying a (modulating) sinusoid of angular frequency $\alpha $ and +peak amplitude +$2a$, by a (carrier) sinusoid of angular frequency $\beta $ and +peak amplitude 1: +

+
+ + +\begin{displaymath}
+\left [ 2 a \cos (\alpha n) \right ]
+\cdot
+\left [ \cos (\beta n) \right ]
+\end{displaymath} +
+
+

+(For simplicity the phase terms are omitted.) Each part of the figure +shows both the modulation signal and the result in the same spectrum. +The modulating signal appears as a single frequency, $\alpha $, at amplitude +$a$. +The product in general has two component frequencies, +each at an amplitude of $a/2$. + +

+ +

+ + + +
Figure 5.3: +Sidebands arising from multiplying two sinusoids of frequency +$\alpha $ and $\beta $: (a) with +$\alpha > \beta > 0$; +(b) with +$\beta > \alpha $ so that +the lower sideband is reflected about the $f=0$ axis; (c) with $\alpha =\beta $, +for which the amplitude of the zero-frequency +sideband depends on the phases of the two sinusoids; (d) +with $\alpha =0$.
\begin{figure}\psfig{file=figs/fig05.03.ps}\end{figure}
+
+ +

+Parts (a) and (b) of the figure show ``general" cases where $\alpha $ and $\beta $ are +nonzero and different from each other. The component frequencies of the output +are +$\alpha + \beta$ and +$\alpha-\beta$. In part (b), since +$\alpha-\beta<0$, +we get a negative frequency component. Since cosine is an even function, we +have +

+
+ + +\begin{displaymath}
+\cos((\alpha - \beta)n) = \cos((\beta - \alpha)n)
+\end{displaymath} +
+
+

+so the negative component is exactly equivalent to one at the positive +frequency $\beta-\alpha$, at the same amplitude. + +

+In the special case where +$\alpha =\beta $, the second (difference) sideband +has zero frequency. In this case phase will be significant so we rewrite +the product with explicit phases, replacing $\beta $ by $\alpha $, to get: +

+
+ + +\begin{displaymath}
+{2 a \cos(\alpha n + \phi) \cos (\alpha n + \xi)}
+=
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+=
+{a \cos \left ( 2 \alpha n + (\phi + \xi) \right ) }
++
+{a \cos \left ( \phi - \xi \right ) }
+.
+\end{displaymath} +
+
+

+The second term has zero frequency; its amplitude depends on the relative phase +of the two sinusoids and +ranges from $+a$ to $-a$ +as the phase difference $\phi - \xi$ varies from $0$ to $\pi $ radians. This +situation is shown in part (c) of Figure 5.3. + +

+Finally, part (d) shows a carrier signal whose frequency is zero. Its value is +the constant $a$ (not $2a$; zero frequency is a special case). Here we +get only one sideband, of amplitude $a/2$ as usual. + +

+We can use the distributive rule for multiplication to find out what +happens when we multiply signals together which consist of more than one +partial each. For example, in the situation above we can replace the +signal of frequency $\alpha $ with a sum of several sinusoids, such as: +

+
+ + +\begin{displaymath}
+{a_1} \cos({\alpha _1} n ) + \cdots + {a_k} \cos({\alpha _k} n )
+\end{displaymath} +
+
+

+Multiplying by the signal of frequency $\beta $ gives partials at frequencies +equal to: +

+
+ + +\begin{displaymath}
+\alpha_1 + \beta, \alpha_1 - \beta, \ldots,
+\alpha_k + \beta, \alpha_k - \beta
+\end{displaymath} +
+
+

+As before if any frequency is negative we take its absolute value. + +

+Figure 5.4 shows the result of multiplying a complex periodic signal +(with several components tuned in the ratio 0:1:2:$\cdots$) by a +sinusoid. Both the spectral envelope and the component frequencies of the +result are changed according to relatively simple rules. + +

+ +

+ + + +
Figure 5.4: +Result of ring modulation of a complex signal by a pure sinusoid: +(a) the original signal's spectrum and spectral envelope; (b) modulated +by a relatively low modulating frequency (1/3 of the fundamental); (c) +modulated by a higher frequency, 10/3 of the fundamental.
\begin{figure}\psfig{file=figs/fig05.04.ps}\end{figure}
+
+ +

+The resulting spectrum is essentially the original spectrum combined with its +reflection about the vertical axis. This combined spectrum is then shifted to +the right by the carrier frequency. Finally, if any components of the +shifted spectrum are still left of the vertical axis, they are reflected about +it to make positive frequencies again. + +

+In part (b) of the figure, the carrier frequency (the frequency of the +sinusoid) is below the fundamental frequency of the complex signal. In this +case the shifting is by a relatively small distance, so that re-folding the +spectrum at the end almost places the two halves on top of each other. The +result is a spectral envelope roughly the same as the original (although half +as high) and a spectrum twice as dense. + +

+A special case, not shown, is to use a carrier frequency half the +fundamental. In this case, pairs of partials will fall on top of each other, +and will have the ratios 1/2 : 3/2 : 5/2 :$\cdots$ to give an odd-partial-only +signal an octave below the original. This is a very simple and effective +octave divider for a harmonic signal, assuming you know or can find its +fundamental frequency. If you want even partials as well as odd ones (for the +octave-down signal), simply mix the original signal with the modulated one. + +

+Part (c) of the figure shows the effect of using a modulating frequency +much higher than the fundamental frequency of the complex signal. Here the +unfolding effect is much more clearly visible (only one partial, the leftmost +one, had to be reflected to make its frequency positive). The spectral envelope +is now widely displaced from the original; this displacement is often a more +strongly audible effect than the relocation of partials. + +

+As another special case, the carrier frequency may be a multiple of the +fundamental of the complex periodic signal; then the partials +all land back on other partials of the same fundamental, and the only effect +is the shift in spectral envelope. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Waveshaping + Up: Modulation + Previous: Taxonomy of spectra +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node78.html b/node78.html new file mode 100644 index 0000000..8cf14f9 --- /dev/null +++ b/node78.html @@ -0,0 +1,871 @@ + + + + + +Waveshaping + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Frequency and phase modulation + Up: Modulation + Previous: Multiplying audio signals +   Contents +   Index +
+
+ + +

+ +
+Waveshaping +

+ +

+Another approach to modulating a signal, called +waveshaping, +is simply to pass it through a +suitably chosen nonlinear function. A block diagram for doing this is shown in Figure +5.5. +The function $f()$ (called the +transfer function) +distorts the incoming waveform into a different shape. The new shape depends +on the shape of the incoming wave, on the transfer function, and +also--crucially--on +the amplitude of the incoming signal. Since the amplitude of the input +waveform affects the shape of the output waveform (and hence the timbre), +this gives us an easy way to make a continuously varying family of timbres, +simply by varying the input level of the transformation. For this reason, +it is customary to include a leading amplitude control as part of the waveshaping +operation, as shown in the block diagram. + +

+ +

+ + + +
Figure 5.5: +Block diagram for waveshaping an input signal using a nonlinear +function $f()$. An +amplitude adjustment step precedes the function lookup, to take advantage of +the different effect of the wavetable lookup at different amplitudes.
\begin{figure}\psfig{file=figs/fig05.05.ps}\end{figure}
+
+ +

+The amplitude of the incoming waveform is called the waveshaping +index. In many situations a small index leads to relatively little +distortion (so that the output closely resembles the input) and a larger one +gives a more distorted, richer timbre. + +

+Figure 5.6 shows a familiar example of waveshaping, in which +$f()$ amounts to a + +clipping function. This example shows clearly how the input +amplitude--the index--can +affect the output waveform. The clipping function passes its input +to the output unchanged as long as it stays in the interval between -0.3 and ++0.3. So when the input does not exceed 0.3 in +absolute value, the output is the same as the input. But when the input grows +past the limits, the output stays within; and as the amplitude of the +signal increases the effect of this clipping action is progressively more +severe. In the figure, the input is a decaying sinusoid. The output +evolves from a nearly square waveform at the beginning to a pure sinusoid +at the end. This effect will be well known to anyone who has played an +instrument through an overdriven amplifier. The louder the input, the +more distorted will be the output. For this reason, waveshaping is also sometimes +called + +distortion. + +

+ +

+ + + +
Figure 5.6: +Clipping as an example of waveshaping: (a) the input, a decaying +sinusoid; (b) the waveshaping function, which clips its input to +the interval between -0.3 and +0.3; (c) the result.
\begin{figure}\psfig{file=figs/fig05.06.ps}\end{figure}
+
+ +

+Figure 5.7 shows a much simpler and easier to analyse situation, +in which the transfer function simply squares the input: +

+
+ + +\begin{displaymath}
+f(x) = {x^2}
+\end{displaymath} +
+
+

+For a sinusoidal input, +

+
+ + +\begin{displaymath}
+x[n] = a \cos (\omega n + \phi )
+\end{displaymath} +
+
+

+we get +

+
+ + +\begin{displaymath}
+f(x[n]) = {{a^2} \over 2} \left ( 1 + \cos(2 \omega n + 2 \phi) \right )
+\end{displaymath} +
+
+

+If the amplitude $a$ equals one, this just amounts to ring modulating the +sinusoid by a sinusoid of the same frequency, whose result we described in the +previous section: the output is a DC (zero-frequency) sinusoid plus a +sinusoid at +twice the original frequency. However, in this waveshaping example, unlike +ring modulation, the amplitude of the output grows as the square +of the input. + +

+ +

+ + + +
Figure 5.7: +Waveshaping using a quadratic transfer function $f(x) = {x^2}$: +(a) the +input; (b) the transfer function; (c) the result, sounding at twice the +original frequency.
\begin{figure}\psfig{file=figs/fig05.07.ps}\end{figure}
+
+ +

+Keeping the same transfer function, we now consider the effect of sending in a +combination of two sinusoids with amplitudes $a$ and $b$, and angular +frequencies $\alpha $ and $\beta $. For simplicity, we'll omit the initial phase +terms. We set: +

+
+ + +\begin{displaymath}
+x[n] = a \cos(\alpha n) + b \cos(\beta n)
+\end{displaymath} +
+
+

+and plugging this into $f()$ gives +

+
+ + +\begin{displaymath}
+f(x[n]) = {{a^2} \over 2} \left ( 1 + \cos(2 \alpha n) \right ) +
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
++ {{b^2} \over 2} \left ( 1 + \cos(2 \beta n) \right )
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
++ a b \left [
+\cos ( (\alpha + \beta) n ) + \cos ( (\alpha - \beta) n )
+\right ]
+\end{displaymath} +
+
+

+The first two terms are just what we would get by sending the two sinusoids +through separately. The third term is twice the product of the two input terms, +which comes from the middle, cross term in the expansion, +

+
+ + +\begin{displaymath}
+f(x+y) = {x^2} + 2 x y + {y^2}
+\end{displaymath} +
+
+

+This effect, called +intermodulation, +becomes more and more dominant as the number of terms in the input +increases; if there are $k$ sinusoids in the input there are +only $k$ ``straight" terms in the product, but there are $({k^2}-k)/2$ +intermodulation terms. + +

+In contrast with ring modulation, which is a linear function of its input +signal, waveshaping is +nonlinear. While we were able to analyze linear processes by considering their +action separately on all the components of the input, in this nonlinear case we +also have to consider the interactions between components. The results are +far more complex--sometimes sonically much richer, but, on the other +hand, harder to understand or predict. + +

+In general, we can show that a periodic input, no matter how complex, will +repeat at the same period after waveshaping: if the period is $\tau$ so that +

+
+ + +\begin{displaymath}
+x[n + \tau] = x[n]
+\end{displaymath} +
+
+

+and temporarily setting the index $a=1$, +

+
+ + +\begin{displaymath}
+f(x[n+\tau]) = f(x[n])
+\end{displaymath} +
+
+

+(In some special cases the output can repeat at a submultiple of $\tau$, so +that we get a harmonic of the input as a result; this happened for example +in Figure 5.4.) + +

+Combinations of periodic tones at consonant intervals can give rise to +distortion products at subharmonics. For instance, if two periodic signals $x$ +and $y$ are a musical fourth apart (periods in the ratio 4:3), then the sum of +the two repeats at the lower rate given by the common subharmonic. In +equations we would have: +

+
+ + +\begin{displaymath}
+x[t + \tau/3] = x[t]
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+y[t + \tau/4] = y[t]
+\end{displaymath} +
+
+

+which implies +

+
+ + +\begin{displaymath}
+x[t + \tau] + y[t+\tau] = x[t] + y[t]
+\end{displaymath} +
+
+

+and so the distorted sum $f(x+y)$ would repeat after a period of $\tau$: +

+
+ + +\begin{displaymath}
+f(x+y)[n + \tau] = f(x+y)[n].
+\end{displaymath} +
+
+

+This has been experienced by every electric guitarist who has set the amplifier +to ``overdrive" and played the open B and high E strings together: the +distortion product sometimes sounds at the pitch of the low E string, two +octaves below the high one. + +

+To get a somewhat more explicit analysis of the effect of waveshaping on +an incoming signal, it is sometimes useful to write the function $f$ as +a finite or infinite +power series: +

+
+ + +\begin{displaymath}
+f(x) = {f_0} + {f_1}x + {f_2}{x^2} + {f_3}{x^3} + \cdots
+\end{displaymath} +
+
+

+If the input signal $x[n]$ is a unit-amplitude sinusoid, +$\cos(\omega n)$, we +can consider the action of the above terms separately: +

+
+ + +\begin{displaymath}
+f(a \cdot x[n]) = {f_0} + a {f_1}\cos(\omega n) + {a^2} {f_...
+...\cos^2} (\omega n)
++ {a^3} {f_3} {\cos^3} (\omega n) + \cdots
+\end{displaymath} +
+
+

+Since the terms of the series are successively multiplied by higher powers of +the index +$a$, a lower value of $a$ will emphasize the earlier terms more heavily, and +a higher value will emphasize the later ones. + +

+The individual terms' spectra can be found by applying the cosine product +formula repeatedly: +

+
+ + +\begin{displaymath}
+1 = \cos (0)
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+x[n] = \cos (\omega n)
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+{x^2}[n] = {1 \over 2} + {1 \over 2} \cos (2\omega n)
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+{x^3}[n] = {1 \over 4} \cos (-\omega n) + {2 \over 4} \cos (\omega n)
++ {1 \over 4} \cos (3 \omega n)
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+{x^4}[n] = {1 \over 8} \cos (-2\omega n) + {3 \over 8} \cos...
+... {3 \over 8} \cos (2 \omega n) + {1 \over 8} \cos (4 \omega n)
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+{x^5}[n] = {1 \over 16} \cos (-3\omega n) + {4 \over 16} \c...
+... \over 16} \cos (3 \omega n)
++ {1 \over 16} \cos (5 \omega n)
+\end{displaymath} +
+
+

+and so on. +The numerators of the fractions will be recognized as Pascal's triangle. The +Central Limit Theorem +of probability implies that each $k$th row can be +approximated by a Gaussian curve whose standard deviation (a measure of width) +is proportional to the square root of $k$. + +

+The negative-frequency terms (which have been shown separately here for clarity) +are to be combined with the positive ones; the spectral envelope is folded +into itself in the same way as in the ring modulation example of +Figure 5.4. + +

+As long as the coefficients $f_k$ are all positive numbers or zero, then so +are all the amplitudes of the sinusoids in the expansions above. In this +case all the phases stay coherent as $a$ varies and so we get a widening +of the spectrum (and possibly a drastically increasing amplitude) with +increasing values of $a$. On the other hand, if some of the $f_k$ are +positive and others negative, the different expansions will interfere +destructively; this will give a more complicated-sounding spectral evolution. + +

+Note also that the successive expansions all contain only even or only odd +partials. If the transfer function (in series form) happens to contain only +even powers: +

+
+ + +\begin{displaymath}
+f(x) = {f_0} + {f_2}{x^2} + {f_4}{x^4} + \cdots
+\end{displaymath} +
+
+

+then the result, having only even partials, will sound an octave higher than +the incoming sinusoid. If only odd powers show up in the expansion of $f(x)$, +then the output will contain only odd partials. Even if $f$ can't be expressed +exactly as a power series (for example, the clipping function of Figure +5.3), it is still true that if $f$ is an even function, i.e., if +

+
+ + +\begin{displaymath}
+f(-x) = f(x)
+\end{displaymath} +
+
+

+you will get only even harmonics and if $f$ is an odd function, +

+
+ + +\begin{displaymath}
+f(-x) = -f(x)
+\end{displaymath} +
+
+

+you will get odd harmonics. + +

+Many mathematical tricks have been proposed to use waveshaping to generate +specified spectra. It turns out that you can generate pure sinusoids +at any harmonic of the fundamental by using a Chebychev polynomial as +a transfer function [Leb79] [DJ85], and from there you can go on to build +any desired static spectrum (Example E05.chebychev.pd +demonstrates this.) Generating families of spectra by +waveshaping a sinusoid of variable amplitude turns out to be trickier, +although several interesting special cases have been found, some of which +are developed in detail in Chapter 6. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Frequency and phase modulation + Up: Modulation + Previous: Multiplying audio signals +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node79.html b/node79.html new file mode 100644 index 0000000..1ead22d --- /dev/null +++ b/node79.html @@ -0,0 +1,488 @@ + + + + + +Frequency and phase modulation + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Examples + Up: Modulation + Previous: Waveshaping +   Contents +   Index +
+
+ + +

+ +
+Frequency and phase modulation +

+ +

+If a sinusoid is given a frequency which varies slowly in time we hear it as +having a varying pitch. But if the pitch changes so quickly that our ears +can't track the change--for instance, if the change itself occurs at or +above the fundamental frequency of the sinusoid--we hear a timbral change. +The timbres so generated are rich and widely varying. The discovery by +John Chowning of this +possibility [Cho73] revolutionized the field of computer music. +Here we develop +frequency modulation, +usually called FM, +as a special case of waveshaping [Leb79] +[DJ85, pp.155-158]; the +analysis given here is somewhat different [Puc01]. + +

+The FM technique, in its simplest form, is shown in Figure 5.8 +(part a). +A frequency-modulated sinusoid is one whose frequency varies sinusoidally, at +some angular frequency $\omega_m$, about a central frequency $\omega_c$, so +that the instantaneous frequencies vary between $(1-r)\omega_c $ and + +$(1+r) \omega_c$, with parameters $\omega_m$ controlling the frequency of +variation, and $r$ controlling the depth of variation. The parameters +$\omega_c$, $\omega_m$, and $r$ are called the +carrier frequency, the +modulation frequency, and the +index of modulation, respectively. + +

+It is customary to use a simpler, essentially equivalent formulation in +which the phase, instead of the frequency, of the carrier sinusoid is +modulated sinusoidally. (This gives an equivalent result since the +instantaneous frequency is the rate of change of phase, and since the +rate of change of a sinusoid is just another sinusoid.) The +phase modulation formulation is shown in part (b) of the figure. + +

+We can analyze the result of phase modulation as follows, assuming that +the modulating oscillator and the wavetable are both sinusoidal, and that +the carrier and modulation frequencies don't themselves vary +in time. The resulting signal can then be written as +

+
+ + +\begin{displaymath}
+x[n] = \cos(a \cos(\omega_m n) + \omega_c n )
+\end{displaymath} +
+
+

+The +parameter $a$, which takes the place of the earlier parameter $r$, is +likewise called the index of modulation; it too +controls the extent of frequency variation relative to the carrier frequency +$\omega_c$. If $a=0$, there +is no frequency variation and the expression reduces to the unmodified, +carrier sinusoid; as $a$ increases the waveform becomes more complex. + +

+ +

+ + + +
Figure 5.8: +Block diagram for frequency modulation (FM) synthesis: (a) the classic +form; (b) realized as phase modulation.
\begin{figure}\psfig{file=figs/fig05.08.ps}\end{figure}
+
+ +

+To analyse the resulting spectrum we can rewrite the signal as, +

+
+ + +\begin{displaymath}
+x[n] = \cos(\omega_c n) * \cos(a \cos(\omega_m n))
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+- \sin(\omega_c n) * \sin(a \cos(\omega_m n))
+\end{displaymath} +
+
+

+We can consider the result as a sum of two waveshaping +generators, each operating on a sinusoid of frequency $\omega_m$ and +with a waveshaping index $a$, and each ring modulated with a sinusoid of +frequency $\omega_c$. The waveshaping function $f$ is given by + +$f(x) = \cos(x)$ for the first term and by +$f(x) = \sin(x)$ for the second. + +

+Returning to Figure 5.4, we can predict what the +spectrum will look like. The two harmonic spectra, of the waveshaping outputs +

+
+ + +\begin{displaymath}
+\cos(a \cos(\omega_m n))
+\end{displaymath} +
+
+

+and +

+
+ + +\begin{displaymath}
+\sin(a \cos(\omega_m n))
+\end{displaymath} +
+
+

+have, respectively, harmonics tuned to +

+
+ + +\begin{displaymath}
+0, 2\omega_m, 4\omega_m, \ldots
+\end{displaymath} +
+
+

+and +

+
+ + +\begin{displaymath}
+\omega_m, 3\omega_m, 5\omega_m, \ldots
+\end{displaymath} +
+
+

+and each is multiplied by a sinusoid at the carrier frequency. So there +will be a spectrum centered at the carrier frequency $\omega_c$, with +sidebands at both even and odd multiples of the modulation frequency $\omega_m$, +contributed respectively by the sine and cosine waveshaping terms above. +The index of modulation $a$, as it changes, controls the relative strength of +the various partials. The partials themselves are situated at the frequencies +

+
+ + +\begin{displaymath}
+\omega_c + m \omega_m
+\end{displaymath} +
+
+

+where +

+
+ + +\begin{displaymath}
+m = \ldots -2, -1, 0, 1, 2, \ldots
+\end{displaymath} +
+
+

+As with any situation where two periodic signals are multiplied, if there is +some common supermultiple of the two periods, the resulting product will repeat +at that longer period. So if the two periods are $k \tau$ and $m \tau$, where +$k$ and $m$ are relatively prime, they both repeat after a time interval of +$km\tau$. In other words, if the two have frequencies which are both multiples +of some common frequency, so that +$\omega_m=k\omega$ and +$\omega_c=m\omega$, +again with $k$ and $m$ relatively prime, the result will repeat at a frequency +of the common submultiple $\omega $. On the other hand, if no common +submultiple $\omega $ can be found, or if the only submultiples are lower than +any discernible pitch, then the result will be inharmonic. + +

+Much more about FM can be found in textbooks [Moo90, p. 316] +[DJ85, pp.115-139] [Bou00] and the research literature. +Some of the +possibilities are shown in the following examples. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Examples + Up: Modulation + Previous: Waveshaping +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node8.html b/node8.html new file mode 100644 index 0000000..0638862 --- /dev/null +++ b/node8.html @@ -0,0 +1,268 @@ + + + + + +Measures of Amplitude + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Units of Amplitude + Up: Sinusoids, amplitude and frequency + Previous: Sinusoids, amplitude and frequency +   Contents +   Index +
+
+ + +

+ +
+Measures of Amplitude +

+ +

+The most fundamental property of a digital audio signal is its +amplitude. Unfortunately, a signal's amplitude has no one canonical +definition. +Strictly speaking, all the samples in a digital audio signal are themselves +amplitudes, and we also spoke of the amplitude $a$ of the sinusoid as a whole. +It is useful to have measures +of amplitude for digital audio signals in general. Amplitude +is best thought of as applying to a +window, a fixed range of samples of the signal. For instance, the +window starting at sample $M$ of length $N$ of an audio signal $x[n]$ consists of the +samples, +

+
+ + +\begin{displaymath}
+x[M], x[M+1], \ldots, x[M+N-1]
+\end{displaymath} +
+
+

+The two most frequently used measures of amplitude are the +peak amplitude, which is simply the greatest sample (in absolute value) +over the window: +

+
+ + +\begin{displaymath}
+{A_{\mathrm{peak}}} \{x[n]\} = \max \vert x[n] \vert ,
+\hspace{0.3in}n = M, \ldots, M+N-1
+\end{displaymath} +
+
+

+and the +root mean square (RMS) amplitude: +

+
+ + +\begin{displaymath}
+{A_{\mathrm{RMS}}} \{x[n]\} = \sqrt{P\{x[n]\}}
+\end{displaymath} +
+
+

+where $P\{x[n]\}$ is the mean +power, defined as: +

+
+ + +\begin{displaymath}
+{P\{x[n]\}} = {1 \over N} \left (
+{{\vert x[M]\vert} ^2} + \cdots + {{\vert x[M+N-1]\vert} ^2}
+\right )
+\end{displaymath} +
+
+

+(In this last formula, the absolute value signs aren't necessary at the moment +since we're working on real-valued signals, but they will become important +later when we consider complex-valued signals.) Neither the peak nor the RMS +amplitude of any signal can be negative, and either one can be exactly zero +only if the signal itself is zero for all $n$ in the window. + +

+The RMS amplitude of a signal may equal the peak amplitude but never exceeds +it; and it may be as little as $1 / {\sqrt N}$ times the peak amplitude, but +never less than that. + +

+ +

+ + + +
Figure 1.2: +Root mean square (RMS) and peak amplitudes of signals compared. +For a sinusoid (part a), the peak amplitude is higher than RMS by a factor of +$\sqrt 2$.
\begin{figure}\psfig{file=figs/fig01.02.ps}\end{figure}
+
+ +

+Under reasonable conditions--if the window contains at least several periods and +if the angular frequency is well under one radian per sample--the peak +amplitude of the sinusoid of Page [*] +is approximately $a$ and its RMS amplitude +about $a / {\sqrt 2}$. Figure 1.2 shows the peak and RMS amplitudes +of two digital audio signals. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Units of Amplitude + Up: Sinusoids, amplitude and frequency + Previous: Sinusoids, amplitude and frequency +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node80.html b/node80.html new file mode 100644 index 0000000..f5aba28 --- /dev/null +++ b/node80.html @@ -0,0 +1,96 @@ + + + + + +Examples + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Ring modulation and spectra + Up: Modulation + Previous: Frequency and phase modulation +   Contents +   Index +
+
+ + +

+Examples +

+ +

+


+ +Subsections + + + +

+
+Miller Puckette +2006-12-30 +
+ + diff --git a/node81.html b/node81.html new file mode 100644 index 0000000..4a5e04d --- /dev/null +++ b/node81.html @@ -0,0 +1,154 @@ + + + + + +Ring modulation and spectra + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Octave divider and formant + Up: Examples + Previous: Examples +   Contents +   Index +
+
+ + +

+Ring modulation and spectra +

+ +

+Example E01.spectrum.pd serves to introduce a spectrum +measurement tool we'll be using; here we'll skip to the +second example, E02.ring.modulation.pd, which shows the effect of ring modulating a harmonic +spectrum (which was worked out theoretically in Section 5.2 and +shown in Figure 5.4). In the example we consider a signal whose +harmonics (from 0 through 5) all have unit amplitude. The harmonics may be +turned on and off separately using toggle switches. When they are all on, +the spectral envelope peaks at DC (because the constant signal counts twice as +strongly as the other sinusoids), has a flat region from +harmonics 1 through 5, and then descends to zero. + +

+ +

+ + + +
Figure 5.9: +Ring modulation of a complex tone by a sinusoid: (a) its realization; +(b) a measured spectrum.
\begin{figure}\psfig{file=figs/fig05.09.ps}\end{figure}
+
+ +

+In the signal generation portion of the patch (part (a) of the figure), we sum +the six partials and multiply the sum by the single, carrier oscillator. +(The six signals are summed implicitly by connecting them all to the same +inlet of the *~ object.) The value of ``fundamental" at the top +is computed to line up well with the spectral analysis, whose result is +shown in part (b) of the figure. + +

+The spectral analysis (which uses techniques that won't be described until +Chapter 9) shows the location of the +sinusoids (assuming a discrete spectrum) on the horizontal axis and their +magnitudes on the vertical one. So the presence of a peak at DC of magnitude +one in the spectrum of the input signal predicts, à la Figure 5.3, +that there should be a peak in the output spectrum, at the carrier frequency, +of height 1/2. Similarly, the two other sinusoids in the input signal, which +have height 1/2 in the spectrum, give rise to two peaks each, of height 1/4, +in the output. One of these four has been reflected about the left edge of +the figure (taking the absolute value of its negative frequency). + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Octave divider and formant + Up: Examples + Previous: Examples +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node82.html b/node82.html new file mode 100644 index 0000000..d0b0967 --- /dev/null +++ b/node82.html @@ -0,0 +1,172 @@ + + + + + +Octave divider and formant adder + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Waveshaping and difference tones + Up: Examples + Previous: Ring modulation and spectra +   Contents +   Index +
+
+ + +

+Octave divider and formant adder +

+ +

+As suggested in Section 5.2, when considering the result of +modulating a complex harmonic (i.e., periodic) signal by a sinusoid, an +interesting special case is to set the carrier oscillator to $1/2$ the +fundamental frequency, which drops the resulting sound an octave with only +a relatively small deformation of the spectral envelope. Another is to +modulate by a sinusoid at several times the fundamental frequency, which +in effect displaces the spectral envelope without changing the fundamental +frequency of the result. This is demonstrated in Example E03.octave.divider.pd (Figure +5.10). The signal we process here is a recorded, spoken voice. + +

+ +

+ + + +
Figure 5.10: +Lowering the pitch of a sound by an octave by determining its pitch +and modulating at half the fundamental.
\begin{figure}\psfig{file=figs/fig05.10.ps}\end{figure}
+
+ +

+The subpatches pd looper and pd delay hide details. The +first is a looping sampler as introduced in Chapter 2. +The second is a delay of 1024 samples, which uses objects that are introduced +later in Chapter 7. We will introduce one object class here: + +

+
+\fbox{ \texttt{fiddle\~}}: +pitch tracker. The inlet takes a signal to analyze, and messages to +change settings. Depending on its creation arguments fiddle~may have a +variable number of outlets offering various information about the input +signal. As shown here, with only one creation argument to specify window size, +the third outlet attempts to report the pitch of the input, and the amplitude +of that portion of the input which repeats (at least approximately) at the +reported pitch. These are output as a list of two numbers. The pitch, which +is in MIDI units, is reported as zero if none could be identified. + +

+In this patch the third outlet is unpacked into its pitch and amplitude +components, and the pitch component is filtered by the moses object so that +only successful pitch estimates (nonzero ones) are used. These are +converted to units of frequency by the mtof object. Finally, the frequency +estimates are either reduced by $1/2$ or else multiplied by 15, depending on +the selected multiplier, to provide the modulation frequency. In the first +case we get an octave divider, and in the second, additional high harmonics +that deform the vowels. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Waveshaping and difference tones + Up: Examples + Previous: Ring modulation and spectra +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node83.html b/node83.html new file mode 100644 index 0000000..79adc18 --- /dev/null +++ b/node83.html @@ -0,0 +1,167 @@ + + + + + +Waveshaping and difference tones + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Waveshaping using Chebychev polynomials + Up: Examples + Previous: Octave divider and formant +   Contents +   Index +
+
+ + +

+Waveshaping and difference tones +

+ +

+Example E04.difference.tone.pd (Figure 5.11) introduces waveshaping, demonstrating +the nonlinearity of the process. Two sinusoids (300 and 225 Hertz, or a ratio of +4 to 3) are summed and then clipped, using a new object class: + +

+ +

+ + + +
Figure 5.11: +Nonlinear distortion of a sum of two sinusoids to create a +difference tone.
\begin{figure}\psfig{file=figs/fig05.11.ps}\end{figure}
+
+ +

+
+\fbox{ \texttt{clip\~}}: +signal clipper. When the signal lies between the limits specified by the +arguments to the clip~ object, it is passed through unchanged; but +when it falls below the lower limit or rises above the upper limit, it is +replaced by the limit. The effect of +clipping a sinusoidal signal was shown graphically in Figure 5.6. + +

+As long as the amplitude of the sum of sinusoids is less than 50 percent, the +sum can't exceed one in absolute value and the clip~ object passes the +pair of sinusoids through unchanged to the output. As soon as the amplitude +exceeds 50 percent, however, the nonlinearity of the clip~ object +brings forth distortion products (at frequencies $300m+225n$ for integers $m$ +and $n$), all of which happening to be multiples of 75, which is thus the +fundamental of the resulting tone. Seen another way, the shortest common +period of the two sinusoids is 1/75 second (which is four periods of the 300 +Hertz, tone and three periods of the 225 Hertz tone), so the result repeats +75 times per second. + +

+The frequency of the 225 Hertz tone in the patch may be varied. If it is moved +slightly away from 225, a beating sound results. Other values find other +common subharmonics, and still others give rise to rich, inharmonic tones. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Waveshaping using Chebychev polynomials + Up: Examples + Previous: Octave divider and formant +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node84.html b/node84.html new file mode 100644 index 0000000..e7ff2ae --- /dev/null +++ b/node84.html @@ -0,0 +1,305 @@ + + + + + +Waveshaping using Chebychev polynomials + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Waveshaping using an exponential + Up: Examples + Previous: Waveshaping and difference tones +   Contents +   Index +
+
+ + +

+Waveshaping using Chebychev polynomials +

+ +

+Example E05.chebychev.pd (Figure 5.12) demonstrates how you can use waveshaping +to generate pure harmonics. We'll limit ourselves to a specific example here +in which we would like +to generate the pure fifth harmonic, + +

+ + + +
Figure 5.12: +Using Chebychev polynomials as waveshaping transfer functions.
\begin{figure}\psfig{file=figs/fig05.12.ps}\end{figure}
+
+ +

+
+ + +\begin{displaymath}
+\cos(5 \omega n)
+\end{displaymath} +
+
+

+by waveshaping a sinusoid +

+
+ + +\begin{displaymath}
+x[n] = \cos (\omega n)
+\end{displaymath} +
+
+

+We +need to find a suitable transfer function $f(x)$. First we recall +the formula for the waveshaping function $f(x) = x^5$ +(Page [*]), which gives first, +third and fifth harmonics: +

+
+ + +\begin{displaymath}
+16 {x^5} = \cos (5 \omega n) + 5 \cos(3 \omega n) + 10 \cos(\omega n)
+\end{displaymath} +
+
+

+Next we add a suitable multiple of $x^3$ to +cancel the third harmonic: +

+
+ + +\begin{displaymath}
+16 {x^5} - 20 {x^3} = \cos (5 \omega n) - 5 \cos(\omega n)
+\end{displaymath} +
+
+

+and then a multiple of $x$ to cancel the first harmonic: +

+
+ + +\begin{displaymath}
+16 {x^5} - 20 {x^3} + 5 x = \cos (5 \omega n)
+\end{displaymath} +
+
+

+So for our waveshaping function we choose +

+
+ + +\begin{displaymath}
+f(x) = 16 {x^5} - 20 {x^3} + 5 x
+\end{displaymath} +
+
+

+This procedure allows us to isolate any desired harmonic; the resulting +functions $f$ are known as +Chebychev polynomials [Leb79]. + +

+To incorporate this in a waveshaping instrument, we simply build a patch +that works as in Figure 5.5, computing the expression +

+
+ + +\begin{displaymath}
+x[n] = f( a[n] \cos(\omega n))
+\end{displaymath} +
+
+

+where $a[n]$ is a suitable +index +which may vary as a function of the sample number $n$. When $a$ happens to +be one in value, out comes the pure fifth harmonic. Other values of $a$ +give varying spectra which, in general, have first and third harmonics as +well as the fifth. + +

+By suitably combining Chebychev polynomials we can fix any desired +superposition of components in the output waveform (again, as long as +the waveshaping index is one). But the real +promise of waveshaping--that by simply changing the index we can +manufacture spectra that evolve in interesting but controllable ways--is +not addressed, at least directly, in the Chebychev picture. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Waveshaping using an exponential + Up: Examples + Previous: Waveshaping and difference tones +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node85.html b/node85.html new file mode 100644 index 0000000..b634ec5 --- /dev/null +++ b/node85.html @@ -0,0 +1,331 @@ + + + + + +Waveshaping using an exponential function + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Sinusoidal waveshaping: evenness and + Up: Examples + Previous: Waveshaping using Chebychev polynomials +   Contents +   Index +
+
+ + +

+Waveshaping using an exponential function +

+ +

+We return again to the spectra computed on Page [*], +corresponding to waveshaping functions of the form $f(x) = x^k$. We note +with pleasure that not only are they all in phase (so that they can +be superposed with easily predictable results) but also that the spectra +spread out as $k$ increases. Also, in a series +of the form, +

+
+ + +\begin{displaymath}
+f(x) = {f_0} + {f_1} x + {f_2} {x^2} + \cdots,
+\end{displaymath} +
+
+

+a higher index of modulation will lend more relative weight to the higher +power terms in the expansion; as we saw seen earlier, if the index of +modulation is $a$, the various $x^k$ terms are multiplied by $f_0$, +$af_1$, ${a^2}{f_2}$, and so on. + +

+Now suppose we wish to arrange for different terms in the above expansion +to dominate the result in a predictable way as a function of the index $a$. +To choose the simplest possible example, suppose we wish $f_0$ to be the largest +term for $0<a<1$, then for it to be overtaken by the more quickly growing +$af_1$ term for $1<a<2$, which is then overtaken by the ${a^2}{f_2}$ term for +$2<a<3$ and so on, so that each $n$th term takes over at index $n$. +To make this happen we just require that +

+
+ + +\begin{displaymath}
+{f_1} = {f_0} , 2 {f_2} = {f_1}, 3 {f_3} = {f_2} , \ldots
+\end{displaymath} +
+
+

+and so choosing ${f_0}=0$, we get ${f_1}=1$, ${f_2}=1/2$, ${f_3}=1/6$, and in +general, +

+
+ + +\begin{displaymath}
+{f_k} = {1 \over {1 \cdot 2 \cdot 3 \cdot ... \cdot k}}
+\end{displaymath} +
+
+

+These happen to be the coefficients of the power series for the function +

+
+ + +\begin{displaymath}
+f(x) = {e ^ x}
+\end{displaymath} +
+
+

+where $e \approx 2.7$ is Euler's constant. + +

+Before plugging in $e^x$ as a transfer function it's wise to plan how we +will deal with signal amplitude, since $e^x$ grows quickly as +$x$ increases. If we're going to plug in a sinusoid of amplitude $a$, the maximum output +will be $e^a$, occurring whenever the phase is zero. A simple and natural +choice is simply to divide by $e^a$ to reduce the peak to one, giving: +

+
+ + +\begin{displaymath}
+f(a \cos(\omega n)) =
+{{{e^{a \cos(\omega n)}}} \over {e^a}} = {e^{a (\cos(\omega n) - 1)}}
+\end{displaymath} +
+
+

+This is realized in Example E06.exponential.pd. Resulting spectra for +$a=$ 0, 4, and 16 are shown in Figure 5.13. As the waveshaping index +rises, progressively less energy is present in the fundamental; the energy +is increasingly spread over the partials. + +

+ +

+ + + +
Figure 5.13: +Spectra of waveshaping output using an exponential transfer function. +Indices of modulation of 0, 4, and 16 are shown; note the different vertical +scales.
\begin{figure}\psfig{file=figs/fig05.13.ps}\end{figure}
+
+ +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Sinusoidal waveshaping: evenness and + Up: Examples + Previous: Waveshaping using Chebychev polynomials +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node86.html b/node86.html new file mode 100644 index 0000000..31bb30d --- /dev/null +++ b/node86.html @@ -0,0 +1,235 @@ + + + + + +Sinusoidal waveshaping: evenness and oddness + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Phase modulation and FM + Up: Examples + Previous: Waveshaping using an exponential +   Contents +   Index +
+
+ + +

+Sinusoidal waveshaping: evenness and oddness +

+ +

+Another interesting class of waveshaping transfer functions is the sinusoids: +

+
+ + +\begin{displaymath}
+f(x) = \cos(x + \phi)
+\end{displaymath} +
+
+

+which include the cosine and sine functions (got by choosing $\phi=0$ and +$\phi=-\pi/2$, respectively). These functions, one being even and the +other odd, give rise to even and odd harmonic spectra, which turn out to be: +

+
+ + +\begin{displaymath}
+\cos(a \cos(\omega n)) = {J_0}(a)
+- 2 {J_2}(a) \cos(2 \om...
+...a) \cos(4 \omega n)
+- 2 {J_6}(a) \cos(6 \omega n) \pm \cdots
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+\sin(a \cos(\omega n)) =
+2 {J_1}(a) \cos(\omega n)
+- 2{J_3}(a) \cos(3 \omega n)
++ 2{J_5}(a) \cos(5 \omega n) \mp \cdots
+\end{displaymath} +
+
+

+The functions ${J_k}(a)$ are the +Bessel functions +of the first kind, which +engineers sometimes use to solve problems about vibrations or heat flow on +discs. For other values of $\phi$, we can expand the expression for $f$: +

+
+ + +\begin{displaymath}
+f(x) = \cos(x) \cos(\phi) - \sin(x) \sin(\phi)
+\end{displaymath} +
+
+

+so the result is a mix between the even and the odd harmonics, with $\phi$ +controlling the relative amplitudes of the two. This is demonstrated in Patch +E07.evenodd.pd, shown in Figure 5.14. + +

+ +

+ + + +
Figure 5.14: +Using an additive offset to a cosine transfer function to alter the +symmetry between even and odd. With no offset the symmetry is even. For odd symmetry, a quarter cycle is added +to the phase. Smaller offsets give a mixture of even and odd.
\begin{figure}\psfig{file=figs/fig05.14.ps}\end{figure}
+
+ +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Phase modulation and FM + Up: Examples + Previous: Waveshaping using an exponential +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node87.html b/node87.html new file mode 100644 index 0000000..aa4886e --- /dev/null +++ b/node87.html @@ -0,0 +1,401 @@ + + + + + +Phase modulation and FM + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Exercises + Up: Examples + Previous: Sinusoidal waveshaping: evenness and +   Contents +   Index +
+
+ + +

+Phase modulation and FM +

+ +

+Example E08.phase.mod.pd, shown in Figure 5.15, shows how to use Pd to +realize true frequency +modulation (part a) and phase modulation (part b). These correspond to the +block diagrams of Figure 5.8. To +accomplish phase modulation, the carrier oscillator is split into its phase and +cosine lookup components. The signal is of the form +

+
+ + +\begin{displaymath}
+x[t] = \cos( \omega_c n + a \cos(\omega_m n))
+\end{displaymath} +
+
+

+where $\omega_c$ is the carrier frequency, $\omega_m$ is the modulation +frequency, and $a$ is the index of modulation--all in angular units. + +

+ +

+ + + +
Figure 5.15: +Pd patches for: (a) frequency modulation; (b) phase modulation.
\begin{figure}\psfig{file=figs/fig05.15.ps}\end{figure}
+
+ +

+We can predict the spectrum by expanding the outer cosine: +

+
+ + +\begin{displaymath}
+x[t] = \cos( \omega_c n ) \cos (a \cos(\omega_m n))
+- \sin( \omega_c n ) \sin (a \cos(\omega_m n))
+\end{displaymath} +
+
+

+Plugging in the expansions from Page [*] and simplifying +yields: +

+
+ + +\begin{displaymath}
+x[t] = {J_0}(a) \cos( \omega_c n )
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
++ {J_1}(a) \cos( (\omega_c+\omega_m) n + {\pi\over2})
++ {J_1}(a) \cos( (\omega_c-\omega_m) n + {\pi\over2})
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
++ {J_2}(a) \cos( (\omega_c+2\omega_m) n + \pi)
++ {J_2}(a) \cos( (\omega_c-2\omega_m) n + \pi)
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
++ {J_3}(a) \cos( (\omega_c+3\omega_m) n + {{3\pi}\over2})
+...
+...}(a) \cos( (\omega_c-3\omega_m) n + {{3\pi}\over2})
++ \cdots
+\end{displaymath} +
+
+

+So the components are centered about the carrier frequency $\omega_c$ with +sidebands extending in either direction, each spaced $\omega_m$ from the +next. The amplitudes are functions of the index of +modulation, and don't depend on the frequencies. +Figure 5.16 shows some two-operator phase modulation spectra, +measured using Example E09.FM.spectrum.pd. + +

+ +

+ + + +
Figure 5.16: +Spectra from phase modulation at three different indices. The indices +are given as multiples of $2\pi $ radians.
\begin{figure}\psfig{file=figs/fig05.16.ps}\end{figure}
+
+ +

+Phase modulation can thus be seen simply as a form of ring modulated +waveshaping. So +we can use the +strategies described in Section 5.2 to generate particular +combinations of frequencies. For example, if the carrier frequency is +half the modulation frequency, you get a sound with odd harmonics exactly +as in the octave dividing example (Figure 5.10). + +

+Frequency modulation need not be restricted to purely sinusoidal carrier or +modulation oscillators. One well-trodden path is to effect phase modulation +on the phase modulation spectrum itself. There are then two indices of +modulation (call +them $a$ and $b$) and two frequencies of modulation ($\omega_m$ and $\omega_p$) +and the waveform is: +

+
+ + +\begin{displaymath}
+x[n] = \cos(\omega_c n + a \cos(\omega_m n) + b \cos(\omega_p n))
+\end{displaymath} +
+
+

+To analyze the result, just rewrite the original FM series above, replacing +$\omega_c n$ everywhere with +$\omega_c n + b \cos(\omega_p n)$. The third +positive sideband becomes for instance: +

+
+ + +\begin{displaymath}
+{J_3}(a) \cos( (\omega_c+3\omega_m) n + {{3\pi}\over2} + b \cos(\omega_p n))
+\end{displaymath} +
+
+

+This is itself just another FM spectrum, with its own sidebands of frequency +

+
+ + +\begin{displaymath}
+\omega_c+3\omega_m + k \omega_p , k = 0, \pm 1, \pm 2, \ldots
+\end{displaymath} +
+
+

+having amplitude +${J_3}(a) {J_k}(b)$ and phase $(3+k)\pi / 2$ +[Leb77]. Example E10.complex.FM.pd (not shown here) illustrates this by +graphing spectra from a two-modulator FM instrument. + +

+Since early times [Sch77] researchers have sought combinations +of phases, frequencies, and modulation indices, for simple and compact phase +modulation instruments, that manage to imitate familiar instrumental sounds. +This became a major industry with the introduction of commercial FM +synthesizers. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Exercises + Up: Examples + Previous: Sinusoidal waveshaping: evenness and +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node88.html b/node88.html new file mode 100644 index 0000000..d16e900 --- /dev/null +++ b/node88.html @@ -0,0 +1,170 @@ + + + + + +Exercises + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Designer spectra + Up: Modulation + Previous: Phase modulation and FM +   Contents +   Index +
+
+ + +

+Exercises +

+ +

+ +

    +
  1. A sound has fundamental 440. How could it be ring modulated to +give a tone at 110 Hertz with only odd partials? How could you then fill in the +even ones if you wanted to? + +

    +

  2. +
  3. A sinusoid with frequency 400 and unit peak amplitude is squared. What +are the amplitudes and frequencies of the new signal's components? + +

    +

  4. +
  5. What carrier and modulation frequencies would you give a two-operator FM +instrument to give frequencies of 618, 1000, and 2618 Hertz? (This is +a prominent feature of Chowning's Stria [DJ85].) + +

    +

  6. +
  7. Two sinusoids with frequency 300 and 400 Hertz and peak amplitude +one (so RMS amplitude $\approx$0.707) are multiplied. What is the RMS +amplitude of the product? + +

    +

  8. +
  9. Suppose you wanted to make FM yet more complicated by modulating the +modulating oscillator, as in: +

    +
    + + +\begin{displaymath}
+\cos( \omega_c n + a \cos( \omega_m n + b \cos( \omega_p n )))
+\end{displaymath} +
    +
    +

    +How, qualitatively speaking, would the spectrum differ from that of the simple +two-modulator example (Section 5.5)? + +

    +

  10. +
  11. A sinusoid at a frequency $\omega $ is ring modulated by another +sinusoid at exactly the same frequency. At what phase differences will the +DC component of the result disappear? + +

    +

  12. +
+
+ + +next + +up + +previous + +contents + +index +
+ Next: Designer spectra + Up: Modulation + Previous: Phase modulation and FM +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node89.html b/node89.html new file mode 100644 index 0000000..79e1977 --- /dev/null +++ b/node89.html @@ -0,0 +1,230 @@ + + + + + +Designer spectra + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Carrier/modulator model + Up: book + Previous: Exercises +   Contents +   Index +
+
+ + +

+ +
+Designer spectra +

+ +

+As suggested at the beginning of the previous chapter, a powerful way to +synthesize musical sounds is to specify--and then realize--specific +trajectories of pitch (or more generally, frequencies of partials), along +with trajectories of +spectral envelope [Puc01]. +The +spectral envelope is used to determine the amplitude of the individual +partials, as a function of their frequencies, and is thought of as controlling +the sound's (possibly time-varying) timbre. + +

+A simple example of this would be to imitate a plucked +string by constructing a sound with harmonically spaced partials in which the spectral +envelope starts out rich but then dies away exponentially with higher +frequencies decaying faster than lower ones, so that the timbre mellows over +time. Spectral-evolution +models for various acoustic instruments have been proposed +[GM77] [RM69] +. A more complicated example is the +spoken or sung voice, in which vowels appear as spectral envelopes, dipthongs +and many consonants appear as time variations in the spectral envelopes, and +other consonants appear as spectrally shaped noise. + +

+Spectral envelopes may be obtained from analysis of recorded sounds (developed +in Chapter 9) or from purely synthetic criteria. +To specify a spectral envelope from scratch for every possible frequency +would be tedious, and in most cases you would want to describe them in +terms of their salient features. The most popular way of doing this is +to specify the size and shape of the spectral envelope's peaks, which are +called +formants. Figure 6.1 shows a spectral envelope with two +formants. Although the shapes of the two peaks in the spectral envelope +are different, they can both be roughly described by giving the coordinates +of each apex (which give the formant's +center frequency +and amplitude) and each formant's +bandwidth. A typical measure of bandwidth would be the width of the +peak at a level 3 decibels below its apex. +Note that if the peak is at (or near) the $f=0$ axis, we pretend it falls +off to the left at the same rate as (in reality) it falls off to the right. + +

+ +

+ + + +
Figure 6.1: +A spectral envelope showing the frequencies, amplitudes, and +bandwidths of two formants.
\begin{figure}\psfig{file=figs/fig06.01.ps}\end{figure}
+
+ +

+Suppose we wish to generate a harmonic sound with a specified collection of +formants. Independently of the fundamental frequency desired, we wish the +spectrum to have peaks with prescribed center frequencies, amplitudes, and +bandwidths. Returning to the phase modulation spectra shown in Figure +5.16, we see that, at small indices of modulation at least, the +result has a single, well-defined spectral peak. We can imagine adding several +of these, all sharing a fundamental (modulating) frequency but with carriers +tuned to different harmonics to select the various desired center frequencies, +and with indices of modulation chosen to give the desired bandwidths. This was +first explored by Chowning [Cho89] who arranged formants generated +by phase modulation to synthesize singing voices. +In this chapter we'll establish a general framework for building +harmonic spectra with desired, possibly time-varying, formants. + +

+


+ +Subsections + + + +
+ + +next + +up + +previous + +contents + +index +
+ Next: Carrier/modulator model + Up: book + Previous: Exercises +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node9.html b/node9.html new file mode 100644 index 0000000..a40249b --- /dev/null +++ b/node9.html @@ -0,0 +1,237 @@ + + + + + +Units of Amplitude + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Controlling Amplitude + Up: Sinusoids, amplitude and frequency + Previous: Measures of Amplitude +   Contents +   Index +
+
+ + +

+Units of Amplitude +

+ +

+Two amplitudes are often better compared using their ratio than their +difference. Saying that one signal's amplitude is greater than +another's by a factor of two might be more informative than saying it is greater by +30 millivolts. This is true for any measure of amplitude (RMS or peak, for +instance). To facilitate comparisons, we often express amplitudes in +logarithmic units called +decibels. If $a$ is the amplitude of a signal (either peak or RMS), +then we can define the decibel (dB) level $d$ as: +

+
+ + +\begin{displaymath}
+d = 20 \cdot {{{\log}_{10}} ( {a / {a_0}} )}
+\end{displaymath} +
+
+

+where $a_0$ is a reference amplitude. This definition is set up so that, if we +increase the signal power by a factor of ten (so that the amplitude increases +by a factor of $\sqrt {10}$), the logarithm will increase by $1/2$, and so the +value in decibels goes up (additively) by ten. +An increase in amplitude by a +factor of two corresponds to an increase of about 6.02 decibels; doubling power +is an increase of 3.01 dB. The relationship between linear +amplitude and amplitude in decibels is graphed in Figure 1.3. + +

+ +

+ + + +
Figure 1.3: +The relationship between decibel and linear scales of amplitude. +The linear amplitude 1 is assigned to 0 dB.
\begin{figure}\psfig{file=figs/fig01.03.ps}\end{figure}
+
+ +

+Still using $a_0$ to denote the reference amplitude, a signal with linear +amplitude smaller than $a_0$ will have a negative amplitude in decibels: +${a_0}/10$ gives -20 dB, ${a_0}/100$ gives -40, and so on. A linear amplitude +of zero is smaller than that of any value in dB, so we give it a dB level of +$-\infty$. + +

+In digital audio a convenient choice of reference, assuming the hardware +has a maximum amplitude of one, is +

+
+ + +\begin{displaymath}
+{a_0} = {10^{-5}} = 0.00001
+\end{displaymath} +
+
+

+so that the maximum amplitude possible is 100 dB, and 0 dB is likely to be +inaudibly quiet at any reasonable listening level. Conveniently enough, the +dynamic range of human hearing--the ratio between a damagingly loud sound and +an inaudibly quiet one--is about 100 dB. + +

+Amplitude is related in an inexact way to the perceived loudness of a sound. +In general, two signals with the same peak or RMS amplitude won't necessarily +have the same loudness at all. But amplifying a signal by 3 dB, say, will +fairly reliably make it sound about one ``step" louder. Much has been made of +the supposedly logarithmic nature of human hearing (and other senses), which +may partially explain why decibels are such a useful scale of +amplitude [RMW02, p. 99]. + +

+Amplitude is also related in an inexact way to musical +dynamic. Dynamic is better thought of as a measure of effort than of +loudness or power. It ranges over nine values: rest, +ppp, pp, p, mp, mf, f, ff, fff. These correlate in an even looser way with the amplitude +of a signal than does loudness [RMW02, pp. 110-111]. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Controlling Amplitude + Up: Sinusoids, amplitude and frequency + Previous: Measures of Amplitude +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node90.html b/node90.html new file mode 100644 index 0000000..391a76d --- /dev/null +++ b/node90.html @@ -0,0 +1,315 @@ + + + + + +Carrier/modulator model + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Pulse trains + Up: Designer spectra + Previous: Designer spectra +   Contents +   Index +
+
+ + +

+ +
+Carrier/modulator model +

+ +

+Earlier we saw how to +use ring modulation +to modify the spectrum of a periodic signal, placing spectral peaks in +specified locations (see Figure +5.4, Page [*]). 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 +

+
+ + +\begin{displaymath}
+x[n] = \cos(\omega_c n) f (a \cos(\omega_m n))
+\end{displaymath} +
+
+

+where $\omega_c$ (the +carrier frequency) is set to the formant center frequency and + +$f (a \cdot \cos(\omega_m n))$ is a signal with fundamental frequency +determined by +$\omega_m$, +produced using a waveshaping function $f$ and index $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 6.2. + +

+ +

+ + + +
Figure 6.2: +Ring modulated waveshaping for formant generation
\begin{figure}\psfig{file=figs/fig06.02.ps}\end{figure}
+
+ +

+Much earlier in Section 2.4 we introduced the +technique of +timbre stretching, +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: +

+
+ + +\begin{displaymath}
+x(\phi) = T (c \phi) * W (a \phi),
+\end{displaymath} +
+
+

+where $\phi$, the phase, satisfies +$-\pi \le \phi \le \pi$. Here +$T$ is a function stored in a wavetable, $W$ is a windowing function, +and $c$ and $a$ are the wavetable stretching and a modulation index for +the windowing function. Figure 6.3 shows how to realize +this in block +diagram form. Comparing this to Figure 2.7, we see that the +only significant new feature is the addition of the index $a$. + +

+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 $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 $\omega_c$. + +

+ +

+ + + +
Figure 6.3: +Wavetable synthesis generalized as a variable spectrum generator.
\begin{figure}\psfig{file=figs/fig06.03.ps}\end{figure}
+
+ +

+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, +

+
+ + +\begin{displaymath}
+x[n] = c(\omega n) {m_a}(\omega n)
+\end{displaymath} +
+
+

+where $c$ is a periodic function describing the carrier signal, and ${m_a}$ +is a periodic modulator function which +depends on an index $a$. +The modulation functions we're interested in will +usually take the form of pulse trains, and the index $a$ will control the +width of the pulse; higher values of $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. + +

+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. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Pulse trains + Up: Designer spectra + Previous: Designer spectra +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node91.html b/node91.html new file mode 100644 index 0000000..5cedd2a --- /dev/null +++ b/node91.html @@ -0,0 +1,95 @@ + + + + + +Pulse trains + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Pulse trains via waveshaping + Up: Designer spectra + Previous: Carrier/modulator model +   Contents +   Index +
+
+ + +

+ +
+Pulse trains +

+ +

+Pulse trains may be generated either using the waveshaping formulation or +the stretched wavetable one. The waveshaping formulation is easier to analyze +and control, and we'll consider it first. + +

+


+ +Subsections + + + +

+
+Miller Puckette +2006-12-30 +
+ + diff --git a/node92.html b/node92.html new file mode 100644 index 0000000..10ccdce --- /dev/null +++ b/node92.html @@ -0,0 +1,350 @@ + + + + + +Pulse trains via waveshaping + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Pulse trains via wavetable + Up: Pulse trains + Previous: Pulse trains +   Contents +   Index +
+
+ + +

+Pulse trains via waveshaping +

+ +

+When we use waveshaping the shape of the formant is determined by +a modulation term +

+
+ + +\begin{displaymath}
+{m_a}[n] = f (a \cos(\omega n))
+\end{displaymath} +
+
+

+For small values of the index $a$, the modulation term varies only slightly from +the constant value $f(0)$, so most of the energy is concentrated at DC. +As $a$ increases, the energy spreads out among progressively higher harmonics +of the fundamental $\omega $. Depending on the function $f$, this spread +may be orderly or disorderly. An orderly spread may be desirable and +then again may not, depending on whether our goal is a predictable spectrum or +a wide range of different (and perhaps hard-to-predict) spectra. + +

+The waveshaping function $f(x) = {e^x}$, analyzed on +Page [*], +gives well-behaved, simple and predictable results. After normalizing suitably, +we got the spectra shown in Figure 5.13. A slight rewriting of the +waveshaping modulator for this choice of $f$ (and taking the renormalization +into account) gives: +

+
+ + +\begin{displaymath}
+{m_a}[n] = {e^{a \cdot (\cos(\omega n) - 1))}}
+\end{displaymath} +
+
+

+

+
+ + +\begin{displaymath}
+= e ^ {
+{ -\left [
+b \sin {\omega \over 2}
+\right ] }
+^2
+}
+\end{displaymath} +
+
+

+where ${b^2}=2a$ so that $b$ is proportional to the bandwidth. This can +be rewritten as +

+
+ + +\begin{displaymath}
+{m_a}[n] = g ( b \sin {\omega \over 2} n )
+\end{displaymath} +
+
+

+with +

+
+ + +\begin{displaymath}
+g(x) = e ^ {- x ^ 2}
+\end{displaymath} +
+
+

+Except for a missing normalization factor, this is a Gaussian distribution, +sometimes called a ``bell curve". The amplitudes of the harmonics are +given by Bessel ``I" type functions. + +

+Another fine choice is the (again unnormalized) Cauchy distribution: +

+
+ + +\begin{displaymath}
+h(x) = {1\over{1 + {x^2}}}
+\end{displaymath} +
+
+

+which gives rise to a spectrum of exponentially falling harmonics: +

+
+ + +\begin{displaymath}
+h(b \sin({\omega \over 2} n)) =
+G \cdot \left (
+{1\over 2...
+...H \cos(\omega n) + {H^2} \cos(2 \omega n)
++ \cdots
+\right )
+\end{displaymath} +
+
+

+where $G$ and $H$ are functions of the index $b$ +(explicit formulas are given in [Puc95a]). + +

+In both this and the Gaussian case above, the bandwidth (counted in peaks, +i.e., units of $\omega $) is roughly proportional to the index $b$, and the +amplitude of the DC term (the apex of the spectrum) is roughly proportional +to $1/(1+b)$ . +For either waveshaping function ($g$ or $h$), if $b$ is larger than about 2, +the waveshape of +${m_a}(\omega n)$ is +approximately a (forward or backward) scan of the transfer function, so +the resulting waveform looks +like pulses whose widths decrease as the specified bandwidth increases. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Pulse trains via wavetable + Up: Pulse trains + Previous: Pulse trains +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node93.html b/node93.html new file mode 100644 index 0000000..a4637ac --- /dev/null +++ b/node93.html @@ -0,0 +1,229 @@ + + + + + +Pulse trains via wavetable stretching + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Resulting spectra + Up: Pulse trains + Previous: Pulse trains via waveshaping +   Contents +   Index +
+
+ + +

+Pulse trains via wavetable stretching +

+ +

+In the wavetable formulation, a pulse train can be made by a stretched +wavetable: +

+
+ + +\begin{displaymath}
+{M_a}(\phi) = W (a \phi),
+\end{displaymath} +
+
+

+where +$-\pi \le \phi \le \pi$ is the phase, i.e., the value $\omega n$ wrapped +to lie between $-\pi$ and $\pi $. The function $W$ should be zero at and beyond +the points $-\pi$ and $\pi $, and rise to a maximum at 0. A possible choice for +the function $W$ is +

+
+ + +\begin{displaymath}
+W(\phi) = {1\over2} \left ( \cos(\phi) + 1 \right )
+\end{displaymath} +
+
+

+which is graphed in part (a) of Figure 6.4. This is known as the +Hann window function; +it will come up again +in Chapter 9. + +

+ +

+ + + +
Figure: +Pulse width modulation using the von Hann window function: (a) the +function +$W(\phi)=(1+\cos(\phi))/2$; (b) the function as a waveform, +repeated at a duty +cycle of 100% (modulation index $a=1$); (c) the waveform at a 50% duty +cycle ($a=2$).
\begin{figure}\psfig{file=figs/fig06.04.ps}\end{figure}
+
+ +

+Realizing this as a repeating waveform, we get a succession of (appropriately +sampled) copies of the function $W$, whose duty cycle is +$1/a$ (parts b and c of the figure). +If you don't wish the copies to overlap the index $a$ must be +at least 1. If you want to allow overlap the simplest strategy is to +duplicate the block diagram (Figure 6.3) out of phase, as described +in Section 2.4 and realized in Section +2.6. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Resulting spectra + Up: Pulse trains + Previous: Pulse trains via waveshaping +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node94.html b/node94.html new file mode 100644 index 0000000..670c769 --- /dev/null +++ b/node94.html @@ -0,0 +1,230 @@ + + + + + +Resulting spectra + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Movable ring modulation + Up: Pulse trains + Previous: Pulse trains via wavetable +   Contents +   Index +
+
+ + +

+Resulting spectra +

+ +

+Before considering more complicated carrier signals to go with the modulators +we've seen so far, it is instructive to see what multiplication by a pure +sinusoid gives us as waveforms and spectra. Figure 6.5 shows +the result of multiplying two different pulse trains by a sinusoid at the +sixth partial: +

+
+ + +\begin{displaymath}
+\cos(6 \omega n) {M_a}(\omega n)
+\end{displaymath} +
+
+

+where the index of modulation $a$ is two in both cases. In part (a) $M_a$ is +the stretched Hann windowing function; part (b) +shows waveshaping via the unnormalized Cauchy distribution. One period +of each waveform is shown. + +

+ +

+ + + +
Figure 6.5: +Audio signals resulting from multiplying a cosine (partial number +6) by pulse trains: (a) windowing function from the wavetable formulation; +(b) waveshaping output using the Cauchy lookup function.
\begin{figure}\psfig{file=figs/fig06.05.ps}\end{figure}
+
+ +

+In both situations we see, in effect, the sixth harmonic (the carrier signal) +enveloped into a +wave packet +centered at the middle of the cycle, where the phase of the sinusoid is zero. +Changing the frequency of the sinusoid changes the center frequency of the +formant; changing the width of the packet (the proportion of the waveform +during which the sinusoid is strong) changes the bandwidth. Note that +the stretched Hann window function is zero at the beginning and end +of the period, unlike the waveshaping packet. + +

+Figure 6.6 shows how the +shape of the formant depends on the method of production. +The stretched wavetable form (part (a) of the +figure) behaves well in the neighborhood of the peak, but somewhat oddly +starting at four partials' distance from the peak, past which we see what +are called +sidelobes: +spurious extra peaks at lower amplitude than the central peak. As the analysis +of Section 2.4 predicts, the entire formant, sidelobes and +all, stretches or contracts inversely as the pulse train is contracted or +stretched in time. + +

+ +

+ + + +
Figure 6.6: +Spectra of three ring-modulated pulse trains: (a) the von Hann +window function, 50% duty cycle (corresponding to an index of 2); (b) +a waveshaping pulse train using a Gaussian transfer function; (c) the +same, with a Cauchy transfer function. Amplitudes are in decibels.
\begin{figure}\psfig{file=figs/fig06.06.ps}\end{figure}
+
+ +

+The first, strongest sidelobes on either side are about 32 dB lower in amplitude +than the main peak. Further sidelobes drop off slowly when expressed in decibels; +the amplitudes decrease as the square of the distance from the center peak so +that the sixth sidelobe to the right, three times further than the first one +from the center frequency, is about twenty decibels further down. The effect +of these sidelobes is often audible as a slight buzziness in the sound. + +

+This formant shape may be made arbitrarily fat (i.e., high bandwidth), but +there is a limit on how thin it can be made, since the duty cycle of the +waveform cannot exceed 100%. At this maximum duty cycle the formant strength +drops to zero at two harmonics' distance from the center peak. If a still +lower bandwidth is needed, waveforms may be made to overlap as described in +Section 2.6. + +

+Parts (b) and (c) of the figure show formants generated using ring modulated +waveshaping, with Gaussian and Cauchy transfer functions. The index of +modulation is two in both cases (the same as for the Hann window of part +a), and the bandwidth is comparable to that of the Hann example. In these +examples there are no sidelobes, and moreover, the index of modulation may be +dropped all the way to zero, giving a pure sinusoid; there is no lower limit on +bandwidth. On the other hand, since the waveform does not reach zero at the +ends of a cycle, this type of pulse train cannot be used to window an arbitrary +wavetable, as the Hann pulse train could. + +

+The Cauchy example is particularly handy for designing spectra, since +the shape of the formant is a perfect isosceles triangle, when graphed in +decibels. On the other hand, the Gaussian example gathers more energy toward +the formant, and drops off faster at the tails, and so +has a cleaner sound and offers better protection against foldover. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Movable ring modulation + Up: Pulse trains + Previous: Pulse trains via wavetable +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node95.html b/node95.html new file mode 100644 index 0000000..7fa38ec --- /dev/null +++ b/node95.html @@ -0,0 +1,416 @@ + + + + + +Movable ring modulation + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Phase-aligned formant (PAF) generator + Up: Designer spectra + Previous: Resulting spectra +   Contents +   Index +
+
+ + +

+ +
+Movable ring modulation +

+ +

+We turn now to the carrier signal, seeking ways to make it more controllable. +We would particularly like to be able to slide the spectral energy continuously +up and +down in frequency. Simply ramping the frequency of the carrier oscillator +will not accomplish this, since the spectra won't be harmonic except when the +carrier is an integer multiple of the fundamental frequency. + +

+In the stretched wavetable approach we can accomplish this simply by sampling +a sinusoid and transposing it to the desired ``pitch". The transposed pitch +isn't heard as a periodicity since the wavetable itself is read periodically at +the fundamental frequency. Instead, the sinusoid is transposed as a spectral +envelope. + +

+Figure 6.7 shows a carrier signal produced in this way, tuned to +produce a formant centered at 1.5 times the fundamental frequency. The signal +has no outright discontinuity at the phase wraparound frequency, but it does +have a discontinuity in slope, which, if not removed by applying a suitable +modulation signal, would have very audible high-frequency components. + +

+ +

+ + + +
Figure 6.7: +Waveform for a wavetable-based carrier signal tuned to 1.5 times +the fundamental. Two periods are shown.
\begin{figure}\psfig{file=figs/fig06.07.ps}\end{figure}
+
+ +

+Using this idea we can make a complete description of how to use the block +diagram of Figure 6.3 to produce a desired formant. The wavetable +lookup on the left hand side would hold a sinusoid (placed symmetrically so +that the phase is zero at the center of the wavetable). The right-hand-side +wavetable would hold a Hann or other appropriate window function. +If we desire the fundamental frequency to be $\omega $, the +formant center frequency to be $\omega_c$, and the bandwidth to be $\omega_b$, +we set the ``stretch" parameter to the center frequency quotient +defined as +${\omega_c}/\omega$, and the index of +modulation to the bandwidth quotient, +${\omega_b}/\omega$. + +

+The output signal is simply a sample of a cosine wave at the +desired center frequency, repeated at the (unrelated in general) desired +period, and windowed to take out the discontinuities at period boundaries. + +

+Although we aren't able to derive this result yet (we will need Fourier +analysis), it will turn out that, in the main lobe of the formant, the phases +are all zero at the center of the waveform (i.e., the components are all +cosines if we consider the phase to be zero at the center of +the waveform). This means we may +superpose any number of these formants to build a more complex spectrum and the +amplitudes of the partials will combine by addition. (The sidelobes don't +behave so well: they are alternately of opposite sign and will produce +cancellation patterns; but we can often just shrug them off as a small, +uncontrollable, residual signal.) + +

+This method leads to an interesting generalization, which is to take a sequence +of recorded wavetables, align all their component phases to those of +cosines, and use them in place of the cosine function as the carrier signal. +The phase alignment is necessary to allow coherent cross-fading between +samples so that the spectral envelope can change smoothly. If, for example, we +use successive snippets of a vocal sample as input, we get a strikingly +effective vocoder; see Section 9.6. + +

+Another technique for making carrier signals that can be slid continuously +up and down in frequency while maintaining a fundamental frequency +is simply to cross-fade between harmonics. The carrier signal is then: +

+
+ + +\begin{displaymath}
+c(\phi) = c(\omega n) = p \cos( k \omega n) + q \cos( (k+1) \omega n)
+\end{displaymath} +
+
+

+where $p + q = 1$ and $k$ is an integer, all three chosen so that +

+
+ + +\begin{displaymath}
+(k + q) * {\omega} = {\omega_c}
+\end{displaymath} +
+
+

+so that the spectral center of mass of the two cosines is placed at +$\omega_c$. (Note that we make the amplitudes of the two cosines add to one +instead of setting the total power to one; we do this because the modulator +will operate phase-coherently on them.) To accomplish this we simply +set $k$ and $q$ to be the integer and fractional part, respectively, +of the center frequency quotient +$\omega_c/\omega$. + +

+The simplest way of making a control interface for this synthesis technique +would be to use +ramps to update $\omega $ and $\omega_c$, and then to compute $q$ and $k$ +as audio signals from the ramped, smoothly varying $\omega $ and $\omega_c$. +Oddly enough, despite the fact that $k$, $p$, and $q$ are discontinuous +functions of +$\omega_c/\omega$, the carrier $c(\phi)$ turns out to vary +continuously with +$\omega_c/\omega$, and so if the desired center frequency +$\omega_c$ is ramped from value to value the result is a continuous sweep in +center frequency. However, more work is needed if discontinuous changes +in center frequency are needed. This is not an unreasonable thing to wish +for, being analogous to changing the frequency of an oscillator discontinuously. + +

+There turns out to be a good way to accomodate this. +The trick to updating $k$ and $q$ is to note that $c(\phi) = 1$ whenever $\phi$ +is a multiple of $2\pi $, regardless of the choice of $k$, $p$, and $q$ as long +as $p + q = 1$. Hence, we may make discontinuous changes in $k$, $p$, and $q$ once +per period (right when the phase is a multiple of $2\pi $), without making +discontinuities in the carrier signal. + +

+In the specific case of FM, if we wish we can now go back and modify the +original formulation to: +

+
+ + +\begin{displaymath}
+p \cos ( n {\omega_2} t + r \cos ({\omega_1} t)) +
+\end{displaymath} +
+
+


+
+ + +\begin{displaymath}
++ q \cos ( (n+1) {\omega_2} t + r \cos ({\omega_1} t))
+\end{displaymath} +
+
+

+This allows us to add glissandi (which are heard as dipthongs) to Chowning's +original phase-modulation-based vocal synthesis technique. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Phase-aligned formant (PAF) generator + Up: Designer spectra + Previous: Resulting spectra +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node96.html b/node96.html new file mode 100644 index 0000000..f6ae18c --- /dev/null +++ b/node96.html @@ -0,0 +1,460 @@ + + + + + +Phase-aligned formant (PAF) generator + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Examples + Up: Designer spectra + Previous: Movable ring modulation +   Contents +   Index +
+
+ + +

+ +
+Phase-aligned formant (PAF) generator +

+ +

+Combining the two-cosine carrier signal with the waveshaping pulse generator +gives the +phase-aligned formant +generator, usually called by its acronym, PAF. (The PAF is the subject of a +1994 patent owned by IRCAM.) The combined formula is, +

+
+ + +\begin{displaymath}
+x[n] = {
+{\underbrace
+{g \left ( a \sin (\omega n/2) \ri...
+...) + q \cos( (k+1) \omega n)}
+\right ] } _\mathrm{carrier}}
+}
+\end{displaymath} +
+
+

+Here the function $g$ may be either the Gaussian or Cauchy waveshaping +function, $\omega $ is the fundamental frequency, $a$ is a modulation +index controlling bandwidth, and $k$, $p$, and $q$ control the formant +center frequency. + +

+ +

+ + + +
Figure 6.8: +The PAF generator as a block diagram.
\begin{figure}\psfig{file=figs/fig06.08.ps}\end{figure}
+
+ +

+Figure 6.8 shows +the PAF as a block diagram, separated into a phase +generation step, a carrier, and a modulator. The phase generation step +outputs a sawtooth signal at the fundamental frequency. +The modulator is done by standard waveshaping, with a slight twist added. +The formula for the modulator signals in the PAF call for an incoming +sinusoid at half the fundamental frequency, i.e., +$\sin({\omega \over 2})$, +and this nominally would require us to use a phasor tuned to half the +fundamental frequency. However, since the waveshaping function is even, +we may substitute the absolute value of the sinusoid: +

+
+ + +\begin{displaymath}
+\left \vert \sin({\omega \over 2}) \right \vert
+\end{displaymath} +
+
+

+which repeats at the frequency $\omega $ (the first half cycle is the same +as the second one.) We can compute this simply by using a half-cycle +sinusoid as a wavetable lookup function (with phase running from $-\pi/2$ +to $\pi /2$), and it is this rectified sinusoid that we pass to the +waveshaping function. + +

+Although the wavetable function is pictured over both negative and positive +values (reaching from -10 to 10), in fact we're only using the positive +side for lookup, ranging from 0 to $b$, the index of modulation. +If the index of modulation exceeds the input range of the table (here set +to stop at 10 as an example), the table lookup address should be +clipped. The table should extend far enough into the tail of the waveshaping +function so that the effect of clipping is inaudible. + +

+The carrier signal is a weighted sum of two cosines, whose frequencies are +increased by multiplication (by $k$ and $k+1$, respectively) and wrapping. In +this way all the lookup +phases are controlled by the same sawtooth oscillator. + +

+The quantities $k$, $q$, and the wavetable index $b$ +are calculated as shown in Figure 6.9. They are +functions of the specified fundamental frequency, the formant center frequency, +and the bandwidth, which are the original parameters of the algorithm. The +quantity $p$, not shown in the figure, is just $1-q$. + +

+ +

+ + + +
Figure 6.9: +Calculation of the time-varying parameters $a$ (the waveshaping index), +k, and q for use in the block diagram of Figure 6.8.
\begin{figure}\psfig{file=figs/fig06.09.ps}\end{figure}
+
+ +

+As described in the previous section, the quantities $k$, $p$, and $q$ should +only change at phase wraparound points, that is to say, at periods of +$2 \pi / \omega$. Since the calculation of $k$, etc., depends on the value +of the parameter $\omega $, it follows that $\omega $ itself should only be +updated +when the phase is a multiple of $2\pi $; otherwise, a change in $\omega $ could +send the center frequency $(k+q)\omega$ to an incorrect value for a +(very audible) +fraction of a period. In effect, all the parameter calculations should be +synchronized to the phase of the original oscillator. + +

+Having the oscillator's phase control the updating of its own frequency +is an example of +feedback, +which in general means using any process's output as one of its inputs. +When processing digital audio signals at a fixed sample rate (as we're doing), +it is never possible to have the process's current output as an input, +since at the time we would need it we haven't yet calculated it. The best +we can hope for is to use the previous sample of output--in effect, adding +one sample of delay. In block environments (such as Max, Pd, and Csound) the +situation becomes more complicated, but we will delay discussing that until +the next chapter (and simply wish away the problem in the examples at the +end of this one). + +

+The amplitude of the central peak in the spectrum of the PAF generator is +roughly $1/(1+b)$; in other words, close to unity when the index $b$ is +smaller than one, and falling off inversely with larger values of $b$. +For values of $b$ less than about ten, the loudness of the output does +not vary greatly, since the introduction of other partials, even at lower +amplitudes, offsets the decrease of the center partial's amplitude. However, +if using the PAF to generate formants with specified peak amplitudes, the +output should be multiplied by $1+b$ (or even, if necessary, a better +approximation of the correction factor, whose exact value depends on the +waveshaping function). +This amplitude correction should be ramped, not +sampled-and-held. + +

+Since the expansion of the waveshaping (modulator) signal consists of all +cosine terms (i.e., since they all have initial phase zero), as do the two +components of the carrier, it follows from the cosine product formula that the +components of the result are all cosines as well. This means that any number of +PAF generators, if they are made to share the same oscillator for phase +generation, will all be in phase and combining them gives the sum of the +individual spectra. So we can make a multiple-formant version as shown in +Figure 6.10. + +

+ +

+ + + +
Figure 6.10: +Block diagram for making a spectrum with two formants using the PAF +generator.
\begin{figure}\psfig{file=figs/fig06.10.ps}\end{figure}
+
+ +

+Figure 6.12 shows a possible output of a pair of formants generated +this way; the first formant is centered halfway between partials 3 and 4, and +the second at partial 12, with lower amplitude and bandwidth. The Cauchy +waveshaping function was used, which makes linearly sloped spectra (viewed +in dB). The two superpose additively, so that the spectral envelope curves +smoothly from one formant to the other. The lower formant also adds to its +own reflection about the vertical axis, so that it appears slightly curved +upward there. + +

+ +

+ + + +
Figure 6.11: +Spectrum from a two-formant PAF generator.
\begin{figure}\psfig{file=figs/fig06.11.ps}\end{figure}
+
+ +

+The PAF generator can be altered if desired to make inharmonic spectra by +sliding the partials upward or downward in frequency. To do this, add a second +oscillator to the phase of both carrier cosines, but not to the phase of the +modulation portion of the diagram, nor to the controlling phase of the +sample-and-hold units. It turns out that the sample-and-hold strategy for +smooth parameter updates still works; and furthermore, multiple PAF generators +sharing the same phase generation portion will still be in phase with each +other. + +

+This technique for superposing spectra does not work as predictably for phase +modulation as it does for the PAF generator; the partials of the phase +modulation output have complicated phase relationships and they seem difficult +to combine coherently. In general, phase modulation will give more complicated +patterns of spectral evolution, whereas the PAF is easier to predict and turn to +specific desired effects. + +

+ +

+ + + +
Figure 6.12: +Spectrum from a two-formant PAF generator.
\begin{figure}\vspace*{-15pt}
+\centerline{\psfig{file=figs/fig06.11.ps,width=3.8in}}
+\vspace*{-13pt}\vspace*{13pt}
+\end{figure}
+
+ +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Examples + Up: Designer spectra + Previous: Movable ring modulation +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node97.html b/node97.html new file mode 100644 index 0000000..ecdbcd7 --- /dev/null +++ b/node97.html @@ -0,0 +1,92 @@ + + + + + +Examples + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Wavetable pulse train + Up: Designer spectra + Previous: Phase-aligned formant (PAF) generator +   Contents +   Index +
+
+ + +

+Examples +

+ +

+


+ +Subsections + + + +

+
+Miller Puckette +2006-12-30 +
+ + diff --git a/node98.html b/node98.html new file mode 100644 index 0000000..a33428c --- /dev/null +++ b/node98.html @@ -0,0 +1,178 @@ + + + + + +Wavetable pulse train + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Simple formant generator + Up: Examples + Previous: Examples +   Contents +   Index +
+
+ + +

+Wavetable pulse train +

+ +

+Example F01.pulse.pd (Figure 6.13) generates a variable-width pulse train +using stretched wavetable lookup. Figure +6.14 shows two intermediate products of the patch and its output. +The patch carries out the job in the simplest possible way, placing the +pulse at phase $\pi $ instead of phase zero; in later +examples this will be fixed by adding 0.5 to the phase and wrapping. + +

+ +

+ + + +
Figure 6.13: +Example patch F01.pulse.pd, which synthesizes a pulse train using +stretched wavetable lookup.
\begin{figure}\psfig{file=figs/fig06.12.ps}\end{figure}
+
+ +

+ +

+ + + +
Figure 6.14: +Intermediate audio signals from Figure 6.13: (a) the +result of multiplying the phasor by the ``index"; (b) the same, clipped to +lie between -0.5 and 0.5; (c) the output.
\begin{figure}\psfig{file=figs/fig06.13.ps}\end{figure}
+
+ +

+The initial phase is adjusted to run from -0.5 to 0.5 and then scaled by a +multiplier of at least one, resulting in the signal of Figure 6.14 +(part a); this corresponds to the output of the *~ object, fifth +from bottom in the patch shown. The graph in part (b) shows the result of +clipping the sawtooth wave back to the interval between $-0.5$ and $0.5$, using the +clip~ object. If the scaling multiplier were at its minimum (one), the +sawtooth would only range from -0.5 to 0.5 anyway and the clipping would have +no effect. For any value of the scaling multiplier greater than one, the +clipping output sits at the value -0.5, then ramps to 0.5, then sits at 0.5. +The higher the multiplier, the faster the waveform ramps and the +more time it spends clipped at the bottom and top. + +

+The cos~ object then converts this waveform into a pulse. Inputs of +both -0.5 and 0.5 go to -1 (they are one cycle apart); at the midpoint of +the waveform, the input is 0 and the output is thus 1. The output therefore +sits at -1, traces a full cycle of the cosine function, then comes back to +rest at -1. The proportion of time the waveform spends tracing the cosine +function is one divided by the multiplier; so it's 100% for a multiplier +of 1, 50% for 2, and so on. +Finally, the pulse output is adjusted to range from 0 to 1 in +value; this is graphed in part (c) of the figure. + +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Simple formant generator + Up: Examples + Previous: Examples +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ + diff --git a/node99.html b/node99.html new file mode 100644 index 0000000..5070f42 --- /dev/null +++ b/node99.html @@ -0,0 +1,175 @@ + + + + + +Simple formant generator + + + + + + + + + + + + + + + + + + + +next + +up + +previous + +contents + +index +
+ Next: Two-cosine carrier signal + Up: Examples + Previous: Wavetable pulse train +   Contents +   Index +
+
+ + +

+Simple formant generator +

+ +

+The next three examples demonstrate the sound of the varying pulse +width, graph its spectrum, and contrast the waveshaping pulse generator. +Skipping to Example F05.ring.modulation.pd (Figure 6.15), we show the +simplest way of combining the pulse generator with a ring modulating +oscillator to make a formant. The pulse train from the previous example is +contained in the pd pulse-train subpatch. It is multiplied +by an oscillator whose frequency is controlled as a multiple of the +fundamental frequency. If the multiple is an integer, a harmonic sound +results. No attempt is made to control the relative phases of the components +of the pulse train and of the carrier sinusoid. + +

+ +

+ + + +
Figure 6.15: +Excerpt from example F05.ring.modulation.pd combining ring modulation +with a stretched wavetable pulse generator
\begin{figure}\psfig{file=figs/fig06.14.ps}\end{figure}
+
+ +

+The next example, F06.packets.pd (Figure 6.16), shows how to +combine the stretched wavetable pulse train with a sampled sinusoid to realize +movable formants, as described in Section 6.3. The pulse +generator is as before, but now the carrier signal is a broken sinusoid. +Since its phase is the fundamental phase times the center frequency quotient, +the sample-to-sample phase increment is the same as for a sinusoid at the +center frequency. However, when the phase wraps around, the carrier phase +jumps to a different place in the cycle, as was illustrated in Figure +6.7. +Although the bandwidth quotient +${\omega_b}/\omega$ must be at least +one, the center +frequency quotient +${\omega_c}/\omega$ may be +as low as zero if desired. + +

+ +

+ + + +
Figure 6.16: +Using stretched wavetable synthesis to make a formant with movable +center frequency.
\begin{figure}\psfig{file=figs/fig06.15.ps}\end{figure}
+
+ +

+


+ + +next + +up + +previous + +contents + +index +
+ Next: Two-cosine carrier signal + Up: Examples + Previous: Wavetable pulse train +   Contents +   Index + +
+Miller Puckette +2006-12-30 +
+ +