miller-book/node59.html

200 lines
7.4 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>Envelope Generators</TITLE>
<META NAME="description" CONTENT="Envelope Generators">
<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="node60.html">
<LINK REL="previous" HREF="node58.html">
<LINK REL="up" HREF="node58.html">
<LINK REL="next" HREF="node60.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html1431"
HREF="node60.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="next.png"></A>
<A NAME="tex2html1425"
HREF="node58.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="up.png"></A>
<A NAME="tex2html1419"
HREF="node58.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="prev.png"></A>
<A NAME="tex2html1427"
HREF="node4.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="contents.png"></A>
<A NAME="tex2html1429"
HREF="node201.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index"
SRC="index.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1432"
HREF="node60.html">Linear and Curved Amplitude</A>
<B> Up:</B> <A NAME="tex2html1426"
HREF="node58.html">Automation and voice management</A>
<B> Previous:</B> <A NAME="tex2html1420"
HREF="node58.html">Automation and voice management</A>
&nbsp; <B> <A NAME="tex2html1428"
HREF="node4.html">Contents</A></B>
&nbsp; <B> <A NAME="tex2html1430"
HREF="node201.html">Index</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H1><A NAME="SECTION00810000000000000000"></A>
<A NAME="sect4.adsr"></A>
<BR>
Envelope Generators
</H1>
<P>
An
<A NAME="4571"></A><I>envelope generator</I> (sometimes, and more justly, called a
<A NAME="4573"></A><I>transient generator</I>) 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 <A HREF="node12.html#sect1.synth">1.5</A>.
Amplitude control by multiplication (Figure <A HREF="node10.html#fig01.04">1.4</A>) is the most direct,
ordinary way to use one, but there are many other possible uses.
<P>
Envelope generators have come in many forms over the years, but the simplest
and the perennial favorite is the
2022-04-12 23:17:03 -03:00
<A NAME="4577"></A><A NAME="4578"></A><I>ADSR</I> 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
2022-04-12 23:17:03 -03:00
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 <A HREF="#fig04.01">4.1</A> shows the block
diagram representation of an ADSR envelope generator.
<P>
<DIV ALIGN="CENTER"><A NAME="fig04.01"></A><A NAME="4583"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 4.1:</STRONG>
ADSR envelope as a block diagram, showing the trigger input (a
control stream) and the audio output.</CAPTION>
<TR><TD><IMG
WIDTH="83" HEIGHT="174" BORDER="0"
SRC="img356.png"
ALT="\begin{figure}\psfig{file=figs/fig04.01.ps}\end{figure}"></TD></TR>
</TABLE>
</DIV>
<P>
There are five parameters controlling the ADSR generator. First, a
<I>level</I> 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 <I>attack</I> and <I>decay</I> parameters give the time duration of the
attack and decay segments. Fourth, a <I>sustain</I> parameter gives the level
of the sustain segment, as a fraction of the level parameter. Finally, the
<I>release</I> parameter gives the duration of the release segment. These five
2022-04-12 23:17:03 -03:00
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
2022-04-12 23:17:03 -03:00
sustain portion is equal to the time between "on" and "off" triggers, minus
the durations of the attack and decay segments.
<P>
<DIV ALIGN="CENTER"><A NAME="fig04.02"></A><A NAME="4593"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 4.2:</STRONG>
2022-04-12 23:17:03 -03:00
ADSR envelope output: (a) with "on" and "off" triggers separated;
(b), (c) with early "off" trigger; (d), (e) re-attacked.</CAPTION>
<TR><TD><IMG
WIDTH="332" HEIGHT="530" BORDER="0"
SRC="img357.png"
ALT="\begin{figure}\psfig{file=figs/fig04.02.ps}\end{figure}"></TD></TR>
</TABLE>
</DIV>
<P>
Figure <A HREF="#fig04.02">4.2</A> graphs some possible outputs of an ADSR
envelope generator. In
2022-04-12 23:17:03 -03:00
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 <A HREF="#fig04.02">4.2</A> show the result of following an
2022-04-12 23:17:03 -03:00
"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
2022-04-12 23:17:03 -03:00
"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.
<P>
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
2022-04-12 23:17:03 -03:00
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.
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html1431"
HREF="node60.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="next.png"></A>
<A NAME="tex2html1425"
HREF="node58.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="up.png"></A>
<A NAME="tex2html1419"
HREF="node58.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="prev.png"></A>
<A NAME="tex2html1427"
HREF="node4.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="contents.png"></A>
<A NAME="tex2html1429"
HREF="node201.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index"
SRC="index.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html1432"
HREF="node60.html">Linear and Curved Amplitude</A>
<B> Up:</B> <A NAME="tex2html1426"
HREF="node58.html">Automation and voice management</A>
<B> Previous:</B> <A NAME="tex2html1420"
HREF="node58.html">Automation and voice management</A>
&nbsp; <B> <A NAME="tex2html1428"
HREF="node4.html">Contents</A></B>
&nbsp; <B> <A NAME="tex2html1430"
HREF="node201.html">Index</A></B>
<!--End of Navigation Panel-->
<ADDRESS>
Miller Puckette
2006-12-30
</ADDRESS>
</BODY>
</HTML>