#N canvas 2 95 956 984 10;
#X declare -path bf-util;
#X obj 1105 28 cnv 15 100 60 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 535 275 meter;
#X obj 504 220 tgl 30 0 \$0-onoff-s \$0-onoff-r empty 17 7 0 10 -262144
-1 -1 0 1;
#X obj 663 262 bng 15 250 50 0 \$0-nudge--s \$0-nudge--r -- 2 -5 0
10 -261682 -1 -1;
#X text 578 276 sub1;
#X text 622 276 sub2;
#X text 677 276 nudge;
#X obj 542 240 hsl 128 10 0 300 0 0 \$0-ask-slider-s \$0-ask-slider-r
empty -2 -8 0 10 -228856 -1 -1 7056 1;
#X obj 682 262 bng 15 250 50 0 \$0-nudge-s \$0-nudge-r - 5 -5 0 10
-261682 -1 -1;
#X obj 701 262 bng 15 250 50 0 \$0-nudge+s \$0-nudge+r + 5 -5 0 10
-261682 -1 -1;
#X obj 720 262 bng 15 250 50 0 \$0-nudge++s \$0-nudge++r ++ 2 -5 0
10 -261682 -1 -1;
#X obj 701 238 tgl 15 0 \$0-grant-s \$0-grant-r empty 17 7 0 10 -261234
-1 -1 0 1;
#X obj 682 238 bng 15 250 50 0 \$0-1xgrant-s \$0-1xgrant-r empty 17
7 0 10 -204786 -1 -1;
#X obj 286 673 phasor~;
#X obj 286 650 line~;
#X obj 286 696 +~;
#X obj 286 719 wrap~;
#X msg 418 505 0;
#X text 447 505 reset;
#X floatatom 579 259 5 1 1000 0 - #0-sub1-r #0-sub1-s;
#X obj 286 601 expr $f1/60;
#X obj 354 365 tgl 20 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X text 377 366 on/off;
#X msg 386 505 0;
#X obj 286 568 float;
#X msg 286 626 \$1 1;
#X obj 161 820 wrap~;
#X obj 161 847 threshold~ 0.5 0 1 0.1 1;
#X obj 364 849 threshold~ 0.5 0 1 0.1 1;
#X obj 364 799 +~ 0.5;
#X obj 364 823 wrap~;
#X obj 161 794 +~ 0.5;
#X obj 386 454 t b b;
#X text 391 649 reset phasor phase;
#X obj 87 448 spigot;
#X obj 542 219 hsl 128 15 0 300 0 0 \$0-bpmslider-s \$0-bpmslider-r
empty -2 -8 0 10 -262144 -1 -1 7056 0;
#X floatatom 682 218 5 0 1000 0 - #0-bpm-r #0-bpm-s;
#X msg 1034 602 set \$1;
#X obj 87 424 f;
#N canvas 1266 776 896 554 nudgephase 0;
#X obj 276 259 f 0.1;
#X obj 248 102 t b b;
#X obj 191 101 t b b;
#X obj 426 98 t b b;
#X obj 348 98 t b b;
#X obj 332 259 + 0;
#X msg 224 134 0.1;
#X msg 458 129 -0.1;
#X obj 187 61 inlet;
#X obj 243 63 inlet;
#X obj 348 65 inlet;
#X obj 432 62 inlet;
#X obj 275 299 outlet;
#X text 430 39 nudge--;
#X text 346 40 nudge-;
#X text 239 41 nudge+;
#X text 176 39 nudge++;
#X obj 61 61 inlet;
#X text 60 37 phase offset;
#X msg 379 131 -0.02;
#X msg 280 135 0.02;
#X connect 0 0 5 0;
#X connect 0 0 12 0;
#X connect 1 0 0 0;
#X connect 1 1 20 0;
#X connect 2 0 0 0;
#X connect 2 1 6 0;
#X connect 3 0 0 0;
#X connect 3 1 7 0;
#X connect 4 0 0 0;
#X connect 4 1 19 0;
#X connect 5 0 0 1;
#X connect 6 0 5 1;
#X connect 7 0 5 1;
#X connect 8 0 2 0;
#X connect 9 0 1 0;
#X connect 10 0 4 0;
#X connect 11 0 3 0;
#X connect 17 0 0 0;
#X connect 19 0 5 1;
#X connect 20 0 5 1;
#X restore 418 601 pd nudgephase;
#X obj 364 924 outlet;
#X obj 161 923 outlet;
#X text 217 924 beat;
#X obj 581 850 threshold~ 0.5 0 1 0.1 1;
#X obj 581 800 +~ 0.5;
#X obj 581 824 wrap~;
#X obj 581 924 outlet;
#X obj 364 775 *~ 2;
#X floatatom 621 259 5 1 1000 0 - #0-sub2-r #0-sub2-s;
#X obj 22 756 f 0;
#X obj 56 793 + 1;
#X obj 22 843 sel 0;
#X obj 581 776 *~ 3;
#X obj 354 391 sel 1;
#X msg 52 756 0;
#X floatatom 537 259 5 1 1000 0 - #0-meter-r #0-meter-s;
#X obj 22 819 mod 4;
#X obj 22 925 outlet;
#X text 73 925 downbeat;
#X text 415 926 subdiv1;
#X text 637 925 subdiv2;
#X obj 439 49 inlet;
#X obj 321 48 inlet;
#X text 370 50 On/Off;
#X obj 550 49 inlet;
#X text 595 51 Meter;
#X obj 667 49 inlet;
#X text 712 51 Subdivision1;
#X obj 822 50 inlet;
#X text 867 52 Subdivision2;
#X obj 810 922 outlet;
#X obj 910 175 inlet;
#X obj 913 344 loadbang;
#X obj 1668 99 symbol \$1;
#X text 1745 98 instrument name;
#X obj 1667 147 symbol \$2;
#X text 1749 146 clock name;
#X symbolatom 1667 170 10 0 0 0 - - -;
#X symbolatom 1668 122 10 0 0 0 - - -;
#X obj 1637 66 loadbang;
#X obj 86 224 spigot;
#X obj 86 247 t b 0;
#X msg 86 270 1;
#X obj 86 200 spigot;
#X obj 913 375 int \$3;
#X obj 1016 375 int \$4;
#X obj 1104 379 int \$5;
#X obj 312 455 t b b b b;
#X text 863 921 controls out;
#X obj 763 205 vradio 15 1 0 7 \$0-tempomult-s \$0-tempomult-r empty
0 -8 0 10 -262144 -1 -1 3;
#X text 779 218 x3;
#X text 779 234 x2;
#X text 779 265 /2;
#X text 779 280 /3;
#X text 779 203 x4;
#X text 779 294 /4;
#X text 786 249 1;
#X text 82 358 tempo in BPM;
#N canvas 0 23 762 502 tempoMult 0;
#X msg 176 227 4;
#X msg 208 226 3;
#X msg 242 225 2;
#X msg 274 225 1;
#X msg 306 225 0.5;
#X obj 429 176 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X obj 359 198 expr 1.0/3.0;
#X obj 341 225 f;
#X obj 359 173 loadbang;
#X msg 371 225 0.25;
#X obj 188 322 *;
#X obj 198 291 t b f;
#X obj 176 193 sel 0 1 2 3 4 5 6;
#X obj 273 107 inlet;
#X obj 60 65 inlet;
#X text 323 108 the index from the tempo-multiply radio-button;
#X text 112 65 the nominal tempo(in BPM);
#X obj 188 345 outlet;
#X connect 0 0 11 0;
#X connect 1 0 11 0;
#X connect 2 0 11 0;
#X connect 3 0 11 0;
#X connect 4 0 11 0;
#X connect 5 0 6 0;
#X connect 6 0 7 1;
#X connect 7 0 11 0;
#X connect 8 0 6 0;
#X connect 9 0 11 0;
#X connect 10 0 17 0;
#X connect 11 0 10 0;
#X connect 11 1 10 1;
#X connect 12 0 0 0;
#X connect 12 1 1 0;
#X connect 12 2 2 0;
#X connect 12 3 3 0;
#X connect 12 4 4 0;
#X connect 12 5 7 0;
#X connect 12 6 9 0;
#X connect 13 0 12 0;
#X connect 14 0 10 0;
#X restore 87 402 pd tempoMult;
#X obj 913 430 loadbang;
#X msg 913 501 3;
#X obj 89 755 r \$0-meter-s;
#X obj 913 398 s \$0-meter-r;
#X obj 1016 399 s \$0-sub1-r;
#X obj 389 751 r \$0-sub1-s;
#X obj 606 753 r \$0-sub2-s;
#X obj 1104 401 s \$0-sub2-r;
#X obj 575 544 r \$0-nudge--s;
#X obj 575 521 r \$0-nudge-s;
#X obj 575 495 r \$0-nudge+s;
#X obj 575 468 r \$0-nudge++s;
#X obj 911 602 s \$0-bpm-r;
#X obj 87 378 r \$0-bpm-s;
#X obj 911 578 r \$0-bpmslider-s;
#X obj 913 527 s \$0-tempomult-r;
#X obj 320 71 s \$0-onoff-r;
#X obj 354 340 r \$0-onoff-s;
#X obj 168 378 r \$0-tempomult-s;
#X text 981 344 initialize meter \, sub1 \, sub2;
#X obj 439 72 s \$0-bpm-r;
#X obj 570 296 bng 15 250 50 0 \$0-beat-bang-s \$0-beat-bang-r beat
17 7 1 10 -262144 -1 -1;
#X obj 642 296 bng 15 250 50 0 \$0-sub1-bang-s \$0-sub1-bang-r sub1
17 7 1 10 -262144 -1 -1;
#X obj 715 296 bng 15 250 50 0 \$0-sub2-bang-s \$0-sub2-bang-r sub2
17 7 1 10 -262144 -1 -1;
#X obj 550 73 s \$0-meter-r;
#X obj 667 74 s \$0-sub1-r;
#X obj 822 75 s \$0-sub2-r;
#X text 501 275 sync;
#X obj 505 260 tgl 15 0 \$0-sync-s \$0-sync-r empty 17 7 0 10 -262144
-1 -1 0 1;
#X obj 122 269 s \$0-sync-r;
#X obj 139 200 r \$0-sync-s;
#X text 717 236 <grant;
#X text 722 218 bpm;
#X obj 1034 578 r \$0-bpm-s;
#X obj 1034 626 s \$0-bpmslider-r;
#X text 914 553 BPM slider & number box interactions;
#X text 482 51 BPM;
#X obj 581 873 s \$0-sub2-bang-r;
#X obj 581 899 r \$0-sub2-bang-s;
#X obj 364 873 s \$0-sub1-bang-r;
#X obj 364 899 r \$0-sub1-bang-s;
#X obj 161 871 s \$0-beat-bang-r;
#X obj 161 897 r \$0-beat-bang-s;
#X obj 155 678 s \$0-down-bang-r;
#X obj 21 903 r \$0-down-bang-s;
#X obj 22 727 r \$0-beat-bang-s;
#X text 904 130 A messaging system for receiving commands;
#X text 910 311 Initializations from arguments;
#X text 904 154 Controls inlet;
#X msg 332 649 0.99999;
#X text 117 425 actual beat tempo;
#N canvas 237 598 1681 481 controlMessageHandler 0;
#X obj 457 99 inlet;
#X text 851 206 nudge;
#X obj 852 226 route -- - + ++;
#X obj 853 336 s \$0-nudge++r;
#X obj 852 254 s \$0-nudge--r;
#X obj 853 283 s \$0-nudge-r;
#X obj 853 308 s \$0-nudge+r;
#X obj 73 221 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 73 241 s \$0-onoff-r;
#X text 77 192 on/off;
#X floatatom 198 220 5 0 0 0 - - -;
#X obj 198 243 s \$0-bpmslider-r;
#X text 196 197 bpm;
#X floatatom 320 221 5 0 0 0 - - -;
#X text 318 198 meter;
#X obj 320 244 s \$0-meter-r;
#X floatatom 417 222 5 0 0 0 - - -;
#X obj 417 245 s \$0-sub1-r;
#X text 415 199 sub1;
#X floatatom 506 223 5 0 0 0 - - -;
#X text 504 200 sub2;
#X obj 506 246 s \$0-sub2-r;
#X text 607 200 tempoMult;
#X obj 604 221 route /4 /3 /2 x1 x2 x3 x4;
#X obj 604 287 s \$0-tempomult-r;
#X msg 670 247 4;
#X msg 704 247 3;
#X msg 604 247 6;
#X msg 637 247 5;
#X msg 773 248 1;
#X msg 808 249 0;
#X msg 738 247 2;
#X obj 980 228 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 980 248 s \$0-sync-r;
#X text 978 206 sync;
#X obj 1080 228 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1
0 1;
#X text 1078 206 grant bpm;
#X obj 1080 248 s \$0-grant-r;
#X text 1182 208 grant bpm;
#X obj 1184 250 s \$0-1xgrant-r;
#X obj 1185 228 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X obj 457 156 route onOff bpm meter sub1 sub2 tempoMult nudge sync
grant grant1x syncDownbeat, f 90;
#X obj 1324 251 s \$0-syncDownbeat;
#X text 1326 231 sync now;
#X text 451 49 Route incoming control messages;
#X connect 0 0 41 0;
#X connect 2 0 4 0;
#X connect 2 1 5 0;
#X connect 2 2 6 0;
#X connect 2 3 3 0;
#X connect 7 0 8 0;
#X connect 10 0 11 0;
#X connect 13 0 15 0;
#X connect 16 0 17 0;
#X connect 19 0 21 0;
#X connect 23 0 27 0;
#X connect 23 1 28 0;
#X connect 23 2 25 0;
#X connect 23 3 26 0;
#X connect 23 4 31 0;
#X connect 23 5 29 0;
#X connect 23 6 30 0;
#X connect 25 0 24 0;
#X connect 26 0 24 0;
#X connect 27 0 24 0;
#X connect 28 0 24 0;
#X connect 29 0 24 0;
#X connect 30 0 24 0;
#X connect 31 0 24 0;
#X connect 32 0 33 0;
#X connect 35 0 37 0;
#X connect 40 0 39 0;
#X connect 41 0 7 0;
#X connect 41 1 10 0;
#X connect 41 2 13 0;
#X connect 41 3 16 0;
#X connect 41 4 19 0;
#X connect 41 5 23 0;
#X connect 41 6 2 0;
#X connect 41 7 32 0;
#X connect 41 8 35 0;
#X connect 41 9 40 0;
#X connect 41 10 42 0;
#X restore 910 207 pd controlMessageHandler;
#X text 909 241 ToDo: add downbeat sync incoming message;
#X text 503 173 The GUI;
#X text 1637 42 not used;
#N canvas 336 399 1582 680 controlMessagesOut 0;
#X obj 415 567 outlet;
#X msg 628 165 nudge +;
#X msg 627 109 nudge ++;
#X msg 628 216 nudge -;
#X msg 628 274 nudge --;
#X msg 148 109 bpm \$1;
#X text 468 566 controls out;
#X obj 628 250 r \$0-nudge--s;
#X obj 628 192 r \$0-nudge-s;
#X obj 628 142 r \$0-nudge+s;
#X obj 627 84 r \$0-nudge++s;
#X obj 148 84 r \$0-bpm-s;
#X msg 51 109 onOff \$1;
#X obj 51 84 r \$0-onoff-s;
#X msg 230 109 meter \$1;
#X obj 230 84 r \$0-meter-s;
#X msg 322 109 sub1 \$1;
#X obj 322 84 r \$0-sub1-s;
#X obj 408 84 r \$0-sub2-s;
#X msg 408 109 sub2 \$1;
#X obj 497 84 r \$0-tempomult-s;
#N canvas 217 536 527 485 routeTempoMult 0;
#X obj 177 45 inlet;
#X obj 168 339 outlet;
#X msg 265 196 tempoMult x1;
#X msg 278 222 tempoMult /2;
#X msg 255 167 tempoMult x2;
#X msg 238 140 tempoMult x3;
#X msg 224 112 tempoMult x4;
#X msg 287 250 tempoMult /3;
#X msg 282 280 tempoMult /4;
#X obj 222 82 sel 0 1 2 3 4 5 6;
#X connect 0 0 9 0;
#X connect 2 0 1 0;
#X connect 3 0 1 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 1 0;
#X connect 7 0 1 0;
#X connect 8 0 1 0;
#X connect 9 0 6 0;
#X connect 9 1 5 0;
#X connect 9 2 4 0;
#X connect 9 3 2 0;
#X connect 9 4 3 0;
#X connect 9 5 7 0;
#X connect 9 6 8 0;
#X restore 497 113 pd routeTempoMult;
#X text 53 60 on/off;
#X text 144 55 bpm;
#X text 624 61 nudge phase;
#X text 229 58 meter;
#X text 322 60 subdiv1;
#X text 407 60 subdiv2;
#X text 492 59 tempo mult;
#X text 767 58 sync on downbeat;
#X text 910 62 grantBpm;
#X text 1032 68 1xGrantBpm;
#X obj 769 104 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X msg 769 124 sync \$1;
#X obj 917 106 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X msg 917 126 grant \$1;
#X msg 1041 130 grant1x;
#X obj 1041 111 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X obj 769 79 r \$0-sync-s;
#X obj 917 82 r \$0-grant-s;
#X obj 1040 89 r \$0-1xgrant-s;
#X text 120 29 A system for sending commands out;
#X obj 1163 91 r \$0-down-bang-s;
#X obj 1163 116 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X msg 1163 136 syncDownbeat;
#X text 496 141 Don't send;
#X text 400 141 Don't send;
#X text 310 140 Don't send;
#X text 217 140 Don't send;
#X text 755 146 Don't send;
#X text 48 136 Don't send;
#X text 904 150 Don't send;
#X text 1033 153 Don't send;
#X text 1157 165 Send every downbeat for syncing any follower clocks
;
#X connect 5 0 0 0;
#X connect 7 0 4 0;
#X connect 8 0 3 0;
#X connect 9 0 1 0;
#X connect 10 0 2 0;
#X connect 11 0 5 0;
#X connect 13 0 12 0;
#X connect 15 0 14 0;
#X connect 17 0 16 0;
#X connect 18 0 19 0;
#X connect 20 0 21 0;
#X connect 32 0 33 0;
#X connect 34 0 35 0;
#X connect 37 0 36 0;
#X connect 38 0 32 0;
#X connect 39 0 34 0;
#X connect 40 0 37 0;
#X connect 42 0 43 0;
#X connect 43 0 44 0;
#X connect 44 0 0 0;
#X restore 810 883 pd controlMessagesOut;
#X text 805 855 A messaging system for sending commands out;
#X obj 86 170 r \$0-syncDownbeat;
#N canvas 2 95 956 984 communicateWithCollabWin 1;
#X obj 98 140 r bf-fromCollabWin-\$1-\$2-onoff;
#X obj 98 163 s \$0-onoff-r;
#X obj 97 116 s bf-toCollabWin-\$1-\$2-onoff;
#X obj 97 94 r \$0-onoff-s;
#X obj 103 233 r \$0-bpm-s;
#X obj 103 301 s \$0-bpm-r;
#X obj 103 255 s bf-toCollabWin-\$1-\$2-bpm;
#X obj 103 278 r bf-fromCollabWin-\$1-\$2-bpm;
#X text 97 72 On/Off;
#X text 103 213 Tempo/BPM;
#X text 448 19 Send & receive messages from the collab window;
#X text 104 357 TempoMult;
#X obj 104 535 s \$0-tempomult-r;
#X obj 106 386 r \$0-tempomult-s;
#X text 358 445 <-to collab window;
#X text 354 482 <-from collab window;
#N canvas 0 23 712 422 routeTempoMultMsgToIndx 0;
#X obj 135 110 route /4 /3 /2 x1 x2 x3 x4;
#X msg 201 136 4;
#X msg 235 136 3;
#X msg 135 136 6;
#X msg 168 136 5;
#X msg 269 136 2;
#X obj 135 176 outlet;
#X obj 135 58 inlet;
#X msg 305 137 1;
#X msg 343 137 0;
#X text 132 39 map tempo multiplier message to radio-button index;
#X obj 135 82 route tempoMult;
#X connect 0 0 3 0;
#X connect 0 1 4 0;
#X connect 0 2 1 0;
#X connect 0 3 2 0;
#X connect 0 4 5 0;
#X connect 0 5 8 0;
#X connect 0 6 9 0;
#X connect 1 0 6 0;
#X connect 2 0 6 0;
#X connect 3 0 6 0;
#X connect 4 0 6 0;
#X connect 5 0 6 0;
#X connect 7 0 11 0;
#X connect 8 0 6 0;
#X connect 9 0 6 0;
#X connect 11 0 0 0;
#X restore 104 509 pd routeTempoMultMsgToIndx;
#N canvas 217 536 527 485 routeIndxToTempoMultMsg 0;
#X obj 177 45 inlet;
#X obj 168 339 outlet;
#X msg 265 196 tempoMult x1;
#X msg 278 222 tempoMult /2;
#X msg 255 167 tempoMult x2;
#X msg 238 140 tempoMult x3;
#X msg 224 112 tempoMult x4;
#X msg 287 250 tempoMult /3;
#X msg 282 280 tempoMult /4;
#X obj 222 82 sel 0 1 2 3 4 5 6;
#X connect 0 0 9 0;
#X connect 2 0 1 0;
#X connect 3 0 1 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 1 0;
#X connect 7 0 1 0;
#X connect 8 0 1 0;
#X connect 9 0 6 0;
#X connect 9 1 5 0;
#X connect 9 2 4 0;
#X connect 9 3 2 0;
#X connect 9 4 3 0;
#X connect 9 5 7 0;
#X connect 9 6 8 0;
#X restore 106 415 pd routeIndxToTempoMultMsg;
#X text 320 90 <-from bf-clock UI;
#X text 323 141 <-from collabWindow;
#X text 321 165 <- to the bf-clock UI;
#X text 319 115 <-to collabWindow & bf-own-clock;
#X text 230 387 <-from the bf-clock UI;
#X obj 106 442 s bf-toCollabWin-\$1-\$2-tempomult;
#X obj 104 481 r bf-fromCollabWin-\$1-\$2-tempomult;
#X text 231 535 <-to the bf-clock UI;
#X obj 671 114 r \$0-meter-s;
#X text 671 88 Meter;
#X obj 671 140 s bf-toCollabWin-\$1-\$2-meter;
#X obj 671 169 r bf-fromCollabWin-\$1-\$2-meter;
#X obj 671 192 s \$0-meter-r;
#X text 895 139 <- to bf-own-clock;
#X text 896 171 <- from bf-own-clock;
#X text 895 110 <- from bf-clock UI;
#X text 896 197 <- to bf-clock UI;
#X text 895 282 <- to bf-own-clock;
#X text 896 314 <- from bf-own-clock;
#X text 895 253 <- from bf-clock UI;
#X text 896 340 <- to bf-clock UI;
#X text 671 231 Subdivision 1;
#X obj 671 257 r \$0-sub1-s;
#X obj 671 283 s bf-toCollabWin-\$1-\$2-sub1;
#X obj 671 312 r bf-fromCollabWin-\$1-\$2-sub1;
#X obj 671 335 s \$0-sub1-r;
#X text 895 420 <- to bf-own-clock;
#X text 896 452 <- from bf-own-clock;
#X text 895 391 <- from bf-clock UI;
#X text 896 478 <- to bf-clock UI;
#X text 671 369 Subdivision 2;
#X obj 671 395 r \$0-sub2-s;
#X obj 671 421 s bf-toCollabWin-\$1-\$2-sub2;
#X obj 671 450 r bf-fromCollabWin-\$1-\$2-sub2;
#X obj 671 473 s \$0-sub2-r;
#X text 1051 612 <- to bf-own-clock;
#X text 1055 644 <- from bf-own-clock;
#X text 1058 545 <- from bf-clock UI;
#X text 1074 713 <- to bf-clock UI;
#X msg 766 568 nudge +;
#X msg 665 570 nudge ++;
#X msg 860 569 nudge -;
#X msg 953 569 nudge --;
#X obj 953 545 r \$0-nudge--s;
#X obj 860 545 r \$0-nudge-s;
#X obj 766 545 r \$0-nudge+s;
#X obj 665 545 r \$0-nudge++s;
#X obj 664 603 s bf-toCollabWin-\$1-\$2-nudge;
#X text 668 519 Nudge buttons;
#X obj 664 686 route -- - + ++;
#X obj 951 713 s \$0-nudge++r;
#X obj 664 714 s \$0-nudge--r;
#X obj 764 714 s \$0-nudge-r;
#X obj 858 713 s \$0-nudge+r;
#X obj 664 662 route nudge;
#X obj 664 638 r bf-fromCollabWin-\$1-\$2-nudge;
#X text 356 646 <-to collab window;
#X text 360 680 <-from collab window;
#X text 356 621 <-from the bf-clock UI;
#X text 358 707 <-to the bf-clock UI;
#X text 102 589 Grant;
#X obj 104 618 r \$0-grant-s;
#X obj 104 643 s bf-toCollabWin-\$1-\$2-grant;
#X obj 105 680 r bf-fromCollabWin-\$1-\$2-grant;
#X obj 105 706 s \$0-grant-r;
#X text 359 804 <-to collab window;
#X text 363 838 <-from collab window;
#X text 359 779 <-from the bf-clock UI;
#X text 361 865 <-to the bf-clock UI;
#X text 105 747 1x grant;
#X text 107 914 ToDo: Implement the logic of grant and 1x grant! Currently
this code just sends messages between bf-clock and bf-own-clock;
#X obj 107 776 r \$0-1xgrant-s;
#X obj 108 864 s \$0-1xgrant-r;
#X obj 107 801 s bf-toCollabWin-\$1-\$2-1xgrant;
#X obj 108 838 r bf-fromCollabWin-\$1-\$2-1xgrant;
#X text 663 774 The bangs (down \, beat \, sub1 \, sub2);
#X obj 664 862 s bf-toCollabWin-\$1-\$2-bangs;
#X obj 664 806 r \$0-down-bang-s;
#X obj 788 806 r \$0-beat-bang-s;
#X msg 664 830 downBang;
#X msg 788 830 beatBang;
#X obj 908 805 r \$0-sub1-bang-s;
#X obj 1030 805 r \$0-sub2-bang-s;
#X msg 908 829 sub1Bang;
#X msg 1030 829 sub2Bang;
#X obj 663 936 route downBang beatBang sub1Bang sub2Bang;
#X obj 663 908 r bf-fromCollabWin-\$1-\$2-bangs;
#X text 661 995 The bangs from bf-own-clock get sent directly to the
bf-clock outputs. They do not trigger the bangs in the bf-clock UI
\, because (I believe) this would make an infinite loop of bangs.;
#X text 107 989 ToDo:;
#X obj 663 968 s \$0-down-bang-r;
#X obj 784 968 s \$0-beat-bang-r;
#X obj 916 967 s \$0-sub1-bang-r;
#X obj 1052 966 s \$0-sub2-bang-r;
#X obj 208 71 r bf-toCollabWin-\$1-\$2-set;
#X obj 208 95 route 0;
#X obj 184 206 r bf-toCollabWin-\$1-\$2-set;
#X obj 184 230 route 1;
#X obj 414 257 r bf-toCollabWin-\$1-\$2-ask;
#X obj 414 281 route 1;
#X obj 415 305 s bf-toCollabWin-\$1-\$2-askslider;
#X text 414 234 Ask;
#X text 1289 85 Sync;
#X obj 1291 110 r \$0-sync-s;
#X obj 1291 132 s bf-toCollabWin-\$1-\$2-sync;
#X obj 1292 156 r bf-fromCollabWin-\$1-\$2-sync;
#X obj 1292 179 s \$0-sync-r;
#X obj 771 84 r bf-toCollabWin-\$1-\$2-set;
#X obj 771 108 route 4;
#X obj 778 224 r bf-toCollabWin-\$1-\$2-set;
#X obj 778 248 route 5;
#X obj 775 368 r bf-toCollabWin-\$1-\$2-set;
#X obj 775 392 route 6;
#X obj 401 373 r bf-toCollabWin-\$1-\$2-set;
#X obj 401 397 route 7;
#X connect 0 0 1 0;
#X connect 3 0 2 0;
#X connect 4 0 6 0;
#X connect 7 0 5 0;
#X connect 13 0 17 0;
#X connect 16 0 12 0;
#X connect 17 0 23 0;
#X connect 24 0 16 0;
#X connect 26 0 28 0;
#X connect 29 0 30 0;
#X connect 40 0 41 0;
#X connect 42 0 43 0;
#X connect 49 0 50 0;
#X connect 51 0 52 0;
#X connect 57 0 65 0;
#X connect 58 0 65 0;
#X connect 59 0 65 0;
#X connect 60 0 65 0;
#X connect 61 0 60 0;
#X connect 62 0 59 0;
#X connect 63 0 57 0;
#X connect 64 0 58 0;
#X connect 67 0 69 0;
#X connect 67 1 70 0;
#X connect 67 2 71 0;
#X connect 67 3 68 0;
#X connect 72 0 67 0;
#X connect 73 0 72 0;
#X connect 79 0 80 0;
#X connect 81 0 82 0;
#X connect 89 0 91 0;
#X connect 92 0 90 0;
#X connect 95 0 97 0;
#X connect 96 0 98 0;
#X connect 97 0 94 0;
#X connect 98 0 94 0;
#X connect 99 0 101 0;
#X connect 100 0 102 0;
#X connect 101 0 94 0;
#X connect 102 0 94 0;
#X connect 103 0 107 0;
#X connect 103 1 108 0;
#X connect 103 2 109 0;
#X connect 103 3 110 0;
#X connect 104 0 103 0;
#X connect 111 0 112 0;
#X connect 112 0 2 0;
#X connect 113 0 114 0;
#X connect 114 0 6 0;
#X connect 115 0 116 0;
#X connect 116 0 117 0;
#X connect 120 0 121 0;
#X connect 122 0 123 0;
#X connect 124 0 125 0;
#X connect 125 0 28 0;
#X connect 126 0 127 0;
#X connect 127 0 41 0;
#X connect 128 0 129 0;
#X connect 129 0 50 0;
#X connect 130 0 131 0;
#X connect 131 0 17 0;
#X restore 1313 161 pd communicateWithCollabWin;
#X text 1308 133 Communication with CollabWin (bf-own-clock);
#X text 983 431 Init tempoMult to 1;
#X text 1314 218 Communication with boeuf;
#N canvas 2 95 956 984 communicateWithBoeuf 0;
#X obj 72 100 delay 0;
#X obj 72 47 t b a b b;
#X obj 85 73 random 1000;
#X obj 72 29 r bf-declare;
#X obj 173 33 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X obj 73 168 s bf-toBoeufDec;
#X obj 198 69 delay 2000;
#X obj 73 147 bf-util/bf-2osc \$1 clocks \$2 declare fsf;
#X obj 112 864 r \$0-bpm-s;
#X obj 518 230 route \$1;
#X obj 518 272 route \$2, f 14;
#X obj 518 295 route set ask watch_bus ask_bus grant grab;
#X obj 518 209 r bf-fromBoeuf;
#X msg 112 888 1 \$1;
#X obj 17 863 r \$0-onoff-s;
#X msg 17 887 0 \$1;
#X obj 518 251 route clocks;
#X obj 105 413 bf-util/bf-param-route \$1 clocks \$2 watch_bus;
#X obj 76 386 r bf-watch_bus-\$1;
#X obj 76 440 route;
#X obj 79 611 t a b;
#X obj 398 630 symbol \$1_watched;
#X obj 985 862 route 0 1;
#X obj 101 489 unpack f s;
#X obj 108 563 *;
#X msg 294 551 1;
#X msg 188 543 120;
#X msg 239 546 300;
#X obj 190 520 select bang bool cont midi clck;
#X msg 80 587 1 \$1;
#X obj 985 837 r bf-toGui-\$1-\$2-set;
#X obj 20 934 s bf-fromGui-\$1-\$2-set;
#X obj 903 941 s \$0-onoff-r;
#X obj 76 467 route 0 1 2;
#X obj 400 528 s \$0-syncDownbeat;
#X obj 400 498 t b;
#X obj 208 863 r \$0-down-bang-s;
#X msg 208 887 2 1;
#X obj 627 467 route 1;
#X obj 627 494 s \$0-ask-slider-r;
#X obj 868 615 > 0;
#X obj 817 640 spigot;
#X obj 1614 644 s bf-toBoeufPar;
#X obj 834 683 symbol \$1_asked;
#X obj 802 660 t a b;
#X obj 692 363 t a a;
#X obj 881 568 r \$0-grant-s;
#X obj 868 592 bf-util/bf-param-route \$1 clocks \$2 grant;
#X obj 1315 623 bf-util/bf-param-route \$1 clocks \$2 ask_bus;
#X msg 329 889 3 1;
#X obj 329 865 r \$0-beat-bang-s;
#X obj 449 864 r \$0-meter-s;
#X msg 449 888 4 \$1;
#X text 122 841 SEND VALUES TO BOEUF THROUGH THE SET MESSAGE;
#X obj 542 863 r \$0-sub1-s;
#X msg 542 887 5 \$1;
#X msg 626 886 6 \$1;
#X obj 626 862 r \$0-sub2-s;
#X obj 711 861 r \$0-tempomult-s;
#X msg 711 885 7 \$1;
#X obj 72 126 list append 8 clck \$3;
#X obj 1262 941 s bf-ask_bus-\$1;
#X obj 1261 735 spigot;
#X obj 1315 685 t f f;
#X obj 1294 709 > 0;
#X obj 1261 779 unpack f f;
#X obj 1262 864 float 0;
#X obj 1262 919 pack f f f s;
#X obj 1371 784 t f b;
#X obj 417 435 s bf-toBoeufPar;
#X obj 398 702 s bf-toBoeufPar;
#X obj 1152 623 s bf-toBoeufPar;
#X obj 81 194 loadbang;
#X obj 30 280 spigot 1;
#X obj 81 217 symbol \$4;
#X obj 81 240 select bang;
#X msg 81 263 0;
#X obj 30 302 s bf-request-\$1-\$2-set;
#X obj 190 256 s bf-request-\$1-\$2-grant;
#X obj 222 274 s bf-request-\$1-\$2-watch_bus;
#X obj 242 292 s bf-request-\$1-\$2-ask_bus;
#X obj 240 221 t b b b b;
#X obj 1360 865 symbol clck;
#X obj 1371 761 loadbang;
#X obj 1328 849 / 300;
#X obj 1430 772 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X obj 1261 815 select 1;
#X obj 1262 841 t b b;
#X msg 1293 892 1;
#X obj 1400 109 bf-util/bf-param-route \$1 parameters \$2 grab;
#X obj 1400 132 t b;
#X obj 1400 156 s bf-fromQueryAll-\$1-\$2-ask;
#X obj 1398 78 s bf-fromGui-\$1-\$2-grab;
#X obj 1398 54 r \$0-1xgrant-s;
#X obj 608 578 r bf-toQueryAll-\$1-\$2-ask;
#X obj 1131 100 loadbang;
#X obj 1101 173 unpack f f;
#X obj 1101 214 swap;
#X obj 1166 217 array define \$1-\$1/\$2-values;
#X obj 1101 236 tabwrite \$1-\$1/\$2-values;
#X obj 1131 146 value \$1-\$1/\$2-nbvalues;
#X msg 1013 235 set \$1 \$2;
#X obj 1159 198 / 1;
#X obj 1013 174 unpack f f;
#X obj 1177 179 r \$1-\$2-maxval;
#X obj 1013 214 pack f f;
#X obj 1011 149 r \$1-\$2-maxval;
#X obj 1013 256 s to-\$1-\$1/\$2-connections;
#X obj 1055 192 / 1;
#X obj 1399 205 delay 200;
#X obj 1399 184 r \$1-refreshOthersNames;
#X obj 1399 228 s bf-request-\$1-\$2-set;
#X text 1042 82 STORE ALL CLOCK VALUES;
#X obj 1131 123 float 8;
#X msg 1090 872 set \$1;
#X obj 79 653 bf-util/bf-param-pair-route \$1 clocks \$2 set 8;
#X obj 786 486 bf-util/bf-param-pair-route \$1 clocks \$2 ask 8;
#X obj 627 443 r bf-toGui-\$1-\$2-ask;
#X obj 904 971 s \$0-bpmslider-r;
#X obj 1048 942 s \$0-bpm-r;
#X obj 1014 909 t a a;
#X text 906 997 LD edit: fixed problem following tempo from watch.
(Hopefully didn't create other bugs.);
#X connect 0 0 60 0;
#X connect 1 0 0 0;
#X connect 1 2 2 0;
#X connect 1 3 6 0;
#X connect 2 0 0 1;
#X connect 3 0 1 0;
#X connect 4 0 1 0;
#X connect 6 0 81 0;
#X connect 7 0 5 0;
#X connect 8 0 13 0;
#X connect 9 0 16 0;
#X connect 10 0 11 0;
#X connect 11 1 45 0;
#X connect 11 2 17 1;
#X connect 11 3 48 1;
#X connect 11 4 47 1;
#X connect 12 0 9 0;
#X connect 13 0 31 0;
#X connect 14 0 15 0;
#X connect 15 0 31 0;
#X connect 16 0 10 0;
#X connect 17 0 19 1;
#X connect 17 1 69 0;
#X connect 18 0 19 0;
#X connect 19 0 33 0;
#X connect 20 0 115 0;
#X connect 20 1 21 0;
#X connect 21 0 115 2;
#X connect 22 1 120 0;
#X connect 23 0 24 0;
#X connect 23 1 28 0;
#X connect 24 0 29 0;
#X connect 25 0 24 1;
#X connect 26 0 24 1;
#X connect 27 0 24 1;
#X connect 28 1 26 0;
#X connect 28 2 27 0;
#X connect 28 3 27 0;
#X connect 28 4 25 0;
#X connect 29 0 20 0;
#X connect 30 0 22 0;
#X connect 33 1 23 0;
#X connect 33 2 35 0;
#X connect 35 0 34 0;
#X connect 36 0 37 0;
#X connect 37 0 31 0;
#X connect 38 0 39 0;
#X connect 40 0 41 1;
#X connect 41 0 44 0;
#X connect 44 0 115 0;
#X connect 44 1 43 0;
#X connect 45 1 116 1;
#X connect 46 0 47 0;
#X connect 47 0 40 0;
#X connect 47 1 71 0;
#X connect 48 0 63 0;
#X connect 48 1 42 0;
#X connect 49 0 31 0;
#X connect 50 0 49 0;
#X connect 51 0 52 0;
#X connect 52 0 31 0;
#X connect 54 0 55 0;
#X connect 55 0 31 0;
#X connect 56 0 31 0;
#X connect 57 0 56 0;
#X connect 58 0 59 0;
#X connect 59 0 31 0;
#X connect 60 0 7 0;
#X connect 62 0 65 0;
#X connect 63 0 64 0;
#X connect 63 1 66 1;
#X connect 64 0 62 1;
#X connect 65 0 86 0;
#X connect 65 1 84 0;
#X connect 66 0 67 0;
#X connect 67 0 61 0;
#X connect 68 1 82 0;
#X connect 72 0 74 0;
#X connect 73 0 77 0;
#X connect 74 0 75 0;
#X connect 75 0 76 0;
#X connect 76 0 73 1;
#X connect 81 0 73 0;
#X connect 81 1 78 0;
#X connect 81 2 79 0;
#X connect 81 3 80 0;
#X connect 82 0 67 3;
#X connect 83 0 68 0;
#X connect 84 0 67 2;
#X connect 85 0 68 0;
#X connect 86 0 87 0;
#X connect 87 0 66 0;
#X connect 87 1 88 0;
#X connect 88 0 67 1;
#X connect 89 0 90 0;
#X connect 90 0 91 0;
#X connect 93 0 92 0;
#X connect 94 0 44 0;
#X connect 95 0 113 0;
#X connect 96 0 97 0;
#X connect 96 1 102 0;
#X connect 97 0 99 0;
#X connect 97 1 99 1;
#X connect 101 0 107 0;
#X connect 102 0 97 1;
#X connect 103 0 105 0;
#X connect 103 1 108 0;
#X connect 104 0 102 1;
#X connect 105 0 101 0;
#X connect 106 0 108 1;
#X connect 108 0 105 1;
#X connect 109 0 111 0;
#X connect 110 0 109 0;
#X connect 113 0 100 0;
#X connect 114 0 120 0;
#X connect 115 0 62 0;
#X connect 115 1 70 0;
#X connect 116 0 41 0;
#X connect 117 0 38 0;
#X connect 120 1 119 0;
#X restore 1316 240 pd communicateWithBoeuf;
#X obj 52 56 declare -path bf-util;
#X obj 505 296 bng 15 250 50 0 \$0-down-bang-s \$0-down-bang-r down
17 7 1 10 -262144 -1 -1;
#X obj 22 865 s \$0-down-bang-r;
#X obj 964 477 random 200;
#X obj 913 477 delay;
#X obj 913 454 t b b;
#X obj 1321 346 r \$0-grant-s;
#X obj 1321 372 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1
0 1;
#X text 1343 372 test;
#X text 1456 373 test;
#X obj 1434 347 r \$0-1xgrant-s;
#X obj 1434 374 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X text 1317 303 ToDo: Make logic to deal with grant and 1x grant \,
and interaction between ask-slider and bpm;
#X obj 1322 411 r \$0-ask-slider-s;
#X floatatom 1322 435 5 0 0 0 - - -;
#X obj 1477 440 s \$0-ask-slider-r;
#X floatatom 1477 413 5 0 0 0 - - -;
#X text 1522 415 test;
#X text 1365 436 test;
#X connect 13 0 15 0;
#X connect 14 0 13 0;
#X connect 15 0 16 0;
#X connect 16 0 31 0;
#X connect 16 0 47 0;
#X connect 16 0 52 0;
#X connect 17 0 39 0;
#X connect 20 0 25 0;
#X connect 21 0 34 1;
#X connect 21 0 53 0;
#X connect 21 0 83 1;
#X connect 23 0 20 0;
#X connect 24 0 20 0;
#X connect 25 0 14 0;
#X connect 26 0 27 0;
#X connect 27 0 140 0;
#X connect 28 0 138 0;
#X connect 29 0 30 0;
#X connect 30 0 28 0;
#X connect 31 0 26 0;
#X connect 32 0 23 0;
#X connect 32 1 17 0;
#X connect 34 0 24 0;
#X connect 37 0 133 0;
#X connect 38 0 24 1;
#X connect 38 0 34 0;
#X connect 39 0 15 1;
#X connect 43 0 136 0;
#X connect 44 0 45 0;
#X connect 45 0 43 0;
#X connect 47 0 29 0;
#X connect 49 0 50 0;
#X connect 49 0 56 0;
#X connect 50 0 49 1;
#X connect 51 0 164 0;
#X connect 52 0 44 0;
#X connect 53 0 87 0;
#X connect 53 1 32 0;
#X connect 54 0 49 1;
#X connect 56 0 51 0;
#X connect 61 0 119 0;
#X connect 62 0 115 0;
#X connect 64 0 123 0;
#X connect 66 0 124 0;
#X connect 68 0 125 0;
#X connect 71 0 150 0;
#X connect 72 0 84 0;
#X connect 72 0 85 0;
#X connect 72 0 86 0;
#X connect 73 0 78 0;
#X connect 75 0 77 0;
#X connect 79 0 73 0;
#X connect 79 0 75 0;
#X connect 80 0 81 0;
#X connect 81 0 82 0;
#X connect 81 1 128 0;
#X connect 82 0 21 0;
#X connect 83 0 80 0;
#X connect 84 0 102 0;
#X connect 85 0 103 0;
#X connect 86 0 106 0;
#X connect 87 0 24 0;
#X connect 87 1 148 0;
#X connect 87 2 54 0;
#X connect 87 3 17 0;
#X connect 98 0 38 0;
#X connect 99 0 167 0;
#X connect 100 0 114 0;
#X connect 101 0 56 1;
#X connect 104 0 47 1;
#X connect 105 0 52 1;
#X connect 107 0 39 4;
#X connect 108 0 39 3;
#X connect 109 0 39 2;
#X connect 110 0 39 1;
#X connect 112 0 98 0;
#X connect 113 0 111 0;
#X connect 116 0 21 0;
#X connect 117 0 98 1;
#X connect 129 0 80 1;
#X connect 132 0 37 0;
#X connect 137 0 46 0;
#X connect 139 0 40 0;
#X connect 141 0 41 0;
#X connect 143 0 57 0;
#X connect 144 0 49 0;
#X connect 148 0 13 1;
#X connect 154 0 70 0;
#X connect 156 0 83 0;
#X connect 165 0 166 1;
#X connect 166 0 100 0;
#X connect 167 0 166 0;
#X connect 167 1 165 0;
#X connect 168 0 169 0;
#X connect 172 0 173 0;
#X connect 175 0 176 0;
#X connect 178 0 177 0;
#X coords 0 -1 1 1 300 115 1 500 200;