#N canvas 511 82 557 515 10;
#X obj 0 0 cnv 15 552 40 empty empty score 3 12 0 18 -204280 -1 0;
#X obj 0 332 cnv 3 550 3 empty empty inlets 8 12 0 13 -228856 -1 0
;
#X obj 0 465 cnv 3 550 3 empty empty outlets 8 12 0 13 -228856 -1 0
;
#X obj 0 537 cnv 3 550 3 empty empty arguments 8 12 0 13 -228856 -1
0;
#X obj 79 343 cnv 17 3 17 empty empty 0 5 9 0 16 -228856 -162280 0
;
#X obj 0 633 cnv 15 552 21 empty empty empty 20 12 0 14 -233017 -33289
0;
#N canvas 238 349 428 75 Related_objects 0;
#X obj 0 0 cnv 15 425 20 empty empty empty 3 12 0 14 -204280 -1 0;
#X text 6 1 Related Objects;
#X restore 206 637 pd Related_objects;
#N canvas 485 589 379 273 META 0;
#X text 12 225 HELP_PATCH_AUTHORS "pd meta" information added by Jonathan
Wilkes for Pd version 0.42. Updated by Fred Jan Kraan 2016-02.;
#X text 12 25 LICENSE GPL v2;
#X text 12 85 INLET_1 float;
#X text 12 105 OUTLET_0 float;
#X text 12 125 OUTLET_1 float;
#X text 12 5 KEYWORDS control analysis;
#X text 12 45 DESCRIPTION detects the beat of rhythmic patterns;
#X text 12 165 AUTHOR Olaf Matthes \, based on code written by Rober
Rowe and published in 'Mashine Musicianship' \, Massachusetts \, 2001
;
#X text 12 65 INLET_0 float reset model;
#X text 12 145 OUTLET_2 bang;
#X text 12 209 MAINTAINER Fred Jan Kraan <fjkraan@xs4all.nl>;
#X restore 502 636 pd META;
#X obj 79 441 cnv 17 3 17 empty empty 2 5 9 0 16 -228856 -162280 0
;
#X text 107 342 float;
#X obj 79 481 cnv 17 3 17 empty empty 0 5 9 0 16 -228856 -162280 0
;
#X obj 79 504 cnv 17 3 17 empty empty 1 5 9 0 16 -228856 -162280 0
;
#X text 107 480 float;
#X text 172 342 - note number;
#X obj 500 4 score;
#X text 8 23 score follower that tries to match incoming MIDI data
to a score stored in an array, f 86;
#X obj 252 103 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X msg 87 58 start;
#X msg 129 58 stop;
#X msg 165 58 start 4;
#N canvas 0 50 450 300 (subpatch) 0;
#X array \$0-sco_array 25 float 1;
#A 0 60 61 62 63 64 65 66 67 68 69 70 71 72 71 70 69 68 67 66 65 64
63 62 61 60;
#X coords 0 127 24 0 200 140 1;
#X restore 333 182 graph;
#X obj 87 187 maxlib/score sco_array 2 300;
#X floatatom 87 267 5 0 0 0 - - -, f 5;
#X floatatom 87 307 5 0 0 0 - - -, f 5;
#X obj 87 286 tabread \$0-sco_array;
#X text 107 440 bang;
#X text 172 440 - reset;
#X obj 79 418 cnv 17 3 17 empty empty 1 5 9 0 16 -228856 -162280 0
;
#X text 107 419 float;
#X text 172 419 - note velocity;
#X text 107 360 start;
#X text 172 360 - start score following;
#X text 107 377 stop;
#X text 172 377 - stop score following;
#X text 172 395 - stop score following;
#X text 107 395 set <name>;
#N canvas 337 684 450 300 fill 0;
#X obj 0 0 cnv 15 425 20 empty empty empty 3 12 0 14 -204280 -1 0;
#X text 6 1 table filler;
#X obj 23 62 loadbang;
#X obj 23 91 \$0;
#X msg 23 117 \; \$1-sco_array resize 25 \; \$1-sco_array read examples/score.txt
\;;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X restore 424 160 pd fill sco_array;
#X text 107 503 bang;
#X text 157 503 - error;
#X text 157 480 - position on score (x index of array);
#X text 80 551 1: <array> \, 2: <skipitems> \, 3: <skiptime>;
#X obj 0 572 cnv 3 550 3 empty empty more_info 8 12 0 13 -228856 -1
0;
#X text 83 583 array: name of array containing score;
#X text 84 597 skipitems: max. number of notes to skip;
#X text 84 611 skip time: max. time [ms] to rewind;
#X text 123 307 note from score;
#X msg 175 81 set \$1-sco_array;
#X obj 252 59 \$0;
#X obj 224 60 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X connect 16 0 21 2;
#X connect 17 0 21 0;
#X connect 18 0 21 0;
#X connect 19 0 21 0;
#X connect 21 0 22 0;
#X connect 22 0 24 0;
#X connect 24 0 23 0;
#X connect 46 0 21 0;
#X connect 47 0 46 0;
#X connect 48 0 47 0;
