Automating the counter
As we noticed, in the last example, you need to click on the bang button to advance the counter. Can we do it automatically? The following example will provide you with the answer. It is another important concept in Pure Data. When you work on animation in later chapters, it requires the same technique.
Save As your last example with the name autoCounter.pd
. We will now modify it with the auto-counting function. The new object we are going to use is metro
. It is the metronome for counting the beat when you practice musical instruments. We add a metro
object with a numeric parameter of 1000
. This number is the duration of each beat, with units in millisecond. 1000 milliseconds will be one second. The second new object is a toggle
box. You can choose it from Put | Toggle. It is another type of button, such as an on/off switch. We connect the toggle
box to the inlet of the metro
object and a bang
box to the outlet of the metro
object.
In Run Mode, click on the toggle
box. You will notice a cross indicating the ON
state. Note that the bang box flashes automatically once in every second. To stop, click on the toggle box again. The cross disappears.
The toggle
box starts and stops the metro
box. A cross in the toggle
box sends out a value 1. An empty toggle
box sends out a value 0. The number next to the metro
box is the duration in milliseconds for every count. The number 1000 means one thousand milliseconds, that is one second. For every second, the metro
box sends out a bang
message through its outlet. To complete the patch, we can connect the bang
message from the metro
box to the bang
input for the float
object.
We can also use a number
box for the right inlet of the metro
object to control the counting frequency, instead of the fixed rate of 1000 milliseconds. The smaller the value, the faster the metro
counts.
When there are more boxes in the patch window, the connection links grow messier. Pd provides a wireless connection for you to tidy up the links. They are the send
and receive
boxes. The following example makes use of send
and receive
boxes to eliminate the intersecting connection. The name cnt next to send and receive is a variable name you could use to describe the connection. You can use whatever appropriate name as long as it is unique and identical in both the send
and receive
boxes. You can imagine it is an invisible link connecting the send
and receive
boxes with the same variable name.