So far we have used Pd mostly for processing audio signals, although as early as Figure 1.7 we have had to make the distinction between Pd's notion of audio signals and of control streams: thin connections carry control streams and thick ones carry audio. Control streams in Pd appear as sequences of messages. The messages may contain data (most often, one or more numbers), or not. A numeric control stream (section 3.3) appears as a (thin) connection that carries numbers as messages.
Messages not containing data make up time sequences. So that you can see messages with no data, in Pd they are given the (arbitrary) symbol ``bang".
![]() |
The four types of control operations described in the previous section can be expressed in Pd as shown in Figure 3.12. Delays are accomplished using two explicit delay objects:
,
: simple delay. You can specify the delay time in a
creation argument or via the right inlet. A ``bang" in the left
inlet sets the delay, which then outputs ``bang" after the
specified delay in milliseconds. The delay is simple in the
sense that sending a bang to an already set delay resets it to the
new output time, canceling the previously scheduled one.
: compound delay. Messages coming in the left inlet appear
on the output after the specified delay, which is set by the first
creation argument. If there are more creation arguments, they
specify one or more inlets for numeric or symbolic data the
messages will contain. Any number of messages may be stored by
simultaneously, and messages
may be reordered as they are output depending on the various delay
times given for them.
Merging of control streams in Pd is accomplished not by explicit objects but by Pd's connection mechanism itself. This is shown in part (b) of the figure.
Pd offers several objects for pruning control streams, of which two are shown in part (c) of the figure:
: prune for numeric range. Numeric messages coming in the
left inlet appear on the left output if they are smaller than a
threshold value (set by a creation argument or by the right inlet),
and out the right inlet otherwise.
,
: prune for specific numbers. Numeric messages coming in
the left inlet produce a ``bang" on the output only if they match a
test value exactly. The test value is set either by creation
argument or from the right inlet.
Finally, as for the case of merging, Pd takes care of resynchronizing control streams
implicitly in its connection mechanism, as illustrated by part (d)
of the figure. Most objects with more than one inlet synchronize
all other inlets to the leftmost one. So the
object shown in the figure
resynchronizes its right-hand-side inlet (which takes numbers) to
its left-hand-side one. Sending a ``bang" to the left inlet outputs
the most recent number
has received beforehand.