-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfibonacci_jungle.pd
More file actions
1347 lines (1347 loc) · 38.7 KB
/
Copy pathfibonacci_jungle.pd
File metadata and controls
1347 lines (1347 loc) · 38.7 KB
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 668 74 699 743 12;
#X obj 317 479 master_out;
#X obj 317 587 tgl 46 0 mstrswtch mstrswtchinit empty 0 -10 0 12 #ff8300 #000000 #000000 0 1;
#X floatatom 317 145 4 1 1000 2 BPM bpminit mstrbpm 12;
#N canvas 221 75 892 430 preset 0;
#X obj 311 21 loadbang;
#N canvas 263 108 1064 588 sampleinit 0;
#X msg 24 65 dir;
#X obj 24 89 pdcontrol;
#X msg 24 140 set \$1;
#X obj 24 186 makefilename;
#X obj 31 163 r sampleset;
#X obj 24 38 bng 19 250 50 0 empty empty empty 0 -10 0 12 #fcfcfc #000000 #000000;
#X msg 24 261 set \$1;
#X obj 24 332 makefilename;
#X obj 24 113 makefilename %s/samples/set%%s/%%%%s.wav;
#X msg 45 308 symbol break1;
#X obj 24 209 s routepres;
#X obj 24 237 r routepres;
#X msg 24 356 \; break1init symbol \$1;
#X msg 194 261 set \$1;
#X obj 194 332 makefilename;
#X obj 194 237 r routepres;
#X msg 215 308 symbol break2;
#X msg 364 261 set \$1;
#X obj 364 332 makefilename;
#X obj 364 237 r routepres;
#X msg 24 448 set \$1;
#X obj 24 519 makefilename;
#X obj 24 424 r routepres;
#X msg 194 356 \; break2init symbol \$1;
#X msg 364 356 \; break3init symbol \$1;
#X msg 385 308 symbol break3;
#X msg 45 495 symbol sample1;
#X msg 24 543 \; sample1init symbol \$1;
#X msg 194 448 set \$1;
#X obj 194 519 makefilename;
#X obj 194 424 r routepres;
#X msg 215 495 symbol sample2;
#X msg 194 543 \; sample2init symbol \$1;
#X msg 364 448 set \$1;
#X obj 364 519 makefilename;
#X obj 364 424 r routepres;
#X msg 534 448 set \$1;
#X obj 534 519 makefilename;
#X obj 534 424 r routepres;
#X msg 385 495 symbol sample3;
#X msg 364 543 \; sample3init symbol \$1;
#X msg 555 495 symbol sample4;
#X msg 534 543 \; sample4init symbol \$1;
#X msg 704 448 set \$1;
#X obj 704 519 makefilename;
#X obj 704 424 r routepres;
#X msg 725 495 symbol sample5;
#X msg 704 543 \; sample5init symbol \$1;
#X text 190 157 Identify project folder and build absolute path to samples. Naming convention in subfolder /samples/set: break1(.wav) \, break2 \, break3 \, sample1 \, sample2 \, sample3 \, sample4 \, sample5., f 55;
#X obj 24 13 r sampleinit;
#X msg 874 448 set \$1;
#X obj 874 519 makefilename;
#X obj 874 424 r routepres;
#X msg 895 495 symbol samplex;
#X msg 874 543 \; samplexinit symbol \$1;
#X obj 129 13 r samplesetmeta;
#X obj 351 63 s sampleinit;
#X obj 268 63 s sampleset;
#X obj 129 63 s bpminit;
#X obj 129 38 t b b f b, f 16;
#X obj 199 63 s loadgen;
#X obj 45 285 r loadgen;
#X obj 215 285 r loadgen;
#X obj 385 285 r loadgen;
#X obj 45 472 r loadgen;
#X obj 215 472 r loadgen;
#X obj 385 472 r loadgen;
#X obj 555 472 r loadgen;
#X obj 725 472 r loadgen;
#X obj 895 472 r loadgen;
#X connect 0 0 1 0;
#X connect 1 0 8 0;
#X connect 2 0 3 0;
#X connect 3 0 10 0;
#X connect 4 0 3 0;
#X connect 5 0 0 0;
#X connect 6 0 7 0;
#X connect 7 0 12 0;
#X connect 8 0 2 0;
#X connect 9 0 7 0;
#X connect 11 0 6 0;
#X connect 13 0 14 0;
#X connect 14 0 23 0;
#X connect 15 0 13 0;
#X connect 16 0 14 0;
#X connect 17 0 18 0;
#X connect 18 0 24 0;
#X connect 19 0 17 0;
#X connect 20 0 21 0;
#X connect 21 0 27 0;
#X connect 22 0 20 0;
#X connect 25 0 18 0;
#X connect 26 0 21 0;
#X connect 28 0 29 0;
#X connect 29 0 32 0;
#X connect 30 0 28 0;
#X connect 31 0 29 0;
#X connect 33 0 34 0;
#X connect 34 0 40 0;
#X connect 35 0 33 0;
#X connect 36 0 37 0;
#X connect 37 0 42 0;
#X connect 38 0 36 0;
#X connect 39 0 34 0;
#X connect 41 0 37 0;
#X connect 43 0 44 0;
#X connect 44 0 47 0;
#X connect 45 0 43 0;
#X connect 46 0 44 0;
#X connect 49 0 5 0;
#X connect 50 0 51 0;
#X connect 51 0 54 0;
#X connect 52 0 50 0;
#X connect 53 0 51 0;
#X connect 55 0 59 0;
#X connect 59 0 58 0;
#X connect 59 1 60 0;
#X connect 59 2 57 0;
#X connect 59 3 56 0;
#X connect 61 0 9 0;
#X connect 62 0 16 0;
#X connect 63 0 25 0;
#X connect 64 0 26 0;
#X connect 65 0 31 0;
#X connect 66 0 39 0;
#X connect 67 0 41 0;
#X connect 68 0 46 0;
#X connect 69 0 53 0;
#X restore 210 244 pd sampleinit;
#X obj 26 117 random 2;
#X obj 96 117 random 2;
#X obj 166 117 random 2;
#X obj 26 141 s b1rinit;
#X obj 96 141 s b2rinit;
#X obj 166 141 s b3rinit;
#X obj 237 141 s bpminit;
#X obj 392 141 s basenoteinit;
#X obj 532 141 s gloscaleinit;
#X obj 311 45 bng 19 250 50 0 empty empty empty 0 -10 0 12 #fcfcfc #000000 #000000;
#X obj 763 141 s samplesetinit;
#X obj 237 117 expr random(140 \, 191);
#X obj 392 64 del 20;
#N canvas 632 314 287 155 fjrest 0;
#X obj 14 15 r allnewpat;
#X obj 36 119 s tonalnewpat;
#X obj 14 95 s breaksnewpat;
#X obj 60 73 outlet;
#X text 133 22 Resets parameters globally \, triggers new pattern generation., f 19;
#X obj 14 40 t b b b;
#X connect 0 0 5 0;
#X connect 5 0 2 0;
#X connect 5 1 1 0;
#X connect 5 2 3 0;
#X restore 227 26 pd fjrest;
#X obj 637 117 random 35;
#X obj 763 117 random 3;
#X obj 532 117 random 14;
#X obj 237 64 del 30;
#X obj 392 117 expr random(28 \, 40);
#X obj 637 141 s chordselectinit;
#X msg 311 174 \; basstoginit 0 \; chordtoginit 0 \; breakstoginit 1 \; breaksampinit 1 \; sampleinit bang \; doertepres 5000 200 0.9 0.6 4 2 1 0.45 \; trackloopmodeinit 1 \; stab1ampinit 0.3 \; stab1pres 10 5 700 1 \; stab2ampinit 0.7 \; stab2pres 15 15 250 2 \; stab3ampinit 0.6 \; stab3pres 70 25 500 0 \; stab4ampinit 0.3 \; stab4pres 35 25 350 2 \;;
#X connect 0 0 11 0;
#X connect 2 0 5 0;
#X connect 3 0 6 0;
#X connect 4 0 7 0;
#X connect 11 0 22 0;
#X connect 11 0 14 0;
#X connect 11 0 19 0;
#X connect 13 0 8 0;
#X connect 14 0 4 0;
#X connect 14 0 3 0;
#X connect 14 0 2 0;
#X connect 14 0 16 0;
#X connect 14 0 17 0;
#X connect 14 0 18 0;
#X connect 14 0 20 0;
#X connect 15 0 11 0;
#X connect 16 0 21 0;
#X connect 17 0 12 0;
#X connect 18 0 10 0;
#X connect 19 0 13 0;
#X connect 20 0 9 0;
#X coords 0 430 1 429 130 45 0;
#X restore 317 700 pd preset;
#X floatatom 317 259 4 28 40 2 MIDI\ Base\ note basenoteinit basenote 12;
#X text 12 144 Step 2: Set a tempo in BPM (something between 140 and 190 BPM is recommended., f 41;
#X floatatom 317 337 4 0 13 2 Scale gloscaleinit gloscale 12;
#X floatatom 317 401 4 0 34 2 Chord chordselectinit chordselect 12;
#X obj 379 587 tgl 20 0 trackloopmode trackloopmodeinit Endless\ track\ mode 23 9 0 12 #fcfcfc #000000 #000000 0 1;
#X obj 317 657 bng 20 250 50 0 allnewpat allnewpatinit New\ settings 25 9 0 12 #00faff #000000 #000000;
#N canvas 221 106 318 139 patchbay 0;
#X obj 195 19 catch~ all;
#X obj 17 19 catch~ left;
#X obj 103 19 catch~ right;
#X obj 17 69 outlet~;
#X obj 194 69 outlet~;
#X connect 0 0 3 0;
#X connect 0 0 4 0;
#X connect 1 0 3 0;
#X connect 2 0 4 0;
#X restore 317 456 pd patchbay;
#X f 24;
#X obj 317 81 hradio 20 1 0 4 samplesetmeta samplesetinit Sample\ Set 0 -10 0 12 #fcfcfc #000000 #000000 0;
#X obj 317 195 tgl 19 0 b1r b1rinit Break\ 1 0 -10 0 12 #fcfcfc #000000 #000000 0 1;
#X obj 376 195 tgl 19 0 b2r b2rinit Break\ 2 0 -10 0 12 #fcfcfc #000000 #000000 0 1;
#X obj 435 195 tgl 19 0 b3r b3rinit Break\ 3\ (layer\ break) 0 -10 0 12 #fcfcfc #000000 #000000 0 1;
#X text 12 336 Step 5: Select a harmonic scale. Tonal sequences for bassline and other synths will be built randomly on this scale., f 41;
#X text 12 80 Step 1: select from a sample set in subfolder /samples/ (you can add your own!), f 41;
#N canvas 672 154 421 300 fibonacci-engine 0;
#X obj 12 38 BPM-engine;
#X obj 170 15 r mstrswtch;
#X obj 12 15 r mstrbpm;
#X obj 125 124 s 16ths;
#X obj 75 124 s 8ths;
#X text 185 42 Rhythm engine based on master BPM that outputs bangs on different note values, f 21;
#N canvas 146 59 1272 668 fibonacciarranger 0;
#X obj 130 604 bng 15 250 50 0 empty empty New\ pattern 17 7 0 10 #fcfcfc #000000 #000000;
#X obj 130 496 i;
#X obj 130 520 + 1;
#X obj 247 604 bng 15 250 50 0 empty empty New\ pattern 17 7 0 10 #fcfcfc #000000 #000000;
#X obj 13 55 i;
#X obj 13 79 + 1;
#X obj 130 568 sel 0;
#X obj 247 496 i;
#X obj 247 520 + 1;
#X obj 247 568 sel 0;
#X obj 13 496 i;
#X obj 13 520 + 1;
#X obj 13 568 sel 0;
#X obj 13 604 tgl 15 0 empty empty ON/OFF 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X text 350 623 Trigger new pattern generation on breaks and tonal elements, f 64;
#X obj 13 239 hradio 19 1 0 8 empty empty empty 0 -10 0 12 #fcfcfc #000000 #000000 0;
#X floatatom 63 563 2 0 0 0 - - - 0;
#X floatatom 180 563 2 0 0 0 - - - 0;
#X floatatom 297 563 2 0 0 0 - - - 0;
#X obj 63 55 i;
#X obj 63 79 + 1;
#X obj 63 127 sel 0;
#X obj 130 624 s breaksnewpat;
#X obj 247 624 s tonalnewpat;
#X obj 13 265 + 1;
#X obj 13 103 mod 8;
#X obj 13 472 r fibarrchn;
#X obj 130 472 r fibarrchn;
#X obj 247 472 r fibarrchn;
#X obj 293 341 s fibarrchn;
#X obj 689 341 s fibarrchnoff;
#X obj 13 291 sel 1 2 3 5 8, f 97;
#X obj 355 472 r fibarrchnoff;
#X obj 355 520 s breakstoginit;
#X obj 491 520 s basspres;
#X obj 491 472 r fibarrchn;
#X obj 605 472 r fibarrchnoff;
#X text 193 177 Stop track;
#X floatatom 119 122 3 0 0 0 - - - 0;
#X obj 725 472 r fibarrchnoff;
#X obj 869 472 r fibarrchnoffer;
#X msg 869 496 \; breaksampinit 0;
#X obj 689 317 bng 19 250 50 0 empty empty empty 0 -10 0 12 #fcfcfc #000000 #000000;
#X text 688 369 Presets for track sections. Fibonacci sequence based arrangement loops., f 20;
#X text 869 541 Giv'em a break every now and then!, f 18;
#X text 492 541 Alter bassline preset on Non-Fibonacci numbers. Reset on Fibonacci numbers, f 28;
#X text 352 541 Change break on Non-Fibonacci numbers, f 19;
#X obj 869 245 r fibarrchnoff;
#X obj 869 271 i;
#X obj 869 295 + 1;
#X obj 869 407 bng 19 250 50 0 empty empty empty 0 -10 0 12 #fcfcfc #000000 #000000;
#X obj 869 431 s fibarrchnoffer;
#X obj 910 370 s fibao1;
#X obj 951 399 s fibao2;
#X obj 992 370 s fibao3;
#X obj 1034 426 s fibao4;
#X msg 491 496 2 4850 1 3;
#X obj 869 319 mod 4;
#X obj 13 544 mod 5;
#X obj 130 544 mod 2;
#X obj 247 544 mod 3;
#X msg 605 496 21 6850 1 1.2;
#X obj 869 343 sel 0 1 2 3, f 24;
#X obj 13 30 t b b;
#X msg 63 178 \; breaksampinit 0 \; mstrswtchinit 0 \;;
#X obj 151 123 tgl 20 0 empty empty empty 0 -10 0 12 #fcfcfc #000000 #000000 0 1;
#X obj 63 151 spigot, f 13;
#X obj 151 73 r trackloopmode;
#X obj 151 98 == 0;
#X msg 725 496 \; chordtoginit 0;
#X text 722 541 Switch off chords on Non-Fibonacci numbers, f 18;
#X msg 13 370 \; chordtoginit 1 \; basstoginit 0 \; breakstoginit 1 \; breaksampinit 1;
#X msg 148 370 \; chordtoginit 1 \; basstoginit 0 \; breakstoginit 0 \; breaksampinit 1;
#X msg 283 370 \; chordtoginit 1 \; basstoginit 1 \; breakstoginit 1 \; breaksampinit 1;
#X msg 418 370 \; chordtoginit 1 \; basstoginit 1 \; breakstoginit 0 \; breaksampinit 1;
#X msg 553 370 \; chordtoginit 1 \; basstoginit 1 \; breakstoginit 1 \; breaksampinit 1;
#X obj 1022 472 r chordtoginit;
#X obj 1022 520 s stabtoginit;
#X obj 1022 496 == 0;
#X obj 13 624 s hatsvolinit;
#X obj 1142 496 == 0;
#X obj 1142 472 r hatsvolinit;
#X obj 1142 520 s blipsvolinit;
#X text 308 72 Fibonacci sequence based track arrangement generator. Uses indication of a full sequence cycle as provided by Fibonacci Sequencer (e.g. when that sequencer hits 34) to go through values from 1-8. When reaching a number of the Fibonacci sequence the generator triggers changes in element constellations (presets) as well as randomized alterations of other parameters like new melodic or rhythmic patterns. The generator also governs whether music generation is being performed continuously or not.;
#X text 1020 398 Trigger sample playback;
#X text 1021 541 Use only one of these elements at a time, f 23;
#X obj 13 6 r fib34;
#X obj 63 103 mod 34;
#X connect 0 0 22 0;
#X connect 1 0 2 0;
#X connect 2 0 59 0;
#X connect 3 0 23 0;
#X connect 4 0 5 0;
#X connect 5 0 25 0;
#X connect 6 0 0 0;
#X connect 7 0 8 0;
#X connect 8 0 60 0;
#X connect 9 0 3 0;
#X connect 10 0 11 0;
#X connect 11 0 58 0;
#X connect 12 0 13 0;
#X connect 13 0 79 0;
#X connect 15 0 24 0;
#X connect 19 0 20 0;
#X connect 20 0 87 0;
#X connect 21 0 66 0;
#X connect 24 0 31 0;
#X connect 25 0 4 1;
#X connect 25 0 15 0;
#X connect 26 0 10 0;
#X connect 27 0 1 0;
#X connect 28 0 7 0;
#X connect 31 0 71 0;
#X connect 31 0 29 0;
#X connect 31 1 72 0;
#X connect 31 1 29 0;
#X connect 31 2 73 0;
#X connect 31 2 29 0;
#X connect 31 3 74 0;
#X connect 31 3 29 0;
#X connect 31 4 75 0;
#X connect 31 4 29 0;
#X connect 31 5 42 0;
#X connect 32 0 33 0;
#X connect 35 0 56 0;
#X connect 36 0 61 0;
#X connect 39 0 69 0;
#X connect 40 0 41 0;
#X connect 42 0 30 0;
#X connect 47 0 48 0;
#X connect 48 0 49 0;
#X connect 49 0 57 0;
#X connect 50 0 51 0;
#X connect 50 0 55 0;
#X connect 56 0 34 0;
#X connect 57 0 48 1;
#X connect 57 0 62 0;
#X connect 58 0 10 1;
#X connect 58 0 12 0;
#X connect 58 0 16 0;
#X connect 59 0 1 1;
#X connect 59 0 6 0;
#X connect 59 0 17 0;
#X connect 60 0 7 1;
#X connect 60 0 9 0;
#X connect 60 0 18 0;
#X connect 61 0 34 0;
#X connect 62 0 50 0;
#X connect 62 1 52 0;
#X connect 62 2 53 0;
#X connect 62 3 54 0;
#X connect 63 0 4 0;
#X connect 63 1 19 0;
#X connect 65 0 66 1;
#X connect 66 0 64 0;
#X connect 67 0 68 0;
#X connect 68 0 65 0;
#X connect 76 0 78 0;
#X connect 78 0 77 0;
#X connect 80 0 82 0;
#X connect 81 0 80 0;
#X connect 86 0 63 0;
#X connect 87 0 19 1;
#X connect 87 0 21 0;
#X connect 87 0 38 0;
#X restore 12 192 pd fibonacciarranger;
#N canvas 320 38 326 289 fibonacciseq 0;
#X obj 24 45 i;
#X obj 24 69 + 1;
#X obj 24 118 + 1;
#X obj 188 231 bng 19 250 50 0 empty empty empty 0 -10 0 12 #fcfcfc #000000 #000000;
#X obj 24 230 bng 19 250 50 0 empty empty empty 0 -10 0 12 #fcfcfc #000000 #000000;
#X obj 244 231 bng 19 250 50 0 empty empty empty 0 -10 0 12 #fcfcfc #000000 #000000;
#X obj 156 192 t b b;
#X obj 24 143 sel 1 2 3 5 8 13 21 34;
#X obj 24 93 mod 34;
#X obj 24 21 r 8ths;
#X obj 24 254 s fibon;
#X obj 188 255 s fib34;
#X obj 244 255 s fiboff;
#X text 86 17 Fibonacci numbers based sequencer. Uses values from 1-34 and outputs bangs on no.s of the fibonacci sequence., f 26;
#X connect 0 0 1 0;
#X connect 1 0 8 0;
#X connect 2 0 7 0;
#X connect 3 0 11 0;
#X connect 4 0 10 0;
#X connect 5 0 12 0;
#X connect 6 0 4 0;
#X connect 6 1 3 0;
#X connect 7 0 4 0;
#X connect 7 1 4 0;
#X connect 7 2 4 0;
#X connect 7 3 4 0;
#X connect 7 4 4 0;
#X connect 7 5 4 0;
#X connect 7 6 4 0;
#X connect 7 7 4 0;
#X connect 7 7 6 0;
#X connect 7 8 5 0;
#X connect 8 0 0 1;
#X connect 8 0 2 0;
#X connect 9 0 0 0;
#X restore 12 167 pd fibonacciseq;
#X f 17;
#X text 162 191 Fibonacci based track structure, f 32;
#X text 141 166 Fibonacci based sequencer;
#X obj 12 237 r fibon;
#X obj 12 261 s bpminit;
#X text 86 260 Recalibrate tempo on first note of every bar, f 45;
#X connect 0 2 4 0;
#X connect 0 3 3 0;
#X connect 1 0 0 1;
#X connect 2 0 0 0;
#X connect 10 0 11 0;
#X restore 394 700 pd fibonacci-engine;
#N canvas 221 96 356 98 jungle-engine 0;
#N canvas 115 159 1262 596 beats 0;
#X obj 19 70 slicer;
#X obj 159 47 r mstrbpm;
#X obj 167 21 r mstrswtch;
#X obj 19 47 bng 19 250 50 0 empty glorest Restart 0 -7 0 8 #fcfcfc #000000 #000000;
#X obj 118 21 bng 19 250 50 0 empty breaksnewpat New\ pattern 0 -7 0 8 #fcfcfc #000000 #000000;
#X obj 922 21 r fibon;
#X obj 922 47 s glorest;
#X text 999 20 Trigger loop restart on each "Fibonacci Bang", f 17;
#X obj 68 47 r break1init;
#X obj 293 70 slicer;
#X obj 433 47 r mstrbpm;
#X obj 441 21 r mstrswtch;
#X obj 293 47 bng 19 250 50 0 empty glorest Restart 0 -7 0 8 #fcfcfc #000000 #000000;
#X obj 392 21 bng 19 250 50 0 empty breaksnewpat New\ pattern 0 -7 0 8 #fcfcfc #000000 #000000;
#X obj 342 47 r break2init;
#X obj 304 565 throw~ right;
#X obj 215 565 throw~ left;
#X obj 19 565 throw~ all;
#X obj 19 311 *~;
#X obj 37 288 == 0;
#X obj 19 335 throw~ breaksdry;
#X obj 293 335 throw~ breaksdry;
#X obj 19 386 catch~ breaksdry;
#X obj 29 437 catch~ breakswet;
#X obj 394 525 throw~ breakswet;
#X obj 29 410 throw~ breaksfxbus;
#N canvas 113 115 664 546 breaksfx 0;
#X obj 33 131 line;
#X obj 166 131 line;
#X floatatom 166 154 5 0 0 0 - - - 0;
#X obj 33 80 r fibon;
#X floatatom 33 154 7 0 0 0 - - - 0;
#X obj 14 12 inlet~;
#X obj 14 254 outlet~;
#X obj 114 254 outlet~;
#X obj 217 254 outlet~;
#X obj 513 513 throw~ breaksfxbus;
#X obj 390 220 delread4~ dubster;
#X obj 515 14 r fibon;
#X msg 434 37 0, f 1;
#X obj 390 513 throw~ breakswet;
#X obj 408 425 tgl 19 0 empty empty empty 0 -10 0 12 #fcfcfc #000000 #000000 0 1;
#X obj 390 447 *~;
#X obj 408 302 r fib34;
#X text 15 304 FX section with resonant filter \, delay line and reverberator controlled by "Fibonacci Bangs", f 48;
#X obj 390 490 *~ 0.4;
#X obj 408 326 i;
#X obj 408 350 + 1;
#X obj 408 374 mod 2;
#X obj 408 398 sel 0;
#X msg 166 105 20 \, 95 2800;
#X obj 390 198 *~ 5;
#X obj 515 37 i;
#X obj 515 64 + 1;
#X floatatom 415 176 5 0 0 0 - - - 0;
#X obj 434 14 r fibon;
#X obj 25 37 delwrite~ dubster 89;
#X msg 535 157 55, f 2;
#X obj 515 88 mod 21;
#X obj 515 136 sel 5 8 13;
#X msg 515 157 34, f 2;
#X msg 555 157 89, f 2;
#X obj 390 88 phasor~;
#X obj 390 274 hip~ 200;
#X obj 390 245 *~ 0.8;
#X obj 390 64 phasor~ 0.123;
#X obj 14 176 vcf~ 2;
#X obj 14 201 hip~ 300;
#X msg 33 105 500 \, 8000 2800;
#X obj 14 230 rev2~ 94 50 100 10, f 44;
#X obj 515 112 + 1;
#X connect 0 0 4 0;
#X connect 1 0 2 0;
#X connect 2 0 42 2;
#X connect 3 0 41 0;
#X connect 3 0 23 0;
#X connect 4 0 39 1;
#X connect 5 0 29 0;
#X connect 5 0 39 0;
#X connect 10 0 37 0;
#X connect 11 0 25 0;
#X connect 12 0 38 1;
#X connect 14 0 15 1;
#X connect 15 0 9 0;
#X connect 15 0 18 0;
#X connect 16 0 19 0;
#X connect 18 0 13 0;
#X connect 19 0 20 0;
#X connect 20 0 21 0;
#X connect 21 0 19 1;
#X connect 21 0 22 0;
#X connect 22 0 14 0;
#X connect 23 0 1 0;
#X connect 24 0 10 0;
#X connect 25 0 26 0;
#X connect 26 0 31 0;
#X connect 27 0 24 1;
#X connect 28 0 12 0;
#X connect 30 0 27 0;
#X connect 31 0 25 1;
#X connect 31 0 43 0;
#X connect 32 0 33 0;
#X connect 32 1 30 0;
#X connect 32 2 34 0;
#X connect 33 0 27 0;
#X connect 34 0 27 0;
#X connect 35 0 24 0;
#X connect 36 0 15 0;
#X connect 37 0 36 0;
#X connect 38 0 35 0;
#X connect 39 1 40 0;
#X connect 40 0 42 0;
#X connect 41 0 0 0;
#X connect 42 0 6 0;
#X connect 42 1 7 0;
#X connect 42 2 8 0;
#X connect 43 0 32 0;
#X restore 215 437 pd breaksfx;
#X f 26;
#X obj 215 410 catch~ breaksfxbus;
#X obj 19 462 expr~ atan($v1);
#X obj 567 70 slicer;
#X obj 707 47 r mstrbpm;
#X obj 715 21 r mstrswtch;
#X obj 567 47 bng 19 250 50 0 empty glorest Restart 0 -7 0 8 #fcfcfc #000000 #000000;
#X obj 666 21 bng 19 250 50 0 empty breaksnewpat New\ pattern 0 -7 0 8 #fcfcfc #000000 #000000;
#X obj 616 47 r break3init;
#X obj 567 291 *~;
#X obj 585 269 tgl 19 0 empty empty empty 0 -10 0 12 #fcfcfc #000000 #000000 0 1;
#X obj 585 247 r fibarrchnoff;
#X obj 19 540 *~;
#X obj 37 514 tgl 19 0 empty empty empty 0 -10 0 12 #fcfcfc #000000 #000000 0 1;
#X obj 215 500 *~;
#X obj 304 500 *~;
#X obj 394 500 *~;
#X obj 852 47 s bmamp;
#X obj 412 474 r bmamp;
#X obj 37 490 r bmamp;
#X obj 322 474 r bmamp;
#X obj 233 474 r bmamp;
#X obj 229 47 r b1prs;
#X obj 503 47 r b2prs;
#X obj 777 47 r b3prs;
#X obj 293 311 *~;
#X obj 567 364 throw~ breaksdry;
#X obj 567 314 hip~ 400;
#X obj 567 339 *~ 0.7;
#N canvas 279 158 454 358 hats 0;
#X obj 14 137 f;
#N canvas 479 317 396 295 ohat 0;
#X obj 269 138 vline~;
#X obj 251 208 *~;
#X obj 25 130 noise~;
#X obj 153 138 line;
#X msg 25 101 seed 2546;
#X obj 25 24 inlet;
#X obj 25 75 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X obj 251 257 outlet~;
#X obj 251 233 expr~ sin($v1);
#X msg 153 114 12000 \, 8000 \$1;
#X obj 25 158 *~;
#X obj 79 131 osc~ 0.5;
#X msg 269 113 1 2 \, 0 \$1 5;
#X obj 269 162 pow~ 2;
#X obj 25 48 t b f f;
#X obj 134 177 vcf~ 4;
#X connect 0 0 13 0;
#X connect 1 0 8 0;
#X connect 2 0 10 0;
#X connect 3 0 15 1;
#X connect 4 0 2 0;
#X connect 5 0 14 0;
#X connect 6 0 4 0;
#X connect 8 0 7 0;
#X connect 9 0 3 0;
#X connect 10 0 15 0;
#X connect 11 0 10 1;
#X connect 12 0 0 0;
#X connect 13 0 1 1;
#X connect 14 0 6 0;
#X connect 14 1 9 0;
#X connect 14 2 12 0;
#X connect 15 0 1 0;
#X restore 14 169 pd ohat;
#N canvas 831 162 458 344 chat 0;
#X obj 317 178 vline~;
#X obj 300 248 *~;
#X obj 25 170 noise~;
#X obj 200 178 line;
#X obj 25 17 inlet;
#X obj 25 115 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
#X obj 300 297 outlet~;
#X obj 200 126 pack f f;
#X obj 200 78 t f b;
#X obj 300 273 expr~ sin($v1);
#X msg 25 141 seed 1313;
#X obj 200 102 * 2;
#X msg 200 154 10000 \, \$2 \$1;
#X obj 253 99 expr random(5 \, 8)*1000;
#X obj 79 171 osc~ 0.5;
#X obj 25 208 *~;
#X obj 181 227 vcf~ 9;
#X msg 317 153 1.4 3 \, 0 \$1 35;
#X obj 318 202 pow~ 2;
#X obj 25 41 t b f f;
#X connect 0 0 18 0;
#X connect 1 0 9 0;
#X connect 2 0 15 0;
#X connect 3 0 16 1;
#X connect 4 0 19 0;
#X connect 5 0 10 0;
#X connect 7 0 12 0;
#X connect 8 0 11 0;
#X connect 8 1 13 0;
#X connect 9 0 6 0;
#X connect 10 0 2 0;
#X connect 11 0 7 0;
#X connect 12 0 3 0;
#X connect 13 0 7 1;
#X connect 14 0 15 1;
#X connect 15 0 16 0;
#X connect 16 0 1 0;
#X connect 17 0 0 0;
#X connect 18 0 1 1;
#X connect 19 0 5 0;
#X connect 19 1 8 0;
#X connect 19 2 17 0;
#X restore 224 169 pd chat;
#X obj 224 35 t b b;
#X obj 224 137 f;
#X obj 14 11 inlet;
#X obj 14 35 t b b;
#X floatatom 32 116 5 0 0 0 - - - 0;
#X obj 14 325 outlet~;
#X obj 224 11 inlet;
#X obj 14 300 hip~ 500;
#X obj 64 35 r mstrbpm;
#X obj 46 61 f;
#X floatatom 242 116 5 0 0 0 - - - 0;
#X obj 274 35 r mstrbpm;
#X obj 256 61 f;
#X text 70 168 Simple high hat synths., f 21;
#X obj 256 87 expr $f1+random(10 \, 100);
#X obj 14 232 *~ 0.5;
#X obj 46 87 expr $f1-random(30 \, $f1);
#X obj 14 276 *~ 0.3;
#X connect 0 0 1 0;
#X connect 1 0 18 0;
#X connect 2 0 18 0;
#X connect 3 0 4 0;
#X connect 3 1 15 0;
#X connect 4 0 2 0;
#X connect 5 0 6 0;
#X connect 6 0 0 0;
#X connect 6 1 12 0;
#X connect 7 0 0 1;
#X connect 9 0 3 0;
#X connect 10 0 8 0;
#X connect 11 0 12 1;
#X connect 12 0 19 0;
#X connect 13 0 4 1;
#X connect 14 0 15 1;
#X connect 15 0 17 0;
#X connect 17 0 13 0;
#X connect 18 0 20 0;
#X connect 19 0 7 0;
#X connect 20 0 10 0;
#X restore 852 291 pd hats;
#X f 16;
#X obj 852 156 herrmann;
#X obj 961 156 herrmann;
#X obj 1033 129 bng 19 250 50 0 empty breaksnewpat New\ pattern 0 -7 0 8 #fcfcfc #000000 #000000;
#X obj 992 129 bng 19 250 50 0 empty glorest Restart 0 -7 0 8 #fcfcfc #000000 #000000;
#X obj 924 129 bng 19 250 50 0 empty breaksnewpat New\ pattern 0 -7 0 8 #fcfcfc #000000 #000000;
#X obj 883 129 bng 19 250 50 0 empty glorest Restart 0 -7 0 8 #fcfcfc #000000 #000000;
#X obj 852 339 *~;
#X obj 870 314 tgl 19 0 empty hatsvolinit empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 852 364 throw~ breaksdry;
#N canvas 349 159 244 110 breakspreset 0;
#X obj 17 64 s b1prs;
#X obj 86 64 s b2prs;
#X obj 155 64 s b3prs;
#X obj 17 13 r b1r;
#X obj 86 13 r b2r;
#X obj 155 13 r b3r;
#X msg 17 37 4 1 \$1 1;
#X msg 86 37 4 1 \$1 1;
#X msg 155 37 4 1 \$1 1;
#X connect 3 0 6 0;
#X connect 4 0 7 0;
#X connect 5 0 8 0;
#X connect 6 0 0 0;
#X connect 7 0 1 0;
#X connect 8 0 2 0;
#X restore 713 247 pd breakspreset;
#X obj 311 269 tgl 19 0 empty breakstoginit Break\ 1/2 22 10 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 852 21 tgl 19 0 empty breaksampinit On/Off 22 10 0 10 #fcfcfc #000000 #000000 0 1;
#X text 100 564 Sum out beats;
#X obj 1072 340 *~;
#X obj 1090 316 tgl 19 0 empty blipsvolinit empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
#X text 1167 291 Blip synth;
#X obj 1072 364 throw~ breaksdry;
#N canvas 206 144 440 442 fiboblips 0;
#X obj 264 25 inlet;
#X obj 264 230 vline~;
#X obj 12 303 *~;
#X obj 12 205 +~;
#X obj 52 122 *~;
#X obj 12 151 +~;
#X obj 52 176 *~;
#X obj 12 405 outlet~;
#X obj 162 122 *~;
#X obj 162 176 *~;
#X obj 282 98 r \$0-fiboblipslbase;
#X obj 282 151 r \$0-fiboblipsladd;
#X obj 264 122 f;
#X obj 264 176 +;
#N canvas 766 132 380 312 fiboblipsarray 0;
#X obj 13 60 array define \$0-fiboblips;
#X msg 198 36 1 2 3 5 8 13 21 34 55;
#X obj 198 60 array set \$0-fiboblips;
#X msg 13 36 9, f 1;
#X obj 13 11 loadbang;
#X obj 198 11 loadbang;
#X obj 13 229 array get \$0-fiboblips;
#X floatatom 13 253 5 0 0 0 - - - 0;
#X obj 13 134 i;
#X obj 13 158 + 1;
#X obj 13 182 mod 9;
#X floatatom 13 206 5 0 0 0 - - - 0;
#X obj 183 229 array get \$0-fiboblips;
#X floatatom 183 253 5 0 0 0 - - - 0;
#X obj 183 134 i;
#X obj 183 158 + 1;
#X obj 183 182 mod 9;
#X floatatom 183 206 5 0 0 0 - - - 0;
#X obj 13 276 s \$0-fiboblipsladd;
#X obj 183 276 s \$0-fiboblipslbase;
#X obj 13 110 r fibon;
#X obj 183 110 r fib34;
#X connect 1 0 2 0;
#X connect 3 0 0 0;
#X connect 4 0 3 0;
#X connect 5 0 1 0;
#X connect 6 0 7 0;
#X connect 7 0 18 0;
#X connect 8 0 9 0;
#X connect 9 0 10 0;
#X connect 10 0 11 0;
#X connect 10 0 8 1;
#X connect 11 0 6 0;
#X connect 12 0 13 0;
#X connect 13 0 19 0;
#X connect 14 0 15 0;
#X connect 15 0 16 0;
#X connect 16 0 17 0;
#X connect 16 0 14 1;
#X connect 17 0 12 0;
#X connect 20 0 8 0;
#X connect 21 0 14 0;
#X restore 12 25 pd fiboblipsarray;
#X obj 12 351 hip~ 2000;
#X obj 12 327 hip~ 1000;
#X obj 12 375 *~ 0.2;
#X obj 52 98 osc~ 2500;
#X obj 162 98 osc~ 3000;
#X obj 197 122 osc~ 2;
#X obj 197 176 osc~ 1;
#X obj 87 122 osc~ 3;
#X obj 12 67 osc~ 5000;
#X obj 87 176 osc~ 5;
#X text 97 321 Fiboblips is a lo fi blip synth that interacts with the Fibonacci sequence based triggers from the sequencer section., f 34;
#X msg 264 205 0.7 8 \, 0 \$1 13;
#X obj 264 254 pow~ 3;
#X connect 0 0 12 0;
#X connect 1 0 27 0;
#X connect 2 0 16 0;
#X connect 3 0 2 0;
#X connect 4 0 6 0;
#X connect 4 0 5 1;
#X connect 5 0 3 0;
#X connect 6 0 3 1;
#X connect 8 0 9 0;
#X connect 8 0 5 1;
#X connect 9 0 3 1;
#X connect 10 0 12 1;
#X connect 11 0 13 1;
#X connect 12 0 13 0;
#X connect 13 0 26 0;
#X connect 15 0 17 0;
#X connect 16 0 15 0;
#X connect 17 0 7 0;
#X connect 18 0 4 0;
#X connect 19 0 8 0;
#X connect 20 0 8 1;
#X connect 21 0 9 1;
#X connect 22 0 4 1;
#X connect 23 0 5 0;
#X connect 24 0 6 1;
#X connect 26 0 1 0;
#X connect 27 0 2 1;
#X restore 1072 291 pd fiboblips;
#X text 409 437 Effect chain for beats and breaks;
#X text 637 312 Break 3 = layer break;
#X obj 474 247 s der16ths;
#X obj 1072 267 r der16ths;
#X obj 852 94 r der16ths;
#N canvas 469 507 123 146 der8ths 0;
#X obj 10 11 r der16ths;
#X msg 10 35 bang;
#X obj 10 83 sel 0;
#X obj 10 59 tgl 19 0 empty empty empty 0 -10 0 12 #fcfcfc #000000 #000000 0 1;
#X obj 10 110 outlet;
#X connect 0 0 1 0;
#X connect 1 0 3 0;
#X connect 2 0 4 0;
#X connect 3 0 2 0;
#X restore 961 94 pd der8ths;
#X connect 0 0 18 0;
#X connect 1 0 0 4;
#X connect 2 0 0 3;
#X connect 3 0 0 0;
#X connect 4 0 0 2;
#X connect 5 0 6 0;
#X connect 8 0 0 1;
#X connect 9 0 51 0;
#X connect 9 1 76 0;
#X connect 10 0 9 4;
#X connect 11 0 9 3;
#X connect 12 0 9 0;
#X connect 13 0 9 2;
#X connect 14 0 9 1;
#X connect 18 0 20 0;
#X connect 19 0 18 1;
#X connect 22 0 25 0;
#X connect 22 0 28 0;
#X connect 23 0 28 0;
#X connect 26 0 40 0;
#X connect 26 1 41 0;
#X connect 26 2 42 0;
#X connect 27 0 26 0;
#X connect 28 0 38 0;
#X connect 29 0 35 0;
#X connect 30 0 29 4;
#X connect 31 0 29 3;
#X connect 32 0 29 0;
#X connect 33 0 29 2;
#X connect 34 0 29 1;
#X connect 35 0 53 0;
#X connect 36 0 35 1;
#X connect 37 0 36 0;
#X connect 38 0 17 0;
#X connect 39 0 38 1;
#X connect 40 0 16 0;
#X connect 41 0 15 0;
#X connect 42 0 24 0;
#X connect 44 0 42 1;
#X connect 45 0 39 0;
#X connect 46 0 41 1;
#X connect 47 0 40 1;
#X connect 48 0 0 5;
#X connect 49 0 9 5;
#X connect 50 0 29 5;
#X connect 51 0 21 0;
#X connect 53 0 54 0;
#X connect 54 0 52 0;
#X connect 55 0 62 0;
#X connect 56 0 55 0;
#X connect 57 0 55 1;
#X connect 58 0 57 2;
#X connect 59 0 57 1;
#X connect 60 0 56 2;
#X connect 61 0 56 1;
#X connect 62 0 64 0;
#X connect 63 0 62 1;
#X connect 66 0 51 1;
#X connect 66 0 19 0;
#X connect 67 0 43 0;
#X connect 69 0 72 0;
#X connect 70 0 69 1;
#X connect 73 0 69 0;
#X connect 77 0 73 0;
#X connect 78 0 56 0;
#X connect 79 0 57 0;
#X restore 17 15 pd beats;
#N canvas 187 212 1185 505 samples 0;
#X obj 20 87 simpler;
#X obj 110 61 r sample1init;
#X obj 210 87 simpler;
#X obj 300 61 r sample2init;
#X obj 400 87 simpler;
#X obj 490 61 r sample3init;
#X obj 780 333 catch~ processing;
#X obj 780 461 throw~ left;
#X obj 872 461 throw~ right;
#X obj 964 461 throw~ all;
#X obj 20 285 throw~ processing;
#X obj 210 285 throw~ processing;
#X obj 400 285 throw~ processing;
#X obj 698 461 throw~ all;
#X obj 590 87 simpler;
#X obj 590 285 throw~ processing;
#X obj 680 61 r sample4init;
#X obj 780 87 simpler;
#X obj 780 285 throw~ processing;
#X obj 870 61 r sample5init;
#N canvas 901 206 250 297 samplefxchain 0;
#X obj 13 10 inlet~;
#X obj 14 260 outlet~;
#X obj 14 234 hip~ 5;
#X obj 34 82 delwrite~ \$0-sampledub 300;
#X obj 34 107 delread~ \$0-sampledub 280;
#X obj 34 203 throw~ sampledubwet;
#X obj 32 35 catch~ sampledubwet;
#X obj 13 59 *~ 1;
#X obj 34 131 hip~ 250;
#X obj 34 155 *~ 0.9;
#X obj 34 179 lop~ 2500;
#X connect 0 0 7 0;
#X connect 2 0 1 0;
#X connect 4 0 8 0;
#X connect 6 0 7 0;
#X connect 7 0 3 0;
#X connect 7 0 2 0;
#X connect 8 0 9 0;
#X connect 9 0 10 0;
#X connect 10 0 5 0;
#X restore 780 356 pd samplefxchain;
#X obj 780 413 rev2~ 92 96 1000 10, f 40;
#X obj 780 380 hip~ 150;
#X obj 780 13 r fibarrchnoffer;
#X obj 20 13 r fibao1;
#X obj 210 13 r fibao2;
#X obj 400 13 r fibao3;
#X obj 590 13 r fibao4;
#X obj 698 433 *~ 0.7;
#X obj 971 61 sel 0;
#X obj 971 88 simpler;
#X obj 1061 61 r samplexinit;
#X obj 971 285 throw~ processing;
#X obj 971 263 *~ 0.5;
#X obj 971 13 r fib34;
#X obj 971 37 random 8;
#X connect 0 0 10 0;
#X connect 1 0 0 1;
#X connect 2 0 11 0;
#X connect 3 0 2 1;
#X connect 4 0 12 0;
#X connect 5 0 4 1;
#X connect 6 0 20 0;
#X connect 14 0 15 0;
#X connect 16 0 14 1;
#X connect 17 0 18 0;
#X connect 19 0 17 1;
#X connect 20 0 22 0;
#X connect 21 0 7 0;
#X connect 21 1 8 0;
#X connect 21 2 9 0;
#X connect 21 2 7 0;
#X connect 21 3 8 0;