aboutsummaryrefslogtreecommitdiff
path: root/doc/pddp/help-trigger.pd
blob: a5a100511504e2bb0cbbe0218dac56d3449062b2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
#N canvas 20 8 893 651 10;
#X obj 26 16 trigger;
#X text 26 45 The trigger object outputs its input from right to left
\, converting to the types indicated by its creation arguments. There
is also a "pointer" argument type (see the pointer object.);
#X text 24 230 As I see it \, the [trigger] object serves two great
purposes which aren't really related - but they might be on some level
that I don't fully understand yet.;
#X text 97 15 - sequence messages in right-to-left order and convert
data types.;
#X text 22 278 1 Sequence a series of bangs - or triggers for symbols
and/or other messages. In the example below \, you should see that
it is important that it is important that [metro] gets a tempo setting
before it is started - but let's assume for a moment that you wanted
to start the [metro] with only a single click.;
#X obj 26 481 metro;
#X msg 51 462 1000;
#X obj 26 501 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 26 404 tgl 15 0 empty empty On/Off 0 -6 0 7 -262144 -1 -1 0
1;
#X text 20 364 Click the toggle to set the tempo and start the metro
simoultaneously.;
#X text 24 109 The [trigger] object can be abbreviated as "t" and the
creation arguments can be abbreviated as follows:;
#X text 25 135 Floats = f;
#X text 25 147 Bangs = b;
#X text 24 159 Symbols = s;
#X text 25 173 Lists = l;
#X text 25 201 Anythings = a;
#X text 25 187 Pointers = p;
#X obj 103 150 trigger float bang symbol list pointer anything;
#X text 204 169 is the same as;
#X obj 207 189 t f b s l p a;
#X text 65 413 Triggers are sent from right to left...so our tempo
messages gets sent to [metro] immediately before the numbers from the
[toggle] to start and stop the [metro].;
#X obj 26 422 t f b;
#X text 27 526 This example is simple \, and may not be very practicle
in most situations \, but it clearly shows how [trigger] can be used
to create a simple sequence of events. It is important to note however
that the messages sent from [trigger]'s outlets occur in ZERO time
with no delay between the events...more at the top right of the page...
;
#X obj 430 94 t b b;
#X msg 430 75 bang;
#X obj 430 124 timer;
#X floatatom 430 144 5 0 0;
#X obj 399 34 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 399 600 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 428 40 Below is a simple structure which will measure the "logical
time" between bangs from the [trigger] object.;
#X text 464 75 Click here.;
#X text 470 141 Watch here.;
#X text 417 163 Now \, to prove that I'm not crazy...click here >;
#X msg 705 162 bang;
#X obj 705 203 timer;
#X floatatom 705 222 5 0 0;
#X obj 730 182 delay 2000;
#X text 543 89 any delay between the first bang and the second bang
;
#X text 544 105 from the trigger.;
#X text 415 179 In this case \, I've simply patched a delay;
#X text 414 193 object to force a 2 second delay between the;
#X text 414 207 first and second bangs sent to the [timer].;
#X text 545 75 In this case \, the [timer] object does not perceive
;
#X text 417 290 2 Click this subpatch to read about [trigger]'s second
great purpose...;
#N canvas 148 20 927 612 trigger_can_convert_data_types 0;
#X msg 425 103 2.5;
#X msg 523 103 bang;
#X msg 465 103 23 64;
#X msg 569 103 symbol dog;
#X obj 425 228 trigger float bang symbol list anything;
#X text 24 24 All sophisticated programming environments provide tools
to convert data types. For instance \, Visual Basic has:;
#X text 24 55 - VarType: to check the data type.;
#X text 24 70 - CStr: to convert a variable to a string.;
#X text 23 84 - CDate: to convert a variable to a date.;
#X text 24 99 - isNumeric: to test whether the variable is a number.
;
#X text 22 113 - etc.;
#X text 19 137 [trigger] is one object in PD which can convert an incoming
atom to a different type of atom.;
#X text 422 30 In the example below \, you can see that this [trigger]
has creation arguments which specify what data type the object should
output through each outlet. Messages which are sent to the first outlet
will be floats \; the second outlet will send bangs \; the third \,
symbols \; etc.;
#X text 19 172 To prove this \, click on each of the messages below
and watch your terminal window for the output.;
#X obj 20 239 t b;
#X msg 20 210 bang;
#X msg 57 210 1;
#X floatatom 90 212 5 0 0;
#X msg 132 211 symbol cat;
#X msg 204 211 this is anything;
#X obj 20 259 print all_messages_are_converted_to_bangs;
#X text 20 292 Another example showing floats and symbols.;
#X msg 20 308 bang;
#X floatatom 90 310 5 0 0;
#X msg 132 309 symbol cat;
#X msg 206 319 this is anything;
#X obj 20 337 t f s;
#X msg 57 308 1 0;
#X obj 45 387 print converted_to_symbols;
#X obj 20 407 print converted_to_floats;
#X text 62 338 Note that "this is anything" causes an error. That is
because 'anythings' don't conform to floats \, symbols \, lists \,
pointers. They can only be converted to "bang".;
#X text 18 430 In the example above \, note that the trigger object
does not split a list among the outlets like [unpack] does. Instead
it sends all list elements through all outlets and converts them as
necessary.;
#X text 20 486 Also note that some messages don't convert as nicely
as others. Hence \, the symbol "cat" converts to a ZERO when [trigger]
converts that symbol into a float. Likewise \, all numbers will convert
to a symbol called "float" when sent through [trigger]'s right-most
outlet.;
#X floatatom 425 248 5 0 0;
#X obj 482 248 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X symbolatom 539 286 10 0 0;
#X floatatom 594 162 5 0 0;
#X obj 594 200 pack f s;
#X msg 637 161 symbol earth;
#X msg 652 181 symbol jupiter;
#X obj 596 267 print a_list;
#X floatatom 426 403 5 0 0;
#X symbolatom 470 403 10 0 0;
#X obj 514 421 print another_list;
#X text 630 131 Click on all these.;
#X obj 426 363 r anythings;
#X text 425 303 Note how each of the messages sent to this trigger
are converted appropriately for their receiving atoms boxes. Also note
that "anythings" are sent to the example below.;
#X text 430 447 I'e used the [route] object to show how "anythings"
are converted as they pass through the above [trigger]. Note that all
messages converted to floats are displayed here in the number box \,
all symbols are displayed in the symbol box \, and all lists are printed
to the terminal window.;
#X obj 654 247 s anythings;
#X obj 426 383 route float symbol list;
#X msg 642 103 symbol cat;
#X connect 0 0 4 0;
#X connect 1 0 4 0;
#X connect 2 0 4 0;
#X connect 3 0 4 0;
#X connect 4 0 33 0;
#X connect 4 1 34 0;
#X connect 4 2 35 0;
#X connect 4 3 40 0;
#X connect 4 4 48 0;
#X connect 14 0 20 0;
#X connect 15 0 14 0;
#X connect 16 0 14 0;
#X connect 17 0 14 0;
#X connect 18 0 14 0;
#X connect 19 0 14 0;
#X connect 22 0 26 0;
#X connect 23 0 26 0;
#X connect 24 0 26 0;
#X connect 25 0 26 0;
#X connect 26 0 29 0;
#X connect 26 1 28 0;
#X connect 27 0 26 0;
#X connect 36 0 37 0;
#X connect 37 0 4 0;
#X connect 38 0 37 1;
#X connect 39 0 37 1;
#X connect 45 0 49 0;
#X connect 49 0 41 0;
#X connect 49 1 42 0;
#X connect 49 2 43 0;
#X connect 50 0 4 0;
#X restore 421 325 pd trigger_can_convert_data_types;
#X obj 705 238 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X floatatom 785 164 5 0 0;
#X text 415 227 You can reset the delay with the number box;
#X text 415 241 at the top-right to clearly see "logical time";
#X text 415 254 as measured by [timer].;
#X text 459 579 This document was updated for PD version 0.35 test
26 by Dave Sabine as part of a project called pddp proposed by Krzysztof
Czaja to build comprehensive documentation for PD.;
#X text 418 378 RELATED OBJECTS;
#X obj 503 404 route;
#X obj 423 404 unpack;
#X obj 469 404 pack;
#X obj 544 404 delay;
#X obj 586 404 pipe;
#X obj 621 404 float;
#X obj 661 404 int;
#X obj 690 404 symbol;
#N canvas 0 0 456 306 related_objects_from_other_libraries 0;
#X obj 31 36 exciter;
#X text 26 77 These objects are offered in PD only if you have downloaded
and properly installed the appropriate library. These objects may or
may not exist in a single library.;
#X text 25 126 The best places to find information about PD's libraries
is:;
#X text 22 148 www.pure-data.org and click on "Downloads" then "Software"
;
#X text 24 163 or;
#X text 24 178 iem.kug.ac.at/pdb/;
#X restore 423 435 pd related_objects_from_other_libraries;
#X connect 5 0 7 0;
#X connect 6 0 5 1;
#X connect 8 0 21 0;
#X connect 21 0 5 0;
#X connect 21 1 6 0;
#X connect 23 0 25 1;
#X connect 23 1 25 0;
#X connect 24 0 23 0;
#X connect 25 0 26 0;
#X connect 27 0 28 0;
#X connect 33 0 34 0;
#X connect 33 0 36 0;
#X connect 34 0 35 0;
#X connect 35 0 45 0;
#X connect 36 0 34 1;
#X connect 46 0 36 1;