You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
miller-book/node119.html

176 lines
6.0 KiB

<!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>Variable delay line</TITLE>
<META NAME="description" CONTENT="Variable delay line">
<META NAME="keywords" CONTENT="book">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="book.css">
<LINK REL="next" HREF="node120.html">
<LINK REL="previous" HREF="node118.html">
<LINK REL="up" HREF="node116.html">
<LINK REL="next" HREF="node120.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A ID="tex2html2333"
HREF="node120.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="next.png"></A>
<A ID="tex2html2327"
HREF="node116.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="up.png"></A>
<A ID="tex2html2321"
HREF="node118.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="prev.png"></A>
<A ID="tex2html2329"
HREF="node4.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="contents.png"></A>
<A ID="tex2html2331"
HREF="node201.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index"
SRC="index.png"></A>
<BR>
<B> Next:</B> <A ID="tex2html2334"
HREF="node120.html">Order of execution and</A>
<B> Up:</B> <A ID="tex2html2328"
HREF="node116.html">Examples</A>
<B> Previous:</B> <A ID="tex2html2322"
HREF="node118.html">Recirculating comb filter</A>
&nbsp; <B> <A ID="tex2html2330"
HREF="node4.html">Contents</A></B>
&nbsp; <B> <A ID="tex2html2332"
HREF="node201.html">Index</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A ID="SECTION0011103000000000000000">
Variable delay line</A>
</H2>
<P>
The next example, G03.delay.variable.pd (Figure <A HREF="#fig07.25">7.25</A>), is another
recirculating comb filter, this time using a variable-length delay line. One
new object is introduced here:
<P>
<DIV ALIGN="CENTER"><A ID="fig07.25"></A><A ID="8215"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 7.25:</STRONG>
The flanger: an interpolating, variable delay line.</CAPTION>
<TR><TD><IMG
WIDTH="527" HEIGHT="425" BORDER="0"
SRC="img824.png"
ALT="\begin{figure}\psfig{file=figs/fig07.25.ps}\end{figure}"></TD></TR>
</TABLE>
</DIV>
<P>
<BR><!-- MATH
$\fbox{ \texttt{vd\~}}$
-->
<IMG
WIDTH="44" HEIGHT="39" ALIGN="MIDDLE" BORDER="0"
SRC="img825.png"
ALT="\fbox{ \texttt{vd\~}}">:
<A ID="8426"></A>Read from a delay line, with a time-varying delay time. As with the
<TT>delread~</TT> 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 <TT>vd~</TT> 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.
<P>
Here the objects on the left side, from the top down to the
<TT>clip&nbsp;-0.2 0.2</TT> 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
<TT>vd~</TT> object. The sum is then high pass filtered (the <TT>hip~</TT> 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 <TT>clip~</TT> object is
inserted within the delay loop (just above the <TT>delwrite~</TT> object) so
that the signal cannot exceed 1 in absolute value.
<P>
The length of the delay is controlled by the signal input to the
<TT>vd~</TT> 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.
<P>
Comb filters with variable delay times are sometimes called <I>flangers</I>.
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.
<P>
<HR>
<!--Navigation Panel-->
<A ID="tex2html2333"
HREF="node120.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="next.png"></A>
<A ID="tex2html2327"
HREF="node116.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="up.png"></A>
<A ID="tex2html2321"
HREF="node118.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="prev.png"></A>
<A ID="tex2html2329"
HREF="node4.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="contents.png"></A>
<A ID="tex2html2331"
HREF="node201.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index"
SRC="index.png"></A>
<BR>
<B> Next:</B> <A ID="tex2html2334"
HREF="node120.html">Order of execution and</A>
<B> Up:</B> <A ID="tex2html2328"
HREF="node116.html">Examples</A>
<B> Previous:</B> <A ID="tex2html2322"
HREF="node118.html">Recirculating comb filter</A>
&nbsp; <B> <A ID="tex2html2330"
HREF="node4.html">Contents</A></B>
&nbsp; <B> <A ID="tex2html2332"
HREF="node201.html">Index</A></B>
<!--End of Navigation Panel-->
<ADDRESS>
Miller Puckette
2006-12-30
</ADDRESS>
</BODY>
</HTML>