Example G01.delay.pd (Figure 7.23) applies a simple delay line to an input signal. Two new objects are needed:
:
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.
:
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.