aboutsummaryrefslogtreecommitdiff
path: root/test-harmonizer2.pd
blob: 099e1273850e07e7d4641800fb912ee2952c49d0 (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
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
#N canvas 194 23 947 709 10;
#X symbolatom 157 205 18 0 0 2 next_chord - -;
#N canvas 39 349 535 332 readme 0;
#X text 59 31 howto populate the graph: play the chord \, when the
output of [chord] is ok bang the "add" message. bang it each time you
change chord \, it will store the transitions;
#X text 56 120 howto ask for the next chord: play the chord \, bang
the "set" message \, this will set the current chord without adding
it to the graph's memory \, now bang the next 1 message. this chord_graph
will respond with the chord you played most of the times after the
current chord. you can send "next x" where x is from 0 to 1 \, 0 =
max novelty \, 1= min novelty;
#X text 56 259 you can save graph state sending the write message;
#X restore 607 47 pd readme;
#X msg 52 286 current \$1;
#X msg 158 283 target \$1;
#X obj 52 262 symbol;
#X obj 52 242 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 157 261 symbol;
#X obj 289 261 int 36;
#X obj 355 262 int 60;
#X obj 426 260 int 67;
#X obj 494 259 int 76;
#X obj 566 262 int 84;
#X obj 335 289 pack f f f f f;
#X obj 358 233 t b b b b b;
#X obj 264 329 unpack f f f f f;
#X obj 127 108 symbol;
#X obj 98 43 bng 15 250 50 0 empty empty change_chord 0 -6 0 8 -262144
-1 -1;
#X msg 127 132 set \$1;
#N canvas 0 22 714 424 midi 0;
#X obj 141 253 outlet;
#X obj 271 31 notein;
#X obj 271 66 chord 59;
#X msg 175 149 add \$1;
#X obj 175 121 symbol;
#X obj 176 94 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 248 163 symbol;
#X obj 249 136 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X msg 248 191 set \$1;
#X symbolatom 311 101 25 0 0 0 - - -;
#X connect 1 0 2 0;
#X connect 1 1 2 1;
#X connect 2 2 4 1;
#X connect 2 2 6 1;
#X connect 2 2 9 0;
#X connect 3 0 0 0;
#X connect 4 0 3 0;
#X connect 5 0 4 0;
#X connect 6 0 8 0;
#X connect 7 0 6 0;
#X connect 8 0 0 0;
#X restore 512 135 pd midi;
#N canvas 0 22 462 312 fileIO 0;
#X obj 143 225 outlet;
#X msg 115 77 write test.graph;
#X msg 145 105 read test.graph;
#X msg 175 135 init 1;
#X connect 1 0 0 0;
#X connect 2 0 0 0;
#X connect 3 0 0 0;
#X restore 429 134 pd fileIO;
#X obj 100 73 t b b;
#X obj 157 228 t b a;
#X obj 63 359 bang;
#X obj 221 380 mtof;
#X obj 270 379 mtof;
#X obj 355 383 mtof;
#X obj 67 504 print;
#X obj 74 111 f 1;
#X msg 59 135 next \$1;
#X obj 63 70 vsl 15 30 0 1 0 0 empty empty empty 0 -8 0 8 -262144 -1
-1 0 1;
#X floatatom 32 112 5 0 0 0 - - -;
#X obj 527 400 loadbang;
#X obj 313 382 mtof;
#X obj 399 384 mtof;
#X obj 462 22 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
;
#X obj 462 41 metro 7000;
#X obj 13 32 r novelty;
#X obj 599 121 int 0;
#X obj 646 120 + 1;
#X obj 600 171 tabread tab-novelty;
#X obj 600 194 s novelty;
#X obj 685 119 table tab-novelty;
#X obj 600 147 % 10;
#X obj 462 63 t b b;
#X msg 489 365 \; tab-novelty 0 1 1 0.8 0.7 0.3 0.5 0.9 0.1 0 0.2;
#X obj 203 97 symbol;
#X msg 203 125 tonality \$1;
#X obj 203 73 bng 15 250 50 0 empty empty change 0 -6 0 8 -262144 -1
-1;
#X obj 19 160 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X symbolatom 305 204 15 0 0 2 tonality - -;
#X obj 307 94 symbol;
#X obj 307 70 bng 15 250 50 0 empty empty change 0 -6 0 8 -262144 -1
-1;
#X msg 307 122 modulation \$1;
#X obj 445 189 print sequence;
#X msg 235 15 search 9 1 5 0.9;
#X msg 262 407 i9 0 10 \$1 80 0.5;
#X msg 502 440 i25 0 17000 0.98 0.8 20000;
#X msg 500 464 i10 0 17000 10 30;
#X msg 500 487 i30 0 17000 2 30;
#X obj 172 422 print;
#X obj 265 445 s csound;
#N canvas 0 25 807 561 bay 0;
#X obj 12 83 loadbang;
#N canvas 0 22 759 336 ascoltaHits 0;
#X obj 161 223 outlet;
#X obj 146 33 r 1-hit;
#X obj 147 54 bang;
#X msg 147 83 60;
#X obj 198 57 bang;
#X obj 197 36 r 2-hit;
#X msg 198 86 72;
#X obj 254 57 bang;
#X msg 254 86 48;
#X obj 253 36 r 3-hit;
#X obj 303 60 bang;
#X msg 303 89 67;
#X obj 303 39 r 4-hit;
#X obj 359 60 bang;
#X obj 422 60 bang;
#X obj 422 39 r 6-hit;
#X obj 359 39 r 5-hit;
#X msg 359 89 76;
#X msg 422 89 36;
#X connect 1 0 2 0;
#X connect 2 0 3 0;
#X connect 3 0 0 0;
#X connect 4 0 6 0;
#X connect 5 0 4 0;
#X connect 6 0 0 0;
#X connect 7 0 8 0;
#X connect 8 0 0 0;
#X connect 9 0 7 0;
#X connect 10 0 11 0;
#X connect 11 0 0 0;
#X connect 12 0 10 0;
#X connect 13 0 17 0;
#X connect 14 0 18 0;
#X connect 15 0 14 0;
#X connect 16 0 13 0;
#X connect 17 0 0 0;
#X connect 18 0 0 0;
#X restore 428 102 pd ascoltaHits;
#X obj 430 164 mtof;
#N canvas 0 22 462 312 chords 0;
#X obj 132 43 inlet;
#X obj 131 240 outlet;
#X obj 262 31 loadbang;
#X obj 260 74 metro 20000;
#X obj 257 115 int 0;
#X obj 303 117 + 1;
#X obj 257 136 % 2;
#X obj 246 162 select 0 1;
#X obj 131 214 + 0;
#X msg 243 182 0;
#X msg 270 184 7;
#X msg 260 54 1;
#X connect 0 0 8 0;
#X connect 2 0 11 0;
#X connect 3 0 4 0;
#X connect 4 0 5 0;
#X connect 4 0 6 0;
#X connect 5 0 4 1;
#X connect 6 0 7 0;
#X connect 7 0 9 0;
#X connect 7 1 10 0;
#X connect 8 0 1 0;
#X connect 9 0 8 1;
#X connect 10 0 8 1;
#X connect 11 0 3 0;
#X restore 430 131 pd chords;
#N canvas 0 22 940 672 ascolta-valori 0;
#X obj 135 554 outlet;
#X obj 28 146 line;
#X msg 27 123 \$1 100;
#X msg 27 175 control amp1 \$1;
#X obj 146 100 line;
#X msg 145 77 \$1 100;
#X obj 144 26 + 1;
#X obj 143 51 / 2;
#X obj 265 143 line;
#X msg 264 119 \$1 100;
#X obj 382 135 line;
#X msg 381 112 \$1 100;
#X obj 380 61 + 1;
#X obj 379 86 / 2;
#X msg 264 171 control amp2 \$1;
#X obj 297 304 line;
#X msg 296 281 \$1 100;
#X obj 414 288 line;
#X msg 413 265 \$1 100;
#X obj 412 214 + 1;
#X obj 411 239 / 2;
#X obj 533 331 line;
#X msg 532 307 \$1 100;
#X obj 650 323 line;
#X msg 649 300 \$1 100;
#X obj 648 249 + 1;
#X obj 647 274 / 2;
#X msg 296 324 control amp3 \$1;
#X msg 531 359 control amp4 \$1;
#N canvas 0 22 678 338 graph16 0;
#X array vol 100 float 3;
#A 0 0.382146 0.444444 0.527258 0.5757 0.610071 0.636731 0.658514 0.676931
0.692884 0.706956 0.719544 0.730931 0.741327 0.75089 0.759744 0.767987
0.775698 0.782941 0.78977 0.796229 0.802357 0.808187 0.813745 0.819055
0.82414 0.829017 0.833703 0.838212 0.842557 0.84675 0.8508 0.854718
0.858511 0.862187 0.865754 0.869217 0.872583 0.875856 0.879043 0.882146
0.885171 0.888121 0.891 0.893811 0.896558 0.899243 0.901869 0.904438
0.906954 0.909417 0.911831 0.914197 0.916517 0.918792 0.921026 0.923218
0.925371 0.927485 0.929563 0.931605 0.933613 0.935588 0.937531 0.939443
0.941324 0.943177 0.945001 0.946797 0.948567 0.950311 0.952031 0.953725
0.955396 0.957044 0.95867 0.960273 0.961856 0.963418 0.964959 0.966481
0.967984 0.969468 0.970934 0.972382 0.973813 0.975227 0.976624 0.978006
0.979371 0.980721 0.982056 0.983376 0.984682 0.985974 0.987252 0.988516
0.989767 0.991005 0.99223 1.0615;
#X coords 0 1 99 0 200 140 1;
#X restore 532 24 graph;
#X obj 26 101 tabread vol;
#X obj 28 76 * 100;
#X obj 265 97 tabread vol;
#X obj 262 75 * 100;
#X obj 28 48 clip 0 1;
#X obj 262 40 clip 0 1;
#X obj 307 264 tabread vol;
#X obj 307 242 * 100;
#X obj 308 222 clip 0 1;
#X obj 534 284 tabread vol;
#X obj 534 262 * 100;
#X obj 535 242 clip 0 1;
#X msg 149 129 control pos1 \$1;
#X msg 385 164 control pos2 \$1;
#X msg 417 317 control pos3 \$1;
#X msg 653 352 control pos4 \$1;
#X obj 434 493 line;
#X msg 433 469 \$1 100;
#X obj 551 485 line;
#X msg 550 462 \$1 100;
#X obj 549 411 + 1;
#X obj 548 436 / 2;
#X obj 435 446 tabread vol;
#X obj 435 424 * 100;
#X obj 436 404 clip 0 1;
#X msg 432 521 control amp5 \$1;
#X msg 553 514 control pos5 \$1;
#X obj 28 13 r 1-velo;
#X obj 145 6 r 1-x;
#X obj 264 17 r 2-velo;
#X obj 296 202 r 3-velo;
#X obj 412 194 r 3-x;
#X obj 528 216 r 4-velo;
#X obj 649 229 r 4-x;
#X obj 429 378 r 5-velo;
#X obj 550 391 r 5-x;
#X obj 382 40 r 2-x;
#X obj 839 58 + 1;
#X obj 761 97 log;
#X obj 803 59 int 1;
#X obj 759 119 / 4.65;
#X obj 807 83 t f f;
#X obj 785 33 metro 10;
#X obj 785 14 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
;
#X obj 763 183 tabwrite vol;
#X msg 848 32 1;
#X obj 758 141 + 0.8;
#X obj 757 160 / 1.8;
#X connect 1 0 3 0;
#X connect 2 0 1 0;
#X connect 3 0 0 0;
#X connect 4 0 42 0;
#X connect 5 0 4 0;
#X connect 6 0 7 0;
#X connect 7 0 5 0;
#X connect 8 0 14 0;
#X connect 9 0 8 0;
#X connect 10 0 43 0;
#X connect 11 0 10 0;
#X connect 12 0 13 0;
#X connect 13 0 11 0;
#X connect 14 0 0 0;
#X connect 15 0 27 0;
#X connect 16 0 15 0;
#X connect 17 0 44 0;
#X connect 18 0 17 0;
#X connect 19 0 20 0;
#X connect 20 0 18 0;
#X connect 21 0 28 0;
#X connect 22 0 21 0;
#X connect 23 0 45 0;
#X connect 24 0 23 0;
#X connect 25 0 26 0;
#X connect 26 0 24 0;
#X connect 27 0 0 0;
#X connect 28 0 0 0;
#X connect 30 0 2 0;
#X connect 31 0 30 0;
#X connect 32 0 9 0;
#X connect 33 0 32 0;
#X connect 34 0 31 0;
#X connect 35 0 33 0;
#X connect 36 0 16 0;
#X connect 37 0 36 0;
#X connect 38 0 37 0;
#X connect 39 0 22 0;
#X connect 40 0 39 0;
#X connect 41 0 40 0;
#X connect 42 0 0 0;
#X connect 43 0 0 0;
#X connect 44 0 0 0;
#X connect 45 0 0 0;
#X connect 46 0 55 0;
#X connect 47 0 46 0;
#X connect 48 0 56 0;
#X connect 49 0 48 0;
#X connect 50 0 51 0;
#X connect 51 0 49 0;
#X connect 52 0 47 0;
#X connect 53 0 52 0;
#X connect 54 0 53 0;
#X connect 55 0 0 0;
#X connect 56 0 0 0;
#X connect 57 0 34 0;
#X connect 58 0 6 0;
#X connect 59 0 35 0;
#X connect 60 0 38 0;
#X connect 61 0 19 0;
#X connect 62 0 41 0;
#X connect 63 0 25 0;
#X connect 64 0 54 0;
#X connect 65 0 50 0;
#X connect 66 0 12 0;
#X connect 67 0 69 1;
#X connect 68 0 70 0;
#X connect 69 0 67 0;
#X connect 69 0 71 0;
#X connect 70 0 76 0;
#X connect 71 0 68 0;
#X connect 71 1 74 1;
#X connect 72 0 69 0;
#X connect 73 0 72 0;
#X connect 75 0 69 0;
#X connect 76 0 77 0;
#X connect 77 0 74 0;
#X restore 592 84 pd ascolta-valori;
#X obj 567 118 bay --------;
#X obj 367 279 catch~ mainL;
#X obj 491 281 catch~ mainR;
#X obj 376 318 *~ 0.01;
#X obj 467 319 *~ 0.01;
#X obj 701 211 vsl 15 128 0 0.8 0 0 empty empty empty 0 -8 0 8 -262144
-1 -1 317 1;
#X floatatom 700 346 5 0 0 0 - - -;
#X obj 750 195 loadbang;
#X msg 750 216 0.02;
#X obj 265 365 csound~ 2 2;
#X obj 332 137 r csound;
#X msg 156 24 i9 0 8 400 90 0.3;
#X msg 23 159 i30 0 17000 2 30;
#X msg 23 136 i10 0 17000 10 30;
#X msg 24 112 i25 0 17000 0.98 0.8 20000;
#X msg 1 182 bang \; csound bin /usr/local/bin/csound \; csound orc
bay.orc \; csound sco bay.sco \; csound csound -dm0 \; csound bang
\; pd dsp 1;
#X msg 267 58 i9 0 8 450 90 0.3;
#X msg 293 20 i9 0 8 500 90 0.3;
#X obj 255 392 /~ 32767;
#X obj 324 391 /~ 32767;
#N canvas 77 25 718 506 note---- 0;
#X obj 95 284 outlet;
#X obj 95 222 mtof;
#X obj 202 211 mtof;
#X obj 309 220 mtof;
#X obj 412 221 mtof;
#X obj 120 133 inlet;
#X obj 195 140 inlet;
#X obj 310 163 inlet;
#X obj 414 170 inlet;
#X obj 533 224 mtof;
#X obj 535 173 inlet;
#X obj 204 283 outlet;
#X obj 303 284 outlet;
#X obj 408 280 outlet;
#X obj 539 274 outlet;
#X connect 1 0 0 0;
#X connect 2 0 11 0;
#X connect 3 0 12 0;
#X connect 4 0 13 0;
#X connect 5 0 1 0;
#X connect 6 0 2 0;
#X connect 7 0 3 0;
#X connect 8 0 4 0;
#X connect 9 0 14 0;
#X connect 10 0 9 0;
#X restore 567 142 pd note----;
#X obj 324 411 /~ 1.5;
#X obj 255 412 /~ 1.5;
#X obj 235 450 outlet~;
#X obj 328 446 outlet~;
#X msg 404 197 i9 0 14 \$1 90 0.3;
#X obj 408 242 inlet~;
#X obj 479 243 inlet~;
#X connect 0 0 20 0;
#X connect 0 0 17 0;
#X connect 0 0 18 0;
#X connect 0 0 19 0;
#X connect 1 0 3 0;
#X connect 2 0 30 0;
#X connect 3 0 2 0;
#X connect 5 0 25 0;
#X connect 5 1 25 1;
#X connect 5 2 25 2;
#X connect 5 3 25 3;
#X connect 5 4 25 4;
#X connect 6 0 8 0;
#X connect 7 0 9 0;
#X connect 8 0 14 0;
#X connect 9 0 14 1;
#X connect 10 0 9 1;
#X connect 10 0 8 1;
#X connect 10 0 11 0;
#X connect 12 0 13 0;
#X connect 13 0 10 0;
#X connect 14 0 23 0;
#X connect 14 1 24 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 21 0 14 0;
#X connect 22 0 14 0;
#X connect 23 0 27 0;
#X connect 24 0 26 0;
#X connect 25 0 30 0;
#X connect 25 1 30 0;
#X connect 25 2 30 0;
#X connect 25 3 30 0;
#X connect 25 4 30 0;
#X connect 26 0 29 0;
#X connect 27 0 28 0;
#X connect 30 0 14 0;
#X connect 31 0 8 0;
#X connect 32 0 9 0;
#X restore 195 544 pd bay;
#X obj 242 683 dac~;
#X obj 194 629 +~;
#X obj 294 632 +~;
#X obj 151 527 vsl 15 128 0.01 1 1 0 empty empty empty 0 -8 0 8 -262144
-1 -1 8262 1;
#X obj 186 599 *~ 0.5;
#X obj 238 600 *~ 0.5;
#X obj 87 563 loadbang;
#X floatatom 149 660 5 0 0 0 - - -;
#X obj 380 526 vsl 15 128 0.1 3 0 0 empty empty empty 0 -8 0 8 -262144
-1 -1 8321 1;
#X floatatom 378 659 5 0 0 0 - - -;
#X obj 217 653 *~ 1;
#X obj 269 654 *~ 1;
#X obj 311 574 loadbang;
#X text 67 620 volume bay;
#X msg 313 597 2;
#X msg 104 594 0.2;
#X obj 83 169 chords_memory test.graph;
#X obj 91 411 print;
#X msg 23 420 voices \$1;
#X floatatom 23 399 5 0 0 0 - - -;
#X obj 88 478 voicing_analyzer 4;
#X obj 121 330 harmonizer 4;
#X msg 64 443 help;
#X connect 2 0 83 0;
#X connect 3 0 83 0;
#X connect 4 0 2 0;
#X connect 5 0 4 0;
#X connect 6 0 3 0;
#X connect 7 0 12 0;
#X connect 8 0 12 1;
#X connect 9 0 12 2;
#X connect 10 0 12 3;
#X connect 11 0 12 4;
#X connect 12 0 83 0;
#X connect 13 0 7 0;
#X connect 13 1 8 0;
#X connect 13 2 9 0;
#X connect 13 3 10 0;
#X connect 13 4 11 0;
#X connect 14 0 7 1;
#X connect 14 0 22 0;
#X connect 14 0 23 0;
#X connect 14 1 8 1;
#X connect 14 1 24 0;
#X connect 14 2 9 1;
#X connect 14 2 32 0;
#X connect 14 3 10 1;
#X connect 14 3 25 0;
#X connect 14 4 11 1;
#X connect 14 4 33 0;
#X connect 15 0 17 0;
#X connect 16 0 20 0;
#X connect 17 0 78 0;
#X connect 18 0 78 0;
#X connect 19 0 78 0;
#X connect 20 0 27 0;
#X connect 21 0 13 0;
#X connect 21 1 6 0;
#X connect 22 0 4 0;
#X connect 23 0 55 0;
#X connect 24 0 55 0;
#X connect 25 0 55 0;
#X connect 27 0 28 0;
#X connect 28 0 78 0;
#X connect 29 0 27 1;
#X connect 29 0 30 0;
#X connect 31 0 56 0;
#X connect 31 0 57 0;
#X connect 31 0 58 0;
#X connect 31 0 44 0;
#X connect 32 0 55 0;
#X connect 33 0 55 0;
#X connect 34 0 35 0;
#X connect 35 0 43 0;
#X connect 36 0 29 0;
#X connect 37 0 38 0;
#X connect 37 0 42 0;
#X connect 38 0 37 1;
#X connect 39 0 40 0;
#X connect 42 0 39 0;
#X connect 43 0 20 0;
#X connect 43 1 37 0;
#X connect 45 0 46 0;
#X connect 46 0 78 0;
#X connect 47 0 45 0;
#X connect 48 0 78 0;
#X connect 50 0 52 0;
#X connect 51 0 50 0;
#X connect 52 0 78 0;
#X connect 54 0 78 0;
#X connect 55 0 60 0;
#X connect 55 0 59 0;
#X connect 56 0 60 0;
#X connect 57 0 60 0;
#X connect 58 0 60 0;
#X connect 61 0 66 0;
#X connect 61 1 67 0;
#X connect 63 0 72 0;
#X connect 64 0 73 0;
#X connect 65 0 66 1;
#X connect 65 0 67 1;
#X connect 65 0 69 0;
#X connect 66 0 63 0;
#X connect 67 0 64 0;
#X connect 68 0 77 0;
#X connect 70 0 71 0;
#X connect 70 0 72 1;
#X connect 70 0 73 1;
#X connect 72 0 62 0;
#X connect 73 0 62 1;
#X connect 74 0 76 0;
#X connect 76 0 70 0;
#X connect 77 0 65 0;
#X connect 78 0 0 0;
#X connect 78 0 4 1;
#X connect 78 0 21 0;
#X connect 78 0 45 1;
#X connect 78 0 15 0;
#X connect 78 0 50 1;
#X connect 78 1 49 0;
#X connect 78 2 53 0;
#X connect 80 0 83 0;
#X connect 81 0 80 0;
#X connect 82 0 26 0;
#X connect 83 0 14 0;
#X connect 83 0 79 0;
#X connect 83 0 82 0;
#X connect 84 0 82 0;