2022-04-12 22:02:59 -03:00
<!DOCTYPE html>
2022-04-12 21:54:18 -03:00
<!-- 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 >
2022-04-12 22:02:59 -03:00
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
2022-04-12 21:54:18 -03:00
< TITLE > Converting controls to signals< / TITLE >
< META NAME = "description" CONTENT = "Converting controls to signals" >
< 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 = "node53.html" >
< LINK REL = "previous" HREF = "node51.html" >
< LINK REL = "up" HREF = "node50.html" >
< LINK REL = "next" HREF = "node53.html" >
< / HEAD >
< BODY >
<!-- Navigation Panel -->
< A NAME = "tex2html1321"
HREF="node53.html">
< IMG WIDTH = "37" HEIGHT = "24" ALIGN = "BOTTOM" BORDER = "0" ALT = "next"
2022-04-12 22:02:59 -03:00
SRC="next.png">< / A >
2022-04-12 21:54:18 -03:00
< A NAME = "tex2html1315"
HREF="node50.html">
< IMG WIDTH = "26" HEIGHT = "24" ALIGN = "BOTTOM" BORDER = "0" ALT = "up"
2022-04-12 22:02:59 -03:00
SRC="up.png">< / A >
2022-04-12 21:54:18 -03:00
< A NAME = "tex2html1309"
HREF="node51.html">
< IMG WIDTH = "63" HEIGHT = "24" ALIGN = "BOTTOM" BORDER = "0" ALT = "previous"
2022-04-12 22:02:59 -03:00
SRC="prev.png">< / A >
2022-04-12 21:54:18 -03:00
< A NAME = "tex2html1317"
HREF="node4.html">
< IMG WIDTH = "65" HEIGHT = "24" ALIGN = "BOTTOM" BORDER = "0" ALT = "contents"
2022-04-12 22:02:59 -03:00
SRC="contents.png">< / A >
2022-04-12 21:54:18 -03:00
< A NAME = "tex2html1319"
HREF="node201.html">
< IMG WIDTH = "43" HEIGHT = "24" ALIGN = "BOTTOM" BORDER = "0" ALT = "index"
2022-04-12 22:02:59 -03:00
SRC="index.png">< / A >
2022-04-12 21:54:18 -03:00
< BR >
< B > Next:< / B > < A NAME = "tex2html1322"
HREF="node53.html">Non-looping wavetable player< / A >
< B > Up:< / B > < A NAME = "tex2html1316"
HREF="node50.html">Examples< / A >
< B > Previous:< / B > < A NAME = "tex2html1310"
HREF="node51.html">Sampling and foldover< / A >
< B > < A NAME = "tex2html1318"
HREF="node4.html">Contents< / A > < / B >
< B > < A NAME = "tex2html1320"
HREF="node201.html">Index< / A > < / B >
< BR >
< BR >
<!-- End of Navigation Panel -->
< H2 > < A NAME = "SECTION007102000000000000000" >
Converting controls to signals< / A >
< / H2 >
< P >
Example C03.zipper.noise.pd (Figure < A HREF = "node51.html#fig03.13" > 3.13< / A > , part b) demonstrates the effect of
converting a slowly-updated control stream to an audio signal. This introduces
a new object:
< P >
< BR > <!-- MATH
$\fbox{ $\mathrm{line}$}$
-->
< IMG
WIDTH="44" HEIGHT="41" ALIGN="MIDDLE" BORDER="0"
SRC="img345.png"
ALT="\fbox{ $\mathrm{line}$}">:
< A NAME = "3847" > < / A > a ramp generator with control output. Like < TT > line~< / TT > , < TT > line< / TT > takes pairs of numbers as (target, time) pairs and ramps to the target in the
given amount of time; however, unlike < TT > line~< / TT > , the output is
a numeric control stream, appearing, by default, at 20 msec time intervals.
< P >
In the example you can compare the sound of the rising and falling amplitude
controlled by the < TT > line< / TT > output with one controlled by the audio
signal generated by < TT > line~< / TT > .
< P >
The output of < TT > line< / TT > is converted to an audio signal at the input of
the < TT > *~< / TT > 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 < A HREF = "node43.html#fig03.04" > 3.4< / A > (part a). The < TT > line< / TT > output becomes a
staircase signal with 50 steps per second. The result is commonly called
2022-04-12 23:17:03 -03:00
"zipper noise".
2022-04-12 21:54:18 -03:00
< P >
Whereas the limitations of the < TT > line< / TT > object for generating audio
signals were clearly audible even over such long time periods as 300 msec, the
signal variant, < TT > line~< / TT > , does not yield audible problems until the time
periods involved become much shorter. Example C04.control.to.signal.pd (Figure < A HREF = "node51.html#fig03.13" > 3.13< / A > ,
part c) demonstrates the effect of using < TT > line~< / TT > to generate a 250 Hertz
triangle wave. Here the effects shown in Figure < A HREF = "node43.html#fig03.05" > 3.5< / A > come into
play. Since < TT > line~< / TT > 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.
< P >
A more precise object (and a more expensive one, in terms of computation time)
is provided for these situations:
< P >
< BR > <!-- MATH
$\fbox{ $\mathrm{vline}\sim$}$
-->
< IMG
WIDTH="69" HEIGHT="41" ALIGN="MIDDLE" BORDER="0"
SRC="img346.png"
ALT="\fbox{ $\mathrm{vline}\sim$}">:
2022-04-12 23:17:03 -03:00
< A NAME = "3848" > < / A > exact line segment generator. This third member of the "line" family
2022-04-12 21:54:18 -03:00
outputs an audio signal (like < TT > line~< / TT > ), 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;
< TT > vline~< / TT > can generate waveforms at periods down to two samples
(beyond which you will just get foldover instead).
< P >
The < TT > vline~< / TT > 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 < A HREF = "node43.html#fig03.04" > 3.4< / A > (parts b and
c). To get nearest-sample conversion, simply give < TT > vline~< / TT > 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).
< P >
< HR >
<!-- Navigation Panel -->
< A NAME = "tex2html1321"
HREF="node53.html">
< IMG WIDTH = "37" HEIGHT = "24" ALIGN = "BOTTOM" BORDER = "0" ALT = "next"
2022-04-12 22:02:59 -03:00
SRC="next.png">< / A >
2022-04-12 21:54:18 -03:00
< A NAME = "tex2html1315"
HREF="node50.html">
< IMG WIDTH = "26" HEIGHT = "24" ALIGN = "BOTTOM" BORDER = "0" ALT = "up"
2022-04-12 22:02:59 -03:00
SRC="up.png">< / A >
2022-04-12 21:54:18 -03:00
< A NAME = "tex2html1309"
HREF="node51.html">
< IMG WIDTH = "63" HEIGHT = "24" ALIGN = "BOTTOM" BORDER = "0" ALT = "previous"
2022-04-12 22:02:59 -03:00
SRC="prev.png">< / A >
2022-04-12 21:54:18 -03:00
< A NAME = "tex2html1317"
HREF="node4.html">
< IMG WIDTH = "65" HEIGHT = "24" ALIGN = "BOTTOM" BORDER = "0" ALT = "contents"
2022-04-12 22:02:59 -03:00
SRC="contents.png">< / A >
2022-04-12 21:54:18 -03:00
< A NAME = "tex2html1319"
HREF="node201.html">
< IMG WIDTH = "43" HEIGHT = "24" ALIGN = "BOTTOM" BORDER = "0" ALT = "index"
2022-04-12 22:02:59 -03:00
SRC="index.png">< / A >
2022-04-12 21:54:18 -03:00
< BR >
< B > Next:< / B > < A NAME = "tex2html1322"
HREF="node53.html">Non-looping wavetable player< / A >
< B > Up:< / B > < A NAME = "tex2html1316"
HREF="node50.html">Examples< / A >
< B > Previous:< / B > < A NAME = "tex2html1310"
HREF="node51.html">Sampling and foldover< / A >
< B > < A NAME = "tex2html1318"
HREF="node4.html">Contents< / A > < / B >
< B > < A NAME = "tex2html1320"
HREF="node201.html">Index< / A > < / B >
<!-- End of Navigation Panel -->
< ADDRESS >
Miller Puckette
2006-12-30
< / ADDRESS >
< / BODY >
< / HTML >