aboutsummaryrefslogtreecommitdiff
path: root/doc/tutorials/intro
diff options
context:
space:
mode:
authorHans-Christoph Steiner <eighthave@users.sourceforge.net>2006-05-07 22:50:38 +0000
committerHans-Christoph Steiner <eighthave@users.sourceforge.net>2006-05-07 22:50:38 +0000
commit19ff830fa9aa293e67b5f7b547bb6d8c34982857 (patch)
tree40dce8a0063d9384444da4e82903e0da76305c01 /doc/tutorials/intro
parented219c52beb1d6f811a644b85e8f46b297889e21 (diff)
files created for the walcheturm workshop in Zurich
svn path=/trunk/; revision=5058
Diffstat (limited to 'doc/tutorials/intro')
-rw-r--r--doc/tutorials/intro/26.creation_arguments.pd59
-rw-r--r--doc/tutorials/intro/31.guis.pd813
-rw-r--r--doc/tutorials/intro/32.EXERCISE-make_a_gui_object_dynamic.pd5
-rw-r--r--doc/tutorials/intro/33.selecting_events.pd54
-rw-r--r--doc/tutorials/intro/34.comparing_numbers.pd55
-rw-r--r--doc/tutorials/intro/35.math.pd258
-rw-r--r--doc/tutorials/intro/36.init_to_0.pd39
-rw-r--r--doc/tutorials/intro/37.math_expr.pd32
-rw-r--r--doc/tutorials/intro/38.EXERCISE-help_americans.pd6
-rw-r--r--doc/tutorials/intro/39.building_lists.pd31
-rw-r--r--doc/tutorials/intro/40.using_lists.pd17
-rw-r--r--doc/tutorials/intro/41.sorting_messages_by_type.pd (renamed from doc/tutorials/intro/Attic/sorting_messages_by_type.pd)0
-rw-r--r--doc/tutorials/intro/42.trigger_conversion.pd (renamed from doc/tutorials/intro/Attic/trigger_conversion.pd)0
-rw-r--r--doc/tutorials/intro/43.grabbing_keystrokes.pd (renamed from doc/tutorials/intro/Attic/grabbing_keystrokes.pd)0
-rw-r--r--doc/tutorials/intro/44.multiple_messages.pd18
-rw-r--r--doc/tutorials/intro/45.send_messages_to_pd.pd26
-rw-r--r--doc/tutorials/intro/46.pure_data_files.pd54
-rw-r--r--doc/tutorials/intro/Attic/math.pd434
-rw-r--r--doc/tutorials/intro/TEMPLATE.pd2
19 files changed, 1468 insertions, 435 deletions
diff --git a/doc/tutorials/intro/26.creation_arguments.pd b/doc/tutorials/intro/26.creation_arguments.pd
new file mode 100644
index 00000000..eb26924d
--- /dev/null
+++ b/doc/tutorials/intro/26.creation_arguments.pd
@@ -0,0 +1,59 @@
+#N canvas 224 22 443 587 10;
+#X text 10 4 arguments;
+#X obj 158 68 float;
+#X text 11 25 Many objects can accept "arguments" to define their behavior.
+Here is a plain [float] object:;
+#X text 14 98 Here is a [float] object with an argument of "5.5":;
+#X obj 156 129 float 5.5;
+#X obj 166 229 float 5.5;
+#X obj 166 211 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X floatatom 166 250 5 0 0 0 - - -;
+#X text 13 160 Here \, the argument of "5.5" makes this [float] store
+the value 5.5 by default. Clicking the bang makes [float] output the
+value that it is currently storing:;
+#X floatatom 173 519 5 0 0 0 - - -;
+#X symbolatom 221 518 10 0 0 0 - - -;
+#X obj 126 539 bng 15 250 50 0 empty empty bang -6 23 1 12 -262144
+-1 -1;
+#X obj 126 495 route bang float symbol list;
+#X obj 173 539 bng 15 250 50 0 empty empty float -4 23 1 12 -262144
+-1 -1;
+#X obj 221 539 bng 15 250 50 0 empty empty symbol -12 23 1 12 -262144
+-1 -1;
+#X obj 269 539 bng 15 250 50 0 empty empty list -2 23 1 12 -262144
+-1 -1;
+#X msg 64 463 bang;
+#X msg 105 463 5;
+#X msg 141 463 symbol word;
+#X msg 232 463 list one two three;
+#X text 12 411 Some objects can accept many arguments at the same time.
+For example \, you need to tell [route] what kind of data you want
+\, and it will sort it based on the data type:;
+#X obj 152 352 select 5;
+#X floatatom 204 373 5 0 0 1 everything_else - -;
+#X obj 153 373 bng 15 250 50 0 empty empty matched -52 9 0 12 -262144
+-1 -1;
+#X msg 151 329 5;
+#X msg 120 329 3;
+#X msg 183 329 7;
+#X text 12 276 Some objects need to have some arguments in order to
+do anything useful. For example \, you can tell [select] which number
+to look for with an argument:;
+#X connect 5 0 7 0;
+#X connect 6 0 5 0;
+#X connect 9 0 13 0;
+#X connect 10 0 14 0;
+#X connect 12 0 11 0;
+#X connect 12 1 9 0;
+#X connect 12 2 10 0;
+#X connect 12 3 15 0;
+#X connect 16 0 12 0;
+#X connect 17 0 12 0;
+#X connect 18 0 12 0;
+#X connect 19 0 12 0;
+#X connect 21 0 23 0;
+#X connect 21 1 22 0;
+#X connect 24 0 21 0;
+#X connect 25 0 21 0;
+#X connect 26 0 21 0;
diff --git a/doc/tutorials/intro/31.guis.pd b/doc/tutorials/intro/31.guis.pd
new file mode 100644
index 00000000..fc2f5aa9
--- /dev/null
+++ b/doc/tutorials/intro/31.guis.pd
@@ -0,0 +1,813 @@
+#N canvas 10 40 624 464 10;
+#X obj -4 -4 cnv 15 620 700 empty empty gui-INTRO 237 20 2 14 -261819
+-143491 0;
+#X text 101 4 bng;
+#X obj 456 313 vsl 15 128 0 127 0 0 empty empty default_15x128 8 -8
+0 8 -262144 -1 -1 0 1;
+#X obj 354 42 tgl 100 1 empty empty 100_pix 8 -8 0 8 -250685 -24198
+-42246 1 1;
+#X obj 57 251 hsl 128 15 0 127 0 0 empty empty default_128x15 8 -8
+0 8 -262144 -1 -1 0 1;
+#X obj 78 226 hsl 20 8 0 19 0 0 empty empty min_20x8 8 -8 0 8 -262144
+-1 -1 0 1;
+#X obj 478 326 vsl 8 20 0 19 0 0 empty empty min_8x20 8 -8 0 8 -262144
+-1 -1 0 1;
+#X obj 458 48 tgl 8 0 empty empty min_8 8 -8 0 8 -262144 -1 -1 0 1
+;
+#X obj 458 71 tgl 15 0 empty empty default_15 8 -8 0 8 -262144 -1 -1
+0 1;
+#X obj 459 109 tgl 30 0 empty empty 30_pix 8 -8 0 8 -262144 -1 -1 0
+1;
+#X obj 101 88 bng 30 250 50 0 empty empty 30_pix 8 -8 0 8 -262144 -1
+-1;
+#X obj 412 304 vsl 30 250 0 249 0 1 empty empty 30x250 8 -8 0 8 -184301
+-42886 -42246 21800 1;
+#X obj 7 271 hsl 251 30 0 250 0 1 empty empty 251x30 8 -8 0 8 -147456
+-1109 -66577 12500 1;
+#X text 180 518 (c) musil@iem.kug.ac.at;
+#X text 222 531 IEM KUG;
+#X text 197 543 graz \, austria 2001;
+#X obj 40 343 vu 25 200 empty empty 8 -8 0 8 -1 -99865 1 0;
+#X obj 13 24 bng 75 5000 25 1 empty empty 75pix+init 8 -8 0 8 -262131
+-261458 -123526;
+#X obj 100 376 vu 15 120 empty empty 8 -8 0 8 -66577 -1 1 0;
+#X obj 186 375 vu 10 80 empty empty 8 -8 0 8 -66577 -1 1 0;
+#X text 99 313 vu;
+#N canvas 10 40 620 460 animate_vu 0;
+#X obj 40 211 t f f;
+#X obj 65 233 + 6;
+#X obj 40 257 pack 0 0;
+#X obj 78 94 tgl 15 0 empty empty empty 8 -8 0 10 -262144 -1 -1 1 1
+;
+#X obj 78 115 sel 0 1;
+#X obj 78 74 metro 4000;
+#X msg 100 137 30 3000;
+#X msg 78 167 -130 3000;
+#X obj 40 189 line -130 50;
+#X obj 78 51 inlet;
+#X obj 40 316 outlet;
+#X obj 87 316 outlet;
+#X obj 134 316 outlet;
+#X connect 0 0 2 0;
+#X connect 0 1 1 0;
+#X connect 1 0 2 1;
+#X connect 2 0 10 0;
+#X connect 2 0 11 0;
+#X connect 2 0 12 0;
+#X connect 3 0 4 0;
+#X connect 4 0 7 0;
+#X connect 4 1 6 0;
+#X connect 5 0 3 0;
+#X connect 6 0 8 0;
+#X connect 7 0 8 0;
+#X connect 8 0 0 0;
+#X connect 9 0 5 0;
+#X restore 99 349 pd animate_vu;
+#X obj 99 331 tgl 15 1 empty empty empty 8 -8 0 10 -262144 -1 -1 1
+1;
+#X text 360 8 toggle = tgl;
+#X text 68 198 hslider = hsl;
+#X text 430 271 vslider = vsl;
+#X obj 13 160 print initial_bang;
+#X obj 21 118 bng 15 250 50 0 empty empty default_15 8 -8 0 8 -262144
+-1 -1;
+#X obj 104 48 bng 8 250 50 0 empty empty min_8 8 -8 0 10 -262144 -1
+-1;
+#X obj 21 137 print no_initial_bang;
+#X obj 283 324 cnv 15 100 30 empty empty empty 20 12 2 20 -225271 -66577
+0;
+#X obj 283 355 cnv 15 100 30 empty empty empty 20 12 2 20 -225280 -66577
+0;
+#X obj 283 386 cnv 15 100 30 empty empty empty 20 12 2 20 -261681 -66577
+0;
+#X obj 283 417 cnv 15 100 30 empty empty empty 20 12 2 20 -257472 -66577
+0;
+#X obj 172 375 vu 10 80 empty empty 8 -8 0 8 -66577 -1 0 0;
+#X obj 310 203 hradio 15 1 1 8 empty empty default_8*15 8 -8 0 8 -262144
+-1 -1 2;
+#X obj 254 223 hradio 25 1 1 12 empty empty 12*25 8 -8 0 8 -1433 -225280
+-355 1;
+#N canvas 10 40 620 460 nervous 0;
+#X obj 10 23 tgl 55 1 empty start_nervously1 start_it 8 -8 0 10 -260818
+-1 -250685 0 1;
+#X obj 131 141 bng 51 1200 50 0 empty nerv_bng bang 8 -8 0 10 -253378
+-137031 -222091;
+#X obj 120 418 hsl 22 12 0 127 0 0 empty nerv_hsl h-slider 8 -8 0 10
+-71033 -66198 -128091 0 1;
+#X obj 448 140 tgl 11 1 empty nerv_tgl toggle 8 -8 0 10 -141355 -82199
+-51488 0 1;
+#X obj 447 383 vsl 15 111 0 127 0 0 empty nerv_vsl v-slider 8 -8 0
+10 -150187 -73940 -248863 0 1;
+#N canvas 10 40 620 460 control 0;
+#X obj 19 21 inlet;
+#X obj 19 50 t b f;
+#X obj 19 153 del 900;
+#X obj 19 212 del 900;
+#X obj 19 93 del 100;
+#X obj 19 283 del 900;
+#X obj 33 125 f;
+#X obj 33 180 f;
+#X obj 33 245 f;
+#X obj 33 309 f;
+#N canvas 10 40 620 460 bng 0;
+#X obj 114 260 - 0;
+#X obj 148 258 f;
+#X obj 147 222 t f b;
+#X obj 79 122 random 56789;
+#X obj 150 165 random 9876;
+#X obj 47 236 - 0;
+#X obj 81 234 f;
+#X obj 80 198 t f b;
+#X obj 150 192 % 50;
+#X obj 79 145 % 50;
+#X obj 64 289 pack 0 0;
+#X obj 85 53 t b b b;
+#X obj 234 368 pack 0 0 0;
+#X obj 250 29 metro 2000;
+#X obj 445 122 random 555666;
+#X obj 445 168 + 8;
+#X obj 445 145 % 120;
+#X obj 84 32 metro 100;
+#X obj 234 261 random 1.67772e+07;
+#X obj 266 283 random 1.67772e+07;
+#X obj 299 315 random 1.67772e+07;
+#X obj 84 11 inlet;
+#X msg 64 312 \; nerv_bng delta \$1 \$2;
+#X msg 234 390 \; nerv_bng color \$1 \$2 \$3;
+#X msg 445 192 \; nerv_bng size \$1;
+#X msg 250 51 \; nerv_bng bang;
+#X obj 234 340 * -1;
+#X obj 266 316 * -1;
+#X obj 299 342 * -1;
+#X connect 0 0 10 1;
+#X connect 1 0 0 1;
+#X connect 2 0 1 1;
+#X connect 2 0 0 0;
+#X connect 2 1 1 0;
+#X connect 3 0 9 0;
+#X connect 4 0 8 0;
+#X connect 5 0 10 0;
+#X connect 6 0 5 1;
+#X connect 7 0 6 1;
+#X connect 7 0 5 0;
+#X connect 7 1 6 0;
+#X connect 8 0 2 0;
+#X connect 9 0 7 0;
+#X connect 10 0 22 0;
+#X connect 11 0 3 0;
+#X connect 11 0 14 0;
+#X connect 11 0 18 0;
+#X connect 11 1 4 0;
+#X connect 11 1 19 0;
+#X connect 11 2 20 0;
+#X connect 12 0 23 0;
+#X connect 13 0 25 0;
+#X connect 14 0 16 0;
+#X connect 15 0 24 0;
+#X connect 16 0 15 0;
+#X connect 17 0 11 0;
+#X connect 18 0 26 0;
+#X connect 19 0 27 0;
+#X connect 20 0 28 0;
+#X connect 21 0 17 0;
+#X connect 21 0 13 0;
+#X connect 26 0 12 0;
+#X connect 27 0 12 1;
+#X connect 28 0 12 2;
+#X restore 114 143 pd bng;
+#N canvas 10 40 620 460 tgl 0;
+#X obj 114 260 - 0;
+#X obj 148 258 f;
+#X obj 147 222 t f b;
+#X obj 79 122 random 56789;
+#X obj 150 165 random 9876;
+#X obj 47 236 - 0;
+#X obj 81 234 f;
+#X obj 80 198 t f b;
+#X obj 150 192 % 50;
+#X obj 79 145 % 50;
+#X obj 64 289 pack 0 0;
+#X obj 85 53 t b b b;
+#X obj 445 122 random 555666;
+#X obj 445 168 + 8;
+#X obj 445 144 % 120;
+#X obj 85 31 metro 100;
+#X obj 264 28 metro 1000;
+#X obj 85 10 inlet;
+#X msg 64 312 \; nerv_tgl delta \$1 \$2;
+#X msg 226 322 \; nerv_tgl color \$1 \$2 \$3;
+#X msg 445 192 \; nerv_tgl size \$1;
+#X msg 264 51 \; nerv_tgl bang;
+#X obj 226 298 pack 0 0 0;
+#X obj 226 191 random 1.67772e+07;
+#X obj 258 213 random 1.67772e+07;
+#X obj 291 245 random 1.67772e+07;
+#X obj 226 270 * -1;
+#X obj 258 246 * -1;
+#X obj 291 272 * -1;
+#X connect 0 0 10 1;
+#X connect 1 0 0 1;
+#X connect 2 0 1 1;
+#X connect 2 0 0 0;
+#X connect 2 1 1 0;
+#X connect 3 0 9 0;
+#X connect 4 0 8 0;
+#X connect 5 0 10 0;
+#X connect 6 0 5 1;
+#X connect 7 0 6 1;
+#X connect 7 0 5 0;
+#X connect 7 1 6 0;
+#X connect 8 0 2 0;
+#X connect 9 0 7 0;
+#X connect 10 0 18 0;
+#X connect 11 0 3 0;
+#X connect 11 0 12 0;
+#X connect 11 0 23 0;
+#X connect 11 1 4 0;
+#X connect 11 1 24 0;
+#X connect 11 2 25 0;
+#X connect 12 0 14 0;
+#X connect 13 0 20 0;
+#X connect 14 0 13 0;
+#X connect 15 0 11 0;
+#X connect 16 0 21 0;
+#X connect 17 0 15 0;
+#X connect 17 0 16 0;
+#X connect 22 0 19 0;
+#X connect 23 0 26 0;
+#X connect 24 0 27 0;
+#X connect 25 0 28 0;
+#X connect 26 0 22 0;
+#X connect 27 0 22 1;
+#X connect 28 0 22 2;
+#X restore 114 198 pd tgl;
+#N canvas 10 40 620 460 hsl 0;
+#X obj 114 260 - 0;
+#X obj 148 258 f;
+#X obj 147 222 t f b;
+#X obj 79 122 random 56789;
+#X obj 150 165 random 9876;
+#X obj 47 236 - 0;
+#X obj 81 234 f;
+#X obj 80 198 t f b;
+#X obj 150 192 % 50;
+#X obj 79 145 % 50;
+#X obj 64 289 pack 0 0;
+#X obj 85 53 t b b b;
+#X obj 445 122 random 555666;
+#X obj 560 188 + 8;
+#X obj 560 128 random 773322;
+#X obj 445 208 pack 0 0;
+#X obj 84 32 metro 100;
+#X obj 561 155 % 30;
+#X obj 445 183 + 20;
+#X obj 446 149 % 110;
+#X obj 254 305 metro 1000;
+#X obj 254 327 random 846352;
+#X obj 254 350 % 130;
+#X obj 84 11 inlet;
+#X msg 64 321 \; nerv_hsl delta \$1 \$2;
+#X msg 254 373 \; nerv_hsl set \$1;
+#X msg 445 231 \; nerv_hsl size \$1 \$2;
+#X obj 245 202 pack 0 0 0;
+#X obj 245 95 random 1.67772e+07;
+#X obj 277 117 random 1.67772e+07;
+#X obj 310 149 random 1.67772e+07;
+#X obj 245 174 * -1;
+#X obj 277 150 * -1;
+#X obj 310 176 * -1;
+#X msg 245 229 \; nerv_hsl color \$1 \$2 \$3;
+#X connect 0 0 10 1;
+#X connect 1 0 0 1;
+#X connect 2 0 1 1;
+#X connect 2 0 0 0;
+#X connect 2 1 1 0;
+#X connect 3 0 9 0;
+#X connect 4 0 8 0;
+#X connect 5 0 10 0;
+#X connect 6 0 5 1;
+#X connect 7 0 6 1;
+#X connect 7 0 5 0;
+#X connect 7 1 6 0;
+#X connect 8 0 2 0;
+#X connect 9 0 7 0;
+#X connect 10 0 24 0;
+#X connect 11 0 3 0;
+#X connect 11 0 12 0;
+#X connect 11 0 28 0;
+#X connect 11 1 4 0;
+#X connect 11 1 14 0;
+#X connect 11 1 29 0;
+#X connect 11 2 30 0;
+#X connect 12 0 19 0;
+#X connect 13 0 15 1;
+#X connect 14 0 17 0;
+#X connect 15 0 26 0;
+#X connect 16 0 11 0;
+#X connect 17 0 13 0;
+#X connect 18 0 15 0;
+#X connect 18 0 22 1;
+#X connect 19 0 18 0;
+#X connect 20 0 21 0;
+#X connect 21 0 22 0;
+#X connect 22 0 25 0;
+#X connect 23 0 16 0;
+#X connect 23 0 20 0;
+#X connect 27 0 34 0;
+#X connect 28 0 31 0;
+#X connect 29 0 32 0;
+#X connect 30 0 33 0;
+#X connect 31 0 27 0;
+#X connect 32 0 27 1;
+#X connect 33 0 27 2;
+#X restore 112 263 pd hsl;
+#N canvas 10 40 620 460 vsl 0;
+#X obj 114 260 - 0;
+#X obj 148 258 f;
+#X obj 147 222 t f b;
+#X obj 79 122 random 56789;
+#X obj 150 165 random 9876;
+#X obj 47 236 - 0;
+#X obj 81 234 f;
+#X obj 80 198 t f b;
+#X obj 150 192 % 50;
+#X obj 79 145 % 50;
+#X obj 64 289 pack 0 0;
+#X obj 85 53 t b b b;
+#X obj 445 122 random 555666;
+#X obj 560 128 random 773322;
+#X obj 445 208 pack 0 0;
+#X obj 84 32 metro 100;
+#X obj 241 299 metro 1000;
+#X obj 240 325 random 846352;
+#X obj 241 352 % 130;
+#X obj 561 155 % 110;
+#X obj 560 188 + 20;
+#X obj 446 149 % 30;
+#X obj 445 183 + 3;
+#X obj 84 11 inlet;
+#X msg 239 227 \; nerv_vsl color \$1 \$2 \$3;
+#X msg 445 231 \; nerv_vsl size \$1 \$2;
+#X msg 64 310 \; nerv_vsl delta \$1 \$2;
+#X msg 241 376 \; nerv_vsl set \$1;
+#X obj 239 203 pack 0 0 0;
+#X obj 239 96 random 1.67772e+07;
+#X obj 271 118 random 1.67772e+07;
+#X obj 304 150 random 1.67772e+07;
+#X obj 239 175 * -1;
+#X obj 271 151 * -1;
+#X obj 304 177 * -1;
+#X connect 0 0 10 1;
+#X connect 1 0 0 1;
+#X connect 2 0 1 1;
+#X connect 2 0 0 0;
+#X connect 2 1 1 0;
+#X connect 3 0 9 0;
+#X connect 4 0 8 0;
+#X connect 5 0 10 0;
+#X connect 6 0 5 1;
+#X connect 7 0 6 1;
+#X connect 7 0 5 0;
+#X connect 7 1 6 0;
+#X connect 8 0 2 0;
+#X connect 9 0 7 0;
+#X connect 10 0 26 0;
+#X connect 11 0 3 0;
+#X connect 11 0 12 0;
+#X connect 11 0 29 0;
+#X connect 11 1 4 0;
+#X connect 11 1 13 0;
+#X connect 11 1 30 0;
+#X connect 11 2 31 0;
+#X connect 12 0 21 0;
+#X connect 13 0 19 0;
+#X connect 14 0 25 0;
+#X connect 15 0 11 0;
+#X connect 16 0 17 0;
+#X connect 17 0 18 0;
+#X connect 18 0 27 0;
+#X connect 19 0 20 0;
+#X connect 20 0 14 1;
+#X connect 20 0 18 1;
+#X connect 21 0 22 0;
+#X connect 22 0 14 0;
+#X connect 23 0 15 0;
+#X connect 23 0 16 0;
+#X connect 28 0 24 0;
+#X connect 29 0 32 0;
+#X connect 30 0 33 0;
+#X connect 31 0 34 0;
+#X connect 32 0 28 0;
+#X connect 33 0 28 1;
+#X connect 34 0 28 2;
+#X restore 113 327 pd vsl;
+#X connect 0 0 1 0;
+#X connect 1 0 4 0;
+#X connect 1 1 6 1;
+#X connect 1 1 7 1;
+#X connect 1 1 8 1;
+#X connect 1 1 9 1;
+#X connect 2 0 3 0;
+#X connect 2 0 7 0;
+#X connect 3 0 5 0;
+#X connect 3 0 8 0;
+#X connect 4 0 2 0;
+#X connect 4 0 6 0;
+#X connect 5 0 9 0;
+#X connect 6 0 10 0;
+#X connect 7 0 11 0;
+#X connect 8 0 12 0;
+#X connect 9 0 13 0;
+#X restore 10 85 pd control;
+#X connect 0 0 5 0;
+#X restore 295 424 pd nervous;
+#X floatatom 239 84 4 0 0 0 - - -;
+#N canvas 10 40 620 460 properties 0;
+#X obj 2 1 cnv 8 870 590 empty empty about_gui_properties 290 20 2
+18 -225280 -1109 0;
+#X text 12 62 "selectable dimensions(pix): size:" = square-size of
+the;
+#X text 10 35 "dimensions(pix): size:" = square-size of the gui-objects
+;
+#X text 10 48 "dimensions(pix)(pix): width: height:" = width & height
+;
+#X text 11 177 "visible_rectangle(pix)(pix): width: height:" = width
+&;
+#X text 11 104 "flash-time(ms)(ms): intrrpt:" = flash-interrupt-time
+;
+#X text 411 62 selectable top-left corner of my_canvas in pixels.;
+#X text 415 35 in pixels.;
+#X text 11 76 "flash-time(ms)(ms): hold:" = flash-hold-time in msec
+=;
+#X text 405 76 duration of activity \, if a bang-object was activated
+;
+#X text 400 48 of the rectangular gui-object in pixels.;
+#X text 402 177 height of a visible \, deactivated rectangle in pixels.
+;
+#X text 14 224 "new&old" or "new-only" = the radiobutton-object changes
+its;
+#X text 441 224 state in 2 ways:;
+#X text 198 237 "new&old"-mode: output sends previous state off \,
+current;
+#X text 596 237 state on \;;
+#X text 197 250 "new-only"-mode: output sends only current state on.
+;
+#X text 14 280 "steady on click" or "jump on click" = the 2 slider-objects
+;
+#X text 481 322 immediately to new mouse-position \,;
+#X text 12 413 "label: font: fontsize:" = font-properties of label.
+;
+#X text 15 429 "colors:" = a click on radiobuttons "background:" \,
+;
+#X text 370 429 "front-color:" or "label-color:" activates the color-fields
+;
+#X text 174 193 if "init"-mode is selected \, the object displays and
+puts;
+#X text 15 266 "number:" = number of buttons of a radiobutton.;
+#X text 205 89 by any message-event or by a mouse-click.;
+#X text 388 104 in msec = duration of inactivity \, if an already;
+#X text 205 117 activated bang is activated once more.;
+#X text 11 132 "output-range: left: right:" = hslider-bounds;
+#X text 332 132 for input- as well as output-values.;
+#X text 332 146 for input- as well as output-values.;
+#X text 11 146 "output-range: bottom: top:" = vslider-bounds;
+#X text 12 193 "init" or "no init" =;
+#X text 571 193 out its previously saved value.;
+#X text 174 208 if "no init"-mode is selected \, nothing will happen.
+;
+#X text 433 280 react to mouse-click in 2 ways:;
+#X text 201 294 "steady on click"-mode: slider-knob stays in position
+\,;
+#X text 225 307 mouse and knob will move parallel \;;
+#X text 200 322 "jump on click"-mode: slider-knob jumps;
+#X text 224 338 positions of mouse and knob will be identical \;;
+#X text 402 353 receive-object with the same send-symbol-name.;
+#X text 11 368 "receive-symbol:" = a send-object with the same;
+#X text 11 353 "send-symbol:" = an output-message can be received by
+a;
+#X text 347 368 symbol-name can send an input-message to the gui-object.
+;
+#X text 13 383 "label: name:" = visible name of a gui-object \;;
+#X text 343 383 it will be moved together with the gui-object.;
+#X text 12 397 "label: x_off: y_off:" = coordinates of the label in
+;
+#X text 382 397 relation to top-left corner of gui-object.;
+#X text 207 444 on the right side which display the current color of
+the;
+#X text 605 444 item \;;
+#X text 11 161 "non-zero-value: value:" = toggle has 2;
+#X text 292 161 value-states: zero and this value.;
+#X text 208 460 to select a different color \, click on one of the
+30 small;
+#X text 614 459 preset-color-buttons \;;
+#X text 208 475 each color (background \, front \, label) can be tuned
+by its;
+#X text 235 490 RGB-values (0 .. 252 \, step 4) and a click on the
+set-button.;
+#X restore 287 361 pd properties;
+#N canvas 10 40 620 460 move 0;
+#X obj 0 0 cnv 8 460 120 empty empty how_to_move_gui_objects 100 18
+2 20 -225271 -42246 0;
+#X text 11 43 Select a gui-object \, then navigate the object by using
+the 4 direction-keys: UP \, DOWN \, LEFT or RIGHT.;
+#X text 12 70 If you press the SHIFT-Key too \, the object will move
+10 times faster.;
+#X restore 308 331 pd move;
+#N canvas 10 40 620 460 dollar 0;
+#X obj 0 0 cnv 8 560 160 empty empty the_dollar_thing 100 18 2 20 -261681
+-123526 0;
+#X text 10 39 if you want to send to \, or to receive from gui-objects
+;
+#X text 394 39 in abstractions \,;
+#X text 36 52 you have to write into the property-entry:;
+#X text 44 67 #1-label (instead of \$1-label).;
+#X text 25 103 type #0-uniquelabel (instead of \$0-uniquelabel).;
+#X text 9 88 if you want a unique send-receive-symbolname:;
+#X restore 299 391 pd dollar;
+#X obj 283 448 cnv 15 100 30 empty empty empty 20 12 2 20 -228992 -66577
+0;
+#N canvas 10 40 620 460 messages 0;
+#X obj 1 1 cnv 8 870 640 empty empty about_gui_messages 200 20 2 18
+-228992 -355 0;
+#X text 366 99 in pixels.;
+#X text 9 84 "size 15 128" = change width & height;
+#X text 9 159 "flashtime 50 600" = change flash-interrupt- and flash-hold
+;
+#X text 424 160 -time of bng-object.;
+#X text 9 174 "pos 150 170" = change the x-y-position of the top-left
+;
+#X text 400 173 corner of a gui-object in pixels \;;
+#X text 139 188 "pos 0 0" is the top-left corner of your window \;
+;
+#X text 143 204 the positive directions of x- and y-axes are right
+and down.;
+#X text 12 415 "receive togui" = change receive-name of object.;
+#X text 12 431 "label its_me" = change label-text of object.;
+#X text 12 446 "label_pos 20 8" = change offset-coordinates of label-text.
+;
+#X text 12 461 "label_font 0 10" = change font and fontsize of label-text.
+;
+#X text 12 340 "steady 1" change slider-knob-behaviour on mouse-click.
+;
+#X text 13 522 "lin" = change scale-mode of slider to linear.;
+#X text 14 537 "log" = change scale-mode of slider to logarithmical.
+;
+#X text 333 355 to output only the new state.;
+#X text 273 84 of sliders and vu in pixels.;
+#X text 12 477 "init 1" = change initial loadbang-mode of gui-objects
+;
+#X text 12 400 "send fromgui" = change send-name of gui-objects \,
+;
+#X text 12 325 "number 10" = change number of buttons of radio-button.
+;
+#X text 9 128 "range 0.1 10.0" = change slider-boundaries for;
+#X text 344 128 input- as well as output-values.;
+#X text 13 492 "set 64" = change only the inner state and display of
+gui-;
+#X text 11 33 all gui-objects (bng \, hsl \, vsl \, tgl \, rdb \, cnv
+and vu);
+#X text 9 113 "vis_size 800 600" = change width & height;
+#X text 309 113 of visual rectangle of my_canvas in pixels.;
+#X text 359 400 except vu and my_canvas.;
+#X text 395 477 except vu and cnv.;
+#X text 421 492 objects \, except bng and cnv \;;
+#X text 85 47 understand input-messages which change their properties.
+;
+#X text 11 222 "delta 15 17" = move the gui-object in relation to its
+;
+#X text 397 222 current position (in pixels).;
+#X text 333 371 to first release the previous button \,;
+#X text 144 385 then output the state of the new button.;
+#X text 12 371 "double_change" change radio-button-behaviour;
+#X text 12 355 "single_change" change radio-button-behaviour;
+#X text 147 507 no output will result.;
+#X text 9 99 "size 15" = change square-size of rdb \, bng and tgl;
+#X text 9 143 "nonzero 127.0" = change the nonzero-value of toggle.
+;
+#X text 15 552 "get_pos" = if my_canvas has a receive-name and a send-name
+;
+#X text 434 552 and you send the;
+#X text 272 237 front- and label-color of object with one of 30 presets.
+;
+#X text 277 252 label-color of vu and my_canvas with one of 30 presets.
+;
+#X text 504 282 (0 .. 255);
+#X text 558 568 coordinates.;
+#X text 149 568 message "get_pos" to it \, you receive the current
+x- and y-;
+#X text 85 59 except cnv has no inlet \, so you have to send messages
+;
+#X text 85 71 to its receive-label (edit properties).;
+#X text 11 237 "color 0 22 22" = change background- \,;
+#X text 11 252 "color 0 22" = change background- and;
+#X text 13 268 "color -1.67772e+07 (-1) -1" = change background- \,
+;
+#X text 364 267 (front-) and label-color of object with RGB-values.
+;
+#X text 149 283 the RGB-value will be calculated: -65536*RED-value
+;
+#X text 592 309 - 1;
+#X text 422 309 - BLUE-value (0 .. 255);
+#X text 394 296 - 256*GREEN-value (0 .. 255);
+#X restore 294 453 pd messages;
+#X obj 225 259 cnv 1 350 1 empty empty empty 20 12 2 20 -258699 -66577
+0;
+#X obj 4 308 cnv 1 268 1 empty empty empty 20 12 2 20 -258699 -66577
+0;
+#X obj 4 186 cnv 1 220 1 empty empty empty 20 12 2 20 -258699 -66577
+0;
+#X obj 225 151 cnv 1 350 1 empty empty empty 20 12 2 20 -258699 -66577
+0;
+#X obj 271 261 cnv 1 1 48 empty empty empty 20 12 2 20 -258699 -66577
+0;
+#X obj 232 308 cnv 1 1 200 empty empty empty 20 12 2 20 -258699 -66577
+0;
+#X obj 339 3 cnv 1 1 149 empty empty empty 20 12 2 20 -258699 -66577
+0;
+#X obj 398 260 cnv 1 1 310 empty empty empty 20 12 2 20 -258699 -66577
+0;
+#X obj 225 3 cnv 1 1 255 empty empty empty 20 12 2 20 -258699 -66577
+0;
+#X floatatom 276 84 4 0 0 0 - - -;
+#X obj 239 43 tgl 15 0 empty dsp_tgl empty 20 8 0 10 -370 -262144 -1
+0 1;
+#N canvas 10 40 620 460 dsp 0;
+#X msg 31 88 \; pd dsp \$1;
+#X obj 20 199 cputime;
+#X obj 20 178 t b b;
+#X text 15 11 dsp;
+#X text 48 439 (c) musil@iem.kug.ac.at;
+#X text 90 452 IEM KUG;
+#X text 59 65 1/0 = ON/OFF;
+#X text 97 313 CPU-load;
+#X obj 62 126 loadbang;
+#X obj 20 126 sel 1;
+#X text 65 464 graz \, austria 2001;
+#X text 64 12 turn dsp-kernel on & off \,;
+#X obj 20 240 t f f;
+#X text 65 408 average;
+#X text 177 405 peak;
+#X obj 211 154 f;
+#X obj 146 179 > -1;
+#X obj 169 155 f -1;
+#X obj 179 91 t f b f;
+#X obj 146 204 sel 1;
+#X obj 192 132 f -1;
+#X obj 20 154 metro 500;
+#X obj 20 220 * 0.2;
+#X text 74 37 -dsp-load in %;
+#X text 65 24 measure average- and peak-;
+#X obj 20 315 * 100;
+#X obj 20 360 int;
+#X obj 20 338 + 0.499;
+#X obj 20 383 * 0.01;
+#X obj 246 207 r pd;
+#X obj 246 231 route dsp;
+#X text 245 318 to toggle input;
+#X msg 246 283 \; dsp_tgl set \$1;
+#X obj 247 341 r dsp_tgl;
+#X obj 246 257 route float;
+#X obj 146 227 del 3990;
+#N canvas 10 40 620 460 once 0;
+#X text 7 204 (c) musil@iem.kug.ac.at;
+#X text 49 214 IEM KUG;
+#X text 24 223 graz \, austria 2001;
+#X text 8 6 once;
+#X obj 19 150 bang;
+#X obj 56 65 f 0;
+#X text 59 7 only the first message passes through;
+#X obj 19 127 t b a;
+#X obj 19 100 spigot;
+#X obj 119 63 f 1;
+#X obj 119 41 loadbang;
+#X obj 19 40 inlet;
+#X obj 49 183 outlet;
+#X connect 4 0 5 0;
+#X connect 5 0 8 1;
+#X connect 7 0 4 0;
+#X connect 7 1 12 0;
+#X connect 8 0 7 0;
+#X connect 9 0 8 1;
+#X connect 10 0 9 0;
+#X connect 11 0 8 0;
+#X restore 111 264 pd once;
+#N canvas 10 40 620 460 1p1z 0;
+#X text 7 315 (c) musil@iem.kug.ac.at;
+#X text 52 325 IEM KUG;
+#X obj 22 231 +;
+#X text 8 6 1p1z;
+#X text 24 334 graz \, austria 2001;
+#X text 104 22 y[n] = a0*x[n] + a1*x[n-1] + b1*y[n-1];
+#X text 169 53 a0;
+#X text 25 34 x[n];
+#X text 24 280 y[n];
+#X text 209 53 a1;
+#X text 249 53 b1;
+#X obj 284 52 loadbang;
+#X text 64 102 x[n-1];
+#X obj 40 205 +;
+#X obj 22 133 *;
+#X obj 40 160 *;
+#X obj 59 182 *;
+#X text 82 143 y[n-1];
+#X obj 284 72 t b b b;
+#X obj 40 98 f;
+#X obj 59 138 f;
+#X obj 22 71 t f b b;
+#X text 350 63 x[n-1]init;
+#X text 429 102 y[n-1]init;
+#X text 147 202 1.arg: <float> a0;
+#X text 147 213 2.arg: <float> a1;
+#X text 147 224 3.arg: <float> b1;
+#X text 63 5 <float> control-IIR-filter 1.order;
+#X obj 162 115 f 0.1;
+#X obj 202 142 f 0;
+#X obj 242 164 f 0.9;
+#X obj 22 49 inlet;
+#X obj 162 71 inlet;
+#X obj 202 71 inlet;
+#X obj 242 71 inlet;
+#X obj 356 80 inlet;
+#X obj 431 120 inlet;
+#X obj 22 264 outlet;
+#X connect 2 0 20 1;
+#X connect 2 0 37 0;
+#X connect 11 0 18 0;
+#X connect 13 0 2 1;
+#X connect 14 0 2 0;
+#X connect 15 0 13 0;
+#X connect 16 0 13 1;
+#X connect 18 0 28 0;
+#X connect 18 1 29 0;
+#X connect 18 2 30 0;
+#X connect 19 0 15 0;
+#X connect 20 0 16 0;
+#X connect 21 0 14 0;
+#X connect 21 0 19 1;
+#X connect 21 1 19 0;
+#X connect 21 2 20 0;
+#X connect 28 0 14 1;
+#X connect 29 0 15 1;
+#X connect 30 0 16 1;
+#X connect 31 0 21 0;
+#X connect 32 0 28 0;
+#X connect 33 0 29 0;
+#X connect 34 0 30 0;
+#X connect 35 0 19 1;
+#X connect 36 0 20 1;
+#X restore 20 289 pd 1p1z 0.1 0 0.9;
+#X obj 20 65 inlet;
+#X obj 20 406 outlet;
+#X obj 211 405 outlet;
+#X connect 1 0 22 0;
+#X connect 2 0 1 0;
+#X connect 2 1 1 1;
+#X connect 8 0 21 0;
+#X connect 9 0 21 0;
+#X connect 12 0 37 0;
+#X connect 15 0 17 1;
+#X connect 15 0 40 0;
+#X connect 16 0 19 0;
+#X connect 17 0 16 1;
+#X connect 18 0 16 0;
+#X connect 18 1 17 0;
+#X connect 18 2 15 1;
+#X connect 19 0 15 0;
+#X connect 19 0 35 0;
+#X connect 20 0 17 1;
+#X connect 21 0 2 0;
+#X connect 22 0 12 0;
+#X connect 22 0 18 0;
+#X connect 25 0 27 0;
+#X connect 26 0 28 0;
+#X connect 27 0 26 0;
+#X connect 28 0 39 0;
+#X connect 29 0 30 0;
+#X connect 30 0 34 0;
+#X connect 34 0 32 0;
+#X connect 35 0 20 0;
+#X connect 37 0 25 0;
+#X connect 38 0 0 0;
+#X connect 38 0 9 0;
+#X restore 239 63 pd dsp;
+#X text 238 99 mean;
+#X text 279 100 peak;
+#X text 289 63 % cpu;
+#X text 283 305 my_canvas = cnv;
+#X text 312 172 radiobutton = rdb;
+#X text 271 350 R;
+#X text 270 370 E;
+#X text 270 389 A;
+#X text 270 409 D;
+#X text 270 428 M;
+#X text 269 447 E;
+#X connect 17 0 26 0;
+#X connect 21 0 18 0;
+#X connect 21 0 16 0;
+#X connect 21 1 34 0;
+#X connect 21 2 19 0;
+#X connect 22 0 21 0;
+#X connect 27 0 29 0;
+#X connect 54 0 55 0;
+#X connect 55 0 38 0;
+#X connect 55 1 53 0;
diff --git a/doc/tutorials/intro/32.EXERCISE-make_a_gui_object_dynamic.pd b/doc/tutorials/intro/32.EXERCISE-make_a_gui_object_dynamic.pd
new file mode 100644
index 00000000..4cb45054
--- /dev/null
+++ b/doc/tutorials/intro/32.EXERCISE-make_a_gui_object_dynamic.pd
@@ -0,0 +1,5 @@
+#N canvas 333 243 690 486 12;
+#X obj 11 10 cnv 15 600 40 empty empty EXERCISE-make_a_gui_object_dynamic
+20 12 0 24 -262131 -66577 0;
+#X text 26 60 Take any gui object \, and make it change and/or move
+according to your program.;
diff --git a/doc/tutorials/intro/33.selecting_events.pd b/doc/tutorials/intro/33.selecting_events.pd
new file mode 100644
index 00000000..fc60c94c
--- /dev/null
+++ b/doc/tutorials/intro/33.selecting_events.pd
@@ -0,0 +1,54 @@
+#N canvas 10 40 636 461 12;
+#X obj 10 10 cnv 15 400 40 empty empty selecting_events 20 12 0 24
+-228992 -66577 0;
+#X floatatom 328 112 5 0 0 0 - - -;
+#X obj 328 170 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 358 171 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 328 145 select 2 3 4 5 6 10;
+#X obj 389 171 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 420 171 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 451 171 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 482 171 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X floatatom 513 171 5 0 0 0 - - -;
+#X obj 185 342 print NO_match;
+#X obj 58 341 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 89 342 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 121 342 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 153 342 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X msg 61 125 symbol dog;
+#X msg 66 144 symbol cat;
+#X msg 74 162 symbol foo;
+#X msg 81 182 symbol earth;
+#X msg 90 201 symbol 400;
+#X obj 58 315 select dog cat foo 400;
+#X msg 86 251 400;
+#X text 97 297 FIRST CREATION ARGUMENT IS A SYMBOL;
+#X connect 1 0 4 0;
+#X connect 4 0 2 0;
+#X connect 4 1 3 0;
+#X connect 4 2 5 0;
+#X connect 4 3 6 0;
+#X connect 4 4 7 0;
+#X connect 4 5 8 0;
+#X connect 4 6 9 0;
+#X connect 15 0 20 0;
+#X connect 16 0 20 0;
+#X connect 17 0 20 0;
+#X connect 18 0 20 0;
+#X connect 19 0 20 0;
+#X connect 20 0 11 0;
+#X connect 20 1 12 0;
+#X connect 20 2 13 0;
+#X connect 20 3 14 0;
+#X connect 20 4 10 0;
+#X connect 21 0 20 0;
diff --git a/doc/tutorials/intro/34.comparing_numbers.pd b/doc/tutorials/intro/34.comparing_numbers.pd
new file mode 100644
index 00000000..3f6ffb7d
--- /dev/null
+++ b/doc/tutorials/intro/34.comparing_numbers.pd
@@ -0,0 +1,55 @@
+#N canvas 411 149 628 453 12;
+#X obj 10 10 cnv 15 400 40 empty empty comparing_numbers 20 12 0 24
+-228992 -66577 0;
+#X floatatom 24 160 5 0 0 0 - - -;
+#X msg 24 113 7;
+#X floatatom 97 160 5 0 0 0 - - -;
+#X msg 97 113 4;
+#X obj 97 137 == 4;
+#X floatatom 165 160 5 0 0 0 - - -;
+#X msg 165 113 20;
+#X floatatom 234 160 5 0 0 0 - - -;
+#X msg 234 113 20;
+#X obj 234 137 != 10;
+#X obj 24 137 > 1;
+#X obj 165 137 >= 8;
+#X floatatom 107 212 5 0 0 0 - - -;
+#X obj 15 245 == 5;
+#X obj 82 245 != 5;
+#X obj 147 245 > 5;
+#X obj 209 245 < 5;
+#X floatatom 15 272 5 0 0 0 - - -;
+#X floatatom 82 272 5 0 0 0 - - -;
+#X floatatom 147 272 5 0 0 0 - - -;
+#X floatatom 209 273 5 0 0 0 - - -;
+#X msg 496 115 3;
+#X floatatom 441 116 5 0 0 0 - - -;
+#X floatatom 496 164 5 0 0 0 - - -;
+#X obj 496 140 > 1;
+#X obj 441 142 < 5;
+#X floatatom 441 165 5 0 0 0 - - -;
+#X obj 463 191 &&;
+#X floatatom 463 213 5 0 0 0 - - -;
+#X connect 2 0 11 0;
+#X connect 4 0 5 0;
+#X connect 5 0 3 0;
+#X connect 7 0 12 0;
+#X connect 9 0 10 0;
+#X connect 10 0 8 0;
+#X connect 11 0 1 0;
+#X connect 12 0 6 0;
+#X connect 13 0 14 0;
+#X connect 13 0 15 0;
+#X connect 13 0 16 0;
+#X connect 13 0 17 0;
+#X connect 14 0 18 0;
+#X connect 15 0 19 0;
+#X connect 16 0 20 0;
+#X connect 17 0 21 0;
+#X connect 22 0 25 0;
+#X connect 23 0 26 0;
+#X connect 24 0 28 1;
+#X connect 25 0 24 0;
+#X connect 26 0 27 0;
+#X connect 27 0 28 0;
+#X connect 28 0 29 0;
diff --git a/doc/tutorials/intro/35.math.pd b/doc/tutorials/intro/35.math.pd
new file mode 100644
index 00000000..8ec1b4a6
--- /dev/null
+++ b/doc/tutorials/intro/35.math.pd
@@ -0,0 +1,258 @@
+#N canvas 23 29 928 571 10;
+#X obj 637 350 +~;
+#X obj 641 499 trigger;
+#X text 25 8 ARITHMETIC;
+#X text 30 29 Pd's arithmetic objects include:;
+#X obj 231 30 +;
+#X obj 256 30 -;
+#X obj 282 30 *;
+#X obj 308 30 /;
+#X obj 334 30 pow;
+#X obj 359 30 max;
+#X obj 385 30 min;
+#X obj 54 189 +;
+#X floatatom 54 118 0 0 0 0 - - -;
+#X floatatom 54 210 0 0 0 0 - - -;
+#X floatatom 67 141 0 0 0 0 - - -;
+#X msg 85 167 bang;
+#X text 120 168 Bang outputs sum;
+#X text 92 117 Numbers in left inlet add and output sum;
+#X text 109 140 Numbers in right inlet only change the inlet's value
+;
+#X text 29 74 The example below performs basic addition with two numbers:
+i.e. a + b = c;
+#X text 34 263 The example below incorporates a creation argument:
+i.e. a + 42 = b;
+#X floatatom 34 295 0 0 0 0 - - -;
+#X floatatom 34 338 0 0 0 0 - - -;
+#X obj 34 317 + 42;
+#N canvas 38 134 641 245 basic_examples 0;
+#X obj 44 129 +;
+#X obj 113 129 -;
+#X obj 179 129 *;
+#X obj 244 129 /;
+#X obj 316 129 pow;
+#X obj 394 129 max;
+#X obj 482 129 min;
+#X floatatom 44 32 5 0 0 0 - - -;
+#X floatatom 44 150 0 0 0 0 - - -;
+#X floatatom 113 149 0 0 0 0 - - -;
+#X floatatom 179 149 0 0 0 0 - - -;
+#X floatatom 244 149 0 0 0 0 - - -;
+#X floatatom 316 149 0 0 0 0 - - -;
+#X floatatom 394 150 0 0 0 0 - - -;
+#X floatatom 482 149 0 0 0 0 - - -;
+#X floatatom 495 32 5 0 0 0 - - -;
+#X msg 360 32 bang;
+#X connect 0 0 8 0;
+#X connect 1 0 9 0;
+#X connect 2 0 10 0;
+#X connect 3 0 11 0;
+#X connect 4 0 12 0;
+#X connect 5 0 13 0;
+#X connect 6 0 14 0;
+#X connect 7 0 0 0;
+#X connect 7 0 1 0;
+#X connect 7 0 2 0;
+#X connect 7 0 3 0;
+#X connect 7 0 4 0;
+#X connect 7 0 5 0;
+#X connect 7 0 6 0;
+#X connect 15 0 6 1;
+#X connect 15 0 5 1;
+#X connect 15 0 4 1;
+#X connect 15 0 3 1;
+#X connect 15 0 2 1;
+#X connect 15 0 1 1;
+#X connect 15 0 0 1;
+#X connect 16 0 0 0;
+#X connect 16 0 1 0;
+#X connect 16 0 2 0;
+#X connect 16 0 3 0;
+#X connect 16 0 4 0;
+#X connect 16 0 5 0;
+#X connect 16 0 6 0;
+#X restore 33 521 pd basic_examples;
+#X text 32 422 However \, [pow] \, [max] \, and [min] objects may need
+some explanation.;
+#N canvas 0 22 456 306 understanding_POW 0;
+#X text 12 25 [POW];
+#X obj 17 66 pow 2;
+#X floatatom 17 86 2 0 0 0 - - -;
+#X msg 17 46 2;
+#X text 61 115 - it is important to note that [pow] only works with
+NON-negative mantissas. That is to say that negative floating point
+fractions will be ignored.;
+#X obj 18 153 pow 2;
+#X floatatom 18 173 2 0 0 0 - - -;
+#X msg 13 111 -2;
+#X msg 24 132 -1.5;
+#X text 65 202 - however \, [pow] is capable of computing negative
+exponents!;
+#X floatatom 19 201 0 0 0 0 - - -;
+#X obj 19 221 pow -2;
+#X floatatom 19 242 0 0 0 0 - - -;
+#X text 57 39 - this object is used to exponentiate a number. The object
+returns the value at the left inlet to the power of the right inlet
+where the left inlet is the base and the right inlet is the exponent.
+For example: 2 to the power of 2 = 4 (i.e. 2 Squared);
+#X connect 1 0 2 0;
+#X connect 3 0 1 0;
+#X connect 5 0 6 0;
+#X connect 7 0 5 0;
+#X connect 8 0 5 0;
+#X connect 10 0 11 0;
+#X connect 11 0 12 0;
+#X restore 33 456 pd understanding_POW;
+#N canvas 0 22 478 345 understanding_MAX_and_MIN 0;
+#X text 34 9 [MAX];
+#X obj 32 51 max 10;
+#X floatatom 32 29 5 0 0 0 - - -;
+#X floatatom 32 76 5 0 0 0 - - -;
+#X text 87 26 - [max] returns the greater of the two numbers passed
+to its inlets. For example \, if the creation argument (or right inlet)
+is equal to 10 \, and you send 9 to the left inlet then the object
+will return 10 If you pass it an 11 \, then object returns 11;
+#X floatatom 33 116 5 0 0 0 - - -;
+#X floatatom 33 163 5 0 0 0 - - -;
+#X text 35 96 [MIN];
+#X text 88 113 - [min] returns the lesser of the two numbers passed
+to its inlets. For example \, if the creation argument (or right inlet)
+is equal to 10 \, and you send 9 to the left inlet then the object
+will return 9 If you pass it an 11 \, then object returns 10;
+#X obj 33 138 min 10;
+#X text 32 185 - It is important to note that [max] and [min] output
+a number with every number or "bang" that is sent to the left inlet.
+;
+#X floatatom 35 234 5 0 0 0 - - -;
+#X floatatom 35 282 5 0 0 0 - - -;
+#X obj 35 256 min 10;
+#X obj 76 281 bng 15 50 10 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 80 232 Move this number box above 10;
+#X connect 1 0 3 0;
+#X connect 2 0 1 0;
+#X connect 5 0 9 0;
+#X connect 9 0 6 0;
+#X connect 11 0 13 0;
+#X connect 13 0 12 0;
+#X connect 13 0 14 0;
+#X restore 33 488 pd understanding_MAX_and_MIN;
+#X text 469 20 THE SUM OF MANY NUMBERS;
+#X msg 600 98 bang;
+#X obj 600 150 random 10;
+#X obj 662 150 random 10;
+#X obj 724 150 random 10;
+#X text 628 169 a;
+#X text 690 170 b;
+#X text 751 169 c;
+#X text 631 235 d;
+#X floatatom 600 235 0 0 0 0 - - -;
+#X obj 600 119 t b b b;
+#X obj 600 192 +;
+#X obj 600 213 +;
+#X floatatom 600 170 0 0 0 0 - - -;
+#X floatatom 662 170 0 0 0 0 - - -;
+#X floatatom 724 170 0 0 0 0 - - -;
+#X text 469 324 RELATED OBJECTS;
+#X obj 666 350 -~;
+#X obj 695 350 *~;
+#X obj 723 350 /~;
+#X obj 751 350 max~;
+#X obj 781 350 min~;
+#X text 540 350 Audio Math;
+#X obj 637 374 ==;
+#X obj 695 374 >;
+#X obj 751 374 <;
+#X obj 723 374 >=;
+#X obj 781 373 <=;
+#X obj 667 374 !=;
+#X text 504 375 Relational Tests;
+#X text 498 398 Logical Operators;
+#X obj 638 398 &;
+#X obj 667 398 |;
+#X obj 695 398 &&;
+#X obj 723 398 ||;
+#X obj 751 398 <<;
+#X obj 781 398 >>;
+#X obj 695 499 expr;
+#X obj 637 422 mtof;
+#X obj 668 422 ftom;
+#X obj 699 422 powtodb;
+#X obj 749 422 rmstodb;
+#X obj 799 422 dbtopow;
+#X obj 849 422 dbtorms;
+#X text 445 423 Acoustical Unit Conversion;
+#X text 537 450 Higher Math;
+#X obj 808 374 mod;
+#X obj 835 374 div;
+#X obj 641 449 sin;
+#X obj 667 449 cos;
+#X obj 694 449 tan;
+#X obj 721 449 atan;
+#X obj 640 473 atan2;
+#X obj 731 499 random;
+#X obj 678 473 sqrt;
+#X obj 709 473 log;
+#X obj 735 473 exp;
+#X obj 761 473 abs;
+#X text 570 499 Other;
+#N canvas 181 122 454 304 related_objects_from_other_libraries 0;
+#X obj 37 25 vector+;
+#X obj 37 45 vector-;
+#X obj 37 65 vector*;
+#X obj 85 25 vector/;
+#X obj 85 45 rgb2hsv;
+#X obj 85 65 hsv2rgb;
+#X obj 133 25 abs~;
+#X obj 133 45 db2v;
+#X obj 133 65 v2db;
+#X obj 163 25 avg~;
+#X obj 164 45 tavg~;
+#X obj 164 65 pdf~;
+#X obj 201 24 <~;
+#X obj 201 45 ==~;
+#X obj 201 67 >~;
+#X obj 228 25 &&~;
+#X obj 228 46 ||~;
+#X obj 228 67 matrix~;
+#X obj 280 25 mavg;
+#X obj 280 46 mean;
+#X obj 280 68 divide;
+#X obj 323 27 divmod;
+#X obj 324 47 minus;
+#X obj 324 67 plus;
+#X text 29 104 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 28 153 The best places to find information about Pd's libraries
+is:;
+#X text 25 175 www.puredata.org and click on "Downloads" then "Software"
+;
+#X text 27 190 or;
+#X text 27 205 iem.kug.ac.at/pdb/;
+#X obj 370 27 q8_rsqrt~;
+#X obj 370 51 q8_sqrt~;
+#X restore 520 537 pd related_objects_from_other_libraries;
+#X obj 778 499 f;
+#X obj 806 499 int;
+#X obj 809 398 %;
+#X obj 754 449 pow;
+#X connect 11 0 13 0;
+#X connect 12 0 11 0;
+#X connect 14 0 11 1;
+#X connect 15 0 11 0;
+#X connect 21 0 23 0;
+#X connect 23 0 22 0;
+#X connect 29 0 38 0;
+#X connect 30 0 41 0;
+#X connect 31 0 42 0;
+#X connect 32 0 43 0;
+#X connect 38 0 30 0;
+#X connect 38 1 31 0;
+#X connect 38 2 32 0;
+#X connect 39 0 40 0;
+#X connect 40 0 37 0;
+#X connect 41 0 39 0;
+#X connect 42 0 39 1;
+#X connect 43 0 40 1;
diff --git a/doc/tutorials/intro/36.init_to_0.pd b/doc/tutorials/intro/36.init_to_0.pd
new file mode 100644
index 00000000..fdacd49e
--- /dev/null
+++ b/doc/tutorials/intro/36.init_to_0.pd
@@ -0,0 +1,39 @@
+#N canvas 396 67 603 361 12;
+#X text 21 93 float values are automatically initialized to 0 in Pd.
+;
+#X obj 304 185 +;
+#X obj 188 186 *;
+#X obj 67 185 float;
+#X obj 425 185 trigger f;
+#X obj 253 216 bng 15 250 50 0 empty empty reset 0 -6 0 8 -262144 -1
+-1;
+#X obj 304 259 prepend set;
+#X obj 187 259 prepend set;
+#X obj 67 259 prepend set;
+#X obj 425 259 prepend set;
+#X msg 304 147 bang;
+#X msg 188 148 bang;
+#X msg 67 148 bang;
+#X msg 425 148 bang;
+#X obj 12 13 cnv 15 400 40 empty empty init_to_zero 20 12 0 24 -228992
+-66577 0;
+#X msg 67 285 0;
+#X msg 187 285 0;
+#X msg 304 285 0;
+#X msg 425 285 0;
+#X connect 1 0 6 0;
+#X connect 2 0 7 0;
+#X connect 3 0 8 0;
+#X connect 4 0 9 0;
+#X connect 5 0 6 0;
+#X connect 5 0 7 0;
+#X connect 5 0 8 0;
+#X connect 5 0 9 0;
+#X connect 6 0 17 0;
+#X connect 7 0 16 0;
+#X connect 8 0 15 0;
+#X connect 9 0 18 0;
+#X connect 10 0 1 0;
+#X connect 11 0 2 0;
+#X connect 12 0 3 0;
+#X connect 13 0 4 0;
diff --git a/doc/tutorials/intro/37.math_expr.pd b/doc/tutorials/intro/37.math_expr.pd
new file mode 100644
index 00000000..687498b9
--- /dev/null
+++ b/doc/tutorials/intro/37.math_expr.pd
@@ -0,0 +1,32 @@
+#N canvas 10 40 624 449 12;
+#X obj 304 137 cnv 15 80 25 empty empty empty 20 12 0 14 -261681 -66577
+0;
+#X obj 192 137 cnv 15 80 25 empty empty empty 20 12 0 14 -261681 -66577
+0;
+#X obj 10 10 cnv 15 400 40 empty empty math_expr 20 12 0 24 -228992
+-66577 0;
+#X text 204 114 sqrt(x^2 + y^2);
+#X obj 106 274 +;
+#X obj 106 316 sqrt;
+#X floatatom 106 373 7 0 0 0 - - -;
+#X obj 79 230 pow 2;
+#X obj 141 230 pow 2;
+#X floatatom 321 141 5 0 0 0 y - -;
+#X floatatom 208 141 5 0 0 0 x - -;
+#X obj 238 290 expr sqrt(pow($f1 \, 2) + pow($f2 \, 2));
+#X floatatom 237 373 7 0 0 0 - - -;
+#X obj 321 176 trigger bang float;
+#X text 11 57 The [expr] object allows you to write out formulas in
+the standard style of many programming languages.;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 7 0 4 0;
+#X connect 8 0 4 1;
+#X connect 9 0 13 0;
+#X connect 10 0 7 0;
+#X connect 10 0 11 0;
+#X connect 11 0 12 0;
+#X connect 13 0 7 0;
+#X connect 13 0 11 0;
+#X connect 13 1 11 1;
+#X connect 13 1 8 0;
diff --git a/doc/tutorials/intro/38.EXERCISE-help_americans.pd b/doc/tutorials/intro/38.EXERCISE-help_americans.pd
new file mode 100644
index 00000000..d863e229
--- /dev/null
+++ b/doc/tutorials/intro/38.EXERCISE-help_americans.pd
@@ -0,0 +1,6 @@
+#N canvas 354 158 694 490 12;
+#X obj 11 10 cnv 15 600 40 empty empty EXERCISE-help_americans 20 12
+0 24 -262131 -66577 0;
+#X text 33 64 Help the poor Americans to understand Celsius. The formula
+is C = (5/9)*(F-32). Try not to use [expr] \, but instead use individual
+Pd objects for each math operation.;
diff --git a/doc/tutorials/intro/39.building_lists.pd b/doc/tutorials/intro/39.building_lists.pd
new file mode 100644
index 00000000..0840fe7e
--- /dev/null
+++ b/doc/tutorials/intro/39.building_lists.pd
@@ -0,0 +1,31 @@
+#N canvas 18 89 632 457 12;
+#X obj 10 10 cnv 15 400 40 empty empty building_lists 20 12 0 24 -228992
+-66577 0;
+#X obj 117 350 pack float float float;
+#X msg 117 381 \$3 \$1 \$2;
+#X floatatom 117 324 5 0 0 0 - - -;
+#X floatatom 224 325 5 0 0 0 - - -;
+#X floatatom 332 326 5 0 0 0 - - -;
+#X text 24 295 You can use arguments to reorder elements:;
+#X obj 19 59 bng 20 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 -1
+;
+#X floatatom 234 108 5 0 0 0 - - -;
+#X floatatom 126 108 5 0 0 0 - - -;
+#X floatatom 19 108 5 0 0 0 - - -;
+#X obj 19 82 trigger bang bang bang;
+#X obj 19 132 pack float float float;
+#X obj 19 165 print;
+#X obj 117 411 print;
+#X connect 1 0 2 0;
+#X connect 2 0 14 0;
+#X connect 3 0 1 0;
+#X connect 4 0 1 1;
+#X connect 5 0 1 2;
+#X connect 7 0 11 0;
+#X connect 8 0 12 2;
+#X connect 9 0 12 1;
+#X connect 10 0 12 0;
+#X connect 11 0 10 0;
+#X connect 11 1 9 0;
+#X connect 11 2 8 0;
+#X connect 12 0 13 0;
diff --git a/doc/tutorials/intro/40.using_lists.pd b/doc/tutorials/intro/40.using_lists.pd
new file mode 100644
index 00000000..4f40ff58
--- /dev/null
+++ b/doc/tutorials/intro/40.using_lists.pd
@@ -0,0 +1,17 @@
+#N canvas 10 40 624 449 12;
+#X obj 10 10 cnv 15 400 40 empty empty using_lists 20 12 0 24 -228992
+-66577 0;
+#X msg 49 113 300 240 1;
+#X floatatom 49 187 5 0 0 0 - - -;
+#X floatatom 166 187 5 0 0 0 - - -;
+#X floatatom 284 187 5 0 0 0 - - -;
+#X obj 49 148 unpack float float float;
+#X msg 52 281 1 1;
+#X obj 52 308 +;
+#X floatatom 52 338 5 0 0 0 - - -;
+#X connect 1 0 5 0;
+#X connect 5 0 2 0;
+#X connect 5 1 3 0;
+#X connect 5 2 4 0;
+#X connect 6 0 7 0;
+#X connect 7 0 8 0;
diff --git a/doc/tutorials/intro/Attic/sorting_messages_by_type.pd b/doc/tutorials/intro/41.sorting_messages_by_type.pd
index 65f633be..65f633be 100644
--- a/doc/tutorials/intro/Attic/sorting_messages_by_type.pd
+++ b/doc/tutorials/intro/41.sorting_messages_by_type.pd
diff --git a/doc/tutorials/intro/Attic/trigger_conversion.pd b/doc/tutorials/intro/42.trigger_conversion.pd
index 2f610ff5..2f610ff5 100644
--- a/doc/tutorials/intro/Attic/trigger_conversion.pd
+++ b/doc/tutorials/intro/42.trigger_conversion.pd
diff --git a/doc/tutorials/intro/Attic/grabbing_keystrokes.pd b/doc/tutorials/intro/43.grabbing_keystrokes.pd
index bf369dc5..bf369dc5 100644
--- a/doc/tutorials/intro/Attic/grabbing_keystrokes.pd
+++ b/doc/tutorials/intro/43.grabbing_keystrokes.pd
diff --git a/doc/tutorials/intro/44.multiple_messages.pd b/doc/tutorials/intro/44.multiple_messages.pd
new file mode 100644
index 00000000..2374ad54
--- /dev/null
+++ b/doc/tutorials/intro/44.multiple_messages.pd
@@ -0,0 +1,18 @@
+#N canvas 517 97 631 447 12;
+#X obj -49 6 cnv 15 400 40 empty empty multiple_messages 20 12 0 24
+-228992 -66577 0;
+#X text -42 70 You can send multiple messages in one message box by
+separating them with commas:;
+#X msg 7 161 1 \, 2 \, 3;
+#X text 102 175 these each print on a new line;
+#X msg 7 263 first 1 \, second 2 \, third 3;
+#X obj 7 308 route first second third;
+#X floatatom 7 335 5 0 0 0 - - -;
+#X floatatom 85 335 5 0 0 0 - - -;
+#X floatatom 163 335 5 0 0 0 - - -;
+#X obj 7 195 print;
+#X connect 2 0 9 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 5 1 7 0;
+#X connect 5 2 8 0;
diff --git a/doc/tutorials/intro/45.send_messages_to_pd.pd b/doc/tutorials/intro/45.send_messages_to_pd.pd
new file mode 100644
index 00000000..f0961a6e
--- /dev/null
+++ b/doc/tutorials/intro/45.send_messages_to_pd.pd
@@ -0,0 +1,26 @@
+#N canvas 476 37 655 592 12;
+#X msg 134 485 menuclose;
+#X obj 46 550 s pd-mon-nouveau-patch.pd;
+#X obj 22 216 cnv 15 5 5 empty empty 1 5 0 0 20 -262144 -258699 0;
+#X obj 23 290 cnv 15 5 5 empty empty 2 5 0 0 20 -262144 -258699 0;
+#X obj 20 342 cnv 15 5 5 empty empty 3 5 0 0 20 -262144 -258699 0;
+#X msg 60 185 \; pd filename mon-nouveau-patch.pd /tmp \; #N canvas
+\; #X pop 1 \;;
+#X text 13 149 Click these messages starting from the top:;
+#X msg 76 331 symbolatom 20 100 0 0 0 0;
+#X msg 92 379 connect 0 0 1 0;
+#X msg 60 279 msg 20 27 symbol Hello_World!;
+#X text 131 426 click on [symbol Hello_World!( in the new window;
+#X text 243 484 now close the new window;
+#X obj 20 389 cnv 15 5 5 empty empty 4 5 0 0 20 -262144 -258699 0;
+#X obj 19 440 cnv 15 5 5 empty empty 5 5 0 0 20 -262144 -258699 0;
+#X obj 18 495 cnv 15 5 5 empty empty 6 5 0 0 20 -262144 -258699 0;
+#X obj 8 10 cnv 15 400 40 empty empty send_messages_to_pd 20 12 0 24
+-228992 -66577 0;
+#X text 11 75 Keeping true to the name "Pure Data" \, you can send
+messages to Pd itself. All messages are in the same format \, whether
+its in your patch \, or it's Pd's GUI talking to the Pd core.;
+#X connect 0 0 1 0;
+#X connect 7 0 1 0;
+#X connect 8 0 1 0;
+#X connect 9 0 1 0;
diff --git a/doc/tutorials/intro/46.pure_data_files.pd b/doc/tutorials/intro/46.pure_data_files.pd
new file mode 100644
index 00000000..6797bffb
--- /dev/null
+++ b/doc/tutorials/intro/46.pure_data_files.pd
@@ -0,0 +1,54 @@
+#N canvas 461 69 584 547 10;
+#X obj 191 249 textfile;
+#X obj 111 279 print all;
+#X msg 100 223 bang;
+#X msg 191 213 rewind;
+#X obj 131 347 route canvas;
+#X obj 112 474 print width;
+#X obj 51 425 print Xpos;
+#X obj 81 450 print Ypos;
+#X obj 143 499 print heigth;
+#X obj 174 424 print fontsize;
+#X obj 51 394 unpack f f f f f;
+#X obj 295 427 s pd-clone;
+#X obj 191 274 route #N #X;
+#X obj 234 106 tgl 20 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 1
+;
+#X msg 294 338 vis 1 \, clear;
+#X obj 142 174 + 1;
+#X obj 100 174 float;
+#X obj 272 152 select 1;
+#X obj 98 150 metro 300;
+#X text 35 54 Even .pd files use the same message format.;
+#X text 34 75 Here is a patch that reads the file of this patch and
+sends it to the "clone" subpatch \, making a clone:;
+#X obj 8 10 cnv 15 400 40 empty empty pure_data_files 20 12 0 24 -228992
+-66577 0;
+#X obj 100 198 moses 52;
+#N canvas 0 22 552 603 clone 1;
+#X restore 428 494 pd clone;
+#X msg 317 214 read 46.pure_data_files.pd;
+#X connect 0 0 1 0;
+#X connect 0 0 12 0;
+#X connect 2 0 0 0;
+#X connect 3 0 0 0;
+#X connect 4 0 10 0;
+#X connect 10 0 6 0;
+#X connect 10 1 7 0;
+#X connect 10 2 5 0;
+#X connect 10 3 8 0;
+#X connect 10 4 9 0;
+#X connect 12 0 4 0;
+#X connect 12 1 11 0;
+#X connect 13 0 17 0;
+#X connect 13 0 18 0;
+#X connect 14 0 11 0;
+#X connect 15 0 16 1;
+#X connect 16 0 15 0;
+#X connect 16 0 22 0;
+#X connect 17 0 24 0;
+#X connect 17 0 3 0;
+#X connect 17 0 14 0;
+#X connect 18 0 16 0;
+#X connect 22 0 2 0;
+#X connect 24 0 0 0;
diff --git a/doc/tutorials/intro/Attic/math.pd b/doc/tutorials/intro/Attic/math.pd
deleted file mode 100644
index d081a70a..00000000
--- a/doc/tutorials/intro/Attic/math.pd
+++ /dev/null
@@ -1,434 +0,0 @@
-#N canvas 436 10 551 278 10;
-#X obj 17 11 cnv 15 500 100 empty empty OPERATIONS: 20 12 0 14 -233017
--66577 0;
-#N canvas 58 106 794 296 operations-logiques-relationnelles 0;
-#X obj 41 146 &;
-#X obj 91 146 |;
-#X obj 143 146 &&;
-#X obj 194 146 ||;
-#X obj 415 146 >;
-#X obj 464 146 >=;
-#X obj 517 146 ==;
-#X obj 618 146 <=;
-#X obj 665 146 <;
-#X obj 569 146 !=;
-#X obj 233 146 <<;
-#X obj 284 146 >>;
-#X floatatom 41 92 5 0 0 0 - - -;
-#X floatatom 303 93 5 0 0 0 - - -;
-#X floatatom 41 183 2 0 0 0 - - -;
-#X floatatom 91 183 2 0 0 0 - - -;
-#X floatatom 143 183 2 0 0 0 - - -;
-#X floatatom 194 183 2 0 0 0 - - -;
-#X floatatom 233 183 2 0 0 0 - - -;
-#X floatatom 284 183 2 0 0 0 - - -;
-#X floatatom 415 183 2 0 0 0 - - -;
-#X floatatom 464 183 2 0 0 0 - - -;
-#X floatatom 517 183 2 0 0 0 - - -;
-#X floatatom 569 183 2 0 0 0 - - -;
-#X floatatom 618 183 2 0 0 0 - - -;
-#X floatatom 665 183 2 0 0 0 - - -;
-#X floatatom 415 93 5 0 0 0 - - -;
-#X floatatom 684 93 5 0 0 0 - - -;
-#X text 38 33 Operateurs Logiques;
-#X text 39 45 -------------------;
-#X text 412 34 Operateurs Relationnelles;
-#X text 413 45 --------------------------;
-#X text 167 238 voir 17-exercices.pd : detecteur d'enveloppe;
-#X text 167 256 voir 19-exercices.pd : sequenceurs;
-#X connect 0 0 14 0;
-#X connect 1 0 15 0;
-#X connect 2 0 16 0;
-#X connect 3 0 17 0;
-#X connect 4 0 20 0;
-#X connect 5 0 21 0;
-#X connect 6 0 22 0;
-#X connect 7 0 24 0;
-#X connect 8 0 25 0;
-#X connect 9 0 23 0;
-#X connect 10 0 18 0;
-#X connect 11 0 19 0;
-#X connect 12 0 0 0;
-#X connect 12 0 1 0;
-#X connect 12 0 2 0;
-#X connect 12 0 3 0;
-#X connect 12 0 10 0;
-#X connect 12 0 11 0;
-#X connect 13 0 11 1;
-#X connect 13 0 10 1;
-#X connect 13 0 3 1;
-#X connect 13 0 2 1;
-#X connect 13 0 1 1;
-#X connect 13 0 0 1;
-#X connect 26 0 4 0;
-#X connect 26 0 5 0;
-#X connect 26 0 6 0;
-#X connect 26 0 9 0;
-#X connect 26 0 7 0;
-#X connect 26 0 8 0;
-#X connect 27 0 4 1;
-#X connect 27 0 5 1;
-#X connect 27 0 6 1;
-#X connect 27 0 9 1;
-#X connect 27 0 7 1;
-#X connect 27 0 8 1;
-#X restore 18 129 pd operations-logiques-relationnelles;
-#N canvas 0 0 795 354 operations-mathematiques 0;
-#X floatatom 31 72 5 0 0 0 - - -;
-#X obj 160 128 *;
-#X floatatom 238 72 5 0 0 0 - - -;
-#X floatatom 160 197 5 0 0 0 - - -;
-#X obj 31 128 +;
-#X obj 96 128 -;
-#X obj 219 128 /;
-#X floatatom 31 197 5 0 0 0 - - -;
-#X floatatom 96 197 5 0 0 0 - - -;
-#X floatatom 219 197 5 0 0 0 - - -;
-#X obj 375 134 pow 2;
-#X obj 441 133 pow -1;
-#X floatatom 375 80 5 0 0 0 - - -;
-#X floatatom 375 206 5 0 0 0 - - -;
-#X floatatom 441 206 5 0 0 0 - - -;
-#X obj 626 133 % 5;
-#X floatatom 611 81 5 0 0 0 - - -;
-#X floatatom 664 81 5 0 0 0 - - -;
-#X floatatom 626 206 5 0 0 0 - - -;
-#X text 628 242 Modulo;
-#X text 31 24 Operations Mathematiques;
-#X text 30 34 ------------------------;
-#X text 29 243 Operations arithmetiques standards;
-#X obj 691 132 mod 5;
-#X text 667 132 =;
-#X text 364 244 operations puissances;
-#X text 435 299 voir 18-exercices.pd : beat tempo;
-#X connect 0 0 1 0;
-#X connect 0 0 5 0;
-#X connect 0 0 6 0;
-#X connect 0 0 4 0;
-#X connect 1 0 3 0;
-#X connect 2 0 1 1;
-#X connect 2 0 4 1;
-#X connect 2 0 5 1;
-#X connect 2 0 6 1;
-#X connect 4 0 7 0;
-#X connect 5 0 8 0;
-#X connect 6 0 9 0;
-#X connect 10 0 13 0;
-#X connect 11 0 14 0;
-#X connect 12 0 10 0;
-#X connect 12 0 11 0;
-#X connect 15 0 18 0;
-#X connect 16 0 15 0;
-#X connect 17 0 15 1;
-#X restore 18 167 pd operations-mathematiques;
-#N canvas 29 79 932 301 operations-conditionnelles 0;
-#X floatatom 445 74 5 0 0 0 - - -;
-#X floatatom 504 74 5 0 0 0 - - -;
-#X floatatom 445 160 5 0 0 0 - - -;
-#X floatatom 504 160 5 0 0 0 - - -;
-#X obj 445 115 moses 10;
-#X obj 326 112 spigot;
-#X floatatom 22 96 5 0 0 0 - - -;
-#X obj 22 186 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X obj 22 137 select 2 3 4;
-#X obj 52 186 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X obj 82 186 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X floatatom 113 186 5 0 0 0 - - -;
-#X obj 369 89 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
-;
-#X floatatom 326 70 5 0 0 0 - - -;
-#X floatatom 326 156 5 0 0 0 - - -;
-#X obj 621 183 print r1;
-#X obj 690 183 print r2;
-#X obj 759 183 print r3;
-#X obj 828 183 print r4;
-#X msg 621 69 1 2 3;
-#X msg 678 70 2 3 4;
-#X obj 621 130 route 1 2 symbol;
-#X msg 731 70 symbol bar;
-#X msg 732 97 who am I?;
-#X text 18 20 Operations Conditionnelles;
-#X text 18 32 --------------------------;
-#X text 18 61 Selectionner certaines entrees;
-#X text 325 36 Porte;
-#X text 438 36 Separer les entrees;
-#X text 619 38 Routage des entrees;
-#X obj 258 233 *;
-#X obj 277 208 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
-1;
-#X obj 366 209 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
-1;
-#X obj 347 233 *~;
-#X text 257 181 autres Portes :;
-#X obj 449 203 cnv 15 74 20 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 624 223 cnv 15 107 20 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 625 243 cnv 15 113 20 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#N canvas 243 0 636 690 random 0;
-#X msg 103 95 bang;
-#X text 44 19 You can generate weighted random numbers from uniformly
-distributed ones. If you just want two possible outcomes with a varying
-probability for each one \, you can do as shown:;
-#X obj 103 121 random 100;
-#X obj 102 174 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X obj 169 174 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X floatatom 205 148 3 0 100 0 - - -;
-#X text 250 148 <-- change probablilty;
-#X obj 103 149 moses 80;
-#X text 152 93 <-- click to test;
-#X text 61 219 This outputs a number at left 80% of the time \, otherwise
-at right \, unless you override the "80" using the number box. You
-may extend this to more than two possible outcomes \, for instance
-like this:;
-#X msg 106 305 bang;
-#X obj 106 331 random 100;
-#X obj 105 384 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X obj 195 387 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 155 303 <-- click to test;
-#X obj 106 359 moses 10;
-#X obj 196 360 moses 30;
-#X obj 263 387 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X text 103 409 10%;
-#X text 193 410 20%;
-#X text 265 409 70%;
-#X obj 103 736 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1
--1;
-#X obj 100 821 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1
--1;
-#X obj 181 820 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1
--1;
-#X obj 218 822 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1
--1;
-#X msg 100 843 1;
-#X msg 181 845 2;
-#X msg 218 846 3;
-#X obj 100 882 s state;
-#X obj 85 658 bng 20 250 50 0 empty empty empty 20 8 0 8 -262144 -1
--1;
-#X obj 121 641 r state;
-#X obj 102 710 sel 1 2 3;
-#X obj 274 738 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1
--1;
-#X obj 271 823 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1
--1;
-#X obj 353 825 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1
--1;
-#X obj 392 828 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1
--1;
-#X msg 271 846 1;
-#X msg 348 851 2;
-#X msg 392 852 3;
-#X obj 271 882 s state;
-#X obj 438 739 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1
--1;
-#X obj 438 824 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1
--1;
-#X obj 518 823 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1
--1;
-#X obj 557 826 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1
--1;
-#X msg 438 847 1;
-#X msg 518 848 2;
-#X msg 557 849 3;
-#X obj 438 882 s state;
-#X msg 255 671 \; state 1;
-#X obj 102 684 f 1;
-#X obj 103 764 random 100;
-#X obj 102 793 moses 30;
-#X obj 181 794 moses 60;
-#X obj 274 765 random 100;
-#X obj 274 795 moses 10;
-#X obj 353 796 moses 60;
-#X obj 438 766 random 100;
-#X obj 438 795 moses 70;
-#X obj 518 795 moses 80;
-#X floatatom 133 666 3 0 0 0 - - -;
-#X text 255 651 reset;
-#X text 68 637 STEP;
-#X text 53 505 Here is how to construct a simple \, three-valued Markov
-chain using "random." Each time you click on "step" the previous output
-("state") determines which of three random networks to invoke \, each
-having a different probability distribution for the next value of "state."
-For instance if the state was 3 \, the next state will be 1 70% of
-the time \, state 2 10% \, and state 3 20%.;
-#X connect 0 0 2 0;
-#X connect 2 0 7 0;
-#X connect 5 0 7 1;
-#X connect 7 0 3 0;
-#X connect 7 1 4 0;
-#X connect 10 0 11 0;
-#X connect 11 0 15 0;
-#X connect 15 0 12 0;
-#X connect 15 1 16 0;
-#X connect 16 0 13 0;
-#X connect 16 1 17 0;
-#X connect 21 0 50 0;
-#X connect 22 0 25 0;
-#X connect 23 0 26 0;
-#X connect 24 0 27 0;
-#X connect 25 0 28 0;
-#X connect 26 0 28 0;
-#X connect 27 0 28 0;
-#X connect 29 0 49 0;
-#X connect 30 0 49 1;
-#X connect 30 0 59 0;
-#X connect 31 0 21 0;
-#X connect 31 1 32 0;
-#X connect 31 2 40 0;
-#X connect 32 0 53 0;
-#X connect 33 0 36 0;
-#X connect 34 0 37 0;
-#X connect 35 0 38 0;
-#X connect 36 0 39 0;
-#X connect 37 0 39 0;
-#X connect 38 0 39 0;
-#X connect 40 0 56 0;
-#X connect 41 0 44 0;
-#X connect 42 0 45 0;
-#X connect 43 0 46 0;
-#X connect 44 0 47 0;
-#X connect 45 0 47 0;
-#X connect 46 0 47 0;
-#X connect 49 0 31 0;
-#X connect 50 0 51 0;
-#X connect 51 0 22 0;
-#X connect 51 1 52 0;
-#X connect 52 0 23 0;
-#X connect 52 1 24 0;
-#X connect 53 0 54 0;
-#X connect 54 0 33 0;
-#X connect 54 1 55 0;
-#X connect 55 0 34 0;
-#X connect 55 1 35 0;
-#X connect 56 0 57 0;
-#X connect 57 0 41 0;
-#X connect 57 1 58 0;
-#X connect 58 0 42 0;
-#X connect 58 1 43 0;
-#X restore 448 203 pd random;
-#N canvas 0 0 357 255 route_lists 0;
-#X floatatom 228 32 5 0 0 0 - - -;
-#X obj 228 70 t b f;
-#X obj 228 120 pack s f;
-#X msg 81 30 droite;
-#X msg 17 30 gauche;
-#N canvas 510 50 299 253 test 0;
-#X obj 112 34 inlet;
-#X obj 185 175 outlet;
-#X obj 112 74 route list;
-#X obj 112 176 outlet;
-#X obj 112 116 route gauche droite;
-#X obj 79 166 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X obj 216 152 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X connect 0 0 2 0;
-#X connect 2 0 4 0;
-#X connect 2 1 4 0;
-#X connect 4 0 3 0;
-#X connect 4 0 5 0;
-#X connect 4 1 1 0;
-#X connect 4 1 6 0;
-#X restore 228 189 pd test;
-#X floatatom 279 217 5 0 0 0 - - -;
-#X floatatom 228 217 5 0 0 0 - - -;
-#X msg 40 151 droite 10 \, gauche 40;
-#X symbolatom 139 32 10 0 0 0 - - -;
-#X connect 0 0 1 0;
-#X connect 1 0 2 0;
-#X connect 1 1 2 1;
-#X connect 2 0 5 0;
-#X connect 3 0 2 0;
-#X connect 4 0 2 0;
-#X connect 5 0 7 0;
-#X connect 5 1 6 0;
-#X connect 8 0 5 0;
-#X connect 9 0 2 0;
-#X restore 625 243 pd route_lists;
-#N canvas 385 246 472 322 lists_pack 0;
-#X obj 68 114 pack 0 5 s;
-#X obj 68 160 print;
-#X obj 189 168 unpack 0 0 s;
-#X floatatom 189 204 5 0 0 0 - - -;
-#X floatatom 234 204 5 0 0 0 - - -;
-#X msg 280 236 Hello;
-#X msg 280 204 set \$1;
-#X obj 37 79 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
--1;
-#X msg 143 79 symbol Hello;
-#X floatatom 105 79 3 0 0 0 - - -;
-#X floatatom 68 79 3 0 0 0 - - -;
-#X text 35 24 Making lists with pack;
-#X connect 0 0 1 0;
-#X connect 0 0 2 0;
-#X connect 2 0 3 0;
-#X connect 2 1 4 0;
-#X connect 2 2 6 0;
-#X connect 6 0 5 0;
-#X connect 7 0 0 0;
-#X connect 8 0 0 2;
-#X connect 9 0 0 1;
-#X connect 10 0 0 0;
-#X restore 625 223 pd lists_pack;
-#X connect 0 0 4 0;
-#X connect 1 0 4 1;
-#X connect 4 0 2 0;
-#X connect 4 1 3 0;
-#X connect 5 0 14 0;
-#X connect 6 0 8 0;
-#X connect 8 0 7 0;
-#X connect 8 1 9 0;
-#X connect 8 2 10 0;
-#X connect 8 3 11 0;
-#X connect 12 0 5 1;
-#X connect 13 0 5 0;
-#X connect 19 0 21 0;
-#X connect 20 0 21 0;
-#X connect 21 0 15 0;
-#X connect 21 1 16 0;
-#X connect 21 2 17 0;
-#X connect 21 3 18 0;
-#X connect 22 0 21 0;
-#X connect 23 0 21 0;
-#X connect 31 0 30 1;
-#X connect 32 0 33 1;
-#X restore 18 205 pd operations-conditionnelles;
-#X text 322 129 > < != >= . . .;
-#X text 36 34 Pour aller plus loin dans les possibilites relationnelles
-:;
-#X text 249 165 - + = / *;
-#X text 270 204 selection \, routage \, porte \, ...;
-#N canvas 0 0 556 312 changementEchelles 0;
-#X text 11 3 But : passer un nombre qui va de 0 a 127 en un nombre
-entre 40 et 3000;
-#X obj 171 43 range 0 127 40 3000;
-#X text 13 43 Un objet fait ca :;
-#X text 9 92 Mais on peut faire tout aussi bien en utilisant les objets
-[expr] qui servent tres bien pour tout calcul.;
-#X floatatom 130 173 5 0 0 0 - - -;
-#X floatatom 130 260 5 0 0 0 - - -;
-#X text 452 124 0 : x1;
-#X text 436 139 127 : x2;
-#X text 444 153 40 : x3;
-#X text 428 168 3000 : x4;
-#X obj 130 202 expr ( (($f1-O)/(127-0))*(3000-40) ) + (40-0);
-#X msg 60 136 0;
-#X msg 94 137 60;
-#X msg 126 138 127;
-#X connect 4 0 10 0;
-#X connect 10 0 5 0;
-#X connect 11 0 4 0;
-#X connect 12 0 4 0;
-#X connect 13 0 4 0;
-#X restore 17 242 pd changementEchelles;
-#X text 204 243 objet [expr];
diff --git a/doc/tutorials/intro/TEMPLATE.pd b/doc/tutorials/intro/TEMPLATE.pd
index 7f7dff3f..75492e99 100644
--- a/doc/tutorials/intro/TEMPLATE.pd
+++ b/doc/tutorials/intro/TEMPLATE.pd
@@ -1,3 +1,3 @@
-#N canvas 10 40 620 445 12;
+#N canvas 10 40 624 449 12;
#X obj 10 10 cnv 15 400 40 empty empty TEMPLATE 20 12 0 24 -228992
-66577 0;