-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathLP_GUI.pd
1772 lines (1772 loc) · 47.4 KB
/
LP_GUI.pd
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
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
#N canvas 1 84 1280 743 10;
#X obj 10 11 cnv 15 290 390 \$0_from_g_main_cnv \$0_to_g_main_cnv LAUNCHPAD_GUI_ID_0
8 12 0 12 -128992 -33289 0;
#X obj 39 270 tgl 20 0 empty \$0_elem_11 empty 17 7 0 10 -1 -1 -1 0
1;
#X obj 69 270 tgl 20 0 empty \$0_elem_12 empty 17 7 0 10 -1 -1 -1 0
1;
#X obj 99 270 tgl 20 0 empty \$0_elem_13 empty 17 7 0 10 -1 -1 -1 0
1;
#X obj 129 270 tgl 20 0 empty \$0_elem_14 empty 17 7 0 10 -1 -1 -1
0 1;
#X obj 159 270 tgl 20 0 empty \$0_elem_15 empty 17 7 0 10 -1 -1 -1
0 1;
#X obj 189 270 tgl 20 0 empty \$0_elem_16 empty 17 7 0 10 -1 -1 -1
0 1;
#X obj 219 270 tgl 20 0 empty \$0_elem_17 empty 17 7 0 10 -1 -1 -1
0 1;
#X obj 249 270 tgl 20 0 empty \$0_elem_18 empty 17 7 0 10 -1 -1 -1
0 1;
#X obj 39 240 tgl 20 0 empty \$0_elem_21 empty 17 7 0 10 -1 -1 -1 0
1;
#X obj 69 240 tgl 20 0 empty \$0_elem_22 empty 17 7 0 10 -1 -1 -1 0
1;
#X obj 99 240 tgl 20 0 empty \$0_elem_23 empty 17 7 0 10 -1 -1 -1 0
1;
#X obj 129 240 tgl 20 0 empty \$0_elem_24 empty 17 7 0 10 -1 -1 -1
0 1;
#X obj 159 240 tgl 20 0 empty \$0_elem_25 empty 17 7 0 10 -1 -1 -1
0 1;
#X obj 189 240 tgl 20 0 empty \$0_elem_26 empty 17 7 0 10 -1 -1 -1
0 1;
#X obj 219 240 tgl 20 0 empty \$0_elem_27 empty 17 7 0 10 -1 -1 -1
0 1;
#X obj 249 240 tgl 20 0 empty \$0_elem_28 empty 17 7 0 10 -1 -1 -1
0 1;
#X obj 39 210 tgl 20 0 empty \$0_elem_31 empty 17 7 0 10 -1 -1 -1 0
1;
#X obj 69 210 tgl 20 0 empty \$0_elem_32 empty 17 7 0 10 -1 -1 -1 0
1;
#X obj 99 210 tgl 20 0 empty \$0_elem_33 empty 17 7 0 10 -1 -1 -1 0
1;
#X obj 129 210 tgl 20 0 empty \$0_elem_34 empty 17 7 0 10 -1 -1 -1
0 1;
#X obj 159 210 tgl 20 0 empty \$0_elem_35 empty 17 7 0 10 -1 -1 -1
0 1;
#X obj 189 210 tgl 20 0 empty \$0_elem_36 empty 17 7 0 10 -1 -1 -1
0 1;
#X obj 219 210 tgl 20 0 empty \$0_elem_37 empty 17 7 0 10 -1 -1 -1
0 1;
#X obj 249 210 tgl 20 0 empty \$0_elem_38 empty 17 7 0 10 -1 -1 -1
0 1;
#X obj 39 180 tgl 20 0 empty \$0_elem_41 empty 17 7 0 10 -1 -1 -1 0
1;
#X obj 69 180 tgl 20 0 empty \$0_elem_42 empty 17 7 0 10 -1 -1 -1 0
1;
#X obj 99 180 tgl 20 0 empty \$0_elem_43 empty 17 7 0 10 -1 -1 -1 0
1;
#X obj 129 180 tgl 20 0 empty \$0_elem_44 empty 17 7 0 10 -1 -1 -1
0 1;
#X obj 159 180 tgl 20 0 empty \$0_elem_45 empty 17 7 0 10 -1 -1 -1
0 1;
#X obj 189 180 tgl 20 0 empty \$0_elem_46 empty 17 7 0 10 -1 -1 -1
0 1;
#X obj 219 180 tgl 20 0 empty \$0_elem_47 empty 17 7 0 10 -1 -1 -1
0 1;
#X obj 249 180 tgl 20 0 empty \$0_elem_48 empty 17 7 0 10 -1 -1 -1
0 1;
#X obj 39 150 tgl 20 0 empty \$0_elem_51 empty 17 7 0 10 -1 -1 -1 0
1;
#X obj 69 150 tgl 20 0 empty \$0_elem_52 empty 17 7 0 10 -1 -1 -1 0
1;
#X obj 99 150 tgl 20 0 empty \$0_elem_53 empty 17 7 0 10 -1 -1 -1 0
1;
#X obj 129 150 tgl 20 0 empty \$0_elem_54 empty 17 7 0 10 -1 -1 -1
0 1;
#X obj 159 150 tgl 20 0 empty \$0_elem_55 empty 17 7 0 10 -1 -1 -1
0 1;
#X obj 189 150 tgl 20 0 empty \$0_elem_56 empty 17 7 0 10 -1 -1 -1
0 1;
#X obj 219 150 tgl 20 0 empty \$0_elem_57 empty 17 7 0 10 -1 -1 -1
0 1;
#X obj 249 150 tgl 20 0 empty \$0_elem_58 empty 17 7 0 10 -1 -1 -1
0 1;
#X obj 39 120 tgl 20 0 empty \$0_elem_61 empty 17 7 0 10 -1 -1 -1 0
1;
#X obj 69 120 tgl 20 0 empty \$0_elem_62 empty 17 7 0 10 -1 -1 -1 0
1;
#X obj 99 120 tgl 20 0 empty \$0_elem_63 empty 17 7 0 10 -1 -1 -1 0
1;
#X obj 129 120 tgl 20 0 empty \$0_elem_64 empty 17 7 0 10 -1 -1 -1
0 1;
#X obj 159 120 tgl 20 0 empty \$0_elem_65 empty 17 7 0 10 -1 -1 -1
0 1;
#X obj 189 120 tgl 20 0 empty \$0_elem_66 empty 17 7 0 10 -1 -1 -1
0 1;
#X obj 219 120 tgl 20 0 empty \$0_elem_67 empty 17 7 0 10 -1 -1 -1
0 1;
#X obj 249 120 tgl 20 0 empty \$0_elem_68 empty 17 7 0 10 -1 -1 -1
0 1;
#X obj 39 90 tgl 20 0 empty \$0_elem_71 empty 17 7 0 10 -1 -1 -1 0
1;
#X obj 69 90 tgl 20 0 empty \$0_elem_72 empty 17 7 0 10 -1 -1 -1 0
1;
#X obj 99 90 tgl 20 0 empty \$0_elem_73 empty 17 7 0 10 -1 -1 -1 0
1;
#X obj 129 90 tgl 20 0 empty \$0_elem_74 empty 17 7 0 10 -1 -1 -1 0
1;
#X obj 159 90 tgl 20 0 empty \$0_elem_75 empty 17 7 0 10 -1 -1 -1 0
1;
#X obj 189 90 tgl 20 0 empty \$0_elem_76 empty 17 7 0 10 -1 -1 -1 0
1;
#X obj 219 90 tgl 20 0 empty \$0_elem_77 empty 17 7 0 10 -1 -1 -1 0
1;
#X obj 249 90 tgl 20 0 empty \$0_elem_78 empty 17 7 0 10 -1 -1 -1 0
1;
#X obj 39 60 tgl 20 0 empty \$0_elem_81 empty 17 7 0 10 -1 -1 -1 0
1;
#X obj 69 60 tgl 20 0 empty \$0_elem_82 empty 17 7 0 10 -1 -1 -1 0
1;
#X obj 99 60 tgl 20 0 empty \$0_elem_83 empty 17 7 0 10 -1 -1 -1 0
1;
#X obj 129 60 tgl 20 0 empty \$0_elem_84 empty 17 7 0 10 -1 -1 -1 0
1;
#X obj 159 60 tgl 20 0 empty \$0_elem_85 empty 17 7 0 10 -1 -1 -1 0
1;
#X obj 189 60 tgl 20 0 empty \$0_elem_86 empty 17 7 0 10 -1 -1 -1 0
1;
#X obj 219 60 tgl 20 0 empty \$0_elem_87 empty 17 7 0 10 -1 -1 -1 0
1;
#X obj 249 60 tgl 20 0 empty \$0_elem_88 empty 17 7 0 10 -1 -1 -1 0
1;
#X obj 41 317 tgl 15 0 empty \$0_elem_1 empty 17 7 0 10 -1 -1 -1 0
-1;
#X obj 373 7 inlet;
#X obj 71 317 tgl 15 0 empty \$0_elem_2 empty 17 7 0 10 -1 -1 -1 0
-1;
#X obj 101 317 tgl 15 0 empty \$0_elem_3 empty 17 7 0 10 -1 -1 -1 0
-1;
#X obj 131 317 tgl 15 0 empty \$0_elem_4 empty 17 7 0 10 -1 -1 -1 0
-1;
#X obj 161 317 tgl 15 0 empty \$0_elem_5 empty 17 7 0 10 -1 -1 -1 0
-1;
#X obj 191 317 tgl 15 0 empty \$0_elem_6 empty 17 7 0 10 -1 -1 -1 0
-1;
#X obj 221 317 tgl 15 0 empty \$0_elem_7 empty 17 7 0 10 -1 -1 -1 0
-1;
#X obj 251 317 tgl 15 0 empty \$0_elem_8 empty 17 7 0 10 -1 -1 -1 0
-1;
#X obj 41 37 tgl 15 0 empty \$0_elem_91 empty 17 7 0 10 -1 -1 -1 0
-1;
#X obj 71 37 tgl 15 0 empty \$0_elem_92 empty 17 7 0 10 -1 -1 -1 0
-1;
#X obj 101 37 tgl 15 0 empty \$0_elem_93 empty 17 7 0 10 -1 -1 -1 0
-1;
#X obj 131 37 tgl 15 0 empty \$0_elem_94 empty 17 7 0 10 -1 -1 -1 0
-1;
#X obj 161 37 tgl 15 0 empty \$0_elem_95 empty 17 7 0 10 -1 -1 -1 0
-1;
#X obj 191 37 tgl 15 0 empty \$0_elem_96 empty 17 7 0 10 -1 -1 -1 0
-1;
#X obj 221 37 tgl 15 0 empty \$0_elem_97 empty 17 7 0 10 -1 -1 -1 0
-1;
#X obj 251 37 tgl 15 0 empty \$0_elem_98 empty 17 7 0 10 -1 -1 -1 0
-1;
#X obj 14 273 tgl 15 0 empty \$0_elem_10 empty 17 7 0 10 -1 -1 -1 0
-1;
#X obj 14 243 tgl 15 0 empty \$0_elem_20 empty 17 7 0 10 -1 -1 -1 0
-1;
#X obj 14 213 tgl 15 0 empty \$0_elem_30 empty 17 7 0 10 -1 -1 -1 0
-1;
#X obj 14 183 tgl 15 0 empty \$0_elem_40 empty 17 7 0 10 -1 -1 -1 0
-1;
#X obj 14 153 tgl 15 0 empty \$0_elem_50 empty 17 7 0 10 -1 -1 -1 0
-1;
#X obj 14 123 tgl 15 0 empty \$0_elem_60 empty 17 7 0 10 -1 -1 -1 0
-1;
#X obj 14 93 tgl 15 0 empty \$0_elem_70 empty 17 7 0 10 -1 -1 -1 0
-1;
#X obj 14 63 tgl 15 0 empty \$0_elem_80 empty 17 7 0 10 -1 -1 -1 0
-1;
#X obj 280 273 tgl 15 0 empty \$0_elem_19 empty 17 7 0 10 -1 -1 -1
0 -1;
#X obj 280 243 tgl 15 0 empty \$0_elem_29 empty 17 7 0 10 -1 -1 -1
0 -1;
#X obj 280 213 tgl 15 0 empty \$0_elem_39 empty 17 7 0 10 -1 -1 -1
0 -1;
#X obj 280 183 tgl 15 0 empty \$0_elem_49 empty 17 7 0 10 -1 -1 -1
0 -1;
#X obj 280 153 tgl 15 0 empty \$0_elem_59 empty 17 7 0 10 -1 -1 -1
0 -1;
#X obj 280 123 tgl 15 0 empty \$0_elem_69 empty 17 7 0 10 -1 -1 -1
0 -1;
#X obj 280 93 tgl 15 0 empty \$0_elem_79 empty 17 7 0 10 -1 -1 -1 0
-1;
#X obj 280 63 tgl 15 0 empty \$0_elem_89 empty 17 7 0 10 -1 -1 -1 0
-1;
#X text 46 440 values per pad/button \; \; 1 status (0 or !=0) \; 2
color (0-127) \;;
#X msg 999 37 reset;
#X obj 936 10 loadbang;
#X obj 451 268 s \$0_reset;
#X obj 475 291 s \$0_play;
#X obj 106 621 text define \$0_BUFFER;
#X msg 106 599 clear;
#X msg 105 650 clear;
#X obj 105 671 text define \$0_OBJECTS;
#N canvas 45 84 413 536 INFO 1;
#X text 21 21 This patch (at the moment) uses 3 'buffers' \; \; 1 \$0_LAYOUT
(array): used to store status (element pressed or not) and color of
pads \; 2 \$0_OBJECTS (text): contains all object unique ids and the
object status (status in the heartbeat context - see below) \; 3 \$0_BUFFER
(text): contains all 'elements' of every objects \; \; A heartbeat
checks that all the objects still extist \; otherwise deletes the data
related to them and refreshes \; the GUI \; \; --------- \; HEARTBEAT
\; --------- \; All the objects \, when created send their unique ID
to LP_GUI that stores them in \$0_OBJECTS \; Every 'n' millisecond
the following check happens \; 1 LP_GUI ask for objects attributes
in case new objects have been created \; 2 the status (0-1) of the
objects in \$0_OBJECTS is set to zero \; 3 new object IDs are added
to the pool \; 4 a heartbeat is sent to all the objects created \;
5 the existing objects reply to LP_GUI that then sets the object status
in \$0_OBJECTS back to 1 \; 6 \$0_OBJECTS is inspected and all the
objects with their status set to 0 are deleted \;;
#N canvas 1 84 346 112 _n 0;
#X text 49 30 MB - PM - TMG || 19-00 || ta;
#X restore 52 470 pd _n;
#X obj 24 461 cnv 15 100 60 empty empty empty 20 12 0 14 -262144 -66577
0;
#X restore 939 393 pd INFO;
#X obj 46 575 r \$0_reset;
#X obj 936 118 s \$0_heartbeat_off_on;
#X obj 999 58 s \$0_reset;
#X msg 182 597 click;
#N canvas 247 30 805 572 LIVE_INTERACTION 0;
#X obj 154 201 != 0;
#X obj 154 286 f;
#X obj 154 222 t b f;
#X obj 50 261 != 0;
#X obj 29 283 pack;
#X obj 29 493 s;
#X obj 54 462 makefilename \$0_elem_%d;
#X obj 44 398 != 0;
#X obj 29 426 f;
#X obj 29 344 unpack;
#X obj 517 170 unpack;
#X obj 29 312 t l l;
#X obj 517 218 moses;
#X obj 517 263 unpack s 0 0;
#X text 75 342 elem_id \, status \;;
#X obj 517 409 s;
#X obj 517 340 list store;
#X obj 532 374 makefilename to_%s;
#X obj 517 196 text search \$0_BUFFER 1;
#X obj 517 242 text get \$0_BUFFER;
#X obj 551 289 pack 0 0 0;
#X text 319 40 LP_GUI receives MIDI from HW \, route it to the right
object that does the 'processing' and reply to LP_GUI that sends MIDI
to HW;
#X text 545 411 to objects \;;
#X text 60 490 update LP_GUI gui \;;
#X obj 81 213 t f f;
#X msg 248 343 velocity \$1;
#X obj 248 318 f;
#X obj 29 370 t b f;
#X obj 517 318 t b b s;
#X obj 29 212 t f f;
#N canvas 0 23 610 443 POLYTOUCH_CHECK 0;
#X msg 158 183 polytouch \$1 \$2;
#X obj 218 116 text search \$0_BUFFER 1;
#X obj 218 138 moses;
#X obj 158 72 t a a;
#X obj 185 93 unpack;
#X obj 218 161 text get \$0_BUFFER;
#X obj 218 249 list;
#X obj 218 270 t l b;
#X msg 263 270 obj_-1;
#X obj 218 294 list split 3;
#X obj 218 315 list trim;
#X obj 158 42 inlet;
#X obj 218 363 outlet;
#X obj 278 363 outlet;
#X text 315 265 fake obj name needed to avoid \; sending polytouch
when pressed \; pad is not part of any object \;;
#X text 396 42 route 'polytouch' to \; the right object \; treated
indipendently \; cause it's a continuous \; message \;;
#X connect 0 0 6 0;
#X connect 1 0 2 0;
#X connect 2 1 5 0;
#X connect 3 0 0 0;
#X connect 3 1 4 0;
#X connect 4 1 1 0;
#X connect 5 0 6 1;
#X connect 6 0 7 0;
#X connect 7 0 9 0;
#X connect 7 1 8 0;
#X connect 8 0 6 1;
#X connect 9 0 10 0;
#X connect 9 1 13 0;
#X connect 10 0 12 0;
#X connect 11 0 3 0;
#X restore 261 206 pd POLYTOUCH_CHECK;
#X obj 29 160 r \$0_m_note;
#X obj 261 181 r \$0_m_polyt;
#X obj 328 291 r \$0_m_touch;
#X obj 154 181 r \$0_m_cc_value;
#X obj 169 261 r \$0_m_cc_nr;
#X text 578 163 send 'elem_id' \, 'color' and \; 'status' to the right
obj \;;
#N canvas 0 23 1280 406 FROM_LPs 0;
#X text 141 195 MIDI input;
#X obj 21 196 FROM_LP_X, f 17;
#X obj 21 58 r \$0_device;
#X obj 21 79 sel LP_X;
#X msg 21 100 1;
#X msg 51 100 0;
#X obj 21 121 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
1;
#X obj 271 58 r \$0_device;
#X msg 271 100 1;
#X msg 301 100 0;
#X obj 271 121 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 148 8 loadbang;
#X obj 271 79 sel LP_Pro;
#X obj 271 191 FROM_LPP, f 25;
#X obj 58 220 s \$0_m_note;
#X obj 70 240 s \$0_m_vel;
#X obj 82 260 s \$0_m_polyt;
#X obj 95 280 s \$0_m_touch;
#X obj 107 299 s \$0_m_cc_value;
#X obj 120 320 s \$0_m_cc_nr;
#X obj 326 220 s \$0_m_note;
#X obj 338 240 s \$0_m_vel;
#X obj 350 260 s \$0_m_polyt;
#X obj 363 280 s \$0_m_touch;
#X obj 375 299 s \$0_m_cc_value;
#X obj 388 320 s \$0_m_cc_nr;
#X obj 354 93 r \$0_status;
#X obj 354 114 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 21 158 f;
#X obj 271 156 f;
#X obj 354 134 sel 0 1;
#X msg 354 155 0;
#X obj 104 93 r \$0_status;
#X obj 104 114 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 104 134 sel 0 1;
#X msg 104 155 0;
#X obj 521 58 r \$0_device;
#X msg 521 100 1;
#X msg 551 100 0;
#X obj 521 121 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 576 220 s \$0_m_note;
#X obj 588 240 s \$0_m_vel;
#X obj 625 259 s \$0_m_cc_value;
#X obj 638 280 s \$0_m_cc_nr;
#X obj 604 93 r \$0_status;
#X obj 604 114 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 521 156 f;
#X obj 604 134 sel 0 1;
#X msg 604 155 0;
#X obj 521 79 sel LPM_MK3;
#X obj 521 191 FROM_LPM_MK3, f 25;
#X obj 761 58 r \$0_device;
#X msg 761 100 1;
#X msg 791 100 0;
#X obj 761 121 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 816 220 s \$0_m_note;
#X obj 828 240 s \$0_m_vel;
#X obj 840 260 s \$0_m_polyt;
#X obj 853 280 s \$0_m_touch;
#X obj 865 299 s \$0_m_cc_value;
#X obj 878 320 s \$0_m_cc_nr;
#X obj 854 93 r \$0_status;
#X obj 854 114 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 761 156 f;
#X obj 854 134 sel 0 1;
#X msg 854 155 0;
#X obj 761 191 FROM_LPP3, f 25;
#X obj 761 79 sel LP_Pro_MK3;
#X text 219 5 LP X \; ON by default \;;
#X obj 1001 58 r \$0_device;
#X msg 1001 100 1;
#X msg 1031 100 0;
#X obj 1001 121 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1
0 1;
#X obj 1056 220 s \$0_m_note;
#X obj 1068 240 s \$0_m_vel;
#X obj 1080 260 s \$0_m_polyt;
#X obj 1093 280 s \$0_m_touch;
#X obj 1105 299 s \$0_m_cc_value;
#X obj 1118 320 s \$0_m_cc_nr;
#X obj 1084 93 r \$0_status;
#X obj 1084 114 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1
0 1;
#X obj 1001 156 f;
#X obj 1084 134 sel 0 1;
#X msg 1084 155 0;
#X obj 1001 79 sel LP2;
#X obj 1001 191 FROM_LP2, f 25;
#X connect 1 3 14 0;
#X connect 1 4 15 0;
#X connect 1 5 16 0;
#X connect 1 6 17 0;
#X connect 1 7 18 0;
#X connect 1 8 19 0;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 1 5 0;
#X connect 4 0 6 0;
#X connect 5 0 6 0;
#X connect 6 0 28 0;
#X connect 7 0 12 0;
#X connect 8 0 10 0;
#X connect 9 0 10 0;
#X connect 10 0 29 0;
#X connect 11 0 4 0;
#X connect 12 0 8 0;
#X connect 12 1 9 0;
#X connect 13 3 20 0;
#X connect 13 4 21 0;
#X connect 13 5 22 0;
#X connect 13 6 23 0;
#X connect 13 7 24 0;
#X connect 13 8 25 0;
#X connect 26 0 27 0;
#X connect 27 0 30 0;
#X connect 28 0 1 0;
#X connect 29 0 13 0;
#X connect 30 0 31 0;
#X connect 30 1 29 0;
#X connect 31 0 13 0;
#X connect 32 0 33 0;
#X connect 33 0 34 0;
#X connect 34 0 35 0;
#X connect 34 1 28 0;
#X connect 35 0 1 0;
#X connect 36 0 49 0;
#X connect 37 0 39 0;
#X connect 38 0 39 0;
#X connect 39 0 46 0;
#X connect 44 0 45 0;
#X connect 45 0 47 0;
#X connect 46 0 50 0;
#X connect 47 0 48 0;
#X connect 47 1 46 0;
#X connect 48 0 50 0;
#X connect 49 0 37 0;
#X connect 49 1 38 0;
#X connect 50 3 40 0;
#X connect 50 4 41 0;
#X connect 50 5 42 0;
#X connect 50 6 43 0;
#X connect 51 0 67 0;
#X connect 52 0 54 0;
#X connect 53 0 54 0;
#X connect 54 0 63 0;
#X connect 61 0 62 0;
#X connect 62 0 64 0;
#X connect 63 0 66 0;
#X connect 64 0 65 0;
#X connect 64 1 63 0;
#X connect 65 0 66 0;
#X connect 66 3 55 0;
#X connect 66 4 56 0;
#X connect 66 5 57 0;
#X connect 66 6 58 0;
#X connect 66 7 59 0;
#X connect 66 8 60 0;
#X connect 67 0 52 0;
#X connect 67 1 53 0;
#X connect 69 0 84 0;
#X connect 70 0 72 0;
#X connect 71 0 72 0;
#X connect 72 0 81 0;
#X connect 79 0 80 0;
#X connect 80 0 82 0;
#X connect 81 0 85 0;
#X connect 82 0 83 0;
#X connect 82 1 81 0;
#X connect 83 0 85 0;
#X connect 84 0 70 0;
#X connect 84 1 71 0;
#X connect 85 3 73 0;
#X connect 85 4 74 0;
#X connect 85 5 75 0;
#X connect 85 6 76 0;
#X connect 85 7 77 0;
#X connect 85 8 78 0;
#X restore 34 43 pd FROM_LPs;
#X text 109 43 all FROM_XX obj in here \;;
#X obj 81 180 r \$0_m_vel;
#N canvas 0 23 1128 587 TO_LPs 0;
#X text 464 467 MIDI output;
#X obj 438 401 unpack;
#X text 434 86 from objects \;;
#X obj 438 109 r \$1_MIDI_to_LP_GUI;
#X obj 438 169 spigot;
#X obj 471 129 r \$0_status;
#X obj 471 150 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 438 434 TO_LP_X;
#X obj 658 401 unpack;
#X obj 438 370 spigot;
#X obj 658 370 spigot 1;
#X msg 703 300 1;
#X msg 733 300 0;
#X obj 703 351 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 703 279 sel LP_Pro;
#X msg 471 300 1;
#X msg 501 300 0;
#X obj 471 351 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 471 279 sel LP_X;
#X obj 213 200 r \$0_daw_mode;
#X msg 213 221 daw_mode \$1;
#X obj 73 200 r \$0_programmer_mode;
#X msg 73 221 programmer_mode \$1;
#X text 479 200 activate programmer_mode \;;
#X obj 37 187 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 658 434 TO_LPP;
#X obj 318 401 unpack;
#X obj 318 370 spigot;
#X obj 351 188 r \$0_device;
#X msg 351 300 1;
#X msg 381 300 0;
#X obj 351 351 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 351 279 sel LPM_MK3;
#X obj 318 434 TO_LPM_MK3;
#X text 73 168 new LPs needs \; prog mode ON \;;
#X msg 225 143 1;
#X msg 255 143 0;
#X obj 548 401 unpack;
#X obj 548 370 spigot;
#X msg 581 300 1;
#X msg 611 300 0;
#X obj 581 351 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 548 434 TO_LPP3;
#X obj 581 279 sel LP_Pro_MK3;
#X obj 225 92 sel LPM_MK3 LP_X LP_Pro_MK3;
#X text 230 59 when new LPs turn \; programmer mode ON \;;
#X obj 778 401 unpack;
#X text 832 400 elem_id \, color \;;
#X obj 778 370 spigot 1;
#X msg 823 300 1;
#X msg 853 300 0;
#X obj 823 351 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 778 434 TO_LP2;
#X obj 823 279 sel LP2;
#X obj 351 213 t a a a a a a;
#X connect 1 0 7 0;
#X connect 1 1 7 1;
#X connect 3 0 4 0;
#X connect 4 0 9 0;
#X connect 4 0 10 0;
#X connect 4 0 27 0;
#X connect 4 0 38 0;
#X connect 4 0 48 0;
#X connect 5 0 6 0;
#X connect 6 0 4 1;
#X connect 8 0 25 0;
#X connect 8 1 25 1;
#X connect 9 0 1 0;
#X connect 10 0 8 0;
#X connect 11 0 13 0;
#X connect 12 0 13 0;
#X connect 13 0 10 1;
#X connect 14 0 11 0;
#X connect 14 1 12 0;
#X connect 15 0 17 0;
#X connect 16 0 17 0;
#X connect 17 0 9 1;
#X connect 18 0 15 0;
#X connect 18 1 16 0;
#X connect 19 0 20 0;
#X connect 20 0 33 0;
#X connect 20 0 7 0;
#X connect 20 0 42 0;
#X connect 21 0 22 0;
#X connect 22 0 33 0;
#X connect 22 0 7 0;
#X connect 22 0 42 0;
#X connect 24 0 22 0;
#X connect 26 0 33 0;
#X connect 26 1 33 1;
#X connect 27 0 26 0;
#X connect 28 0 54 0;
#X connect 29 0 31 0;
#X connect 30 0 31 0;
#X connect 31 0 27 1;
#X connect 32 0 29 0;
#X connect 32 1 30 0;
#X connect 35 0 22 0;
#X connect 36 0 22 0;
#X connect 37 0 42 0;
#X connect 37 1 42 1;
#X connect 38 0 37 0;
#X connect 39 0 41 0;
#X connect 40 0 41 0;
#X connect 41 0 38 1;
#X connect 43 0 39 0;
#X connect 43 1 40 0;
#X connect 44 0 35 0;
#X connect 44 1 35 0;
#X connect 44 2 35 0;
#X connect 44 3 36 0;
#X connect 46 0 52 0;
#X connect 46 1 52 1;
#X connect 48 0 46 0;
#X connect 49 0 51 0;
#X connect 50 0 51 0;
#X connect 51 0 48 1;
#X connect 53 0 49 0;
#X connect 53 1 50 0;
#X connect 54 0 44 0;
#X connect 54 1 32 0;
#X connect 54 2 18 0;
#X connect 54 3 43 0;
#X connect 54 4 14 0;
#X connect 54 5 53 0;
#X restore 34 73 pd TO_LPs;
#X text 97 73 all TO_XX obj in here \;;
#X msg 328 343 aftertouch \$1;
#X obj 338 398 s _aftertouch;
#X connect 0 0 2 0;
#X connect 1 0 4 0;
#X connect 2 0 1 0;
#X connect 2 1 4 1;
#X connect 3 0 4 1;
#X connect 4 0 11 0;
#X connect 6 0 5 1;
#X connect 7 0 8 1;
#X connect 8 0 5 0;
#X connect 9 0 27 0;
#X connect 9 1 7 0;
#X connect 10 0 18 0;
#X connect 10 1 20 2;
#X connect 11 0 9 0;
#X connect 11 1 10 0;
#X connect 12 1 19 0;
#X connect 13 0 28 0;
#X connect 13 1 20 0;
#X connect 13 2 20 1;
#X connect 16 0 15 0;
#X connect 17 0 15 1;
#X connect 18 0 12 0;
#X connect 19 0 13 0;
#X connect 20 0 16 1;
#X connect 24 0 3 0;
#X connect 24 1 26 1;
#X connect 25 0 15 0;
#X connect 26 0 25 0;
#X connect 27 0 8 0;
#X connect 27 1 6 0;
#X connect 28 0 16 0;
#X connect 28 1 26 0;
#X connect 28 2 17 0;
#X connect 29 0 4 0;
#X connect 30 0 15 0;
#X connect 30 1 17 0;
#X connect 31 0 29 0;
#X connect 32 0 30 0;
#X connect 33 0 42 0;
#X connect 33 0 43 0;
#X connect 34 0 0 0;
#X connect 35 0 1 1;
#X connect 39 0 24 0;
#X restore 939 373 pd LIVE_INTERACTION;
#X obj 424 221 t b b;
#X obj 424 243 s \$0_refresh_status;
#N canvas 288 412 759 315 UTILS 0;
#X obj 34 144 text define \$0_README;
#X obj 34 26 loadbang;
#X text 106 31 load README.md \;;
#N canvas 288 138 444 350 PRINT_OBJECTS 0;
#X obj 45 37 r \$0_print_objects;
#X obj 45 209 text get \$0_README;
#X obj 45 138 until;
#X obj 45 159 f 0;
#X obj 45 180 t f f;
#X obj 85 180 + 1;
#X msg 90 156 0;
#X obj 45 110 t f b;
#X obj 25 55 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X obj 45 89 text size \$0_README;
#X obj 45 230 list trim;
#X obj 45 251 route -;
#X obj 45 272 route _doc_;
#X obj 45 293 print -n;
#X text 190 70 in README.md looks for rows that \; start with '- _doc_'
\;;
#X connect 0 0 9 0;
#X connect 1 0 10 0;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 4 0 1 0;
#X connect 4 1 5 0;
#X connect 5 0 3 1;
#X connect 6 0 3 1;
#X connect 7 0 2 0;
#X connect 7 1 6 0;
#X connect 8 0 9 0;
#X connect 9 0 7 0;
#X connect 10 0 11 0;
#X connect 11 0 12 0;
#X connect 12 0 13 0;
#X restore 34 194 pd PRINT_OBJECTS;
#X obj 307 36 r \$0_print_args;
#X obj 307 145 print -n;
#X msg 307 56 LP_GUI ARGS \, 1: object unique ID (LP_GUI_id) \;;
#X obj 324 82 r \$0_print_methods;
#X msg 324 103 LP_GUI METHODS \, reset \, play \, status \, device
\, daw_mode \, programmer_mode \;;
#X msg 34 121 read -c README.md;
#X obj 407 191 r \$0_from_g_select_device;
#X msg 407 212 vis 1;
#X obj 407 233 s pd-SELECT_DEVICE;
#X connect 1 0 9 0;
#X connect 4 0 6 0;
#X connect 6 0 5 0;
#X connect 7 0 8 0;
#X connect 8 0 5 0;
#X connect 9 0 0 0;
#X connect 10 0 11 0;
#X connect 11 0 12 0;
#X restore 939 412 pd UTILS;
#X obj 104 723 text define \$0_ABSORBER;
#X msg 104 700 clear;
#X obj 152 700 r \$0_reset_absorber;
#X msg 222 478 const 0 \;;
#X obj 222 499 s \$0_LAYOUT;
#X obj 222 453 r \$0_reset;
#X obj 15 374 PRINT_2;
#X floatatom 629 210 5 0 0 0 - - -;
#X obj 700 259 s \$0_refresh_status;
#X obj 668 280 s \$0_status;
#X msg 936 64 1;
#X obj 689 230 sel 1;
#X obj 732 237 s \$0_device;
#X obj 732 217 symbol;
#X obj 783 191 s \$0_daw_mode;
#X obj 783 211 s \$0_programmer_mode;
#N canvas 0 23 450 300 GUI_PRINT 0;
#X obj 36 105 r \$0_inner_print;
#X obj 36 134 t b a;
#X obj 36 155 del 2500;
#X msg 36 176 clean;
#X obj 36 197 outlet;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 1 1 4 0;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X restore 15 498 pd GUI_PRINT;
#X obj 578 189 s \$0_open_buffers;
#X obj 182 572 r \$0_open_buffers;
#X obj 526 315 s \$0_HB_off;
#X obj 999 76 r \$0_HB_off;
#X msg 999 97 0;
#X obj 373 196 s \$0_set;
#N canvas 0 23 1081 559 PROCESSING 0;
#X obj 116 498 s;
#X obj 116 344 t b b;
#X obj 163 393 f;
#X msg 163 431 color \$1;
#X obj 135 467 makefilename \$0_elem_%d;
#X obj 189 185 COLORS_NO_GUI;
#X obj 131 393 != 0;
#X obj 116 431 f;
#X obj 150 159 moses 0;
#X obj 116 312 spigot;
#X obj 116 211 t b f f;
#X obj 149 262 r \$0_elem_color;
#X obj 149 283 == 0;
#X text 197 158 ignore color<0 \;;
#X obj 116 127 unpack 0 0 0;
#X obj 155 233 s \$0_get_from_array;
#X text 153 490 1 pad id \; 2 color \; 3 status \;;
#N canvas 0 23 450 300 RESET 0;
#X obj 86 79 t f b;
#X obj 86 100 until;
#X obj 86 121 f 0;
#X obj 86 142 t f f;
#X obj 126 142 + 1;
#X msg 133 100 0;
#X obj 86 184 unpack 0 0 0;
#X msg 86 163 \$1 0 0;
#X obj 86 34 r \$0_reset;
#X obj 86 226 outlet;
#X obj 136 226 outlet;
#X obj 186 226 outlet;
#X msg 86 58 109;
#X connect 0 0 1 0;
#X connect 0 1 5 0;
#X connect 1 0 2 0;
#X connect 2 0 3 0;
#X connect 3 0 7 0;
#X connect 3 1 4 0;
#X connect 4 0 2 1;
#X connect 5 0 2 1;
#X connect 6 0 9 0;
#X connect 6 1 10 0;
#X connect 6 2 11 0;
#X connect 7 0 6 0;
#X connect 8 0 12 0;
#X connect 12 0 0 0;
#X restore 130 48 pd RESET;
#X obj 116 88 r \$0_set;
#X obj 570 248 unpack 0 0 0;
#X obj 570 458 list store;
#X obj 347 352 * 2;
#X obj 347 373 t f b;
#X msg 402 373 2;
#X obj 347 423 unpack;
#X obj 625 485 * 2;
#X obj 604 271 moses 0;
#X obj 570 427 t b f f;
#X msg 681 330 0;
#X obj 648 354 spigot;
#X msg 648 330 1;
#X obj 648 378 * 2;
#X text 724 331 if color<0 reuse same color \;;
#X obj 347 401 array get \$0_LAYOUT;
#X obj 570 515 array set \$0_LAYOUT;
#X obj 648 403 tabread \$0_LAYOUT;
#X obj 347 448 s \$0_elem_color;
#X obj 689 101 t l l;
#X obj 615 101 s \$0_reset;
#X obj 347 324 r \$0_get_from_array;
#X obj 570 186 t l l;
#X text 655 237 1 id \; 2 col \; 3 status \;;
#X obj 643 299 t f b;
#X obj 627 427 pack;
#N canvas 176 115 803 636 SHOCK_ABSORBER 0;
#X obj 91 41 inlet;
#X obj 110 120 text insert \$0_ABSORBER;
#X msg 177 88 1e+09;
#X obj 285 36 inlet;
#X obj 304 194 text size \$0_ABSORBER;
#X obj 285 278 f;
#X obj 285 339 spigot;
#X obj 331 264 t f b;
#X msg 342 303 0;
#X msg 372 303 1;
#X obj 312 460 until;
#X obj 312 481 f 0;
#X obj 392 502 + 1;
#X obj 312 434 t f b;
#X msg 367 466 0;
#X obj 312 543 text get \$0_ABSORBER;
#X obj 312 584 outlet;
#X text 279 9 heartbeat;
#X text 90 15 obj attributes;
#X obj 285 395 s \$0_reset_absorber;
#X obj 304 235 moses;
#X obj 285 303 moses 1;
#X obj 285 360 t b f;
#X obj 285 168 t b b b;
#X obj 285 147 spigot;
#X msg 328 112 0;
#X obj 91 62 t b l b;
#X msg 357 112 1;
#X obj 452 584 outlet;
#X text 438 74 collect objects attributes and \; deploy them in sync
with heartbeat \;;
#X obj 304 214 t f f;
#X text 458 607 bang \;;
#X text 288 607 elems in shock abs \;;
#X obj 512 472 sel -1;
#X obj 312 502 t f b f f;
#X obj 512 495 s \$0_refresh_status;
#X text 511 517 refresh status only when \; ABSORBER is empty \;;
#X obj 545 441 - 1;
#X connect 0 0 26 0;
#X connect 2 0 1 1;
#X connect 3 0 24 0;
#X connect 4 0 30 0;
#X connect 5 0 21 0;
#X connect 6 0 22 0;
#X connect 7 0 5 1;
#X connect 7 1 9 0;
#X connect 8 0 6 1;
#X connect 9 0 6 1;
#X connect 10 0 11 0;
#X connect 11 0 34 0;
#X connect 12 0 11 1;
#X connect 13 0 10 0;
#X connect 13 1 14 0;
#X connect 14 0 11 1;
#X connect 15 0 16 0;
#X connect 20 0 8 0;
#X connect 20 1 7 0;
#X connect 21 1 6 0;
#X connect 22 0 19 0;
#X connect 22 1 13 0;
#X connect 23 0 5 0;
#X connect 23 1 4 0;
#X connect 23 2 25 0;
#X connect 24 0 23 0;
#X connect 25 0 24 1;
#X connect 26 0 27 0;
#X connect 26 1 1 0;
#X connect 26 2 2 0;
#X connect 27 0 24 1;
#X connect 30 0 20 0;
#X connect 30 1 37 0;
#X connect 33 0 35 0;
#X connect 34 0 33 0;
#X connect 34 1 28 0;
#X connect 34 2 15 0;
#X connect 34 3 12 0;
#X connect 37 0 33 1;
#X restore 570 127 pd SHOCK_ABSORBER;
#X obj 570 101 list;
#N canvas 169 134 1095 620 INITIALIZE_OBJ 0;
#X obj 405 416 t l b;
#X obj 405 465 list prepend;
#X msg 432 437 1e+09;
#X obj 405 486 text insert \$0_BUFFER;
#N canvas 367 74 485 517 ADD_OBJ_TO_POOL 0;
#X obj 114 332 text search \$0_OBJECTS;
#X obj 87 310 t s s;
#X obj 87 397 spigot;
#X obj 87 458 text insert \$0_OBJECTS;
#X msg 151 427 1e+09;
#X obj 87 427 t s b;
#X obj 88 27 inlet;
#X obj 114 353 == -1;
#X obj 87 290 symbol;
#X obj 138 27 inlet;
#X text 141 11 sync from heartbeat;
#X obj 144 67 list prepend;
#X obj 144 88 t l l;
#X obj 87 119 list store;
#N canvas 145 88 450 300 ITER 0;
#X obj 146 32 inlet;
#X obj 146 193 list trim;
#X obj 146 214 outlet;
#X obj 146 108 list split 1;
#X obj 180 149 t l;
#X connect 0 0 3 0;
#X connect 1 0 2 0;
#X connect 3 0 1 0;
#X connect 3 1 4 0;
#X connect 4 0 3 0;
#X restore 87 260 pd ITER;
#X obj 87 140 route bang;
#X obj 87 170 t l b b;
#X connect 0 0 7 0;
#X connect 1 0 2 0;
#X connect 1 1 0 0;
#X connect 2 0 5 0;
#X connect 4 0 3 1;
#X connect 5 0 3 0;
#X connect 5 1 4 0;
#X connect 6 0 11 0;
#X connect 7 0 2 1;
#X connect 8 0 1 0;
#X connect 9 0 13 0;
#X connect 11 0 12 0;
#X connect 12 0 13 1;
#X connect 12 1 11 1;
#X connect 13 0 15 0;
#X connect 14 0 8 0;
#X connect 15 1 16 0;
#X connect 16 0 14 0;
#X connect 16 1 13 1;
#X connect 16 2 11 1;
#X restore 501 407 pd ADD_OBJ_TO_POOL;
#X obj 474 384 t s s;
#X obj 351 159 list split 1;
#X obj 405 357 unpack;
#N canvas 670 133 450 300 ITER 0;
#X obj 146 32 inlet;
#X obj 146 213 list trim;
#X obj 146 234 outlet;
#X obj 146 78 list split 2;
#X obj 180 109 t l;
#X connect 0 0 3 0;
#X connect 1 0 2 0;
#X connect 3 0 1 0;
#X connect 3 1 4 0;
#X connect 4 0 3 0;
#X restore 378 310 pd ITER 2;
#X obj 405 384 pack;
#X obj 378 333 t l l;
#X obj 351 190 t b s;
#X obj 351 218 list store;
#X obj 378 588 outlet;