aboutsummaryrefslogtreecommitdiff
path: root/nusmuk-utils/pbank-help.pd
blob: 21839ef074bf77c5530ad91d5c7c658127a3b78c (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
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
#N canvas 212 22 1013 667 10;
#X msg 487 31 set 1 2 100 3.1415 shupsh;
#X msg 500 59 0 1 1.234;
#X text 573 59 write 1.234 to column 0 of row 1;
#X text 672 31 set list of elements starting at column 1 in row 2;
#X msg 513 87 0 1;
#X text 542 87 read value at column 0 of row 1;
#X msg 538 138 2 0 coptox;
#X text 556 110 read value at column 2 of row 0;
#X msg 526 110 2 0;
#X msg 608 245 put 0 100 3.14159 shupsh;
#X text 793 251 put list of elements starting at column 0 in edit buffer
;
#X text 41 -12 A 2-dimensional parameter bank for floats or symbols
;
#X text -19 42 args:;
#X text -4 56 argument1 gives the number of columns (X axis): <int>
\; argument2 gives the number of rows (Y axis): <int> \; argument3
is the name of the pbank: <symbol>;
#X text 66 95 The arg3 (pbank 'name') is used by pbank in two ways:
when a patch using a pbank is loaded \, a pbank data file corresponding
to arg3 will be searched for and loaded if found. The 'name' also allows
other pbanks with the same name to share data -in the way that tables
do. If these two features are not wanted \, Arg3 (the 'name') can be
set to the empty string: "" (two quotes) - see example below-;
#X text 616 138 write symbol "coptox" to column 2 of row 0;
#X text 777 564 The left-hand outlet outputs lists of the form: columnNo
<int> item <int \, float or symbol>;
#X text 777 589 note: Do not forget that this outlet is only used by
pbank if argument 4 undefined (omitted) -see arguments;
#X text 40 0 note: The structure of pbank includes an additional row
that serves as an edit buffer. - see Messages;
#X msg 654 336 store 3;
#X msg 625 273 recall 3;
#X text -5 187 argument4;
#X text 65 187 is the symbol that pbank uses when directing its output
to receives based on this symbol: <optional symbol>;
#X obj -7 315 pbank 4 12;
#X text -8 330 Creates a parameter bank of 4 columns by 12 rows;
#X text -10 378 Creates a parameter bank of 4 columns by 12 rows \,
reading in the contents of the file name "bushmeat.pbank" \, and sharing
data with any other pbanks with the same name;
#X floatatom 776 777 5 0 0 0 - - -;
#X floatatom 816 777 5 0 0 0 - - -;
#X obj 883 742 print pbankOut;
#X obj 776 742 route 0 1 2 3;
#X floatatom 856 777 5 0 0 0 - - -;
#X floatatom 896 777 5 0 0 0 - - -;
#X obj 614 636 send toPbanks;
#X obj 776 682 receive toPbanks;
#X text 486 3 MESSAGES: read/write;
#X text 587 221 MESSAGES: edit buffer;
#X text 696 485 MESSAGES: file IO;
#X obj 383 677 route 0 1 2 3;
#X msg 383 707 set \$1;
#X msg 384 768 untitled_10;
#X msg 484 707 set \$1;
#X msg 484 768 0;
#X msg 577 707 set \$1;
#X msg 577 768 0;
#X msg 670 707 set \$1;
#X msg 670 768 0;
#X msg 419 623 recall 11;
#X msg 420 602 recall 10;
#X obj 510 388 vradio 18 1 0 10 empty empty empty 0 -6 0 8 -262144
-1 -1 7;
#X msg 510 574 recall \$1;
#X obj -9 437 receive toPbanks;
#X floatatom 397 752 5 0 0 0 - - -;
#X floatatom 490 752 5 0 0 0 - - -;
#X floatatom 583 752 5 0 0 0 - - -;
#X floatatom 676 752 5 0 0 0 - - -;
#X obj -9 573 pbank 4 12 "" wireless;
#X obj 420 576 loadbang;
#X obj 397 730 r wireless-0;
#X obj 490 730 r wireless-1;
#X obj 583 730 r wireless-2;
#X obj 676 730 r wireless-3;
#X text -11 592 Creates an unnamed parameter bank of 4 columns by 12
rows \, whose output will be sent to 4 corresponding receives whose
names are based on the symbol "wireless-n" \, where n is the corresponding
column number. Note that the argument3 has been set to the empty string:
"".;
#N canvas 291 52 1062 794 An_EXAMPLE 0;
#X obj 109 8 r synth-0;
#X msg 87 32 set \$1;
#X msg 109 79 set \$1;
#X obj 109 174 vsl 15 128 50 15000 0 0 empty empty empty 0 -8 0 8 -262144
-1 -1 0 1;
#X floatatom 87 336 7 0 0 1 hz - -;
#X msg 87 357 put 0 \$1;
#X obj 259 426 s toSynthPbank;
#X obj 117 104 r name-0;
#X msg 117 126 set \$1;
#X msg 117 147 untitled_10;
#N canvas 571 157 505 529 SYNTH 0;
#X obj 80 43 inlet;
#X obj 192 43 inlet;
#X obj 300 43 inlet;
#X obj 399 43 inlet;
#X text 89 23 fq;
#X text 178 24 modFQscaler;
#X text 299 23 index;
#X text 401 23 gain;
#X floatatom 80 69 5 0 0 0 - - -;
#X obj 123 110 float;
#X obj 80 156 sig~;
#X obj 192 71 t b f;
#X obj 123 156 * 1;
#X obj 123 178 sig~;
#X obj 123 207 osc~;
#X floatatom 222 110 5 0 0 0 - - -;
#X obj 123 238 *~;
#X obj 300 154 sig~;
#X floatatom 300 110 5 0 0 0 - - -;
#X obj 80 285 +~;
#X obj 80 330 osc~;
#X obj 399 72 vsl 15 128 0 127 0 0 empty empty empty 0 -8 0 8 -262144
-1 -1 0 1;
#X obj 79 441 dac~;
#X text 19 474 xjimmies lib. z. settel/jm dumas 2003-2007;
#X obj 80 410 gain2~;
#X obj 98 388 r \$0-gain;
#X obj 80 364 gain1~;
#X connect 0 0 8 0;
#X connect 1 0 11 0;
#X connect 2 0 18 0;
#X connect 3 0 21 0;
#X connect 8 0 10 0;
#X connect 8 0 9 0;
#X connect 9 0 12 0;
#X connect 10 0 19 0;
#X connect 11 0 9 0;
#X connect 11 1 15 0;
#X connect 12 0 13 0;
#X connect 13 0 14 0;
#X connect 14 0 16 0;
#X connect 15 0 12 1;
#X connect 16 0 19 1;
#X connect 17 0 16 1;
#X connect 18 0 17 0;
#X connect 19 0 20 0;
#X connect 20 0 26 0;
#X connect 21 0 26 1;
#X connect 24 0 22 0;
#X connect 24 0 22 1;
#X connect 25 0 24 1;
#X connect 26 0 24 0;
#X restore 623 425 pd SYNTH;
#X msg 259 33 set \$1;
#X msg 281 80 set \$1;
#X obj 281 175 vsl 15 128 0 20 0 0 empty empty empty 0 -8 0 8 -262144
-1 -1 0 1;
#X floatatom 259 337 7 0 0 1 hz - -;
#X msg 289 127 set \$1;
#X msg 289 148 0;
#X msg 437 31 set \$1;
#X msg 459 78 set \$1;
#X obj 459 173 vsl 15 128 50 10000 0 0 empty empty empty 0 -8 0 8 -262144
-1 -1 0 1;
#X floatatom 437 335 7 0 0 1 hz - -;
#X msg 467 125 set \$1;
#X msg 467 146 0;
#X msg 608 34 set \$1;
#X obj 630 176 vsl 15 128 0 127 0 0 empty empty empty 0 -8 0 8 -262144
-1 -1 0 1;
#X floatatom 608 338 7 0 0 1 hz - -;
#X msg 634 126 set \$1;
#X msg 634 147 0;
#X obj 281 9 r synth-1;
#X obj 459 7 r synth-2;
#X obj 608 7 r synth-3;
#X obj 634 104 r name-3;
#X obj 467 103 r name-2;
#X obj 289 105 r name-1;
#X msg 259 358 put 1 \$1;
#X msg 437 356 put 2 \$1;
#X msg 608 359 put 3 \$1;
#X obj 721 530 r toSynthPbank;
#X obj 447 554 s toSynthPbank;
#X msg 447 526 recall \$1;
#X msg 810 480 recall 11;
#X msg 723 480 recall 10;
#X obj 723 460 loadbang;
#X obj 723 506 pbank 4 12 bushmeat.pbank name;
#X obj 449 501 i;
#X obj 366 486 bng 15 250 50 0 empty empty empty 0 -6 0 8 -18753 -1
-1;
#X text 381 487 recall;
#X obj 366 604 s toSynthPbank;
#X obj 366 550 i;
#X obj 366 466 bng 15 250 50 0 empty empty empty 0 -6 0 8 -258049 -1
-1;
#X text 388 465 store;
#X msg 366 576 store \$1;
#X floatatom 476 479 5 0 0 0 - - -;
#X text 517 479 select memory;
#X floatatom 476 502 5 0 0 0 - - -;
#X text 518 500 current memory;
#X obj 748 333 r synth-0;
#X obj 748 353 r synth-1;
#X obj 748 374 r synth-2;
#X obj 748 395 r synth-3;
#X obj 763 124 vsl 15 128 -99 18 0 1 \$0-gain empty Output -15 -14
0 14 -260097 -1 -1 9300 1;
#X floatatom 763 260 5 0 0 1 _db - -;
#X obj 106 657 s toSynthPbank;
#X obj 116 471 vradio 15 1 0 8 empty empty empty 0 -6 0 8 -262144 -1
-1 0;
#X obj 475 433 hradio 15 1 0 8 empty empty empty 0 -6 0 8 -262144 -1
-1 0;
#X floatatom 106 607 5 0 0 0 - - -;
#X obj 723 629 pbank 4 12 bushmeat.pbank;
#X msg 723 603 dump;
#X msg 762 603 dump 2;
#N canvas 675 151 189 317 interpol 0;
#X obj 11 26 inlet;
#X obj 72 98 min 127;
#X obj 72 121 max 0;
#X obj 11 98 min 127;
#X obj 11 121 max 0;
#N canvas 0 22 355 236 position 0;
#X obj 49 121 pack f f;
#X obj 49 17 inlet;
#X obj 236 15 inlet;
#X obj 49 152 outlet;
#X obj 236 62 / 127;
#X obj 49 93 / 127;
#X obj 237 90 t b f;
#X connect 0 0 3 0;
#X connect 1 0 5 0;
#X connect 2 0 4 0;
#X connect 4 0 6 0;
#X connect 5 0 0 0;
#X connect 6 0 0 0;
#X connect 6 1 0 1;
#X restore 11 171 pd position;
#N canvas 300 173 814 597 distance 0;
#X obj 35 27 inlet;
#X obj 37 538 outlet;
#X obj 194 539 outlet;
#X obj 37 144 unpack f f;
#X obj 206 143 unpack f f;
#X obj 341 142 unpack f f;
#X obj 495 142 unpack f f;
#X obj 634 140 unpack f f;
#X obj 37 168 +;
#X msg 37 192 1 \$1;
#X obj 37 214 -;
#X obj 206 171 - 1;
#X obj 206 195 * -1;
#X obj 205 224 +;
#X msg 205 248 1 \$1;
#X obj 205 270 -;
#X obj 340 230 +;
#X msg 340 254 1 \$1;
#X obj 340 276 -;
#X obj 492 223 +;
#X msg 492 247 1 \$1;
#X obj 492 269 -;
#X obj 395 172 - 1;
#X obj 395 196 * -1;
#X obj 494 172 - 1;
#X obj 494 196 * -1;
#X obj 547 175 - 1;
#X obj 547 199 * -1;
#X obj 37 239 max 0;
#X obj 206 292 max 0;
#X obj 338 301 max 0;
#X obj 493 298 max 0;
#X obj 35 49 t a a a a a;
#X obj 628 224 +;
#X msg 628 248 1 \$1;
#X obj 628 270 -;
#X obj 629 299 max 0;
#X obj 632 173 - 0.5;
#X obj 683 176 - 0.5;
#X obj 683 200 abs;
#X obj 630 197 abs;
#X obj 509 322 +;
#X obj 379 349 +;
#X obj 257 378 +;
#X obj 62 413 +;
#X obj 37 513 /;
#X obj 37 264 t f f;
#X obj 193 493 f;
#X obj 193 517 /;
#X obj 70 437 t b f;
#X obj 325 487 f;
#X obj 325 511 /;
#X obj 480 481 f;
#X obj 480 505 /;
#X obj 616 480 f;
#X obj 616 504 /;
#X obj 480 531 outlet;
#X obj 325 537 outlet;
#X obj 616 532 outlet;
#X connect 0 0 32 0;
#X connect 3 0 8 0;
#X connect 3 1 8 1;
#X connect 4 0 11 0;
#X connect 4 1 13 1;
#X connect 5 0 16 0;
#X connect 5 1 22 0;
#X connect 6 0 24 0;
#X connect 6 1 26 0;
#X connect 7 0 37 0;
#X connect 7 1 38 0;
#X connect 8 0 9 0;
#X connect 9 0 10 0;
#X connect 10 0 28 0;
#X connect 11 0 12 0;
#X connect 12 0 13 0;
#X connect 13 0 14 0;
#X connect 14 0 15 0;
#X connect 15 0 29 0;
#X connect 16 0 17 0;
#X connect 17 0 18 0;
#X connect 18 0 30 0;
#X connect 19 0 20 0;
#X connect 20 0 21 0;
#X connect 21 0 31 0;
#X connect 22 0 23 0;
#X connect 23 0 16 1;
#X connect 24 0 25 0;
#X connect 25 0 19 0;
#X connect 26 0 27 0;
#X connect 27 0 19 1;
#X connect 28 0 46 0;
#X connect 29 0 43 0;
#X connect 29 0 47 1;
#X connect 30 0 42 0;
#X connect 30 0 50 1;
#X connect 31 0 41 0;
#X connect 31 0 52 1;
#X connect 32 0 3 0;
#X connect 32 1 4 0;
#X connect 32 2 5 0;
#X connect 32 3 6 0;
#X connect 32 4 7 0;
#X connect 33 0 34 0;
#X connect 34 0 35 0;
#X connect 35 0 36 0;
#X connect 36 0 41 1;
#X connect 36 0 54 1;
#X connect 37 0 40 0;
#X connect 38 0 39 0;
#X connect 39 0 33 1;
#X connect 40 0 33 0;
#X connect 41 0 42 1;
#X connect 42 0 43 1;
#X connect 43 0 44 1;
#X connect 44 0 45 1;
#X connect 44 0 49 0;
#X connect 45 0 1 0;
#X connect 46 0 45 0;
#X connect 46 1 44 0;
#X connect 47 0 48 0;
#X connect 48 0 2 0;
#X connect 49 0 47 0;
#X connect 49 0 50 0;
#X connect 49 0 52 0;
#X connect 49 0 54 0;
#X connect 49 1 48 1;
#X connect 49 1 51 1;
#X connect 49 1 53 1;
#X connect 49 1 55 1;
#X connect 50 0 51 0;
#X connect 51 0 57 0;
#X connect 52 0 53 0;
#X connect 53 0 56 0;
#X connect 54 0 55 0;
#X connect 55 0 58 0;
#X restore 11 194 pd distance;
#X obj 11 217 pack f f f f f;
#X obj 11 266 outlet;
#X msg 11 242 interp \$1 \$2 \$3 \$4 \$5;
#X obj 11 50 unpack f f;
#X obj 11 73 / 2;
#X obj 72 72 / 2;
#X obj 11 144 change;
#X obj 72 144 change;
#X connect 0 0 10 0;
#X connect 1 0 2 0;
#X connect 2 0 14 0;
#X connect 3 0 4 0;
#X connect 4 0 13 0;
#X connect 5 0 6 0;
#X connect 6 0 7 0;
#X connect 6 1 7 1;
#X connect 6 2 7 2;
#X connect 6 3 7 3;
#X connect 6 4 7 4;
#X connect 7 0 9 0;
#X connect 9 0 8 0;
#X connect 10 0 11 0;
#X connect 10 1 12 0;
#X connect 11 0 3 0;
#X connect 12 0 1 0;
#X connect 13 0 5 0;
#X connect 14 0 5 1;
#X restore 200 616 pd interpol;
#X obj 96 474 vsl 15 115 7 0 0 1 empty empty empty 0 -8 0 8 -262144
-1 -1 11400 1;
#X obj 721 560 pbank 4 12 bushmeat.pbank synth;
#X msg 106 627 recall \$1;
#X text 47 455 interpolation beetween adjacent presets;
#X text 171 563 complicated interpolation;
#X obj 200 592 xy;
#X text 229 590 <- click here;
#X connect 0 0 1 0;
#X connect 0 0 2 0;
#X connect 1 0 4 0;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 4 0 5 0;
#X connect 4 0 10 0;
#X connect 5 0 6 0;
#X connect 7 0 8 0;
#X connect 8 0 9 0;
#X connect 11 0 14 0;
#X connect 12 0 13 0;
#X connect 13 0 14 0;
#X connect 14 0 34 0;
#X connect 14 0 10 1;
#X connect 15 0 16 0;
#X connect 17 0 20 0;
#X connect 18 0 19 0;
#X connect 19 0 20 0;
#X connect 20 0 35 0;
#X connect 20 0 10 2;
#X connect 21 0 22 0;
#X connect 23 0 25 0;
#X connect 23 0 24 0;
#X connect 24 0 25 0;
#X connect 25 0 36 0;
#X connect 25 0 10 3;
#X connect 26 0 27 0;
#X connect 28 0 11 0;
#X connect 28 0 12 0;
#X connect 29 0 17 0;
#X connect 29 0 18 0;
#X connect 30 0 23 0;
#X connect 31 0 26 0;
#X connect 32 0 21 0;
#X connect 33 0 15 0;
#X connect 34 0 6 0;
#X connect 35 0 6 0;
#X connect 36 0 6 0;
#X connect 37 0 71 0;
#X connect 39 0 38 0;
#X connect 40 0 43 0;
#X connect 41 0 43 0;
#X connect 42 0 41 0;
#X connect 44 0 39 0;
#X connect 44 0 54 0;
#X connect 45 0 44 0;
#X connect 48 0 51 0;
#X connect 48 0 54 0;
#X connect 49 0 48 0;
#X connect 51 0 47 0;
#X connect 56 0 10 0;
#X connect 57 0 10 1;
#X connect 58 0 10 2;
#X connect 59 0 10 3;
#X connect 60 0 61 0;
#X connect 63 0 65 0;
#X connect 64 0 44 1;
#X connect 64 0 52 0;
#X connect 64 0 48 1;
#X connect 65 0 72 0;
#X connect 67 0 66 0;
#X connect 68 0 66 0;
#X connect 69 0 62 0;
#X connect 70 0 65 0;
#X connect 72 0 62 0;
#X connect 75 0 69 0;
#X restore 1076 740 pd An_EXAMPLE;
#X text -18 -12 pbank :;
#X text 776 545 OUTLETS;
#X text -15 691 "pdjimmies" lib. z. settel 2004;
#X text 65 216 Arg4 is optional. If it is not specified \, Pbank's
output will be sent out of its outlet. If arg4 is specified \, pbank's
outlet will be inactive and output will be directed to a number of
receive objects whose names are based on arg4 (receive symbol). For
each column \, there is a corresponding receive whose name shitfuck
includes the column number -see example below.;
#X text 723 363 output edit buffer (share beetween diferents object
with same pbank file);
#X msg 705 429 interp 0 0.2 0.6 0.2;
#X text 620 157 output row 2 (same as recall \, but does not compy
to the edit buffer);
#X text 712 336 copy edit buffer to row 3;
#X text 692 273 recall (output) row 3 and copy it into edit buffer
;
#X text 746 401 read value from edit buffer (-1) at column 2;
#X msg 696 399 2 -1;
#X msg 640 299 recall 2.5;
#X text 714 450 interpolation between presets : output = 0 * preset1
+ 0.2 * preset2 + 0.6* preset3 + 0.2 * preset4;
#X text 721 299 recalls interpolated values between adjacent rows:
;
#X text 725 312 output = (row 2 + row 3) * 0.5;
#X text -14 708 "interp" method contributed by Cyrille Henry;
#X text 1079 722 LOOK IN HERE;
#X obj 383 652 pbank 4 12 glen;
#X text -10 481 Creates a named pbank whose output is sent to receives
based on the symbol "wireless". Since there are 4 columns \, pbank
will be sending its output to 4 receives each one corresponding to
the column number included in its name. This provides an alterative
(and faster) way of getting data from a pbank.;
#X msg 680 363 dump;
#X msg 555 166 dump 2;
#X msg 572 191 dump 2;
#X text 625 190 same as above but outputs row as list thru outlet;
#X obj -8 361 pbank 4 12 examples/bushmeat.pbank;
#X obj -9 461 pbank 4 12 examples/bushmeat.pbank wireless;
#X msg 697 505 read examples/bushmeat.pbank;
#X msg 697 529 write examples/bushmeat.pbank;
#X obj 776 706 pbank 4 12 examples/bushmeat.pbank;
#X connect 0 0 32 0;
#X connect 1 0 32 0;
#X connect 4 0 32 0;
#X connect 6 0 32 0;
#X connect 8 0 32 0;
#X connect 9 0 32 0;
#X connect 19 0 32 0;
#X connect 20 0 32 0;
#X connect 29 0 26 0;
#X connect 29 1 27 0;
#X connect 29 2 30 0;
#X connect 29 3 31 0;
#X connect 33 0 90 0;
#X connect 37 0 38 0;
#X connect 37 1 40 0;
#X connect 37 2 42 0;
#X connect 37 3 44 0;
#X connect 38 0 39 0;
#X connect 40 0 41 0;
#X connect 42 0 43 0;
#X connect 44 0 45 0;
#X connect 46 0 80 0;
#X connect 47 0 80 0;
#X connect 48 0 49 0;
#X connect 49 0 32 0;
#X connect 50 0 87 0;
#X connect 56 0 47 0;
#X connect 57 0 51 0;
#X connect 58 0 52 0;
#X connect 59 0 53 0;
#X connect 60 0 54 0;
#X connect 68 0 32 0;
#X connect 73 0 32 0;
#X connect 74 0 32 0;
#X connect 80 0 37 0;
#X connect 82 0 32 0;
#X connect 83 0 32 0;
#X connect 84 0 32 0;
#X connect 88 0 32 0;
#X connect 89 0 32 0;
#X connect 90 0 28 0;
#X connect 90 0 29 0;