#N canvas 0 22 1440 799 10; #X obj 321 69 inlet start/stop; #X obj 321 91 s \$0-strtStop; #X text 38 307 Arg 1: internal bpm on or off; #X text 328 44 start stop; #X text 1086 532 multiply 24 ppq midi clock by 15 to get 360 ppq; #X text 37 159 This metronome outputs 360 ticks per beat numbered 0-359. If Ableton LINK session or MIDI clock is present it will latch onto those \, otherwise it uses internal clock. It uses link object to also generate the internal clock. It takes tempo and start/stop input and outputs ticks 0-359; #X text 37 253 It also outputs the tempo and clock source useful for display purposes.; #X text 87 758 the clockfix object ensures there are always 360 ticks numbered 0-359. This is necessary when tempos increases to the point where a tick is shorter than a dsp cycle in Pd (otherwise some numbers get skipped). also necessary for lower resolution clock sources like midi clock. it doesn't interpolate \, but does ensure we always get 0-359 no matter what goes in.; #X floatatom 781 294 5 0 0 1 tempo - -, f 5; #X obj 553 423 * 360; #X obj 553 445 i; #X obj 500 128 moses 10; #X obj 1001 52 midirealtimein; #X text 1317 93 MIDI 248 = clock \; 250 = start \; 251 = continue. 252 = stop; #X obj 1001 103 sel 248 250 251 252 254, f 38; #X obj 500 65 inlet tempo; #X obj 553 327 spigot 0; #X obj 606 297 r \$0-strtStop; #X obj 1086 556 r link-session-present; #X obj 553 894 outlet beat-clock; #X obj 781 844 outlet Tempo; #N canvas 303 750 292 294 mstobpm 0; #X obj 46 14 inlet; #X obj 47 248 outlet; #X obj 46 108 t b b; #X obj 46 79 sel 0; #X text 87 47 time 16th notes; #X obj 46 145 timer; #X obj 46 46 % 12; #X obj 46 182 expr 30000 / $f1; #X connect 0 0 6 0; #X connect 2 0 5 0; #X connect 2 1 5 1; #X connect 3 0 2 0; #X connect 5 0 7 0; #X connect 6 0 3 0; #X connect 7 0 1 0; #X restore 903 690 pd mstobpm; #X obj 949 742 r midi-clock-present; #X obj 903 770 spigot 0; #N canvas 465 318 729 612 average-bpm 0; #X obj 98 20 inlet; #X obj 360 226 + 1; #X obj 251 189 t a b; #X obj 330 224 f 0; #X obj 48 185 array sum \$0-bpm-mean; #X obj 98 42 t b a; #X obj 48 229 + 0.499999; #X obj 48 251 i; #X obj 48 273 outlet; #X obj 284 11 loadbang; #X msg 284 33 const 120; #X obj 251 280 array set \$0-bpm-mean 5; #X obj 48 207 / 5; #X obj 330 246 % 5; #X obj 284 58 array define -k \$0-bpm-mean 5; #A 0 120 120 120 120 120; #X floatatom 230 131 5 0 0 0 - - -, f 5; #X connect 0 0 5 0; #X connect 1 0 3 1; #X connect 2 0 11 0; #X connect 2 1 3 0; #X connect 3 0 1 0; #X connect 3 0 13 0; #X connect 4 0 12 0; #X connect 5 0 4 0; #X connect 5 1 2 0; #X connect 5 1 15 0; #X connect 6 0 7 0; #X connect 7 0 8 0; #X connect 9 0 10 0; #X connect 10 0 14 0; #X connect 12 0 6 0; #X connect 13 0 11 1; #X restore 903 713 pd average-bpm; #X obj 1173 319 delay 1000; #X msg 1115 321 1; #X obj 1001 256 t b b b b, f 25; #X msg 1173 294 stop; #X msg 1173 343 0; #X obj 1115 454 s midi-clock-present; #X obj 1145 378 + 1; #X obj 1115 378 f 0; #X obj 1115 400 % 2; #X obj 1001 415 f; #X obj 1059 414 + 1; #X obj 1001 437 t f f; #X obj 1001 482 % 24; #X obj 1001 380 spigot 0; #X obj 1033 536 * 15; #X obj 1033 586 i; #X obj 1033 608 spigot 0; #X obj 1086 583 ==; #X obj 634 364 ==; #X obj 634 342 r midi-clock-present; #X obj 1158 129 s midi-stop; #X obj 1470 398 midiout; #X obj 1416 304 r midi-ticks; #X msg 1416 326 248; #X obj 1416 252 r midi-start; #X obj 1106 158 s midi-cont; #X obj 1470 333 r midi-cont; #X msg 1470 355 251; #X msg 1416 274 250; #X obj 1547 254 r midi-stop; #X msg 1547 276 252; #X text 1445 225 clock through and out; #X obj 1304 815 outlet Clock-source; #X obj 553 389 spigot 1, f 12; #X obj 553 473 t f b; #X obj 603 489 r link-session-present; #X obj 585 565 sel 0 1, f 23; #X obj 585 697 s \$0-clock-source; #X obj 1305 727 r \$0-clock-source; #X obj 585 521 f 0; #X obj 553 772 clockfix; #X obj 1065 680 s \$0-clock-source; #X obj 1033 630 t f b; #X msg 1065 657 2; #X msg 702 643 3; #X obj 1304 768 change -1; #X obj 781 816 change -1; #X obj 553 234 f; #X obj 581 138 r midi-clock-present; #X obj 607 163 r link-session-present; #X obj 581 190 sel 0; #N canvas 33 50 815 554 LINK 0; #X msg 355 126 tempo \$1; #X msg 144 127 resolution \$1; #X msg 247 147 reset \$1 \$2; #X obj 247 126 pack f f; #X floatatom 266 247 5 0 0 1 beat_time - -, f 5; #X floatatom 180 285 5 0 0 1 step - -, f 5; #X floatatom 378 246 5 0 0 1 tempo - -, f 5; #X obj 59 105 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 1; #X obj 180 199 abl_link~ 1 0 4 134; #X floatatom 355 107 5 0 0 2 tempo - -, f 5; #X floatatom 292 107 5 0 0 2 quantum - -, f 5; #X floatatom 247 107 5 0 0 2 beat - -, f 5; #X floatatom 144 107 5 0 0 2 resolution - -, f 5; #X msg 59 125 connect \$1; #X floatatom 510 231 5 0 0 0 - - -, f 5; #X obj 510 209 r #abl_link_num_peers; #X obj 32 45 loadbang; #X obj 32 67 delay 100; #X obj 267 326 wrap; #X obj 285 31 inlet; #X obj 388 273 i; #X obj 267 388 outlet; #X obj 388 295 outlet; #X obj 510 261 > 0; #X obj 510 283 s link-session-present; #X connect 0 0 8 0; #X connect 1 0 8 0; #X connect 2 0 8 0; #X connect 3 0 2 0; #X connect 6 0 20 0; #X connect 7 0 13 0; #X connect 8 0 5 0; #X connect 8 1 18 0; #X connect 8 2 4 0; #X connect 8 3 6 0; #X connect 9 0 0 0; #X connect 10 0 3 1; #X connect 11 0 3 0; #X connect 12 0 1 0; #X connect 13 0 8 0; #X connect 14 0 23 0; #X connect 15 0 14 0; #X connect 16 0 17 0; #X connect 17 0 7 0; #X connect 18 0 21 0; #X connect 19 0 9 0; #X connect 20 0 22 0; #X connect 23 0 24 0; #X restore 553 265 pd LINK - - - - - - - - - - - - -; #X obj 585 604 f \$1; #X msg 585 648 4; #X obj 585 625 sel 0 1, f 12; #X msg 625 649 1; #X obj 1001 504 t f f; #X text 1464 735 1 = internal bpm(set by og knob); #X text 1464 795 4 = Hidden default bpm(off); #X obj 781 464 spigot 1, f 12; #X obj 1534 549 sel 1 2 3 4; #X msg 1625 597 0; #X msg 1568 599 1; #X obj 1543 639 s metro-state; #X obj 553 794 t f f; #X obj 585 817 % 15; #X obj 585 839 sel 0; #X obj 585 861 s midi-ticks; #X obj 1001 125 t b b; #X text 1464 755 2 = MIDI BPM; #X text 1464 775 3 = LINK BPM; #X obj 1407 484 loadbang; #X obj 1407 505 \$1; #X obj 1407 581 s \$0-clock-source; #X msg 1407 547 1; #X obj 1407 526 sel 1 0; #X msg 1436 547 4; #X obj 1033 218 s midi-start; #X obj 913 317 r midi-start; #X msg 913 344 0; #X connect 0 0 1 0; #X connect 8 0 84 0; #X connect 9 0 10 0; #X connect 10 0 59 0; #X connect 11 1 72 0; #X connect 12 0 14 0; #X connect 14 0 93 0; #X connect 14 1 102 0; #X connect 14 2 50 0; #X connect 14 3 45 0; #X connect 15 0 11 0; #X connect 16 0 58 0; #X connect 17 0 16 1; #X connect 18 0 42 0; #X connect 21 0 24 0; #X connect 22 0 23 1; #X connect 23 0 71 0; #X connect 24 0 23 0; #X connect 25 0 29 0; #X connect 26 0 32 0; #X connect 27 0 38 0; #X connect 27 1 25 0; #X connect 27 2 26 0; #X connect 27 3 28 0; #X connect 28 0 25 0; #X connect 29 0 32 0; #X connect 31 0 32 1; #X connect 32 0 31 0; #X connect 32 0 33 0; #X connect 33 0 38 1; #X connect 33 0 30 0; #X connect 34 0 36 0; #X connect 35 0 34 1; #X connect 36 0 37 0; #X connect 36 1 35 0; #X connect 37 0 81 0; #X connect 38 0 34 0; #X connect 39 0 40 0; #X connect 40 0 41 0; #X connect 41 0 67 0; #X connect 42 0 41 1; #X connect 43 0 58 1; #X connect 43 0 84 1; #X connect 44 0 43 0; #X connect 47 0 48 0; #X connect 48 0 46 0; #X connect 49 0 53 0; #X connect 51 0 52 0; #X connect 52 0 46 0; #X connect 53 0 46 0; #X connect 54 0 55 0; #X connect 55 0 46 0; #X connect 58 0 9 0; #X connect 59 0 65 0; #X connect 59 1 64 0; #X connect 60 0 64 1; #X connect 61 0 77 0; #X connect 61 1 69 0; #X connect 63 0 70 0; #X connect 64 0 61 0; #X connect 65 0 89 0; #X connect 67 0 65 0; #X connect 67 1 68 0; #X connect 68 0 66 0; #X connect 69 0 62 0; #X connect 70 0 57 0; #X connect 70 0 85 0; #X connect 71 0 20 0; #X connect 72 0 76 0; #X connect 73 0 75 0; #X connect 74 0 75 0; #X connect 75 0 72 0; #X connect 76 0 16 0; #X connect 76 1 8 0; #X connect 77 0 79 0; #X connect 78 0 62 0; #X connect 79 0 78 0; #X connect 79 1 80 0; #X connect 80 0 62 0; #X connect 81 0 21 0; #X connect 81 1 39 0; #X connect 84 0 71 0; #X connect 85 0 87 0; #X connect 85 1 87 0; #X connect 85 2 87 0; #X connect 85 3 86 0; #X connect 86 0 88 0; #X connect 87 0 88 0; #X connect 89 0 19 0; #X connect 89 1 90 0; #X connect 90 0 91 0; #X connect 91 0 92 0; #X connect 93 0 27 0; #X connect 96 0 97 0; #X connect 97 0 100 0; #X connect 99 0 98 0; #X connect 100 0 99 0; #X connect 100 1 101 0; #X connect 101 0 98 0; #X connect 103 0 104 0; #X connect 104 0 34 1;