miller-book/node199.html

170 lines
6.3 KiB
HTML
Raw Normal View History

<!DOCTYPE html>
<!--Converted with LaTeX2HTML 2002-2-1 (1.71)
original version by: Nikos Drakos, CBLU, University of Leeds
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
* with significant contributions from:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<TITLE>Strategies for band-limiting sawtooth waves</TITLE>
<META NAME="description" CONTENT="Strategies for band-limiting sawtooth waves">
<META NAME="keywords" CONTENT="book">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="book.css">
<LINK REL="previous" HREF="node198.html">
<LINK REL="up" HREF="node197.html">
<LINK REL="next" HREF="node200.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html3539"
HREF="node200.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="next.png"></A>
<A NAME="tex2html3533"
HREF="node197.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="up.png"></A>
<A NAME="tex2html3529"
HREF="node198.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="prev.png"></A>
<A NAME="tex2html3535"
HREF="node4.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="contents.png"></A>
<A NAME="tex2html3537"
HREF="node201.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index"
SRC="index.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html3540"
HREF="node200.html">Exercises</A>
<B> Up:</B> <A NAME="tex2html3534"
HREF="node197.html">Examples</A>
<B> Previous:</B> <A NAME="tex2html3530"
HREF="node198.html">Combining sawtooth waves</A>
&nbsp; <B> <A NAME="tex2html3536"
HREF="node4.html">Contents</A></B>
&nbsp; <B> <A NAME="tex2html3538"
HREF="node201.html">Index</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION001452000000000000000">
Strategies for band-limiting sawtooth waves</A>
</H2>
<P>
<DIV ALIGN="CENTER"><A NAME="fig10.14"></A><A NAME="14512"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 10.14:</STRONG>
Alternative techniques for making waveforms with corners: (a) a
triangle wave as the minimum of two line segments; (b) clipping a triangle wave to
2022-04-12 23:17:03 -03:00
make an "envelope".</CAPTION>
<TR><TD><IMG
WIDTH="617" HEIGHT="359" BORDER="0"
SRC="img1377.png"
ALT="\begin{figure}\psfig{file=figs/fig10.14.ps}\end{figure}"></TD></TR>
</TABLE>
</DIV>
<P>
Example J05.triangle.pd (Figure <A HREF="#fig10.14">10.14</A>, 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.
<P>
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 <A HREF="#fig10.14">10.14</A> 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 <TT>clip~</TT> object prevents
it from rising above 1 (so that, if the intersection of the two segments is
2022-04-12 23:17:03 -03:00
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.
<P>
Example J07.oversampling.pd shows how to use up-sampling to reduce foldover when using a
<TT>phasor~</TT> object as an audio sawtooth wave. A subpatch, running at 16
times the base sample rate, contains the <TT>phasor~</TT> 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
<TT>outlet~</TT> object. Example J08.classicsynth.pd demonstrates using up-sampled
phasors as signal generators to make an imitation of a classic synthesizer
doing subtractive synthesis.
<P>
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 <A HREF="node89.html#chapter-paf">6</A>, care must be
taken to avoid clicks if the fundamental frequency changes discontinuously.
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html3539"
HREF="node200.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="next.png"></A>
<A NAME="tex2html3533"
HREF="node197.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="up.png"></A>
<A NAME="tex2html3529"
HREF="node198.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="prev.png"></A>
<A NAME="tex2html3535"
HREF="node4.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="contents.png"></A>
<A NAME="tex2html3537"
HREF="node201.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index"
SRC="index.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html3540"
HREF="node200.html">Exercises</A>
<B> Up:</B> <A NAME="tex2html3534"
HREF="node197.html">Examples</A>
<B> Previous:</B> <A NAME="tex2html3530"
HREF="node198.html">Combining sawtooth waves</A>
&nbsp; <B> <A NAME="tex2html3536"
HREF="node4.html">Contents</A></B>
&nbsp; <B> <A NAME="tex2html3538"
HREF="node201.html">Index</A></B>
<!--End of Navigation Panel-->
<ADDRESS>
Miller Puckette
2006-12-30
</ADDRESS>
</BODY>
</HTML>