aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEd Kelly <edkelly@users.sourceforge.net>2012-09-15 13:29:19 +0000
committerEd Kelly <edkelly@users.sourceforge.net>2012-09-15 13:29:19 +0000
commit878ee3f2844f1c2cdbf14e3f9b9acbd43bdd9edf (patch)
treeb6d0a2648124f7c8ca1f33d3be033989765355fe
parent7e6ddaecb55b563180d191484fa95710787a97c2 (diff)
gemnotes 0.2.3
svn path=/trunk/externals/ekext/; revision=16237
-rwxr-xr-xgemnotes_0.2.3/00_Gemnotes_is.pd179
-rwxr-xr-xgemnotes_0.2.3/01_Stave+Note.pd137
-rwxr-xr-xgemnotes_0.2.3/02_Beamed_Group.pd127
-rwxr-xr-xgemnotes_0.2.3/03_Dynamics.pd118
-rwxr-xr-xgemnotes_0.2.3/04_Score_Language.pd238
-rwxr-xr-xgemnotes_0.2.3/LICENSE.txt30
-rwxr-xr-xgemnotes_0.2.3/README.txt47
-rwxr-xr-xgemnotes_0.2.3/barline.pd77
-rwxr-xr-xgemnotes_0.2.3/dynamic.pd406
-rwxr-xr-xgemnotes_0.2.3/ext/gemnotes_countbars.dllbin0 -> 9728 bytes
-rwxr-xr-xgemnotes_0.2.3/ext/gemnotes_countbars.pd_darwinbin0 -> 13944 bytes
-rwxr-xr-xgemnotes_0.2.3/ext/gemnotes_countbars.pd_linuxbin0 -> 17737 bytes
-rwxr-xr-xgemnotes_0.2.3/ext/gemnotes_counter.dllbin0 -> 34816 bytes
-rwxr-xr-xgemnotes_0.2.3/ext/gemnotes_counter.pd_darwinbin0 -> 31824 bytes
-rwxr-xr-xgemnotes_0.2.3/ext/gemnotes_counter.pd_linuxbin0 -> 57232 bytes
-rwxr-xr-xgemnotes_0.2.3/ext/help-gemnotes_counter.pd68
-rwxr-xr-xgemnotes_0.2.3/ext/polyquant.dllbin0 -> 12288 bytes
-rwxr-xr-xgemnotes_0.2.3/ext/polyquant.pd_darwinbin0 -> 9920 bytes
-rwxr-xr-xgemnotes_0.2.3/ext/polyquant.pd_linuxbin0 -> 17852 bytes
-rwxr-xr-xgemnotes_0.2.3/fonts/LucidaBrightRegular.ttfbin0 -> 344908 bytes
-rwxr-xr-xgemnotes_0.2.3/fonts/Music5.ttfbin0 -> 30644 bytes
-rwxr-xr-xgemnotes_0.2.3/fonts/Music6.ttfbin0 -> 31116 bytes
-rwxr-xr-xgemnotes_0.2.3/fonts/Music7.ttfbin0 -> 30736 bytes
-rwxr-xr-xgemnotes_0.2.3/fonts/Music7chunky.ttfbin0 -> 31100 bytes
-rwxr-xr-xgemnotes_0.2.3/fonts/Music8.ttfbin0 -> 32472 bytes
-rwxr-xr-xgemnotes_0.2.3/fonts/vera.ttfbin0 -> 65932 bytes
-rwxr-xr-xgemnotes_0.2.3/makevoice.pd873
-rwxr-xr-xgemnotes_0.2.3/midifile.pd53
-rwxr-xr-xgemnotes_0.2.3/noteobject.pd2025
-rwxr-xr-xgemnotes_0.2.3/polytimeq.pd874
-rwxr-xr-xgemnotes_0.2.3/rest.pd350
-rwxr-xr-xgemnotes_0.2.3/sharpsandflats.pd146
-rwxr-xr-xgemnotes_0.2.3/slavenote.pd1145
-rwxr-xr-xgemnotes_0.2.3/src/LICENSE.txt29
-rwxr-xr-xgemnotes_0.2.3/src/Makefile406
-rwxr-xr-xgemnotes_0.2.3/src/ekext-meta.pd6
-rwxr-xr-xgemnotes_0.2.3/src/gemnotes_countbars.c255
-rwxr-xr-xgemnotes_0.2.3/src/gemnotes_counter-help.pd68
-rwxr-xr-xgemnotes_0.2.3/src/gemnotes_counter.c1267
-rwxr-xr-xgemnotes_0.2.3/src/polyquant-help.pd61
-rwxr-xr-xgemnotes_0.2.3/src/polyquant.c178
-rwxr-xr-xgemnotes_0.2.3/stave.pd172
-rwxr-xr-xgemnotes_0.2.3/tempo.pd261
-rwxr-xr-xgemnotes_0.2.3/timenq.pd33
-rwxr-xr-xgemnotes_0.2.3/translate_midi.pd93
-rwxr-xr-xgemnotes_0.2.3/tsig.pd182
-rwxr-xr-xgemnotes_0.2.3/vera.ttfbin0 -> 65932 bytes
47 files changed, 9904 insertions, 0 deletions
diff --git a/gemnotes_0.2.3/00_Gemnotes_is.pd b/gemnotes_0.2.3/00_Gemnotes_is.pd
new file mode 100755
index 0000000..d44f884
--- /dev/null
+++ b/gemnotes_0.2.3/00_Gemnotes_is.pd
@@ -0,0 +1,179 @@
+#N canvas 0 22 438 235 10;
+#X obj 20 18 cnv 15 400 140 empty empty Gemnotes_is... 20 16 0 26 -207865
+-45076 0;
+#X text 35 78 - an abstraction [makevoice] for creating notation objects
+in real time using dynamic patching in PD;
+#X text 36 107 - a score metalanguage for the specification of rhythmic
+structures and notation objects;
+#X text 37 138 - a set of fonts to be used with the [text3d] object
+in Gem;
+#X text 35 49 - a set of abstractions for creating live music notation
+in Pure Data and Gem;
+#N canvas 328 459 1081 520 demo 0;
+#X obj 135 150 tgl 32 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#N canvas 0 22 450 300 init 0;
+#X obj 48 53 loadbang;
+#X obj 48 118 outlet;
+#X msg 262 122 1;
+#X obj 262 141 outlet;
+#X msg 48 84 x -6.6 \, y 3 \, z 1.3 \, len 29 \, clef 1 \, r 0.9 \,
+g 0.9 \, b 0.9;
+#X connect 0 0 4 0;
+#X connect 0 0 2 0;
+#X connect 2 0 3 0;
+#X connect 4 0 1 0;
+#X restore 86 166 pd init;
+#X msg 207 192 reset;
+#X msg 774 428 group 4 16;
+#X obj 108 269 makevoice 0.1 0.4;
+#X obj 108 185 stave;
+#X obj 266 178 gemwin;
+#X msg 293 159 0 \, destroy;
+#X msg 219 138 dimen 1000 400 \, create \, 1;
+#X obj 134 14 inlet;
+#X obj 130 39 sel 1 0;
+#X obj 61 127 delay 300;
+#X msg 61 146 1;
+#X msg 135 131 0;
+#X obj 395 108 f;
+#X obj 425 108 + 1;
+#X msg 330 82 0;
+#X msg 215 103 1;
+#X obj 394 128 select 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
+19 20;
+#X msg 813 101 0;
+#X obj 749 40 sharpsandflats;
+#X obj 395 80 metro 500;
+#X obj 458 108 500;
+#X msg 478 71 500;
+#X obj 492 107 * 0.95;
+#X obj 242 26 loadbang;
+#X msg 198 33 0;
+#X msg 398 177 note 0 63 1 1 78;
+#X msg 418 197 note + 64 1 1 78;
+#X msg 438 217 note + 66 1 1 78;
+#X msg 458 238 note + 67 1 1 62;
+#X msg 458 258 note . 73 1 1 62;
+#X msg 476 279 note + 72 1 1 78;
+#X msg 496 299 note + 78 1 1 78;
+#X msg 639 298 note + 81 3 0 78;
+#X msg 822 375 bar;
+#X msg 651 318 note + 80 1 1 78;
+#X msg 393 150 hdsq 0.103 \, bar 6 8 3 8;
+#X msg 75 30 1;
+#X msg 749 273 note + 79 1 1 30;
+#X msg 769 293 note + 82 1 1 35;
+#X msg 789 313 note + 88 1 1 40;
+#X msg 807 334 note + 95 1 1 45;
+#X obj 215 80 delay 3000;
+#X msg 506 178 bar 5 8 6 16 4 16;
+#X msg 539 197 note 0 65 2 1 62;
+#X msg 558 215 note . 71 2 0 88;
+#X msg 575 234 note . 75 2 0 88;
+#X msg 595 255 note + 72 2 0 78;
+#X msg 619 274 note + 83 2 0 78;
+#X msg 614 151 bar 2 4 4 32 4 32 8 32;
+#X msg 628 172 rest 4;
+#X msg 664 194 note 4 79 4 0 99;
+#X msg 684 213 note . 73 4 1 99;
+#X msg 700 233 note . 69 4 1 99;
+#X msg 716 252 note . 60 4 1 99;
+#X connect 0 0 5 1;
+#X connect 1 0 5 0;
+#X connect 1 1 0 0;
+#X connect 2 0 4 1;
+#X connect 3 0 4 1;
+#X connect 5 0 4 0;
+#X connect 7 0 6 0;
+#X connect 8 0 6 0;
+#X connect 9 0 10 0;
+#X connect 10 0 11 0;
+#X connect 10 0 8 0;
+#X connect 10 0 43 0;
+#X connect 10 1 13 0;
+#X connect 10 1 2 0;
+#X connect 10 1 7 0;
+#X connect 10 1 16 0;
+#X connect 10 1 23 0;
+#X connect 11 0 12 0;
+#X connect 12 0 0 0;
+#X connect 13 0 0 0;
+#X connect 14 0 15 0;
+#X connect 14 0 18 0;
+#X connect 15 0 14 1;
+#X connect 16 0 14 1;
+#X connect 16 0 21 0;
+#X connect 17 0 21 0;
+#X connect 18 0 37 0;
+#X connect 18 1 27 0;
+#X connect 18 2 28 0;
+#X connect 18 3 29 0;
+#X connect 18 4 30 0;
+#X connect 18 4 31 0;
+#X connect 18 5 32 0;
+#X connect 18 6 33 0;
+#X connect 18 7 44 0;
+#X connect 18 8 45 0;
+#X connect 18 8 46 0;
+#X connect 18 8 47 0;
+#X connect 18 9 48 0;
+#X connect 18 10 49 0;
+#X connect 18 11 34 0;
+#X connect 18 12 36 0;
+#X connect 18 13 50 0;
+#X connect 18 14 51 0;
+#X connect 18 15 52 0;
+#X connect 18 16 53 0;
+#X connect 18 16 54 0;
+#X connect 18 16 55 0;
+#X connect 18 17 39 0;
+#X connect 18 18 40 0;
+#X connect 18 19 41 0;
+#X connect 18 20 42 0;
+#X connect 18 21 19 0;
+#X connect 19 0 21 0;
+#X connect 21 0 14 0;
+#X connect 21 0 22 0;
+#X connect 22 0 24 0;
+#X connect 23 0 22 1;
+#X connect 24 0 22 1;
+#X connect 24 0 21 1;
+#X connect 25 0 26 0;
+#X connect 26 0 10 0;
+#X connect 27 0 4 1;
+#X connect 28 0 4 1;
+#X connect 29 0 4 1;
+#X connect 30 0 4 1;
+#X connect 31 0 4 1;
+#X connect 32 0 4 1;
+#X connect 33 0 4 1;
+#X connect 34 0 4 1;
+#X connect 35 0 4 1;
+#X connect 36 0 4 1;
+#X connect 37 0 4 1;
+#X connect 38 0 10 0;
+#X connect 39 0 4 1;
+#X connect 40 0 4 1;
+#X connect 41 0 4 1;
+#X connect 42 0 4 1;
+#X connect 43 0 17 0;
+#X connect 44 0 4 1;
+#X connect 45 0 4 1;
+#X connect 46 0 4 1;
+#X connect 47 0 4 1;
+#X connect 48 0 4 1;
+#X connect 49 0 4 1;
+#X connect 50 0 4 1;
+#X connect 51 0 4 1;
+#X connect 52 0 4 1;
+#X connect 53 0 4 1;
+#X connect 54 0 4 1;
+#X connect 55 0 4 1;
+#X restore 21 181 pd demo;
+#X obj 21 163 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X text 106 181 see README.txt for more info \, or check the examples.
+;
+#X text 106 168 <c> 2011 Edward Kelly \, morph_2016@yahoo.co.uk;
+#X connect 6 0 5 0;
diff --git a/gemnotes_0.2.3/01_Stave+Note.pd b/gemnotes_0.2.3/01_Stave+Note.pd
new file mode 100755
index 0000000..69fc430
--- /dev/null
+++ b/gemnotes_0.2.3/01_Stave+Note.pd
@@ -0,0 +1,137 @@
+#N canvas 2 24 526 561 10;
+#X obj 21 251 stave;
+#X obj 21 180 pack f f f;
+#X obj 28 159 t b;
+#X floatatom 21 119 5 0 0 0 - - -;
+#X obj 21 138 * 0.1;
+#X floatatom 61 119 5 0 0 0 - - -;
+#X obj 61 138 * 0.1;
+#X floatatom 101 119 5 0 0 0 - - -;
+#X obj 101 138 * 0.1;
+#X obj 48 221 tgl 25 0 empty empty Show 27 7 0 14 -262144 -1 -1 1 1
+;
+#X obj 206 57 gemwin;
+#X msg 233 38 0 \, destroy;
+#X obj 21 54 loadbang;
+#X msg 21 73 -36;
+#X msg 161 19 dimen 800 600 \, create \, 1;
+#X obj 219 110 sharpsandflats;
+#X msg 233 382 0 pitch \$1;
+#X obj 233 347 fiddle~;
+#X msg 112 382 0 rhythm \$1;
+#X obj 112 295 hradio 15 1 0 7 empty empty rhythmic_value 0 -8 0 10
+-262144 -1 -1 0;
+#X msg 61 73 19;
+#X obj 112 363 +;
+#X obj 140 346 t b f;
+#X msg 140 326 0;
+#X msg 162 326 7;
+#X text 139 311 dotted?;
+#X text 217 82 You must have this abstraction;
+#X text 217 94 in the top-level patch.;
+#X obj 233 328 adc~;
+#X text 217 313 go on...sing!;
+#X obj 43 344 t b;
+#X text 30 102 stave position;
+#X msg 43 363 reclock;
+#X obj 43 382 s g0;
+#X floatatom 233 366 5 0 0 0 - - -;
+#N canvas 0 22 561 217 other_symbols 0;
+#X msg 208 103 0 pitch 68;
+#X obj 74 168 outlet;
+#X msg 128 103 0 rhythm 4;
+#X msg 173 42 0 dur 2;
+#X text 300 137 meaningless unless in a beamed group;
+#X msg 340 152 0 beam 0;
+#X msg 114 61 0 bt \$1;
+#X obj 114 42 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 289 102 0 tail \$1;
+#X obj 289 83 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 357 102 0 tie \$1;
+#X obj 357 83 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 400 152 0 tuple 3;
+#X text 35 24 change these after-the-fact at your peril!;
+#X floatatom 63 86 5 0 0 0 - - -;
+#X msg 63 103 0 xoff \$1;
+#X msg 419 102 0 acc \$1;
+#X obj 419 83 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 36 42 0 stem 0.2;
+#X connect 0 0 1 0;
+#X connect 2 0 1 0;
+#X connect 3 0 1 0;
+#X connect 5 0 1 0;
+#X connect 6 0 1 0;
+#X connect 7 0 6 0;
+#X connect 8 0 1 0;
+#X connect 9 0 8 0;
+#X connect 10 0 1 0;
+#X connect 11 0 10 0;
+#X connect 12 0 1 0;
+#X connect 14 0 15 0;
+#X connect 15 0 1 0;
+#X connect 16 0 1 0;
+#X connect 17 0 16 0;
+#X connect 18 0 1 0;
+#X restore 81 261 pd other_symbols;
+#X msg 101 73 4;
+#X msg 21 199 x \$1 \, y \$2 \, z \$3 \, len 16 \, clef 1 \, r 1 \,
+g 1 \, b 1;
+#X text 177 154 clef 1 = treble;
+#X text 177 165 clef 2 = bass;
+#X text 227 180 r \, g \, b = color;
+#X text 13 423 creation args:;
+#X obj 348 267 rest 3 16 2;
+#X text 259 284 creation args: x-offset rhythm duration;
+#X text 98 478 duration is the number of the note values specified
+by the rhythm argument;
+#X text 312 19 <---start;
+#X obj 21 404 noteobject 2 16 72 1 0 0.5 0 0 1 0 0 0 0 1 0 g0 1;
+#X text 98 509 <c> 2012 Edward Kelly \, morph_2016@yahoo.co.uk;
+#X text 100 423 x-offset-from-clef rhythm pitch duration bot/top stemlength
+beam? tie? accidental? flat/sharp? beamgroup-length object-id beamgroup-index
+tail-on/off tuple-number group-id accent(currently the only form of
+articulation);
+#X connect 0 0 42 0;
+#X connect 0 0 46 0;
+#X connect 1 0 37 0;
+#X connect 2 0 1 0;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
+#X connect 5 0 6 0;
+#X connect 6 0 1 1;
+#X connect 6 0 2 0;
+#X connect 7 0 8 0;
+#X connect 8 0 1 2;
+#X connect 8 0 2 0;
+#X connect 9 0 0 1;
+#X connect 11 0 10 0;
+#X connect 12 0 13 0;
+#X connect 12 0 20 0;
+#X connect 12 0 36 0;
+#X connect 13 0 3 0;
+#X connect 14 0 10 0;
+#X connect 16 0 46 1;
+#X connect 17 0 34 0;
+#X connect 18 0 46 1;
+#X connect 19 0 21 0;
+#X connect 20 0 5 0;
+#X connect 21 0 18 0;
+#X connect 21 0 30 0;
+#X connect 22 0 21 0;
+#X connect 22 1 21 1;
+#X connect 23 0 22 0;
+#X connect 24 0 22 0;
+#X connect 28 0 17 0;
+#X connect 30 0 32 0;
+#X connect 32 0 33 0;
+#X connect 34 0 16 0;
+#X connect 34 0 30 0;
+#X connect 35 0 30 0;
+#X connect 35 0 46 1;
+#X connect 36 0 7 0;
+#X connect 37 0 0 0;
+#X connect 37 0 30 0;
diff --git a/gemnotes_0.2.3/02_Beamed_Group.pd b/gemnotes_0.2.3/02_Beamed_Group.pd
new file mode 100755
index 0000000..ccfaa07
--- /dev/null
+++ b/gemnotes_0.2.3/02_Beamed_Group.pd
@@ -0,0 +1,127 @@
+#N canvas 0 0 581 495 10;
+#X obj 21 170 stave;
+#X obj 28 108 t b;
+#X floatatom 21 71 5 0 0 0 - - -;
+#X obj 21 87 * 0.1;
+#X floatatom 61 71 5 0 0 0 - - -;
+#X obj 61 87 * 0.1;
+#X floatatom 101 71 5 0 0 0 - - -;
+#X obj 101 87 * 0.1;
+#X obj 61 170 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 256 57 gemwin;
+#X msg 283 38 0 \, destroy;
+#X obj 21 24 loadbang;
+#X msg 21 52 -36;
+#X obj 366 19 sharpsandflats;
+#X msg 61 52 19;
+#X msg 344 145 reclock;
+#X obj 344 164 s g0;
+#X floatatom 384 58 5 0 0 0 - - -;
+#N canvas 0 0 450 300 cpu_load 0;
+#X obj 118 168 cputime;
+#X obj 118 28 loadbang;
+#X obj 118 112 metro 1000;
+#X msg 118 56 1;
+#X floatatom 118 84 0 0 0 0 - - -;
+#X obj 118 140 t b b;
+#X obj 118 228 * 0.1;
+#X obj 118 197 int;
+#X text 163 84 <-- on/off;
+#X obj 121 259 outlet;
+#X connect 0 0 7 0;
+#X connect 1 0 3 0;
+#X connect 2 0 5 0;
+#X connect 3 0 4 0;
+#X connect 4 0 2 0;
+#X connect 5 0 0 0;
+#X connect 5 1 0 1;
+#X connect 6 0 9 0;
+#X connect 7 0 6 0;
+#X restore 384 38 pd cpu_load;
+#X text 161 247 Noteobjects are connected together to form a beamed
+group.;
+#X obj 51 263 noteobject 1.3 16 72 1 0 0.5 1 0 1 0 4 1 0 0 0 g0;
+#X obj 167 305 noteobject 2.5 16 83 1 0 0.5 1 0 1 0 4 3 2 0 0 g0;
+#X obj 375 164 s g1;
+#X text 204 356 Beamed tuples are similarly connected.;
+#X obj 124 284 noteobject 1.9 16 70 1 0 0.5 1 0 1 0 4 2 1 0 0 g0;
+#X obj 227 326 noteobject 3.1 16 80 1 0 0.5 1 0 1 0 4 4 3 0 0 g0;
+#X obj 21 373 noteobject 3.7 16 72 1 0 0.5 1 0 1 0 5 5 0 0 5 g1;
+#X obj 94 394 noteobject 4.1 16 74 1 0 0.5 1 0 1 0 5 6 1 0 5 g1;
+#X obj 137 415 noteobject 4.5 16 75 1 0 0.5 1 0 1 0 5 7 2 0 5 g1;
+#X obj 197 436 noteobject 4.9 16 82 1 0 0.5 1 0 1 0 5 8 3 0 5 g1;
+#X obj 257 456 noteobject 5.3 16 63 1 0 0.5 1 0 1 0 5 9 4 0 5 g1;
+#X msg 88 169 1;
+#X obj 128 169 loadbang;
+#X floatatom 151 91 5 0 100 2 R - -;
+#X floatatom 191 91 5 0 100 2 G - -;
+#X floatatom 231 91 5 0 100 2 B - -;
+#X obj 151 107 * 0.01;
+#X obj 191 107 * 0.01;
+#X obj 231 107 * 0.01;
+#X msg 21 148 x \$1 \, y \$2 \, z \$3 \, len 16 \, clef 1 \, r \$4
+\, g \$5 \, b \$6;
+#X msg 101 52 14;
+#X obj 21 129 pack f f f 0.1 0 0;
+#X text 353 370 (but no rests yet - to be fixed);
+#X text 94 476 <c> 2011 Edward Kelly \, morph_2016@yahoo.co.uk;
+#X msg 115 19 dimen 800 640 \, create \, 1 \, color 1 1 0.96;
+#X connect 0 0 20 0;
+#X connect 0 0 21 0;
+#X connect 0 0 24 0;
+#X connect 0 0 25 0;
+#X connect 0 0 26 0;
+#X connect 0 0 27 0;
+#X connect 0 0 28 0;
+#X connect 0 0 29 0;
+#X connect 0 0 30 0;
+#X connect 1 0 41 0;
+#X connect 2 0 3 0;
+#X connect 3 0 41 0;
+#X connect 4 0 5 0;
+#X connect 5 0 1 0;
+#X connect 5 0 41 1;
+#X connect 6 0 7 0;
+#X connect 7 0 1 0;
+#X connect 7 0 41 2;
+#X connect 8 0 0 1;
+#X connect 10 0 9 0;
+#X connect 11 0 12 0;
+#X connect 11 0 14 0;
+#X connect 11 0 40 0;
+#X connect 12 0 2 0;
+#X connect 14 0 4 0;
+#X connect 15 0 16 0;
+#X connect 15 0 22 0;
+#X connect 18 0 17 0;
+#X connect 20 1 21 2;
+#X connect 20 1 24 2;
+#X connect 20 1 25 2;
+#X connect 21 0 24 3;
+#X connect 24 0 20 3;
+#X connect 25 0 21 3;
+#X connect 26 1 27 2;
+#X connect 26 1 28 2;
+#X connect 26 1 29 2;
+#X connect 26 1 30 2;
+#X connect 27 0 26 3;
+#X connect 28 0 27 3;
+#X connect 29 0 28 3;
+#X connect 30 0 29 3;
+#X connect 31 0 8 0;
+#X connect 32 0 31 0;
+#X connect 33 0 36 0;
+#X connect 34 0 37 0;
+#X connect 35 0 38 0;
+#X connect 36 0 1 0;
+#X connect 36 0 41 3;
+#X connect 37 0 1 0;
+#X connect 37 0 41 4;
+#X connect 38 0 1 0;
+#X connect 38 0 41 5;
+#X connect 39 0 0 0;
+#X connect 40 0 6 0;
+#X connect 41 0 39 0;
+#X connect 41 0 15 0;
+#X connect 44 0 9 0;
diff --git a/gemnotes_0.2.3/03_Dynamics.pd b/gemnotes_0.2.3/03_Dynamics.pd
new file mode 100755
index 0000000..215dd92
--- /dev/null
+++ b/gemnotes_0.2.3/03_Dynamics.pd
@@ -0,0 +1,118 @@
+#N canvas 2 24 572 418 10;
+#X obj 21 251 stave;
+#X obj 21 180 pack f f f;
+#X obj 28 159 t b;
+#X floatatom 21 119 5 0 0 0 - - -;
+#X obj 21 138 * 0.1;
+#X floatatom 61 119 5 0 0 0 - - -;
+#X obj 61 138 * 0.1;
+#X floatatom 101 119 5 0 0 0 - - -;
+#X obj 101 138 * 0.1;
+#X obj 48 221 tgl 25 0 empty empty Show 27 7 0 14 -262144 -1 -1 1 1
+;
+#X obj 206 57 gemwin;
+#X msg 233 38 0 \, destroy;
+#X obj 21 54 loadbang;
+#X obj 38 18 sharpsandflats;
+#X msg 61 73 19;
+#X text 30 102 stave position;
+#X text 319 18 <---start;
+#N canvas 0 22 1461 292 notes 0;
+#X obj 25 110 noteobject 1.3 16 72 1 0 0.5 1 0 1 0 4 1 0 0 0 g0;
+#X obj 279 42 inlet;
+#X obj 141 152 noteobject 2.5 16 83 1 0 0.5 1 0 1 0 4 3 2 0 0 g0;
+#X obj 98 131 noteobject 1.9 16 70 1 0 0.5 1 0 1 0 4 2 1 0 0 g0;
+#X obj 201 173 noteobject 3.1 16 80 1 0 0.5 1 0 1 0 4 4 3 0 0 g0;
+#X obj 360 111 noteobject 3.7 16 72 1 1 0.5 1 0 1 0 4 5 0 0 0 g1;
+#X obj 476 153 noteobject 4.9 16 83 1 1 0.5 1 0 1 0 4 7 2 0 0 g1;
+#X obj 433 132 noteobject 4.3 16 70 1 1 0.5 1 0 1 0 4 6 1 0 0 g1;
+#X obj 536 174 noteobject 5.5 16 80 1 1 0.5 1 0 1 0 4 8 3 0 0 g1;
+#X obj 1154 105 s reclock;
+#X obj 1155 75 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 684 108 noteobject 6.1 20 70 1 1 0.5 1 0 1 1 5 9 0 0 5 g2;
+#X obj 758 129 noteobject 6.5 20 66 1 1 0.5 1 0 1 1 5 10 1 0 5 g2;
+#X obj 800 150 noteobject 6.9 20 63 1 1 0.5 1 0 1 1 5 11 2 0 5 g2;
+#X obj 860 171 noteobject 7.3 20 64 1 1 0.5 1 0 1 1 5 12 3 0 5 g2;
+#X obj 900 192 noteobject 7.7 20 68 1 1 0.5 1 0 1 1 5 13 4 0 5 g2;
+#X connect 0 1 2 2;
+#X connect 0 1 3 2;
+#X connect 0 1 4 2;
+#X connect 1 0 0 0;
+#X connect 1 0 2 0;
+#X connect 1 0 3 0;
+#X connect 1 0 4 0;
+#X connect 1 0 5 0;
+#X connect 1 0 6 0;
+#X connect 1 0 7 0;
+#X connect 1 0 8 0;
+#X connect 1 0 11 0;
+#X connect 1 0 12 0;
+#X connect 1 0 13 0;
+#X connect 1 0 14 0;
+#X connect 1 0 15 0;
+#X connect 2 0 3 3;
+#X connect 3 0 0 3;
+#X connect 4 0 2 3;
+#X connect 5 1 6 2;
+#X connect 5 1 7 2;
+#X connect 5 1 8 2;
+#X connect 6 0 7 3;
+#X connect 7 0 5 3;
+#X connect 8 0 6 3;
+#X connect 10 0 9 0;
+#X connect 11 1 12 2;
+#X connect 11 1 13 2;
+#X connect 11 1 14 2;
+#X connect 11 1 15 2;
+#X connect 12 0 11 3;
+#X connect 13 0 12 3;
+#X connect 14 0 13 3;
+#X connect 15 0 14 3;
+#X restore 34 276 pd notes;
+#X text 167 99 The dynamic object creates dynamic marks and/or hairpins
+of a specified length.;
+#X text 147 243 A single dynamic mark from ppp (0) to fff (7) can be
+specified if the length (argument 3) is set to 0...;
+#X text 166 135 Creation args: x-offset dyn-start length dyn-end below/above-stave
+object-id;
+#X obj 146 277 dynamic 1.3 3 0 0 1 4;
+#X text 89 297 ...or a hairpin going from one to another. If you want
+to show the hairpin without the dynamic marks \, just use -1 (pppp)
+and 8 (ffff) as one or both of the dynamic marks.;
+#X msg 161 19 dimen 1000 400 \, create \, 1;
+#X msg 21 73 -50;
+#X msg 101 73 18;
+#X obj 21 344 dynamic 3.3 6 0.8 2 0 4;
+#X msg 21 199 x \$1 \, y \$2 \, z \$3 \, len 22 \, clef 1 \, r 1 \,
+g 1 \, b 1;
+#X obj 272 342 dynamic 6.1 -1 0.7 8 0 5;
+#X text 424 323 --;
+#X text 436 329 |;
+#X text 436 339 |;
+#X text 430 342 =;
+#X text 424 342 <;
+#X connect 0 0 17 0;
+#X connect 0 0 21 0;
+#X connect 0 0 26 0;
+#X connect 0 0 28 0;
+#X connect 1 0 27 0;
+#X connect 2 0 1 0;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
+#X connect 5 0 6 0;
+#X connect 6 0 1 1;
+#X connect 6 0 2 0;
+#X connect 7 0 8 0;
+#X connect 8 0 1 2;
+#X connect 8 0 2 0;
+#X connect 9 0 0 1;
+#X connect 11 0 10 0;
+#X connect 12 0 24 0;
+#X connect 12 0 14 0;
+#X connect 12 0 25 0;
+#X connect 14 0 5 0;
+#X connect 23 0 10 0;
+#X connect 24 0 3 0;
+#X connect 25 0 7 0;
+#X connect 27 0 0 0;
diff --git a/gemnotes_0.2.3/04_Score_Language.pd b/gemnotes_0.2.3/04_Score_Language.pd
new file mode 100755
index 0000000..deed57b
--- /dev/null
+++ b/gemnotes_0.2.3/04_Score_Language.pd
@@ -0,0 +1,238 @@
+#N canvas 112 489 975 535 10;
+#X text 35 225 Creation arguments: hemidemisemiquaver size \, stem
+length;
+#X obj 85 110 tgl 32 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X text 361 106 ^;
+#X text 361 113 |;
+#X text 373 106 ^;
+#X text 373 113 |;
+#X text 346 124 1st group;
+#X text 437 106 ^;
+#X text 437 113 |;
+#X text 449 106 ^;
+#X text 449 113 |;
+#X text 422 124 1st group;
+#X msg 780 195 rest 1;
+#X msg 665 282 note + 63 1 0 62;
+#X text 680 110 a + for the position means "next note";
+#X text 701 130 a . for the position means "chord note";
+#X obj 626 56 gemwin;
+#X msg 653 37 0 \, destroy;
+#X obj 836 17 sharpsandflats;
+#X floatatom 854 56 5 0 0 0 - - -;
+#N canvas 0 22 450 300 cpu_load 0;
+#X obj 118 168 cputime;
+#X obj 118 28 loadbang;
+#X obj 118 112 metro 1000;
+#X msg 118 56 1;
+#X floatatom 118 84 0 0 0 0 - - -;
+#X obj 118 140 t b b;
+#X obj 118 228 * 0.1;
+#X obj 118 197 int;
+#X text 163 84 <-- on/off;
+#X obj 121 259 outlet;
+#X connect 0 0 7 0;
+#X connect 1 0 3 0;
+#X connect 2 0 5 0;
+#X connect 3 0 4 0;
+#X connect 4 0 2 0;
+#X connect 5 0 0 0;
+#X connect 5 1 0 1;
+#X connect 6 0 9 0;
+#X connect 7 0 6 0;
+#X restore 854 36 pd cpu_load;
+#N canvas 0 22 450 300 init 0;
+#X obj 48 53 loadbang;
+#X obj 48 118 outlet;
+#X msg 262 122 1;
+#X obj 262 141 outlet;
+#X msg 48 84 x -6.6 \, y 3.4 \, z 1.3 \, len 29 \, clef 1 \, r 1 \,
+g 0.4 \, b 1;
+#X connect 0 0 4 0;
+#X connect 0 0 2 0;
+#X connect 2 0 3 0;
+#X connect 4 0 1 0;
+#X restore 36 126 pd init;
+#X msg 147 132 reset;
+#X msg 670 301 note + 69 1 1 62;
+#X msg 658 263 note + 62 1 0 62;
+#X msg 651 242 group 4 16;
+#X text 720 242 a beam group can be initiated on-the-fly;
+#X msg 688 343 bar 3 6 3 12;
+#X msg 128 105 vis;
+#X msg 576 110 note + 70 1 0 78;
+#X msg 596 130 note . 65 1 0 78;
+#X msg 612 150 note + 74 1 0 93;
+#X msg 637 192 note + 71 1 0 48;
+#X msg 643 213 note + 70 1 1 40;
+#X msg 31 68 hdsq \$1;
+#X floatatom 31 17 5 0 0 0 - - -;
+#X obj 31 33 * 0.001;
+#X floatatom 31 52 5 0 0 0 - - -;
+#X msg 782 222 rest 2;
+#X text 825 195 "rest" duration;
+#X msg 22 372 bar 5 8 6 16 4 16;
+#X msg 37 443 note 0 48 2 0 64;
+#X msg 147 443 note + 51 2 0 64;
+#X msg 257 443 note + 54 2 0 64;
+#X msg 365 443 note + 56 1 0 72;
+#X msg 475 443 note + 57 1 0 72;
+#X msg 585 443 note + 61 1 0 72;
+#X msg 695 443 note + 63 1 0 72;
+#X text 36 395 Notice that the bar itself stays at 5/8 \, but both
+the groups are specified in 16th notes. The duration value of each
+note is then stated in 16th notes \, thus:;
+#X obj 38 505 stave;
+#X obj 65 470 tgl 32 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#N canvas 233 567 450 185 init 0;
+#X obj 48 53 loadbang;
+#X obj 48 117 outlet;
+#X msg 277 111 1;
+#X obj 277 130 outlet;
+#X msg 48 84 x -4.6 \, y 1.3 \, z 1.3 \, len 20 \, clef 2 \, r 0.4
+\, g 1 \, b 1;
+#X connect 0 0 4 0;
+#X connect 0 0 2 0;
+#X connect 2 0 3 0;
+#X connect 4 0 1 0;
+#X restore 16 486 pd init;
+#X obj 22 466 t a;
+#X msg 179 473 reset;
+#X floatatom 824 448 5 0 100 0 - - -;
+#X msg 824 483 r \$1;
+#X floatatom 864 448 5 0 100 0 - - -;
+#X floatatom 904 448 5 0 100 0 - - -;
+#X msg 864 483 g \$1;
+#X msg 904 483 b \$1;
+#X obj 904 464 * 0.01;
+#X obj 864 464 * 0.01;
+#X obj 824 464 * 0.01;
+#X obj 58 209 makevoice 0.1 0.4;
+#X msg 189 505 vis;
+#X text 82 5 The hdsq value is the;
+#X text 82 16 horizontal size of a;
+#X text 82 27 hemidemisemiquaver.;
+#X text 184 132 <---start again;
+#X text 221 5 "bar" (time \, signature) \, (beamed \, group) \, (beamed
+\, group) etc. You can have more than one beamed group \, and when
+the last group is rendered it goes back to the first (and when there's
+a new bar it resets).;
+#X text 36 281 Rhythmic groups work like this. The "bar" message sets
+up the time signature and the rhythmic groups within the bar. You can
+override this at any time using the "group" message. Groups must be
+specified according to the smallest rhythmic value (e.g. 32 \, 16 \,
+8) so a bar of 5/8 with groups of 3/8 and 4/16 would be specified in
+16ths thus:;
+#X text 824 432 Stave colour (RGB);
+#X text 151 104 <---show the dynamic patch;
+#X msg 697 362 group 5 10;
+#X msg 579 16 dimen 1000 400 \, create \, 1;
+#X msg 677 320 note + 84 1 1 62;
+#X msg 313 145 tempo 118;
+#X text 373 146 <--- BPM;
+#X text 313 164 You must send "bar" before "tempo";
+#X obj 58 145 stave;
+#X msg 440 366 dyn 5;
+#X msg 437 405 dyn 3 1 2;
+#X obj 561 235 s reclock;
+#X obj 75 505 makevoice 0.1 0.4;
+#X msg 624 170 note + 75 1 0 64 1;
+#X text 630 90 "note" position pitch flat/sharp? velocity articulation
+;
+#X msg 313 90 bar 6 8 3 8;
+#X text 336 76 V;
+#X text 336 69 |;
+#X text 348 76 V;
+#X text 348 69 |;
+#X text 340 58 time signature;
+#X text 412 76 V;
+#X text 412 69 |;
+#X text 424 76 V;
+#X text 424 69 |;
+#X text 462 68 |;
+#X text 474 68 |;
+#X text 474 75 v;
+#X text 462 75 v;
+#X text 449 56 2nd group (etc);
+#X msg 389 90 bar 7 4 6 8 4 8 4 8;
+#X msg 516 90 note 0 68 1 0 78;
+#X text 769 342 Tuples can be specified as;
+#X text 774 355 non-standard time signatures;
+#X text 481 358 single dynamic mark;
+#X text 483 371 0 = ppp \, 7 = fff;
+#X text 503 399 hairpin: [start length end];
+#X text 502 411 length is in units specified by beam group;
+#X text 424 508 <c> 2012 Edward Kelly \, morph_2016@yahoo.co.uk;
+#X text 775 367 or groups (click some notes;
+#X text 775 380 to see the tuple);
+#X text 82 39 Other sizes are based;
+#X text 83 51 on this value.;
+#X text 83 64 Can now be changed;
+#X text 83 77 in the middle of a score (v0.2);
+#X connect 1 0 79 1;
+#X connect 12 0 63 1;
+#X connect 13 0 63 1;
+#X connect 17 0 16 0;
+#X connect 20 0 19 0;
+#X connect 21 0 79 0;
+#X connect 21 1 1 0;
+#X connect 22 0 63 1;
+#X connect 23 0 63 1;
+#X connect 24 0 63 1;
+#X connect 25 0 63 1;
+#X connect 27 0 63 1;
+#X connect 28 0 63 1;
+#X connect 29 0 63 1;
+#X connect 29 0 82 0;
+#X connect 30 0 63 1;
+#X connect 30 0 82 0;
+#X connect 31 0 63 1;
+#X connect 31 0 82 0;
+#X connect 32 0 63 1;
+#X connect 32 0 82 0;
+#X connect 33 0 63 1;
+#X connect 33 0 82 0;
+#X connect 34 0 63 1;
+#X connect 35 0 36 0;
+#X connect 36 0 37 0;
+#X connect 37 0 34 0;
+#X connect 38 0 63 1;
+#X connect 40 0 52 0;
+#X connect 41 0 83 1;
+#X connect 42 0 83 1;
+#X connect 43 0 83 1;
+#X connect 44 0 83 1;
+#X connect 45 0 83 1;
+#X connect 46 0 83 1;
+#X connect 47 0 83 1;
+#X connect 49 0 83 0;
+#X connect 50 0 49 1;
+#X connect 51 0 49 0;
+#X connect 51 1 50 0;
+#X connect 52 0 83 1;
+#X connect 53 0 83 1;
+#X connect 54 0 62 0;
+#X connect 55 0 49 0;
+#X connect 56 0 61 0;
+#X connect 57 0 60 0;
+#X connect 58 0 49 0;
+#X connect 59 0 49 0;
+#X connect 60 0 59 0;
+#X connect 61 0 58 0;
+#X connect 62 0 55 0;
+#X connect 64 0 83 1;
+#X connect 73 0 63 1;
+#X connect 74 0 16 0;
+#X connect 75 0 63 1;
+#X connect 76 0 63 1;
+#X connect 79 0 63 0;
+#X connect 80 0 63 1;
+#X connect 81 0 63 1;
+#X connect 84 0 63 1;
+#X connect 84 0 82 0;
+#X connect 86 0 63 1;
+#X connect 101 0 63 1;
+#X connect 102 0 63 1;
+#X connect 102 0 82 0;
diff --git a/gemnotes_0.2.3/LICENSE.txt b/gemnotes_0.2.3/LICENSE.txt
new file mode 100755
index 0000000..1e2d02a
--- /dev/null
+++ b/gemnotes_0.2.3/LICENSE.txt
@@ -0,0 +1,30 @@
+This software is copyrighted by Edward Kelly. The following
+terms (the "Standard Improved BSD License") apply to all files associated with
+the software unless explicitly disclaimed in individual files:
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+3. The name of the author may not be used to endorse or promote
+ products derived from this software without specific prior
+ written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/gemnotes_0.2.3/README.txt b/gemnotes_0.2.3/README.txt
new file mode 100755
index 0000000..e9f7d45
--- /dev/null
+++ b/gemnotes_0.2.3/README.txt
@@ -0,0 +1,47 @@
+Welcome to the first ever public release of Gemnotes.
+
+Gemnotes is a system of realtime music notation rendering using Pure Data and
+Gem.
+
+This software is released under the BSD license.
+
+The system includes one external - gemnotes_counter. Source code is included and released under the simple BSD license enclosed with the code. There are binaries for Linux and Mac OS X (10.6 Intel) compiled against Pure Data 0.42-5 in the ext/ folder. They should work with the examples, without any installation procedure. If you want to experiment with the gemnotes counter directly, you can call it by saving a patch in this folder then typing ext/gemnotes_counter in an object box.
+
+There are two other externals: polyquant is a polyrhythmic quantizer, and gemnotes_barcount is used in translate_midi.pd, a patch that attempts to create gemnotes compatible scores from standard MIDI files.
+
+Installation:
+Linux:
+
+cd /path/to/gemnotes-0.2/src
+make && sudo make install
+
+Or use the binaries in the /ext folder:
+cd /path/to/gemnotes-0.2/ext
+sudo cp *.pd_linux /usr/lib/pd/extra
+
+Mac OS X:
+
+You can compile the externals yourself using gcc if you have XCode installed following the steps above for Linux.
+If you want to try the binaries in Pd-extended, right-click on Pd-extended and "show package contents" then copy the files from the /ext folder into Contents/Resources/extra
+
+Gemnotes uses dynamic patching to generate music notation based on TrueType Fonts (TTF) and 3D primitives.
+
+There are many limitations with the current system, and errors often occur. This project has a simple score language associated with the makevoice.pd (dynamic patching) abstraction and the gemnotes_counter object. Patches can also be made as static elements, and staves can be turned on and off.
+
+If you have a modification of the code you wish to share with me, post to the pd-list (after joining the list) or write to morph_2016@yahoo.co.uk
+
+Changes for version 0.2
+
+1. Dynamics from ppp to fff are implemented, and hairpins (crescendo/decrescendo marks)
+2. Basic articulation (accent) may be added to a note.
+
+Changes between PDCON 2011 and the 0.1 release:
+
+1. The stave/note math is decoupled from the Gemhead
+2. Object IDs are implemented so that reclocking of the stave math happens as a new object is placed, rather than all the time.
+
+------------- To Do for version 0.3 -------------
+
+More articulations
+More clefs
+Live input using gemnotes_barcount and polyquant
diff --git a/gemnotes_0.2.3/barline.pd b/gemnotes_0.2.3/barline.pd
new file mode 100755
index 0000000..950445d
--- /dev/null
+++ b/gemnotes_0.2.3/barline.pd
@@ -0,0 +1,77 @@
+#N canvas 727 130 450 300 10;
+#X obj 73 215 color 1 1 1;
+#X obj 43 130 gemhead;
+#X obj 132 44 inlet;
+#X obj 96 88 unpack f f f f f f f f f;
+#X obj 96 176 +;
+#X obj 395 81 inlet;
+#X obj 218 18 t b;
+#X obj 218 37 \$1;
+#X obj 174 116 pack f f f;
+#X obj 253 67 change;
+#X msg 253 86 xoff \$1;
+#X obj 278 12 \$2;
+#X obj 346 12 \$3;
+#X obj 277 32 moses 1e-07;
+#X obj 354 32 moses 1e-07;
+#X msg 325 55 thick \$1;
+#X msg 391 55 high \$1;
+#X text 346 241 0.37 = 5;
+#X text 347 254 0.19 = 3 lines;
+#X obj 73 247 rectangle 0.01 0.37;
+#X obj 120 176 - 2.23;
+#X msg 297 192 0.1;
+#X msg 325 194 0.19;
+#X msg 356 195 0.28;
+#X msg 392 196 0.37;
+#X obj 302 142 sel 0 1 2 3;
+#X msg 219 190 2.23;
+#X msg 256 189 2.32;
+#X obj 271 113 route xoff thick high pos;
+#X obj 73 195 translateXYZ -40 -40 0;
+#X connect 0 0 19 0;
+#X connect 1 0 29 0;
+#X connect 2 0 3 0;
+#X connect 2 0 6 0;
+#X connect 3 0 4 0;
+#X connect 3 1 20 0;
+#X connect 3 2 29 3;
+#X connect 3 5 8 0;
+#X connect 3 6 8 1;
+#X connect 3 7 8 2;
+#X connect 3 8 1 0;
+#X connect 4 0 29 1;
+#X connect 5 0 28 0;
+#X connect 6 0 7 0;
+#X connect 6 0 11 0;
+#X connect 6 0 12 0;
+#X connect 7 0 9 0;
+#X connect 8 0 0 1;
+#X connect 9 0 10 0;
+#X connect 10 0 28 0;
+#X connect 11 0 13 0;
+#X connect 12 0 14 0;
+#X connect 13 1 15 0;
+#X connect 14 1 16 0;
+#X connect 15 0 28 0;
+#X connect 16 0 28 0;
+#X connect 20 0 29 2;
+#X connect 21 0 19 2;
+#X connect 22 0 19 2;
+#X connect 23 0 19 2;
+#X connect 24 0 19 2;
+#X connect 25 0 21 0;
+#X connect 25 0 27 0;
+#X connect 25 1 22 0;
+#X connect 25 1 26 0;
+#X connect 25 2 23 0;
+#X connect 25 2 27 0;
+#X connect 25 3 24 0;
+#X connect 25 3 26 0;
+#X connect 26 0 20 1;
+#X connect 27 0 20 1;
+#X connect 28 0 4 1;
+#X connect 28 1 19 1;
+#X connect 28 2 19 2;
+#X connect 28 3 25 0;
+#X connect 29 0 0 0;
diff --git a/gemnotes_0.2.3/dynamic.pd b/gemnotes_0.2.3/dynamic.pd
new file mode 100755
index 0000000..361d982
--- /dev/null
+++ b/gemnotes_0.2.3/dynamic.pd
@@ -0,0 +1,406 @@
+#N canvas 15 88 1097 661 10;
+#X obj 41 41 inlet;
+#X obj 339 40 inlet;
+#X obj 82 602 text3d;
+#X obj 367 210 > 0;
+#X obj 41 503 gemhead;
+#X obj 167 127 pack f f f;
+#X obj 128 157 s \$0-z;
+#N canvas 0 22 450 300 clockit 0;
+#X obj 61 57 inlet;
+#X obj 61 122 spigot 1;
+#X obj 151 122 t b;
+#X obj 151 141 f;
+#X obj 176 141 + 1;
+#X msg 186 97 0;
+#X msg 151 98 1;
+#X obj 61 174 outlet;
+#X obj 159 57 inlet;
+#X obj 159 78 t b b;
+#X obj 242 59 r \$0-clocked;
+#X obj 151 160 < 8;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 1 0 7 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 11 0;
+#X connect 4 0 3 1;
+#X connect 5 0 3 1;
+#X connect 6 0 1 1;
+#X connect 8 0 9 0;
+#X connect 9 0 6 0;
+#X connect 9 1 5 0;
+#X connect 11 0 1 1;
+#X restore 99 63 pd clockit;
+#X obj 166 65 r \$0-reclock;
+#X text 352 538 0-2 = F-FFF \, 3-5 = P-PPP 6=mF 7=mP;
+#X obj 329 556 sel 0 1 2 3 4 5 6 7;
+#X msg 275 585 text 5;
+#X msg 320 585 text 4;
+#X msg 365 585 text 3;
+#X msg 410 585 text 8;
+#X msg 455 585 text 6;
+#X msg 500 585 text 0;
+#X msg 545 585 text 1;
+#X msg 591 585 text 2;
+#X obj 400 189 \$3;
+#X obj 273 539 \$2;
+#X obj 74 574 color 0 0 0;
+#N canvas 0 22 450 300 inittext 0;
+#X obj 128 155 outlet;
+#X obj 279 151 outlet;
+#X obj 150 57 r \$0-lbn;
+#X msg 27 110 font fonts/Music8.ttf \, justify left top;
+#X msg 283 110 7;
+#X connect 2 0 3 0;
+#X connect 2 0 4 0;
+#X connect 3 0 0 0;
+#X connect 4 0 1 0;
+#X restore 146 585 pd inittext;
+#X obj 103 452 + \$1;
+#X obj 156 43 t b;
+#X obj 161 452 + \$6;
+#X obj 275 123 s \$0-lbn;
+#X msg 308 50 0;
+#X obj 252 50 spigot 1;
+#X obj 252 96 loadbang;
+#X obj 251 71 t b;
+#X obj 273 518 r \$0-lbn;
+#X obj 198 429 t b f;
+#X floatatom 208 406 5 0 0 0 - - -;
+#X obj 306 84 route xoff dynst len dyned bt;
+#X obj 464 120 * 1.5;
+#X obj 463 146 - 1;
+#X obj 387 167 r \$0-lbn;
+#X obj 339 60 route \$6;
+#X obj 526 98 \$5;
+#X obj 526 72 r \$0-lbn;
+#X obj 332 355 gemhead;
+#X obj 115 421 t b f;
+#X floatatom 125 398 5 0 0 0 - - -;
+#X obj 373 284 + \$1;
+#X obj 466 277 t b f;
+#X floatatom 477 237 5 0 0 0 - - -;
+#X obj 422 275 t b f;
+#X floatatom 438 237 5 0 0 0 - - -;
+#X obj 352 465 rectangle \$3 0.01;
+#X msg 191 12 bang;
+#X msg 438 55 len \$1;
+#X floatatom 442 24 5 0 0 0 - - -;
+#X obj 448 316 +;
+#X obj 414 314 +;
+#X obj 352 414 rotateXYZ 0 0 4;
+#X obj 449 355 - 1.85;
+#X obj 515 354 gemhead;
+#X obj 518 463 rectangle \$3 0.01;
+#X obj 616 324 +;
+#X obj 562 323 +;
+#X obj 519 408 rotateXYZ 0 0 -4;
+#X obj 616 349 - 2.05;
+#X obj 541 225 * 57.2958;
+#X obj 535 198 / \$3;
+#X obj 530 148 moses 1e-07;
+#X obj 586 170 t b f;
+#X obj 603 254 * -1;
+#X msg 248 573 1;
+#X msg 219 573 0;
+#X msg 531 174 0.1;
+#X obj 512 254 * 1;
+#X obj 644 523 text3d;
+#X obj 688 354 gemhead;
+#X obj 750 477 sel 0 1 2 3 4 5 6 7;
+#X msg 696 506 text 5;
+#X msg 741 506 text 4;
+#X msg 786 506 text 3;
+#X msg 831 506 text 8;
+#X msg 876 506 text 6;
+#X msg 921 506 text 0;
+#X msg 966 506 text 1;
+#X msg 1012 506 text 2;
+#X obj 688 398 color 0 0 0;
+#N canvas 0 22 450 300 inittext 0;
+#X obj 128 155 outlet;
+#X obj 279 151 outlet;
+#X obj 150 57 r \$0-lbn;
+#X msg 27 110 font fonts/Music8.ttf \, justify left top;
+#X msg 283 110 7;
+#X connect 2 0 3 0;
+#X connect 2 0 4 0;
+#X connect 3 0 0 0;
+#X connect 4 0 1 0;
+#X restore 547 495 pd inittext;
+#X obj 741 233 + \$1;
+#X obj 789 233 + \$6;
+#X obj 847 416 r \$0-lbn;
+#X obj 811 202 t b f;
+#X obj 753 202 t b f;
+#X msg 669 494 1;
+#X msg 640 494 0;
+#X obj 847 437 \$4;
+#X obj 350 439 color 0 0 0;
+#X obj 519 437 color 0 0 0;
+#X obj 725 262 +;
+#X obj 695 232 t b f;
+#X obj 657 230 * 2;
+#X obj 156 521 - 0.4;
+#X obj 778 288 - 0.4;
+#X obj 394 353 + 0.7;
+#X obj 561 347 + 0.7;
+#X obj 728 293 + 0.72;
+#X obj 677 285 &&;
+#X obj 658 261 t b f;
+#X text 700 54 xoff dynst len dyned bt object-id;
+#X obj 736 91 \$4;
+#X obj 664 87 \$2;
+#X obj 713 113 t b f;
+#X obj 684 139 <;
+#X msg 627 192 1;
+#X msg 655 192 -1;
+#X msg 691 183 -1;
+#X msg 719 184 1;
+#X obj 667 161 sel 1 0;
+#X obj 539 253 t b f;
+#X obj 613 232 t b f;
+#X obj 670 17 r \$0-lbn;
+#X obj 644 45 t b b;
+#X obj 99 99 unpack f f f f f f f f f;
+#X obj 39 478 &&;
+#X obj 39 454 t b f;
+#X obj 332 334 &&;
+#X obj 332 310 t b f;
+#X obj 515 333 &&;
+#X obj 516 312 t b f;
+#X obj 682 331 &&;
+#X obj 681 307 t b f;
+#X obj 100 17 r reclock;
+#X obj 688 376 translateXYZ -40 -40 0;
+#X obj 520 378 translateXYZ -40 -40 0;
+#X obj 353 384 translateXYZ -40 -40 0;
+#X obj 68 546 translateXYZ -40 -40 0;
+#X connect 0 0 7 0;
+#X connect 0 0 28 0;
+#X connect 1 0 38 0;
+#X connect 3 0 104 0;
+#X connect 3 0 123 0;
+#X connect 3 0 125 0;
+#X connect 4 0 132 0;
+#X connect 5 0 21 1;
+#X connect 5 0 93 1;
+#X connect 5 0 94 1;
+#X connect 5 0 83 1;
+#X connect 7 0 119 0;
+#X connect 8 0 7 1;
+#X connect 10 0 11 0;
+#X connect 10 0 68 0;
+#X connect 10 1 12 0;
+#X connect 10 1 68 0;
+#X connect 10 2 13 0;
+#X connect 10 2 68 0;
+#X connect 10 3 14 0;
+#X connect 10 3 68 0;
+#X connect 10 4 15 0;
+#X connect 10 4 68 0;
+#X connect 10 5 16 0;
+#X connect 10 5 68 0;
+#X connect 10 6 17 0;
+#X connect 10 6 68 0;
+#X connect 10 7 18 0;
+#X connect 10 7 68 0;
+#X connect 10 8 69 0;
+#X connect 11 0 2 0;
+#X connect 12 0 2 0;
+#X connect 13 0 2 0;
+#X connect 14 0 2 0;
+#X connect 15 0 2 0;
+#X connect 16 0 2 0;
+#X connect 17 0 2 0;
+#X connect 18 0 2 0;
+#X connect 19 0 3 0;
+#X connect 19 0 49 1;
+#X connect 19 0 47 0;
+#X connect 19 0 58 1;
+#X connect 19 0 65 0;
+#X connect 19 0 97 0;
+#X connect 20 0 10 0;
+#X connect 21 0 2 0;
+#X connect 22 0 2 0;
+#X connect 22 1 2 1;
+#X connect 23 0 132 1;
+#X connect 24 0 7 1;
+#X connect 25 0 98 0;
+#X connect 27 0 28 1;
+#X connect 28 0 27 0;
+#X connect 28 0 30 0;
+#X connect 29 0 26 0;
+#X connect 30 0 26 0;
+#X connect 31 0 20 0;
+#X connect 32 0 25 0;
+#X connect 32 1 25 1;
+#X connect 33 0 32 0;
+#X connect 34 0 42 0;
+#X connect 34 0 89 0;
+#X connect 34 1 10 0;
+#X connect 34 1 107 0;
+#X connect 34 2 19 0;
+#X connect 34 3 74 0;
+#X connect 34 3 106 0;
+#X connect 34 4 35 0;
+#X connect 35 0 36 0;
+#X connect 36 0 32 0;
+#X connect 36 0 45 0;
+#X connect 36 0 88 0;
+#X connect 37 0 19 0;
+#X connect 38 0 24 0;
+#X connect 38 0 34 0;
+#X connect 39 0 35 0;
+#X connect 40 0 39 0;
+#X connect 41 0 131 0;
+#X connect 42 0 23 0;
+#X connect 42 1 23 1;
+#X connect 43 0 42 0;
+#X connect 44 0 54 0;
+#X connect 44 0 60 0;
+#X connect 45 0 53 0;
+#X connect 45 0 59 0;
+#X connect 45 1 53 1;
+#X connect 45 1 59 1;
+#X connect 46 0 45 0;
+#X connect 47 0 54 0;
+#X connect 47 0 60 0;
+#X connect 47 1 54 1;
+#X connect 47 1 60 1;
+#X connect 48 0 47 0;
+#X connect 50 0 24 0;
+#X connect 50 0 26 0;
+#X connect 51 0 34 0;
+#X connect 52 0 51 0;
+#X connect 53 0 56 0;
+#X connect 54 0 100 0;
+#X connect 55 0 93 0;
+#X connect 56 0 131 2;
+#X connect 57 0 130 0;
+#X connect 59 0 62 0;
+#X connect 60 0 101 0;
+#X connect 61 0 94 0;
+#X connect 62 0 130 2;
+#X connect 63 0 67 0;
+#X connect 63 0 71 0;
+#X connect 64 0 63 0;
+#X connect 65 1 66 0;
+#X connect 66 0 70 0;
+#X connect 66 1 64 1;
+#X connect 67 0 61 3;
+#X connect 68 0 120 0;
+#X connect 69 0 120 0;
+#X connect 70 0 64 0;
+#X connect 71 0 55 3;
+#X connect 73 0 129 0;
+#X connect 74 0 75 0;
+#X connect 74 0 90 0;
+#X connect 74 1 76 0;
+#X connect 74 1 90 0;
+#X connect 74 2 77 0;
+#X connect 74 2 90 0;
+#X connect 74 3 78 0;
+#X connect 74 3 90 0;
+#X connect 74 4 79 0;
+#X connect 74 4 90 0;
+#X connect 74 5 80 0;
+#X connect 74 5 90 0;
+#X connect 74 6 81 0;
+#X connect 74 6 90 0;
+#X connect 74 7 82 0;
+#X connect 74 7 90 0;
+#X connect 74 8 91 0;
+#X connect 75 0 72 0;
+#X connect 76 0 72 0;
+#X connect 77 0 72 0;
+#X connect 78 0 72 0;
+#X connect 79 0 72 0;
+#X connect 80 0 72 0;
+#X connect 81 0 72 0;
+#X connect 82 0 72 0;
+#X connect 83 0 72 0;
+#X connect 84 0 72 0;
+#X connect 84 1 72 1;
+#X connect 85 0 95 0;
+#X connect 86 0 99 0;
+#X connect 87 0 92 0;
+#X connect 88 0 86 0;
+#X connect 88 1 86 1;
+#X connect 89 0 85 0;
+#X connect 89 1 85 1;
+#X connect 90 0 103 0;
+#X connect 91 0 103 0;
+#X connect 92 0 74 0;
+#X connect 93 0 49 0;
+#X connect 94 0 58 0;
+#X connect 95 0 102 0;
+#X connect 96 0 95 0;
+#X connect 96 1 95 1;
+#X connect 97 0 96 0;
+#X connect 98 0 132 2;
+#X connect 99 0 129 2;
+#X connect 100 0 131 1;
+#X connect 101 0 130 1;
+#X connect 102 0 129 1;
+#X connect 103 0 127 0;
+#X connect 104 0 103 0;
+#X connect 104 1 103 1;
+#X connect 106 0 108 0;
+#X connect 107 0 109 0;
+#X connect 108 0 109 0;
+#X connect 108 1 109 1;
+#X connect 109 0 114 0;
+#X connect 110 0 115 0;
+#X connect 111 0 116 0;
+#X connect 112 0 115 0;
+#X connect 113 0 116 0;
+#X connect 114 0 110 0;
+#X connect 114 0 111 0;
+#X connect 114 1 113 0;
+#X connect 114 1 112 0;
+#X connect 115 0 71 0;
+#X connect 115 1 71 1;
+#X connect 116 0 67 0;
+#X connect 116 1 67 1;
+#X connect 117 0 118 0;
+#X connect 118 0 107 0;
+#X connect 118 1 106 0;
+#X connect 119 0 23 0;
+#X connect 119 0 44 0;
+#X connect 119 0 85 0;
+#X connect 119 1 25 0;
+#X connect 119 1 53 0;
+#X connect 119 1 59 0;
+#X connect 119 1 86 0;
+#X connect 119 2 6 0;
+#X connect 119 2 129 3;
+#X connect 119 2 130 3;
+#X connect 119 2 131 3;
+#X connect 119 2 132 3;
+#X connect 119 5 5 0;
+#X connect 119 6 5 1;
+#X connect 119 7 5 2;
+#X connect 119 8 121 0;
+#X connect 119 8 126 0;
+#X connect 119 8 122 0;
+#X connect 119 8 124 0;
+#X connect 120 0 4 0;
+#X connect 121 0 120 0;
+#X connect 121 1 120 1;
+#X connect 122 0 41 0;
+#X connect 123 0 122 0;
+#X connect 123 1 122 1;
+#X connect 124 0 57 0;
+#X connect 125 0 124 0;
+#X connect 125 1 124 1;
+#X connect 126 0 73 0;
+#X connect 127 0 126 0;
+#X connect 127 1 126 1;
+#X connect 128 0 7 1;
+#X connect 129 0 83 0;
+#X connect 130 0 61 0;
+#X connect 131 0 55 0;
+#X connect 132 0 21 0;
diff --git a/gemnotes_0.2.3/ext/gemnotes_countbars.dll b/gemnotes_0.2.3/ext/gemnotes_countbars.dll
new file mode 100755
index 0000000..5b3fc3b
--- /dev/null
+++ b/gemnotes_0.2.3/ext/gemnotes_countbars.dll
Binary files differ
diff --git a/gemnotes_0.2.3/ext/gemnotes_countbars.pd_darwin b/gemnotes_0.2.3/ext/gemnotes_countbars.pd_darwin
new file mode 100755
index 0000000..f288fff
--- /dev/null
+++ b/gemnotes_0.2.3/ext/gemnotes_countbars.pd_darwin
Binary files differ
diff --git a/gemnotes_0.2.3/ext/gemnotes_countbars.pd_linux b/gemnotes_0.2.3/ext/gemnotes_countbars.pd_linux
new file mode 100755
index 0000000..ec1563f
--- /dev/null
+++ b/gemnotes_0.2.3/ext/gemnotes_countbars.pd_linux
Binary files differ
diff --git a/gemnotes_0.2.3/ext/gemnotes_counter.dll b/gemnotes_0.2.3/ext/gemnotes_counter.dll
new file mode 100755
index 0000000..1459452
--- /dev/null
+++ b/gemnotes_0.2.3/ext/gemnotes_counter.dll
Binary files differ
diff --git a/gemnotes_0.2.3/ext/gemnotes_counter.pd_darwin b/gemnotes_0.2.3/ext/gemnotes_counter.pd_darwin
new file mode 100755
index 0000000..1bcbf23
--- /dev/null
+++ b/gemnotes_0.2.3/ext/gemnotes_counter.pd_darwin
Binary files differ
diff --git a/gemnotes_0.2.3/ext/gemnotes_counter.pd_linux b/gemnotes_0.2.3/ext/gemnotes_counter.pd_linux
new file mode 100755
index 0000000..8925117
--- /dev/null
+++ b/gemnotes_0.2.3/ext/gemnotes_counter.pd_linux
Binary files differ
diff --git a/gemnotes_0.2.3/ext/help-gemnotes_counter.pd b/gemnotes_0.2.3/ext/help-gemnotes_counter.pd
new file mode 100755
index 0000000..e4ae13a
--- /dev/null
+++ b/gemnotes_0.2.3/ext/help-gemnotes_counter.pd
@@ -0,0 +1,68 @@
+#N canvas 0 0 590 490 10;
+#X obj 190 141 gemnotes_counter;
+#X floatatom 23 209 5 0 0 3 offset - -;
+#X floatatom 62 209 5 0 0 3 rhythm - -;
+#X floatatom 102 210 5 0 0 3 duration - -;
+#X floatatom 158 210 5 0 0 3 grouplen - -;
+#X floatatom 212 210 5 0 0 3 groupcount - -;
+#X floatatom 290 207 5 0 0 3 rest_offset - -;
+#X floatatom 361 208 5 0 0 3 rest_rhythm - -;
+#X obj 259 173 tgl 15 0 empty empty beam -2 21 0 10 -262144 -1 -1 0
+1;
+#X obj 236 173 tgl 15 0 empty empty tie -2 21 0 10 -262144 -1 -1 0
+1;
+#X obj 401 190 bng 15 250 50 0 empty empty newbar -3 21 0 10 -262144
+-1 -1;
+#X obj 116 36 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 176 39 f;
+#X floatatom 191 24 5 0 0 0 - - -;
+#X obj 176 22 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X msg 245 37 bar 4 4 4 16;
+#X msg 258 57 bar 6 8 6 16 4 16 2 16;
+#X msg 249 91 step 1;
+#X msg 314 93 step 2;
+#X msg 362 94 allstep 0.11;
+#X msg 363 115 allstep 0.18;
+#X obj 97 281 cnv 15 300 150 empty empty gemnotes_milestones 20 12
+0 14 -204800 -13330 0;
+#X text 123 309 Phase 1: build prototype objects.;
+#X text 123 327 Phase 2: build prototype objectmakers;
+#X text 124 345 Phase 3: build gemnotes_counter;
+#X text 124 364 Phase 4: Implement and debug counter object;
+#X text 125 382 Phase 5: build and link to score translator;
+#X text 125 399 Phase 6: rehearse and perform Islands 1;
+#X obj 103 309 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 103 327 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 103 345 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 103 363 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 103 381 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 103 399 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X text 406 345 September - December 2010;
+#X connect 0 0 1 0;
+#X connect 0 1 2 0;
+#X connect 0 2 3 0;
+#X connect 0 3 4 0;
+#X connect 0 4 5 0;
+#X connect 0 5 9 0;
+#X connect 0 6 8 0;
+#X connect 0 7 6 0;
+#X connect 0 8 7 0;
+#X connect 0 9 10 0;
+#X connect 11 0 0 0;
+#X connect 12 0 0 0;
+#X connect 13 0 12 1;
+#X connect 14 0 12 0;
+#X connect 15 0 0 0;
+#X connect 16 0 0 0;
+#X connect 17 0 0 0;
+#X connect 18 0 0 0;
+#X connect 19 0 0 0;
+#X connect 20 0 0 0;
diff --git a/gemnotes_0.2.3/ext/polyquant.dll b/gemnotes_0.2.3/ext/polyquant.dll
new file mode 100755
index 0000000..41e0021
--- /dev/null
+++ b/gemnotes_0.2.3/ext/polyquant.dll
Binary files differ
diff --git a/gemnotes_0.2.3/ext/polyquant.pd_darwin b/gemnotes_0.2.3/ext/polyquant.pd_darwin
new file mode 100755
index 0000000..53c45f8
--- /dev/null
+++ b/gemnotes_0.2.3/ext/polyquant.pd_darwin
Binary files differ
diff --git a/gemnotes_0.2.3/ext/polyquant.pd_linux b/gemnotes_0.2.3/ext/polyquant.pd_linux
new file mode 100755
index 0000000..66a97e6
--- /dev/null
+++ b/gemnotes_0.2.3/ext/polyquant.pd_linux
Binary files differ
diff --git a/gemnotes_0.2.3/fonts/LucidaBrightRegular.ttf b/gemnotes_0.2.3/fonts/LucidaBrightRegular.ttf
new file mode 100755
index 0000000..79738f1
--- /dev/null
+++ b/gemnotes_0.2.3/fonts/LucidaBrightRegular.ttf
Binary files differ
diff --git a/gemnotes_0.2.3/fonts/Music5.ttf b/gemnotes_0.2.3/fonts/Music5.ttf
new file mode 100755
index 0000000..7bec38a
--- /dev/null
+++ b/gemnotes_0.2.3/fonts/Music5.ttf
Binary files differ
diff --git a/gemnotes_0.2.3/fonts/Music6.ttf b/gemnotes_0.2.3/fonts/Music6.ttf
new file mode 100755
index 0000000..31dd179
--- /dev/null
+++ b/gemnotes_0.2.3/fonts/Music6.ttf
Binary files differ
diff --git a/gemnotes_0.2.3/fonts/Music7.ttf b/gemnotes_0.2.3/fonts/Music7.ttf
new file mode 100755
index 0000000..c295fe4
--- /dev/null
+++ b/gemnotes_0.2.3/fonts/Music7.ttf
Binary files differ
diff --git a/gemnotes_0.2.3/fonts/Music7chunky.ttf b/gemnotes_0.2.3/fonts/Music7chunky.ttf
new file mode 100755
index 0000000..990fe5a
--- /dev/null
+++ b/gemnotes_0.2.3/fonts/Music7chunky.ttf
Binary files differ
diff --git a/gemnotes_0.2.3/fonts/Music8.ttf b/gemnotes_0.2.3/fonts/Music8.ttf
new file mode 100755
index 0000000..4b51499
--- /dev/null
+++ b/gemnotes_0.2.3/fonts/Music8.ttf
Binary files differ
diff --git a/gemnotes_0.2.3/fonts/vera.ttf b/gemnotes_0.2.3/fonts/vera.ttf
new file mode 100755
index 0000000..58cd6b5
--- /dev/null
+++ b/gemnotes_0.2.3/fonts/vera.ttf
Binary files differ
diff --git a/gemnotes_0.2.3/makevoice.pd b/gemnotes_0.2.3/makevoice.pd
new file mode 100755
index 0000000..8cb1cc3
--- /dev/null
+++ b/gemnotes_0.2.3/makevoice.pd
@@ -0,0 +1,873 @@
+#N canvas 717 270 531 399 10;
+#N canvas 95 222 450 300 \$0-voicecanvas 0;
+#X obj 92 36 inlet;
+#X obj 244 30 inlet;
+#X obj 158 231 outlet;
+#N canvas 11 341 1253 328 \$0-voice 0;
+#X obj 10 10 inlet;
+#X obj 100 10 inlet;
+#X obj 10 300 outlet;
+#X restore 119 143 pd \$0-voice;
+#X connect 0 0 3 0;
+#X connect 1 0 3 1;
+#X connect 3 0 2 0;
+#X restore 37 338 pd \$0-voicecanvas;
+#N canvas 0 22 591 300 initcanvas 0;
+#X msg 225 149 clear;
+#X obj 186 81 t b b b;
+#X msg 205 130 obj 10 10 inlet \, obj 100 10 inlet \, obj 10 300 outlet
+;
+#X msg 186 188 connect 0 0 3 0 \, connect 1 0 3 1 \, connect 3 0 2
+0;
+#X obj 225 168 s pd-\$0-voice;
+#X obj 186 207 s pd-\$0-voicecanvas;
+#X obj 186 62 inlet;
+#X connect 0 0 4 0;
+#X connect 1 0 3 0;
+#X connect 1 1 2 0;
+#X connect 1 2 0 0;
+#X connect 2 0 4 0;
+#X connect 3 0 5 0;
+#X connect 6 0 1 0;
+#X restore 372 127 pd initcanvas;
+#N canvas 0 22 450 300 initmakevoice 0;
+#X obj 79 181 s \$0-hdsq;
+#X obj 152 181 s \$0-stem;
+#X obj 79 105 \$1;
+#X obj 152 105 \$2;
+#X obj 79 124 moses 1e-07;
+#X obj 152 162 0.5;
+#X obj 79 162 0.15;
+#X obj 79 143 t b;
+#X obj 152 124 moses 1e-07;
+#X obj 152 143 t b;
+#X obj 104 49 loadbang;
+#X obj 225 124 s \$0-reset;
+#X obj 251 66 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X msg 277 182 0;
+#X obj 279 215 s \$0-bt;
+#X obj 275 156 loadbang;
+#X connect 2 0 4 0;
+#X connect 3 0 8 0;
+#X connect 4 0 7 0;
+#X connect 4 1 6 0;
+#X connect 5 0 1 0;
+#X connect 6 0 0 0;
+#X connect 7 0 6 0;
+#X connect 8 0 9 0;
+#X connect 8 1 5 0;
+#X connect 9 0 5 0;
+#X connect 10 0 2 0;
+#X connect 10 0 3 0;
+#X connect 10 0 11 0;
+#X connect 12 0 3 0;
+#X connect 12 0 2 0;
+#X connect 13 0 14 0;
+#X connect 15 0 13 0;
+#X restore 387 217 pd initmakevoice;
+#X msg 77 141 vis 1;
+#X obj 37 38 inlet;
+#X text 37 24 stave;
+#X obj 77 38 inlet;
+#X obj 74 307 s pd-\$0-voice;
+#N canvas 87 88 1193 663 gemnotes_format 0;
+#X obj 34 8 inlet;
+#X obj 34 47 route note;
+#X obj 34 83 route . +;
+#X obj 166 312 r \$0-stem;
+#X text 121 382 p;
+#X text 147 384 bt;
+#X text 171 374 tail;
+#X text 170 363 beam/;
+#X text 202 384 acc;
+#X obj 191 344 * 1;
+#X text 215 364 flat/;
+#X text 213 375 sharp;
+#X obj 501 366 f;
+#X obj 520 347 t b f;
+#X text 680 389 bt;
+#X text 65 523 bt = orientation (bottom / top) of stems \, beams and
+tails;
+#X text 650 387 p;
+#X text 614 388 xoff;
+#X text 638 420 chord note;
+#X obj 627 375 f;
+#X obj 95 467 outlet;
+#X text 101 47 reset \, bar \, group;
+#X msg 110 185 step \$1;
+#X obj 118 152 t b f;
+#X text 687 365 flat/;
+#X text 685 376 sharp;
+#X obj 22 149 t b f;
+#X msg 22 169 chord;
+#X msg 172 184 step \$1;
+#X obj 455 396 pack;
+#X text 406 194 args: numerator \, denominator \, firstobject \, x-offset
+;
+#X obj 554 277 loadbang;
+#X obj 507 239 route reset;
+#X obj 346 394 pack f f f f;
+#X obj 244 323 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X text 732 386 n_obj;
+#X obj 95 417 prepend note;
+#X obj 258 419 prepend rest;
+#X obj 408 419 prepend barline;
+#X obj 523 434 prepend tsig;
+#X obj 629 438 prepend chord;
+#X text 653 373 proot;
+#X msg 536 526 xoff p proot bt shfl rhy dur n_obj;
+#X text 702 421 rhy dur tie;
+#X obj 629 404 pack f f f f f f f f f;
+#X obj 336 360 - 0.05;
+#X text 643 147 hdsq;
+#X obj 34 27 route //;
+#X floatatom 269 324 5 0 0 0 - - -;
+#X msg 60 492 xoff rhythm pitch dur bt stem beam tie acc shfl grouptotal
+objnum groupcount beamset rootobj tail tuple;
+#X text 82 222 off rhy dur grp gc tie bm_ rof rd bar cho num den;
+#X obj 488 77 route hdsq;
+#X obj 455 360 + 0.08;
+#X obj 523 403 pack f f f f f;
+#X msg 625 308 0;
+#X obj 554 324 t b;
+#X msg 598 326 0.8;
+#X obj 501 384 - 0.2;
+#X text 839 273 tempo mark;
+#X obj 762 436 prepend tempo;
+#X obj 774 403 pack f f f f;
+#X msg 397 13 debug;
+#X obj 509 3 r \$0-debug;
+#X obj 440 10 route bang;
+#X floatatom 384 132 5 0 0 0 - - -;
+#X text 383 222 tail tuple tempo gob nob;
+#X obj 275 348 moses 2;
+#X msg 304 377 0;
+#X msg 706 276 \$1 tail 1;
+#X obj 705 300 s \$0-sendback;
+#X obj 666 256 print tail;
+#X obj 145 330 r \$0-bt;
+#X obj 920 424 outlet;
+#X floatatom 609 239 5 0 0 0 - - -;
+#X obj 879 60 route tempo;
+#X obj 763 61 route reset tempo;
+#X obj 829 102 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 754 116 cup;
+#X msg 752 90 1;
+#X msg 788 91 0;
+#X floatatom 754 148 5 0 0 0 - - -;
+#X obj 834 288 unpack f f f;
+#X msg 525 300 0.6;
+#X obj 609 259 > 0;
+#X obj 614 280 sel 0 1;
+#X floatatom 901 377 5 0 0 0 - - -;
+#X text 886 392 should work...;
+#X text 885 401 ...but doesn't!;
+#X obj 804 337 == 0;
+#X obj 773 357 spigot;
+#X obj 734 336 spigot;
+#X msg 668 310 1;
+#X obj 796 307 t b;
+#X obj 734 356 f;
+#X text 819 358 <---nasty kludge;
+#X obj 768 380 + 0.9;
+#X obj 488 96 * 0.5;
+#X obj 998 378 pack f f f f f f;
+#X obj 994 324 unpack f f f f f;
+#X msg 1034 303 0;
+#X obj 1077 351 == 0;
+#X obj 990 282 t a b;
+#X msg 985 452 dyn \$1 \$2 \$3 \$4 \$5 \$6;
+#X obj 80 395 pack f f f f f f 1 f 1 f f f f f f f f f f;
+#X obj 830 242 print dyncount;
+#X obj 395 157 print objects;
+#X obj 1075 293 r \$0-bt;
+#X floatatom 462 488 5 0 0 0 - - -;
+#X msg 229 184 articulation \$1;
+#X obj 236 129 unpack f f f f f f;
+#X obj 128 129 unpack f f f f f;
+#X obj 22 129 unpack f f f f f;
+#X obj 105 26 route list;
+#X obj 92 238 gemnotes_counter 4 4 3 1.1 -----------------------------
+;
+#X connect 0 0 47 0;
+#X connect 1 0 2 0;
+#X connect 1 1 32 0;
+#X connect 1 1 51 0;
+#X connect 1 1 113 0;
+#X connect 2 0 111 0;
+#X connect 2 1 110 0;
+#X connect 2 2 109 0;
+#X connect 3 0 103 5;
+#X connect 9 0 103 7;
+#X connect 12 0 57 0;
+#X connect 13 0 12 0;
+#X connect 13 1 53 1;
+#X connect 19 0 44 0;
+#X connect 22 0 113 0;
+#X connect 23 0 113 0;
+#X connect 23 1 44 2;
+#X connect 23 1 103 2;
+#X connect 26 0 27 0;
+#X connect 26 1 44 1;
+#X connect 27 0 113 0;
+#X connect 28 0 113 0;
+#X connect 29 0 38 0;
+#X connect 31 0 82 0;
+#X connect 31 0 54 0;
+#X connect 32 0 82 0;
+#X connect 32 0 54 0;
+#X connect 32 0 91 0;
+#X connect 33 0 37 0;
+#X connect 36 0 20 0;
+#X connect 37 0 20 0;
+#X connect 38 0 20 0;
+#X connect 39 0 20 0;
+#X connect 40 0 20 0;
+#X connect 44 0 40 0;
+#X connect 45 0 33 0;
+#X connect 47 1 1 0;
+#X connect 47 1 75 0;
+#X connect 47 1 112 0;
+#X connect 51 0 96 0;
+#X connect 52 0 29 0;
+#X connect 52 0 12 1;
+#X connect 53 0 39 0;
+#X connect 53 0 55 0;
+#X connect 54 0 53 4;
+#X connect 55 0 56 0;
+#X connect 56 0 53 4;
+#X connect 57 0 53 0;
+#X connect 59 0 20 0;
+#X connect 60 0 59 0;
+#X connect 61 0 113 0;
+#X connect 62 0 63 0;
+#X connect 63 0 61 0;
+#X connect 64 0 105 0;
+#X connect 66 0 103 15;
+#X connect 66 1 67 0;
+#X connect 66 1 68 0;
+#X connect 66 1 70 0;
+#X connect 67 0 103 15;
+#X connect 68 0 69 0;
+#X connect 71 0 103 4;
+#X connect 73 0 83 0;
+#X connect 75 0 78 0;
+#X connect 75 0 79 0;
+#X connect 75 1 76 0;
+#X connect 76 0 77 0;
+#X connect 77 0 80 0;
+#X connect 78 0 77 0;
+#X connect 79 0 80 0;
+#X connect 81 0 85 0;
+#X connect 81 0 89 0;
+#X connect 81 0 92 0;
+#X connect 81 1 60 1;
+#X connect 81 2 60 2;
+#X connect 82 0 12 1;
+#X connect 83 0 84 0;
+#X connect 83 0 88 0;
+#X connect 83 0 90 1;
+#X connect 84 0 54 0;
+#X connect 84 1 56 0;
+#X connect 88 0 89 1;
+#X connect 89 0 60 0;
+#X connect 90 0 93 0;
+#X connect 92 0 90 0;
+#X connect 93 0 95 0;
+#X connect 95 0 60 0;
+#X connect 96 0 52 1;
+#X connect 97 0 102 0;
+#X connect 98 0 97 0;
+#X connect 98 1 97 1;
+#X connect 98 2 97 2;
+#X connect 98 3 97 3;
+#X connect 99 0 97 2;
+#X connect 100 0 97 4;
+#X connect 101 0 98 0;
+#X connect 101 1 99 0;
+#X connect 102 0 20 0;
+#X connect 103 0 36 0;
+#X connect 106 0 100 0;
+#X connect 108 0 113 0;
+#X connect 109 0 113 0;
+#X connect 109 1 44 2;
+#X connect 109 1 103 2;
+#X connect 109 2 28 0;
+#X connect 109 3 103 9;
+#X connect 109 5 108 0;
+#X connect 110 0 23 0;
+#X connect 110 1 22 0;
+#X connect 110 2 103 9;
+#X connect 110 4 108 0;
+#X connect 111 0 26 0;
+#X connect 111 1 44 4;
+#X connect 111 4 108 0;
+#X connect 112 0 1 0;
+#X connect 113 0 19 1;
+#X connect 113 0 93 1;
+#X connect 113 0 103 0;
+#X connect 113 1 44 5;
+#X connect 113 1 103 1;
+#X connect 113 2 33 2;
+#X connect 113 2 44 6;
+#X connect 113 2 103 3;
+#X connect 113 3 103 10;
+#X connect 113 4 103 13;
+#X connect 113 5 9 0;
+#X connect 113 5 34 0;
+#X connect 113 5 44 7;
+#X connect 113 6 48 0;
+#X connect 113 6 103 12;
+#X connect 113 7 45 0;
+#X connect 113 8 33 1;
+#X connect 113 9 52 0;
+#X connect 113 10 19 0;
+#X connect 113 11 13 0;
+#X connect 113 12 53 2;
+#X connect 113 13 66 0;
+#X connect 113 14 103 16;
+#X connect 113 15 81 0;
+#X connect 113 16 103 14;
+#X connect 113 17 44 8;
+#X connect 113 17 53 3;
+#X connect 113 17 29 1;
+#X connect 113 17 33 3;
+#X connect 113 17 60 3;
+#X connect 113 17 64 0;
+#X connect 113 17 103 11;
+#X connect 113 17 97 5;
+#X connect 113 18 72 0;
+#X connect 113 18 73 0;
+#X connect 113 19 103 17;
+#X connect 113 20 103 18;
+#X connect 113 20 107 0;
+#X connect 113 21 101 0;
+#X connect 113 21 104 0;
+#X restore 170 90 pd gemnotes_format;
+#N canvas 395 22 904 511 make_note 0;
+#X obj 35 309 f;
+#X obj 45 36 inlet;
+#X obj 41 59 t b a b;
+#X obj 32 238 spigot 1;
+#X obj 77 219 == 0;
+#X obj 53 265 t b;
+#X obj 73 287 f;
+#X obj 472 339 f;
+#X obj 402 183 spigot;
+#X text 553 346 \$14 - thisobj \, \$15 - prevobj \, \$16 - rootobj
+;
+#X obj 363 238 f;
+#X obj 445 339 f;
+#X obj 402 202 t b b b;
+#X obj 227 490 outlet;
+#X msg 491 54 xobj connectfirst connectprev thisobj;
+#X obj 363 257 + 275;
+#X obj 90 59 s \$0-get_x_obj;
+#X obj 61 309 r \$0-x_obj;
+#X obj 389 238 r \$0-x_obj;
+#X obj 363 276 s \$0-set_x_obj;
+#X obj 35 347 s \$0-set_x_obj;
+#X text 40 107 x r p d bt stem bm tie acc shfl grp obroute bmconn gc
+rootob;
+#X obj 417 42 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 534 144 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 625 144 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 628 168 s bangscore;
+#X obj 536 167 s resetscore;
+#X obj 500 339 f;
+#X floatatom 332 31 5 0 0 0 - - -;
+#X floatatom 465 176 5 0 0 0 - - -;
+#X floatatom 607 364 5 0 0 0 - - -;
+#X obj 82 423 print note_1;
+#X obj 407 423 print note_234;
+#X obj 82 404 spigot;
+#X obj 407 404 spigot;
+#X obj 456 384 r \$0-debug;
+#X obj 115 385 r \$0-debug;
+#X obj 286 43 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 198 52 sel 1;
+#X obj 198 77 bng 15 550 50 0 empty empty empty 17 7 0 10 -262144 -258113
+-1;
+#X obj 198 30 > 0;
+#X obj 317 152 makefilename group_%d;
+#X obj 35 328 + 315;
+#X obj 563 261 f;
+#X obj 561 194 change;
+#X obj 592 261 f;
+#N canvas 0 22 450 300 \$0-reclock 0;
+#X obj 92 69 inlet;
+#N canvas 0 22 450 300 \$0-reclocker 0;
+#X restore 96 128 pd \$0-reclocker;
+#X restore 735 152 pd \$0-reclock;
+#X obj 745 256 s pd-\$0-reclocker;
+#X msg 742 221 clear \, obj 10 10 inlet;
+#X obj 561 215 t f b b b;
+#X obj 643 245 s pd-\$0-reclock;
+#X msg 643 221 connect 0 0 1 0;
+#X obj 736 102 r \$0-reclock;
+#X msg 735 126 reclock;
+#X obj 683 275 makefilename group_%d;
+#X msg 683 294 obj 10 80 send \$1 \, connect 0 0 1 0;
+#X obj 543 297 makefilename group_%d;
+#X msg 556 100 0;
+#X msg 591 99 1;
+#X obj 645 105 inlet;
+#X msg 581 134 set -1;
+#X msg 543 316 obj 110 80 send \$1 \, connect 0 0 2 0;
+#X msg 518 98 2;
+#X msg 671 142 clear;
+#X msg 36 441 obj \$1 150 noteobject \$2 \$3 \$4 \$5 \$6 \$7 \$8 \$9
+\$10 \$11 \$12 \$13 \$15 \$16 \$17 \$18 \$19 \, connect 0 0 \$14 0
+\, connect 1 0 \$14 1;
+#X msg 401 441 obj \$1 150 noteobject \$2 \$3 \$4 \$5 \$6 \$7 \$8 \$9
+\$10 \$11 \$12 \$13 \$17 \$18 \$19 \$20 \$21 \, connect 0 0 \$14 0
+\, connect 1 0 \$14 1 \, connect \$14 0 \$15 3 \, connect \$16 1 \$14
+2;
+#X obj 307 366 pack f f f f f f f f f f f f f f f f f f f s f;
+#X obj 47 367 pack f f f f f f f f f f f f f f f f f s f;
+#X obj 49 124 unpack f f f f f f f f f f f f f f f f f f f;
+#X connect 0 0 42 0;
+#X connect 0 0 67 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 2 0 8 0;
+#X connect 2 1 68 0;
+#X connect 2 2 16 0;
+#X connect 3 0 5 0;
+#X connect 3 0 0 0;
+#X connect 4 0 3 1;
+#X connect 5 0 6 0;
+#X connect 6 0 7 1;
+#X connect 6 0 27 1;
+#X connect 7 0 30 0;
+#X connect 7 0 66 14;
+#X connect 8 0 12 0;
+#X connect 10 0 15 0;
+#X connect 10 0 66 0;
+#X connect 11 0 7 1;
+#X connect 11 0 66 13;
+#X connect 12 0 10 0;
+#X connect 12 1 11 0;
+#X connect 12 2 7 0;
+#X connect 12 2 27 0;
+#X connect 15 0 19 0;
+#X connect 17 0 0 1;
+#X connect 18 0 10 1;
+#X connect 23 0 26 0;
+#X connect 24 0 25 0;
+#X connect 27 0 66 15;
+#X connect 33 0 31 0;
+#X connect 34 0 32 0;
+#X connect 35 0 34 1;
+#X connect 36 0 33 1;
+#X connect 38 0 39 0;
+#X connect 40 0 38 0;
+#X connect 41 0 66 19;
+#X connect 41 0 67 17;
+#X connect 42 0 20 0;
+#X connect 43 0 45 1;
+#X connect 43 0 56 0;
+#X connect 44 0 49 0;
+#X connect 45 0 54 0;
+#X connect 48 0 47 0;
+#X connect 49 0 43 0;
+#X connect 49 1 45 0;
+#X connect 49 2 51 0;
+#X connect 49 3 48 0;
+#X connect 51 0 50 0;
+#X connect 52 0 53 0;
+#X connect 53 0 46 0;
+#X connect 54 0 55 0;
+#X connect 55 0 47 0;
+#X connect 56 0 61 0;
+#X connect 57 0 44 0;
+#X connect 58 0 44 0;
+#X connect 59 0 60 0;
+#X connect 59 0 63 0;
+#X connect 60 0 44 0;
+#X connect 61 0 47 0;
+#X connect 62 0 44 0;
+#X connect 63 0 47 0;
+#X connect 64 0 13 0;
+#X connect 65 0 13 0;
+#X connect 66 0 65 0;
+#X connect 66 0 34 0;
+#X connect 67 0 64 0;
+#X connect 67 0 33 0;
+#X connect 68 0 66 1;
+#X connect 68 0 67 1;
+#X connect 68 1 66 2;
+#X connect 68 1 67 2;
+#X connect 68 2 66 3;
+#X connect 68 2 67 3;
+#X connect 68 3 66 4;
+#X connect 68 3 67 4;
+#X connect 68 4 66 5;
+#X connect 68 4 67 5;
+#X connect 68 5 66 6;
+#X connect 68 5 67 6;
+#X connect 68 6 66 7;
+#X connect 68 6 67 7;
+#X connect 68 7 40 0;
+#X connect 68 7 66 8;
+#X connect 68 7 67 8;
+#X connect 68 8 66 9;
+#X connect 68 8 67 9;
+#X connect 68 9 66 10;
+#X connect 68 9 67 10;
+#X connect 68 10 66 11;
+#X connect 68 10 67 11;
+#X connect 68 11 11 1;
+#X connect 68 11 6 1;
+#X connect 68 11 29 0;
+#X connect 68 11 66 12;
+#X connect 68 11 67 12;
+#X connect 68 11 67 13;
+#X connect 68 12 4 0;
+#X connect 68 12 8 1;
+#X connect 68 12 22 0;
+#X connect 68 13 66 16;
+#X connect 68 13 67 14;
+#X connect 68 14 28 0;
+#X connect 68 15 66 17;
+#X connect 68 15 67 15;
+#X connect 68 16 66 18;
+#X connect 68 16 67 16;
+#X connect 68 17 41 0;
+#X connect 68 17 44 0;
+#X connect 68 18 67 18;
+#X connect 68 18 66 20;
+#X restore 108 273 pd make_note;
+#N canvas 812 45 450 378 make_tsig 0;
+#X obj 136 16 inlet;
+#X obj 120 124 f;
+#X obj 60 324 outlet;
+#X obj 188 202 prepend tsig;
+#X obj 97 151 + 90;
+#X obj 188 232 prepend;
+#X obj 188 264 s \$0-collate;
+#X obj 32 171 s \$0-set_x_obj;
+#X obj 176 66 s \$0-get_x_obj;
+#X obj 136 35 t b a b;
+#X obj 178 92 r \$0-x_obj;
+#X msg 60 291 obj \$1 100 tsig \$2 \$3 \$4 \$6 \, connect 0 0 \$5 0
+\, connect 1 0 \$5 1;
+#X obj 163 124 unpack f f f f f;
+#X obj 140 181 pack f f f f f f;
+#X connect 0 0 9 0;
+#X connect 1 0 4 0;
+#X connect 1 0 13 0;
+#X connect 3 0 5 0;
+#X connect 4 0 7 0;
+#X connect 5 0 6 0;
+#X connect 9 0 1 0;
+#X connect 9 1 12 0;
+#X connect 9 2 8 0;
+#X connect 10 0 1 1;
+#X connect 11 0 2 0;
+#X connect 12 0 13 1;
+#X connect 12 1 13 2;
+#X connect 12 2 13 3;
+#X connect 12 3 5 1;
+#X connect 12 3 13 4;
+#X connect 12 4 13 5;
+#X connect 13 0 11 0;
+#X connect 13 0 3 0;
+#X restore 224 280 pd make_tsig;
+#X text 77 24 score commands;
+#N canvas 0 22 450 300 make_barline 0;
+#X obj 131 27 inlet;
+#X obj 115 122 f;
+#X obj 92 149 + 90;
+#X obj 183 220 prepend;
+#X obj 183 240 s \$0-collate;
+#X obj 27 169 s \$0-set_x_obj;
+#X obj 165 101 r \$0-x_obj;
+#X obj 183 200 prepend barline;
+#X obj 158 122 unpack f f;
+#X obj 130 175 pack f f f;
+#X obj 68 279 outlet;
+#X obj 131 50 t b a b;
+#X obj 171 82 s \$0-get_x_obj;
+#X msg 68 260 obj \$1 100 barline \$2 \, connect 0 0 \$3 0 \, connect
+1 0 \$3 1;
+#X obj 150 279 outlet;
+#X obj 133 219 packel 2;
+#X connect 0 0 11 0;
+#X connect 1 0 2 0;
+#X connect 1 0 9 0;
+#X connect 2 0 5 0;
+#X connect 3 0 4 0;
+#X connect 6 0 1 1;
+#X connect 7 0 3 0;
+#X connect 8 0 9 1;
+#X connect 8 1 9 2;
+#X connect 8 1 3 1;
+#X connect 9 0 7 0;
+#X connect 9 0 13 0;
+#X connect 9 0 15 0;
+#X connect 11 0 1 0;
+#X connect 11 1 8 0;
+#X connect 11 2 12 0;
+#X connect 13 0 10 0;
+#X connect 15 0 14 0;
+#X restore 198 260 pd make_barline;
+#N canvas 0 22 450 300 make_rest 0;
+#X obj 111 50 t b a b;
+#X obj 150 70 s \$0-get_x_obj;
+#X obj 111 31 inlet;
+#X obj 126 90 r \$0-x_obj;
+#X obj 44 128 + 73;
+#X obj 111 109 f;
+#X obj 19 169 s \$0-set_x_obj;
+#X obj 111 169 pack f f f f f;
+#X obj 131 128 unpack f f f f;
+#X obj 62 265 outlet;
+#X obj 330 216 print rest;
+#X obj 330 197 spigot;
+#X obj 363 178 r \$0-debug;
+#X msg 62 234 obj \$1 100 rest \$2 \$3 \$4 \$5 \, connect 0 0 \$5 0
+\, connect 1 0 \$5 1;
+#X connect 0 0 5 0;
+#X connect 0 1 8 0;
+#X connect 0 2 1 0;
+#X connect 2 0 0 0;
+#X connect 3 0 5 1;
+#X connect 4 0 6 0;
+#X connect 5 0 4 0;
+#X connect 5 0 7 0;
+#X connect 7 0 13 0;
+#X connect 7 0 11 0;
+#X connect 8 0 7 1;
+#X connect 8 1 7 2;
+#X connect 8 2 7 3;
+#X connect 8 3 7 4;
+#X connect 11 0 10 0;
+#X connect 12 0 11 1;
+#X connect 13 0 9 0;
+#X restore 166 237 pd make_rest;
+#X obj 90 94 s \$0-debug;
+#N canvas 0 22 464 422 make_chord 0;
+#X msg 48 382 slavenote xoff rhythm pitch dur bt tie acc shfl proot
+route;
+#X text 113 367 1 2 3 4 5 6 7 8 9 10;
+#X obj 89 67 inlet;
+#X msg 116 119 xoff p proot bt shfl rhy dur tie n_obj;
+#X obj 35 111 cup;
+#X obj 35 130 * 30;
+#X obj 35 149 + 180;
+#X obj 89 86 t b a b;
+#X obj 23 191 f;
+#X obj 140 86 s \$0-get_x_obj;
+#X obj 38 171 r \$0-x_obj;
+#X msg 35 92 0;
+#X obj 35 73 t b;
+#X obj 35 54 inlet;
+#X obj 67 293 outlet;
+#X obj 94 142 unpack f f f f f f f f f f;
+#X obj 67 243 pack f f f f f f f f 1 f f f s;
+#X obj 246 177 makefilename g%d;
+#X msg 67 262 obj \$1 \$2 slavenote \$3 \$4 \$5 \$6 \$7 \$8 \$9 \$10
+\$11 \$12 \$13 \, connect 0 0 \$12 0 \, connect 1 0 \$12 1;
+#X connect 2 0 7 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 6 0 16 1;
+#X connect 7 0 8 0;
+#X connect 7 1 15 0;
+#X connect 7 2 9 0;
+#X connect 7 2 4 0;
+#X connect 8 0 16 0;
+#X connect 10 0 8 1;
+#X connect 11 0 4 0;
+#X connect 12 0 11 0;
+#X connect 13 0 12 0;
+#X connect 15 0 16 2;
+#X connect 15 1 16 4;
+#X connect 15 2 16 10;
+#X connect 15 3 16 6;
+#X connect 15 4 16 9;
+#X connect 15 5 16 3;
+#X connect 15 6 16 5;
+#X connect 15 7 16 7;
+#X connect 15 8 16 11;
+#X connect 15 9 17 0;
+#X connect 16 0 18 0;
+#X connect 17 0 16 12;
+#X connect 18 0 14 0;
+#X restore 150 216 pd make_chord;
+#N canvas 0 22 450 300 dynobj_positions 0;
+#X text 32 26 This object keeps track of the number of abstractions
+created in [pd \$0-voice].;
+#X obj 246 128 f;
+#X obj 246 153 s \$0-x_obj;
+#X obj 246 65 r \$0-get_x_obj;
+#X obj 278 92 r \$0-set_x_obj;
+#X msg 147 74 10;
+#X obj 38 69 inlet;
+#X connect 1 0 2 0;
+#X connect 3 0 1 0;
+#X connect 4 0 1 1;
+#X connect 5 0 1 1;
+#X connect 6 0 5 0;
+#X restore 382 63 pd dynobj_positions;
+#N canvas 0 22 462 368 make_tempo 0;
+#X obj 136 16 inlet;
+#X obj 120 124 f;
+#X obj 60 324 outlet;
+#X obj 97 151 + 90;
+#X obj 188 232 prepend;
+#X obj 188 264 s \$0-collate;
+#X obj 32 171 s \$0-set_x_obj;
+#X obj 176 66 s \$0-get_x_obj;
+#X obj 136 35 t b a b;
+#X obj 178 92 r \$0-x_obj;
+#X obj 163 124 unpack f f f f;
+#X obj 140 181 pack f f f f f;
+#X obj 188 202 prepend tempo;
+#X msg 60 291 obj \$1 100 tempo \$2 \$3 \$4 \$5 \, connect 0 0 \$5
+0 \, connect 1 0 \$5 1;
+#X connect 0 0 8 0;
+#X connect 1 0 3 0;
+#X connect 1 0 11 0;
+#X connect 3 0 6 0;
+#X connect 4 0 5 0;
+#X connect 8 0 1 0;
+#X connect 8 1 10 0;
+#X connect 8 2 7 0;
+#X connect 9 0 1 1;
+#X connect 10 0 11 1;
+#X connect 10 1 11 2;
+#X connect 10 2 11 3;
+#X connect 10 3 4 1;
+#X connect 10 3 11 4;
+#X connect 11 0 13 0;
+#X connect 11 0 12 0;
+#X connect 12 0 4 0;
+#X connect 13 0 2 0;
+#X restore 258 223 pd make_tempo;
+#X obj 304 308 r \$0-debug;
+#X obj 269 331 spigot;
+#X obj 215 304 r pd-\$0-voice;
+#X obj 268 350 print;
+#X obj 147 338 r \$0-sendback;
+#X obj 379 107 s \$0-bt;
+#N canvas 206 149 450 300 debug 0;
+#X obj 63 38 inlet;
+#X obj 61 118 gemhead;
+#X obj 155 57 inlet;
+#X obj 154 83 unpack f f f;
+#X obj 18 61 inlet;
+#X msg 64 96 0;
+#X obj 70 66 loadbang;
+#X floatatom 192 120 5 0 0 0 - - -;
+#X floatatom 21 116 5 0 0 0 - - -;
+#X obj 71 183 translateXYZ 0 0 -1.2;
+#X floatatom 15 85 5 0 0 0 - - -;
+#X obj 71 203 rectangle 0.05 0.1;
+#X obj 95 153 - 10;
+#X obj 135 126 - 1.63;
+#X connect 0 0 8 0;
+#X connect 0 0 12 0;
+#X connect 1 0 9 0;
+#X connect 2 0 3 0;
+#X connect 3 1 7 0;
+#X connect 3 1 13 0;
+#X connect 4 0 1 0;
+#X connect 4 0 10 0;
+#X connect 5 0 1 0;
+#X connect 6 0 5 0;
+#X connect 9 0 11 0;
+#X connect 12 0 9 1;
+#X connect 13 0 9 2;
+#X restore 255 118 pd debug;
+#X obj 324 351 outlet;
+#X obj 429 106 s \$0-stem;
+#X obj 376 175 outlet;
+#X obj 77 60 route vis debug info reclock;
+#X obj 312 87 route reset bt stem;
+#X obj 118 154 s \$0-reclock;
+#X obj 168 113 t b a;
+#N canvas 0 22 546 426 make_dynamics 0;
+#X obj 146 26 inlet;
+#X obj 130 134 f;
+#X obj 70 335 outlet;
+#X obj 107 161 + 90;
+#X obj 198 274 s \$0-collate;
+#X obj 42 181 s \$0-set_x_obj;
+#X obj 186 76 s \$0-get_x_obj;
+#X obj 146 45 t b a b;
+#X obj 188 102 r \$0-x_obj;
+#X obj 172 150 unpack f f f f f f;
+#X obj 150 191 pack f f f f f f f;
+#X msg 70 301 obj \$1 100 dynamic \$2 \$3 \$4 \$5 \$6 \$7 \, connect
+0 0 \$7 0 \, connect 1 0 \$7 1;
+#X msg 199 246 \$7 dynamic \$1 \$2 \$3 \$4 \$5 \$6;
+#X connect 0 0 7 0;
+#X connect 1 0 3 0;
+#X connect 1 0 10 0;
+#X connect 3 0 5 0;
+#X connect 7 0 1 0;
+#X connect 7 1 9 0;
+#X connect 7 2 6 0;
+#X connect 8 0 1 1;
+#X connect 9 0 10 1;
+#X connect 9 1 10 2;
+#X connect 9 2 10 3;
+#X connect 9 3 10 4;
+#X connect 9 4 10 5;
+#X connect 9 5 10 6;
+#X connect 10 0 11 0;
+#X connect 10 0 12 0;
+#X connect 11 0 2 0;
+#X connect 12 0 4 0;
+#X restore 313 258 pd make_dynamics;
+#X obj 118 194 route note rest barline tsig chord tempo dyn;
+#X connect 3 0 7 0;
+#X connect 4 0 0 0;
+#X connect 4 0 24 2;
+#X connect 6 0 28 0;
+#X connect 8 0 31 0;
+#X connect 8 0 27 0;
+#X connect 8 1 24 1;
+#X connect 9 0 7 0;
+#X connect 10 0 7 0;
+#X connect 12 0 7 0;
+#X connect 12 1 25 0;
+#X connect 13 0 7 0;
+#X connect 15 0 7 0;
+#X connect 17 0 7 0;
+#X connect 18 0 19 1;
+#X connect 19 0 21 0;
+#X connect 20 0 19 0;
+#X connect 22 0 0 1;
+#X connect 28 0 3 0;
+#X connect 28 1 14 0;
+#X connect 28 1 24 0;
+#X connect 28 3 30 0;
+#X connect 28 4 8 0;
+#X connect 28 4 29 0;
+#X connect 29 0 1 0;
+#X connect 29 0 16 0;
+#X connect 29 0 9 1;
+#X connect 29 1 23 0;
+#X connect 29 2 26 0;
+#X connect 29 3 0 1;
+#X connect 31 0 30 0;
+#X connect 31 1 33 0;
+#X connect 32 0 7 0;
+#X connect 33 0 9 0;
+#X connect 33 0 15 0;
+#X connect 33 1 13 0;
+#X connect 33 2 12 0;
+#X connect 33 3 10 0;
+#X connect 33 4 15 1;
+#X connect 33 5 17 0;
+#X connect 33 6 32 0;
diff --git a/gemnotes_0.2.3/midifile.pd b/gemnotes_0.2.3/midifile.pd
new file mode 100755
index 0000000..880cde1
--- /dev/null
+++ b/gemnotes_0.2.3/midifile.pd
@@ -0,0 +1,53 @@
+#N canvas 0 22 589 298 10;
+#X obj 98 163 seq;
+#X obj 68 62 openpanel;
+#X obj 97 18 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 155 155 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X msg 96 103 set read \$1 \, bang;
+#X msg 261 90 stop;
+#X obj 98 183 serialize 3;
+#X obj 71 258 outlet;
+#X obj 247 19 inlet;
+#X obj 244 42 sel 1 0;
+#X obj 138 63 symbol;
+#X obj 115 204 route 128 144 176;
+#X obj 145 229 prepend noteoff;
+#X obj 242 229 prepend noteon;
+#X obj 333 229 prepend controller;
+#X obj 206 259 outlet;
+#X msg 96 131 read /media/sda3/Data/puredata/2010/vibra/midi/M1.mid
+;
+#X obj 282 188 outlet;
+#X obj 74 204 t a a;
+#X obj 324 94 loadbang;
+#X obj 309 67 delay 0;
+#X obj 100 41 route bang symbol;
+#X obj 150 6 inlet;
+#X connect 0 0 6 0;
+#X connect 0 1 17 0;
+#X connect 1 0 4 0;
+#X connect 2 0 1 0;
+#X connect 3 0 0 0;
+#X connect 4 0 16 0;
+#X connect 5 0 0 0;
+#X connect 6 0 18 0;
+#X connect 8 0 9 0;
+#X connect 9 0 0 0;
+#X connect 9 1 5 0;
+#X connect 9 1 20 0;
+#X connect 10 0 4 0;
+#X connect 11 0 12 0;
+#X connect 11 1 13 0;
+#X connect 11 2 14 0;
+#X connect 12 0 15 0;
+#X connect 13 0 15 0;
+#X connect 14 0 15 0;
+#X connect 16 0 0 0;
+#X connect 18 0 7 0;
+#X connect 18 1 11 0;
+#X connect 20 0 16 0;
+#X connect 21 0 1 0;
+#X connect 21 1 10 0;
+#X connect 22 0 21 0;
diff --git a/gemnotes_0.2.3/noteobject.pd b/gemnotes_0.2.3/noteobject.pd
new file mode 100755
index 0000000..691ec66
--- /dev/null
+++ b/gemnotes_0.2.3/noteobject.pd
@@ -0,0 +1,2025 @@
+#N canvas 0 22 1265 911 10;
+#X floatatom 110 275 5 0 0 0 - - -;
+#X obj 76 406 text3d;
+#X obj 52 306 gemhead;
+#X obj 110 304 +;
+#N canvas 0 22 450 300 inittext 0;
+#X obj 128 155 outlet;
+#X obj 279 151 outlet;
+#X msg 283 110 11;
+#X obj 150 57 r \$0-lbn;
+#X msg 27 110 font fonts/Music8.ttf \, justify left top;
+#X connect 2 0 1 0;
+#X connect 3 0 4 0;
+#X connect 3 0 2 0;
+#X connect 4 0 0 0;
+#X restore 135 386 pd inittext;
+#X obj 459 347 text3d;
+#X obj 397 192 gemhead;
+#X msg 626 269 text (;
+#X msg 744 269 text &;
+#X msg 685 269 text ';
+#X floatatom 493 151 5 0 0 0 - - -;
+#X obj 493 171 +;
+#X text 386 171 Accidental:::;
+#X obj 771 159 hradio 15 1 0 3 empty empty empty 0 -8 0 10 -262144
+-1 -1 0;
+#X obj 771 177 sel 0 1 2;
+#X msg 771 140 2;
+#X obj 495 206 +;
+#X text 569 201 #;
+#X text 621 201 nat;
+#X text 681 201 b;
+#X floatatom 274 95 5 0 0 1 y-position - -;
+#N canvas 0 22 442 272 inittext 0;
+#X obj 128 155 outlet;
+#X obj 259 153 outlet;
+#X msg 358 112 11;
+#X obj 195 68 r \$0-lbn;
+#X msg 21 110 font fonts/Music7chunky.ttf \, justify left top;
+#X connect 2 0 1 0;
+#X connect 3 0 4 0;
+#X connect 3 0 2 0;
+#X connect 4 0 0 0;
+#X restore 464 327 pd inittext;
+#X floatatom 443 511 5 0 0 0 - - -;
+#X obj 401 620 text3d;
+#X obj 337 537 gemhead;
+#X obj 372 473 tgl 15 0 empty empty show/hide 17 7 0 10 -262144 -1
+-1 0 1;
+#N canvas 0 22 450 300 inittext 0;
+#X obj 128 155 outlet;
+#X obj 259 153 outlet;
+#X msg 263 115 11;
+#X obj 157 78 r \$0-lbn;
+#X msg 10 115 font fonts/Music8.ttf \, justify left top;
+#X connect 2 0 1 0;
+#X connect 3 0 4 0;
+#X connect 3 0 2 0;
+#X connect 4 0 0 0;
+#X restore 461 597 pd inittext;
+#X obj 362 424 < -4;
+#X obj 410 423 > 6;
+#X obj 372 390 t f f;
+#X obj 379 455 ||;
+#N canvas 609 468 671 300 topleger 0;
+#X msg 53 137 text +;
+#X obj 124 98 sel 0 1 2 3 4 5 6 7 8 9;
+#X msg 97 137 text r;
+#X obj 98 207 outlet;
+#X obj 137 34 inlet;
+#X msg 142 136 text s;
+#X msg 186 136 text t;
+#X msg 231 138 text u;
+#X msg 275 138 text v;
+#X msg 320 139 text w;
+#X msg 364 139 text x;
+#X msg 409 139 text y;
+#X msg 453 139 text z;
+#X obj 226 67 * 0.5;
+#X obj 263 69 i;
+#X obj 151 60 moses 7;
+#X obj 200 60 - 7;
+#X connect 0 0 3 0;
+#X connect 1 0 0 0;
+#X connect 1 1 2 0;
+#X connect 1 2 5 0;
+#X connect 1 3 6 0;
+#X connect 1 4 7 0;
+#X connect 1 5 8 0;
+#X connect 1 6 9 0;
+#X connect 1 7 10 0;
+#X connect 1 8 11 0;
+#X connect 1 9 12 0;
+#X connect 2 0 3 0;
+#X connect 4 0 15 0;
+#X connect 5 0 3 0;
+#X connect 6 0 3 0;
+#X connect 7 0 3 0;
+#X connect 8 0 3 0;
+#X connect 9 0 3 0;
+#X connect 10 0 3 0;
+#X connect 11 0 3 0;
+#X connect 12 0 3 0;
+#X connect 13 0 14 0;
+#X connect 14 0 1 0;
+#X connect 15 1 16 0;
+#X connect 16 0 13 0;
+#X restore 508 491 pd topleger;
+#N canvas 916 468 450 300 botleger 0;
+#X obj 114 63 inlet;
+#X msg 61 211 text a;
+#X obj 113 157 i;
+#X obj 113 135 * -0.5;
+#X obj 74 184 sel 0 1 2 3 4 5 6 7;
+#X msg 107 211 text h;
+#X msg 152 211 text i;
+#X msg 197 211 text j;
+#X msg 243 211 text k;
+#X msg 288 211 text l;
+#X msg 333 211 text m;
+#X msg 378 211 text n;
+#X obj 152 259 outlet;
+#X floatatom 200 162 5 0 0 0 - - -;
+#X floatatom 189 124 5 0 0 0 - - -;
+#X obj 114 86 moses -4;
+#X obj 113 109 + 5;
+#X text 237 61 k \, l \, m \, n - bottom of font reached.;
+#X connect 0 0 15 0;
+#X connect 1 0 12 0;
+#X connect 2 0 4 0;
+#X connect 2 0 13 0;
+#X connect 3 0 2 0;
+#X connect 4 0 1 0;
+#X connect 4 1 5 0;
+#X connect 4 2 6 0;
+#X connect 4 3 7 0;
+#X connect 4 4 8 0;
+#X connect 4 5 9 0;
+#X connect 4 6 10 0;
+#X connect 4 7 11 0;
+#X connect 5 0 12 0;
+#X connect 6 0 12 0;
+#X connect 7 0 12 0;
+#X connect 8 0 12 0;
+#X connect 9 0 12 0;
+#X connect 10 0 12 0;
+#X connect 11 0 12 0;
+#X connect 15 0 14 0;
+#X connect 15 0 16 0;
+#X connect 16 0 3 0;
+#X restore 343 495 pd botleger;
+#N canvas 0 22 450 300 loadbng 0;
+#X obj 79 89 del 20;
+#X obj 79 116 outlet;
+#X obj 79 59 r \$0-lbn;
+#X connect 0 0 1 0;
+#X connect 2 0 0 0;
+#X restore 771 121 pd loadbng;
+#N canvas 0 22 287 304 pos 0;
+#X obj 20 -15 inlet;
+#X obj 166 -18 inlet;
+#X obj 20 77 spigot 1;
+#X obj 20 98 tabread flats;
+#X obj 110 77 spigot;
+#X obj 20 181 - 28;
+#X obj 110 98 tabread sharps;
+#X obj 65 55 == 0;
+#X obj 20 125 moses 80;
+#X obj 28 154 - 80;
+#X msg 54 181 1;
+#X obj 20 6 f;
+#X obj 65 229 outlet;
+#X msg 65 155 2;
+#X obj 110 181 - 28;
+#X obj 110 125 moses 80;
+#X obj 118 154 - 80;
+#X msg 144 181 1;
+#X msg 155 155 0;
+#X obj 20 229 outlet;
+#X obj 20 208 -;
+#X obj 116 11 t b f;
+#X obj 234 43 inlet;
+#X msg 210 124 12;
+#X msg 242 124 0;
+#X obj 223 90 sel 1 2;
+#X obj 223 62 t b f;
+#X connect 0 0 11 0;
+#X connect 1 0 21 0;
+#X connect 2 0 3 0;
+#X connect 3 0 8 0;
+#X connect 4 0 6 0;
+#X connect 5 0 20 0;
+#X connect 6 0 15 0;
+#X connect 7 0 2 1;
+#X connect 8 0 10 0;
+#X connect 8 0 5 0;
+#X connect 8 1 9 0;
+#X connect 8 1 13 0;
+#X connect 9 0 5 0;
+#X connect 10 0 12 0;
+#X connect 11 0 4 0;
+#X connect 11 0 2 0;
+#X connect 13 0 12 0;
+#X connect 14 0 20 0;
+#X connect 15 0 17 0;
+#X connect 15 0 14 0;
+#X connect 15 1 16 0;
+#X connect 15 1 18 0;
+#X connect 16 0 14 0;
+#X connect 17 0 12 0;
+#X connect 18 0 12 0;
+#X connect 20 0 19 0;
+#X connect 21 0 11 0;
+#X connect 21 1 7 0;
+#X connect 21 1 4 1;
+#X connect 22 0 26 0;
+#X connect 23 0 20 1;
+#X connect 24 0 20 1;
+#X connect 25 0 23 0;
+#X connect 25 1 24 0;
+#X connect 26 0 11 0;
+#X connect 26 1 25 0;
+#X restore 274 76 pd pos;
+#X floatatom 274 60 5 0 0 0 - - -;
+#X obj 89 20 inlet;
+#X obj 157 117 pack f f f;
+#X obj 72 247 +;
+#X msg 967 237 text G;
+#X msg 967 256 text 7;
+#X msg 967 218 text W;
+#X floatatom 808 104 5 0 0 0 value - -;
+#X obj 590 628 text3d;
+#X obj 595 518 gemhead;
+#X obj 701 474 +;
+#X msg 844 405 0;
+#X msg 870 406 1;
+#X msg 802 548 text g;
+#X obj 816 432 f;
+#X obj 389 545 - 0.048;
+#X obj 390 137 * 0.092;
+#X obj 218 256 * 0.092;
+#X obj 729 426 * 0.092;
+#X obj 390 118 + 2;
+#X obj 334 197 - 0.185;
+#X obj 857 79 moses 7;
+#X obj 897 101 - 7;
+#X obj 959 100 sel 0 1 2 3 4 5 6;
+#X msg 740 379 11;
+#X msg 767 380 9;
+#X obj 134 334 - 0;
+#X msg 810 381 6;
+#X msg 977 338 0.415;
+#X msg 930 368 0;
+#X obj 485 230 - 0;
+#X msg 1091 271 1;
+#X msg 1111 223 0.185;
+#X msg 1192 229 0.085;
+#X msg 1151 225 0.149;
+#X msg 1069 333 0.113;
+#X msg 1042 393 0.048;
+#X msg 1056 365 0.088;
+#X msg 1074 309 0.02;
+#X obj 546 1050 text3d;
+#X obj 510 938 gemhead;
+#X obj 684 920 +;
+#X text 759 817 a tail;
+#X msg 746 1014 text ~;
+#X obj 547 994 rotateXYZ 0 0 0;
+#X msg 726 922 0;
+#X msg 756 922 180;
+#X obj 726 855 f;
+#N canvas 22 321 450 300 inittext 0;
+#X obj 128 155 outlet;
+#X obj 259 153 outlet;
+#X msg 263 112 11;
+#X obj 225 52 r \$0-lbn;
+#X msg 30 83 font fonts/Music8.ttf \, justify left top;
+#X connect 2 0 1 0;
+#X connect 3 0 4 0;
+#X connect 3 0 2 0;
+#X connect 4 0 0 0;
+#X restore 642 1021 pd inittext;
+#X msg 786 1014 text b;
+#X msg 826 1014 text c;
+#X obj 508 894 &&;
+#X obj 10 843 gemhead;
+#X obj 76 854 +;
+#X msg 183 701 0;
+#X obj 226 804 - 2.32;
+#X msg 262 774 2.32;
+#X text 294 773 <--- changes with screen dimensions!!!;
+#X msg 232 616 0.25;
+#X obj 183 679 sel 0 1;
+#X text 287 690 <--- changes with notehead size!!!;
+#X msg 516 868 1;
+#X msg 547 891 0;
+#X obj 11 783 > 0;
+#X text 162 665 bottom/top;
+#X obj 726 874 sel 0 1;
+#X msg 429 841 1;
+#X obj 176 1071 outlet;
+#X obj 405 896 moses 3;
+#X obj 441 918 - 2;
+#X msg 407 918 0;
+#X obj 428 964 t b f;
+#X obj 382 1001 *;
+#X msg 699 899 2;
+#X msg 742 898 -2;
+#X text 23 765 a stem;
+#X obj 251 718 * -1;
+#X obj 237 737 -0.5;
+#X obj 279 735 0.5;
+#X obj 247 835 -;
+#X obj 190 787 +;
+#X obj 137 842 -;
+#X obj 538 794 * 0.5;
+#X obj 501 846 sel 3 4 5 6;
+#X obj 547 869 t b;
+#X msg 866 1014 text |;
+#X obj 159 148 s \$0-color;
+#X obj 149 308 r \$0-color;
+#X obj 479 458 r \$0-color;
+#X obj 430 277 r \$0-color;
+#X obj 599 154 s \$0-value;
+#X obj 83 655 r \$0-value;
+#X obj 322 861 moses 7;
+#X obj 374 859 - 7;
+#X obj 165 881 r \$0-color;
+#X obj 663 995 r \$0-color;
+#X obj 113 189 s \$0-z;
+#X obj 643 123 s \$0-direction;
+#X obj 669 104 s \$0-stemlength;
+#X obj 690 84 s \$0-beamed;
+#X obj 183 643 r \$0-direction;
+#X obj 276 669 r \$0-stemlength;
+#X obj 573 694 r \$0-beamed;
+#X obj 726 834 r \$0-direction;
+#X obj 167 855 r \$0-z;
+#X obj 658 947 r \$0-z;
+#X msg 251 1046 x-stem y-stem stemlength beams direction value;
+#X obj 975 1044 text3d;
+#X obj 947 834 gemhead;
+#N canvas 0 22 450 300 inittext 0;
+#X obj 128 155 outlet;
+#X obj 259 153 outlet;
+#X msg 263 112 11;
+#X obj 120 40 r \$0-lbn;
+#X msg 51 79 font fonts/Music8.ttf \, justify left top;
+#X connect 2 0 1 0;
+#X connect 3 0 4 0;
+#X connect 3 0 2 0;
+#X connect 4 0 0 0;
+#X restore 1071 1018 pd inittext;
+#X obj 961 895 +;
+#X floatatom 967 862 5 0 0 0 - - -;
+#N canvas 316 144 450 300 bottie 0;
+#X msg 79 129 text A;
+#X msg 127 129 text B;
+#X msg 185 129 text C;
+#X msg 246 129 text D;
+#X obj 81 168 outlet;
+#X obj 77 57 inlet;
+#X obj 80 94 sel 3 2 1 0;
+#X connect 0 0 4 0;
+#X connect 1 0 4 0;
+#X connect 2 0 4 0;
+#X connect 3 0 4 0;
+#X connect 5 0 6 0;
+#X connect 6 0 0 0;
+#X connect 6 1 1 0;
+#X connect 6 2 2 0;
+#X connect 6 3 3 0;
+#X restore 1204 938 pd bottie;
+#N canvas 316 144 450 300 toptie 0;
+#X obj 81 168 outlet;
+#X obj 77 57 inlet;
+#X msg 79 129 text P;
+#X msg 127 129 text Q;
+#X msg 185 129 text R;
+#X msg 246 129 text S;
+#X obj 81 94 sel 3 2 1 0;
+#X connect 1 0 6 0;
+#X connect 2 0 0 0;
+#X connect 3 0 0 0;
+#X connect 4 0 0 0;
+#X connect 5 0 0 0;
+#X connect 6 0 2 0;
+#X connect 6 1 3 0;
+#X connect 6 2 4 0;
+#X connect 6 3 5 0;
+#X restore 1264 938 pd toptie;
+#X obj 1268 886 spigot 1;
+#X obj 1198 886 spigot;
+#X obj 1313 867 == 0;
+#X obj 1218 818 t f f;
+#X obj 1218 840 sel 1 0;
+#X obj 1198 867 f;
+#X obj 1268 867 f;
+#X obj 1017 899 +;
+#X floatatom 1081 896 5 0 0 0 - - -;
+#X text 1139 914 Y;
+#X text 1196 807 X;
+#X text 1106 806 minim;
+#X text 1092 789 semibrieve;
+#X text 1100 822 crotchet;
+#X text 1103 840 quaver;
+#X msg 1220 914 0.66;
+#X msg 1151 914 -0.97;
+#X obj 1102 948 r \$0-color;
+#X obj 1082 928 r \$0-z;
+#X obj 1205 774 r \$0-direction;
+#X obj 1053 723 sel 0 1 2 3 4 5 6;
+#X obj 1166 324 f;
+#X msg 127 20 x y z len clef r g b;
+#X obj 616 851 t b f;
+#X obj 1131 501 inlet;
+#X text 1095 481 joined note;
+#X obj 348 632 t b;
+#X obj 241 924 -;
+#N canvas 15 22 1086 665 beamsegments 0;
+#X obj 35 14 inlet;
+#X obj 308 9 inlet;
+#X obj 143 89 packel 1;
+#X obj 128 108 -;
+#X obj 128 39 packel 1;
+#X floatatom 128 127 5 0 0 0 adjacent - -;
+#X obj 232 106 -;
+#X floatatom 232 125 5 0 0 0 opposite - -;
+#X obj 232 37 packel 2;
+#X obj 247 87 packel 2;
+#X floatatom 719 419 5 0 0 0 shear - -;
+#X obj 24 258 + 100;
+#X obj 61 258 + 100;
+#X obj 24 277 +;
+#X obj 101 258 + 100;
+#X obj 138 258 + 100;
+#X obj 101 277 +;
+#X obj 101 296 * 0.5;
+#X obj 35 547 gemhead;
+#X obj 45 605 shearYX;
+#X obj 35 182 packel 3;
+#X obj 101 450 -;
+#X obj 24 296 * 0.5;
+#X obj 24 377 +;
+#X obj 24 415 - 100;
+#X floatatom 24 434 5 0 0 0 - - -;
+#X obj 101 377 +;
+#X obj 101 396 * 0.5;
+#X obj 101 415 - 100;
+#X floatatom 101 434 5 0 0 0 - - -;
+#X obj 24 396 * 0.5;
+#X obj 535 543 gemhead;
+#X obj 545 601 shearYX;
+#X obj 539 452 +;
+#X obj 539 490 - 100;
+#X floatatom 539 509 5 0 0 0 - - -;
+#X obj 616 452 +;
+#X obj 616 471 * 0.5;
+#X obj 616 490 - 100;
+#X floatatom 616 509 5 0 0 0 - - -;
+#X obj 539 471 * 0.5;
+#X obj 583 534 -;
+#X obj 247 151 /;
+#X obj 595 308 > 2;
+#X obj 655 543 gemhead;
+#X obj 665 601 shearYX;
+#X obj 689 497 + 0.15;
+#X obj 625 308 > 3;
+#X obj 775 543 gemhead;
+#X obj 785 601 shearYX;
+#X obj 822 513 + 0.27;
+#X obj 773 289 > 4;
+#X obj 899 540 gemhead;
+#X obj 909 598 shearYX;
+#X obj 869 305 > 5;
+#X obj 946 510 + 0.39;
+#X obj 46 458 > 2;
+#X obj 155 547 gemhead;
+#X obj 165 605 shearYX;
+#X obj 202 517 + 0.15;
+#X obj 145 422 > 3;
+#X obj 275 547 gemhead;
+#X obj 285 605 shearYX;
+#X obj 322 517 + 0.27;
+#X obj 265 422 > 4;
+#X obj 399 544 gemhead;
+#X obj 409 602 shearYX;
+#X obj 389 419 > 5;
+#X obj 446 514 + 0.39;
+#X obj 129 183 + 0.01;
+#X obj 128 158 * 0.25;
+#X obj 651 65 packel 6;
+#X obj 651 84 moses 7;
+#X obj 690 103 - 7;
+#X obj 44 69 moses 7;
+#X obj 83 88 - 7;
+#X obj 44 50 packel 6;
+#X text 175 259 add- and subtract 100 in the calculation so we are
+only dealing with positive floats. Then we make an average for the
+centre points of the rectangles.;
+#X obj 819 102 inlet;
+#X obj 848 160 > 0;
+#X obj 821 123 t f f;
+#X obj 772 157 == 0;
+#X obj 530 233 spigot 1;
+#X obj 43 482 &&;
+#X obj 470 126 inlet;
+#X obj 149 455 &&;
+#X obj 280 456 &&;
+#X obj 389 448 &&;
+#X obj 599 340 &&;
+#X obj 644 339 &&;
+#X obj 775 340 &&;
+#X obj 897 339 &&;
+#X obj 907 638 rectangle 1 0.02;
+#X obj 783 641 rectangle 1 0.02;
+#X obj 663 641 rectangle 1 0.02;
+#X obj 543 641 rectangle 1 0.07;
+#X obj 43 645 rectangle 1 0.07;
+#X obj 163 645 rectangle 1 0.02;
+#X obj 283 645 rectangle 1 0.02;
+#X obj 407 642 rectangle 1 0.02;
+#X msg 328 49 1;
+#X obj 899 396 &&;
+#X obj 776 398 &&;
+#X obj 647 400 &&;
+#X obj 565 397 &&;
+#X obj 398 491 &&;
+#X obj 281 495 &&;
+#X obj 153 501 &&;
+#X obj 41 504 &&;
+#X obj 858 239 del 0;
+#X obj 795 198 spigot;
+#X obj 930 181 r \$0-lbn;
+#X obj 411 28 r \$0-direction;
+#X obj 408 55 sel 0 1;
+#X msg 387 80 0.15;
+#X msg 429 80 0.27;
+#X msg 464 79 0.39;
+#X msg 574 79 -0.39;
+#X msg 539 80 -0.27;
+#X msg 497 80 -0.15;
+#X obj 90 560 +;
+#X obj 229 559 +;
+#X obj 332 562 +;
+#X obj 450 558 +;
+#X obj 580 556 +;
+#X obj 711 558 +;
+#X obj 829 558 +;
+#X obj 955 552 +;
+#X obj 244 221 *;
+#X obj 212 190 * 2;
+#X floatatom 268 112 5 0 0 0 - - -;
+#X msg 930 239 0;
+#X floatatom 547 331 5 0 0 0 - - -;
+#X floatatom 503 335 5 0 0 0 - - -;
+#X floatatom 762 18 5 0 0 0 - - -;
+#X obj 996 555 r \$0-z;
+#X obj 44 624 color 1 1 1;
+#X obj 98 604 r \$0-color;
+#X obj 164 624 color 1 1 1;
+#X obj 218 604 r \$0-color;
+#X obj 284 624 color 1 1 1;
+#X obj 338 604 r \$0-color;
+#X obj 404 624 color 1 1 1;
+#X obj 458 604 r \$0-color;
+#X obj 544 621 color 1 1 1;
+#X obj 598 601 r \$0-color;
+#X obj 664 621 color 1 1 1;
+#X obj 718 601 r \$0-color;
+#X obj 784 621 color 1 1 1;
+#X obj 838 601 r \$0-color;
+#X obj 907 618 color 1 1 1;
+#X obj 961 598 r \$0-color;
+#X obj 196 156 outlet;
+#X obj 308 152 outlet;
+#X obj 246 175 outlet;
+#X obj 363 172 outlet;
+#X obj 427 182 outlet;
+#X text 845 40 x \, shear \, y \, stem \, stem*2*dir;
+#X obj 37 585 translateXYZ 0 -30 0;
+#X obj 165 585 translateXYZ 0 -30 0;
+#X obj 291 585 translateXYZ 0 -30 0;
+#X obj 418 584 translateXYZ 0 -30 0;
+#X obj 545 581 translateXYZ 0 -30 0;
+#X obj 672 581 translateXYZ 0 -30 0;
+#X obj 798 582 translateXYZ 0 -30 0;
+#X obj 924 579 translateXYZ 0 -30 0;
+#X obj 251 57 change;
+#X obj 143 59 change;
+#X obj 770 35 change;
+#X obj 770 55 t b;
+#X obj 784 75 s \$0-reclock;
+#X obj 894 491 &&;
+#X obj 847 469 r \$0-showme;
+#X obj 774 491 &&;
+#X obj 657 516 &&;
+#X obj 513 526 &&;
+#X obj 388 511 &&;
+#X obj 271 515 &&;
+#X obj 143 521 &&;
+#X obj 31 524 &&;
+#X obj 209 425 r \$0-showme;
+#X connect 0 0 2 0;
+#X connect 0 0 9 0;
+#X connect 0 0 20 0;
+#X connect 0 0 76 0;
+#X connect 1 0 4 0;
+#X connect 1 0 8 0;
+#X connect 1 0 71 0;
+#X connect 1 0 100 0;
+#X connect 2 0 3 1;
+#X connect 2 0 12 0;
+#X connect 3 0 5 0;
+#X connect 4 0 3 0;
+#X connect 4 0 11 0;
+#X connect 4 0 167 0;
+#X connect 5 0 42 1;
+#X connect 5 0 70 0;
+#X connect 5 0 152 0;
+#X connect 6 0 7 0;
+#X connect 7 0 42 0;
+#X connect 7 0 153 0;
+#X connect 8 0 6 0;
+#X connect 8 0 14 0;
+#X connect 8 0 166 0;
+#X connect 9 0 6 1;
+#X connect 9 0 15 0;
+#X connect 10 0 19 1;
+#X connect 10 0 32 1;
+#X connect 10 0 45 1;
+#X connect 10 0 49 1;
+#X connect 10 0 53 1;
+#X connect 10 0 58 1;
+#X connect 10 0 62 1;
+#X connect 10 0 66 1;
+#X connect 11 0 13 0;
+#X connect 11 0 33 0;
+#X connect 12 0 13 1;
+#X connect 12 0 23 1;
+#X connect 13 0 22 0;
+#X connect 14 0 16 0;
+#X connect 14 0 36 0;
+#X connect 15 0 16 1;
+#X connect 15 0 26 1;
+#X connect 16 0 17 0;
+#X connect 17 0 26 0;
+#X connect 17 0 36 1;
+#X connect 18 0 158 0;
+#X connect 19 0 136 0;
+#X connect 20 0 21 1;
+#X connect 20 0 41 1;
+#X connect 20 0 129 0;
+#X connect 20 0 155 0;
+#X connect 21 0 59 0;
+#X connect 21 0 63 0;
+#X connect 21 0 68 0;
+#X connect 21 0 120 0;
+#X connect 22 0 23 0;
+#X connect 22 0 33 1;
+#X connect 23 0 30 0;
+#X connect 24 0 25 0;
+#X connect 25 0 158 1;
+#X connect 25 0 159 1;
+#X connect 25 0 160 1;
+#X connect 25 0 161 1;
+#X connect 26 0 27 0;
+#X connect 27 0 28 0;
+#X connect 28 0 29 0;
+#X connect 29 0 21 0;
+#X connect 30 0 24 0;
+#X connect 31 0 162 0;
+#X connect 32 0 144 0;
+#X connect 33 0 40 0;
+#X connect 34 0 35 0;
+#X connect 35 0 162 1;
+#X connect 35 0 163 1;
+#X connect 35 0 164 1;
+#X connect 35 0 165 1;
+#X connect 36 0 37 0;
+#X connect 37 0 38 0;
+#X connect 38 0 39 0;
+#X connect 39 0 41 0;
+#X connect 40 0 34 0;
+#X connect 41 0 46 0;
+#X connect 41 0 50 0;
+#X connect 41 0 55 0;
+#X connect 41 0 124 0;
+#X connect 42 0 82 0;
+#X connect 42 0 154 0;
+#X connect 43 0 88 0;
+#X connect 43 0 132 0;
+#X connect 44 0 163 0;
+#X connect 45 0 146 0;
+#X connect 46 0 125 0;
+#X connect 47 0 89 0;
+#X connect 48 0 164 0;
+#X connect 49 0 148 0;
+#X connect 50 0 126 0;
+#X connect 51 0 90 0;
+#X connect 52 0 165 0;
+#X connect 53 0 150 0;
+#X connect 54 0 91 0;
+#X connect 55 0 127 0;
+#X connect 56 0 83 0;
+#X connect 57 0 159 0;
+#X connect 58 0 138 0;
+#X connect 59 0 121 0;
+#X connect 60 0 85 0;
+#X connect 61 0 160 0;
+#X connect 62 0 140 0;
+#X connect 63 0 122 0;
+#X connect 64 0 86 0;
+#X connect 65 0 161 0;
+#X connect 66 0 142 0;
+#X connect 67 0 87 0;
+#X connect 68 0 123 0;
+#X connect 69 0 92 1;
+#X connect 69 0 93 1;
+#X connect 69 0 94 1;
+#X connect 69 0 95 1;
+#X connect 69 0 96 1;
+#X connect 69 0 97 1;
+#X connect 69 0 98 1;
+#X connect 69 0 99 1;
+#X connect 70 0 69 0;
+#X connect 71 0 72 0;
+#X connect 71 0 134 0;
+#X connect 72 0 43 0;
+#X connect 72 0 47 0;
+#X connect 72 0 51 0;
+#X connect 72 0 54 0;
+#X connect 72 1 73 0;
+#X connect 73 0 43 0;
+#X connect 73 0 47 0;
+#X connect 73 0 51 0;
+#X connect 73 0 54 0;
+#X connect 74 0 56 0;
+#X connect 74 0 60 0;
+#X connect 74 0 64 0;
+#X connect 74 0 67 0;
+#X connect 74 1 75 0;
+#X connect 75 0 56 0;
+#X connect 75 0 60 0;
+#X connect 75 0 64 0;
+#X connect 75 0 67 0;
+#X connect 76 0 74 0;
+#X connect 78 0 80 0;
+#X connect 79 0 110 1;
+#X connect 80 0 110 0;
+#X connect 80 1 79 0;
+#X connect 80 1 81 0;
+#X connect 81 0 82 1;
+#X connect 82 0 10 0;
+#X connect 83 0 108 0;
+#X connect 84 0 83 1;
+#X connect 84 0 85 1;
+#X connect 84 0 86 1;
+#X connect 84 0 87 1;
+#X connect 84 0 88 1;
+#X connect 84 0 89 1;
+#X connect 84 0 90 1;
+#X connect 84 0 91 1;
+#X connect 85 0 107 0;
+#X connect 86 0 106 0;
+#X connect 87 0 105 0;
+#X connect 88 0 104 0;
+#X connect 89 0 103 0;
+#X connect 90 0 102 0;
+#X connect 91 0 101 0;
+#X connect 100 0 108 1;
+#X connect 100 0 107 1;
+#X connect 100 0 106 1;
+#X connect 100 0 105 1;
+#X connect 100 0 104 1;
+#X connect 100 0 103 1;
+#X connect 100 0 102 1;
+#X connect 100 0 101 1;
+#X connect 100 0 133 0;
+#X connect 101 0 171 1;
+#X connect 102 0 173 0;
+#X connect 103 0 174 1;
+#X connect 104 0 175 1;
+#X connect 105 0 176 1;
+#X connect 106 0 177 1;
+#X connect 107 0 178 1;
+#X connect 108 0 179 1;
+#X connect 109 0 101 0;
+#X connect 109 0 102 0;
+#X connect 109 0 103 0;
+#X connect 109 0 104 0;
+#X connect 109 0 105 0;
+#X connect 109 0 106 0;
+#X connect 109 0 107 0;
+#X connect 109 0 108 0;
+#X connect 110 0 10 0;
+#X connect 111 0 131 0;
+#X connect 111 0 109 0;
+#X connect 112 0 113 0;
+#X connect 112 0 128 1;
+#X connect 113 0 114 0;
+#X connect 113 0 115 0;
+#X connect 113 0 116 0;
+#X connect 113 1 119 0;
+#X connect 113 1 118 0;
+#X connect 113 1 117 0;
+#X connect 114 0 59 1;
+#X connect 114 0 46 1;
+#X connect 115 0 63 1;
+#X connect 115 0 50 1;
+#X connect 116 0 68 1;
+#X connect 116 0 55 1;
+#X connect 117 0 68 1;
+#X connect 117 0 55 1;
+#X connect 118 0 63 1;
+#X connect 118 0 50 1;
+#X connect 119 0 59 1;
+#X connect 119 0 46 1;
+#X connect 120 0 158 2;
+#X connect 121 0 159 2;
+#X connect 122 0 160 2;
+#X connect 123 0 161 2;
+#X connect 124 0 162 2;
+#X connect 125 0 163 2;
+#X connect 126 0 164 2;
+#X connect 127 0 165 2;
+#X connect 128 0 120 1;
+#X connect 128 0 121 1;
+#X connect 128 0 122 1;
+#X connect 128 0 123 1;
+#X connect 128 0 124 1;
+#X connect 128 0 125 1;
+#X connect 128 0 126 1;
+#X connect 128 0 127 1;
+#X connect 128 0 156 0;
+#X connect 129 0 128 0;
+#X connect 131 0 101 1;
+#X connect 131 0 102 1;
+#X connect 131 0 103 1;
+#X connect 131 0 104 1;
+#X connect 131 0 105 1;
+#X connect 131 0 106 1;
+#X connect 131 0 107 1;
+#X connect 131 0 108 1;
+#X connect 134 0 168 0;
+#X connect 135 0 158 3;
+#X connect 135 0 159 3;
+#X connect 135 0 160 3;
+#X connect 135 0 161 3;
+#X connect 135 0 162 3;
+#X connect 135 0 163 3;
+#X connect 135 0 164 3;
+#X connect 135 0 165 3;
+#X connect 136 0 96 0;
+#X connect 137 0 136 1;
+#X connect 138 0 97 0;
+#X connect 139 0 138 1;
+#X connect 140 0 98 0;
+#X connect 141 0 140 1;
+#X connect 142 0 99 0;
+#X connect 143 0 142 1;
+#X connect 144 0 95 0;
+#X connect 145 0 144 1;
+#X connect 146 0 94 0;
+#X connect 147 0 146 1;
+#X connect 148 0 93 0;
+#X connect 149 0 148 1;
+#X connect 150 0 92 0;
+#X connect 151 0 150 1;
+#X connect 158 0 19 0;
+#X connect 159 0 58 0;
+#X connect 160 0 62 0;
+#X connect 161 0 66 0;
+#X connect 162 0 32 0;
+#X connect 163 0 45 0;
+#X connect 164 0 49 0;
+#X connect 165 0 53 0;
+#X connect 166 0 169 0;
+#X connect 167 0 169 0;
+#X connect 168 0 169 0;
+#X connect 169 0 170 0;
+#X connect 171 0 52 0;
+#X connect 172 0 171 0;
+#X connect 172 0 173 1;
+#X connect 172 0 174 0;
+#X connect 172 0 175 0;
+#X connect 173 0 48 0;
+#X connect 174 0 44 0;
+#X connect 175 0 31 0;
+#X connect 176 0 65 0;
+#X connect 177 0 61 0;
+#X connect 178 0 57 0;
+#X connect 179 0 18 0;
+#X connect 180 0 179 0;
+#X connect 180 0 178 0;
+#X connect 180 0 177 0;
+#X connect 180 0 176 0;
+#X restore 796 1052 pd beamsegments;
+#X obj 509 661 f;
+#X obj 48 381 color 0 0 0;
+#X obj 372 311 color 0 0 0;
+#X obj 373 595 color 0 0 0;
+#X obj 546 1024 color 0 0 0;
+#X obj 932 1021 color 0 0 0;
+#X obj 39 898 color 0 0 0;
+#X obj 590 572 color 0 0 0;
+#X msg 330 21 0;
+#X obj 274 21 spigot 1;
+#X obj 355 54 loadbang;
+#X obj 796 520 r \$0-lbn;
+#X obj 746 993 r \$0-lbn;
+#X obj 429 821 r \$0-lbn;
+#X obj 215 702 0.25;
+#X msg 1147 123 0;
+#X msg 1178 123 1;
+#X msg 1209 123 2;
+#X obj 1147 142 s \$0-font_switch;
+#X obj 232 578 r \$0-font_switch;
+#X obj 232 597 sel 0 1 2;
+#X msg 264 616 0.2;
+#X msg 290 616 0.17;
+#X obj 1027 549 packel 2;
+#X obj 1027 528 niagara 6;
+#X obj 176 1050 list append;
+#X obj 1027 570 list append;
+#X obj 244 40 r \$0-notepitch;
+#X obj 391 19 t b;
+#N canvas 78 87 1268 306 creation_arguments 0;
+#X obj 271 122 moses 1e-07;
+#X msg 271 141 60;
+#X obj 157 103 \$2;
+#X obj 157 160 s \$0-noterhythm;
+#X obj 126 44 spigot 1;
+#X msg 181 44 0;
+#X obj 126 25 inlet;
+#X obj 365 160 s \$0-notedur;
+#X obj 468 112 \$5;
+#X obj 550 109 \$6;
+#X obj 640 105 \$7;
+#X obj 725 108 \$8;
+#X obj 900 105 \$10;
+#X obj 809 106 \$9;
+#X obj 900 162 prepend shfl;
+#X obj 899 218 outlet;
+#X obj 56 159 prepend xoff;
+#X obj 809 163 prepend acc;
+#X obj 271 160 prepend pitch;
+#X obj 729 160 prepend tie;
+#X obj 648 160 prepend beam;
+#X obj 545 161 prepend stem;
+#X obj 449 163 prepend bt;
+#X obj 988 162 s \$0-group_count;
+#X obj 989 106 \$11;
+#X obj 271 103 \$3;
+#X obj 365 137 \$4;
+#X obj 89 93 \$1;
+#X obj 318 22 inlet;
+#X obj 1026 80 \$13;
+#X obj 1025 136 s \$0-note_count;
+#X obj 1063 51 \$14;
+#X obj 1055 102 prepend tail;
+#X obj 1020 211 \$15;
+#X obj 1020 246 prepend tuple;
+#X obj 118 67 t b b b;
+#X msg 92 227 xoff rhythm pitch dur bt stem beam tie acc shfl groupcount
+route group-note tail-on/off tuple-number group-id;
+#X obj 1065 202 \$17;
+#X obj 1064 224 prepend articulation;
+#X obj 270 57 s \$0-lbn;
+#X connect 0 0 1 0;
+#X connect 0 1 18 0;
+#X connect 1 0 18 0;
+#X connect 2 0 3 0;
+#X connect 4 0 5 0;
+#X connect 4 0 35 0;
+#X connect 5 0 4 1;
+#X connect 6 0 4 0;
+#X connect 8 0 22 0;
+#X connect 9 0 21 0;
+#X connect 10 0 20 0;
+#X connect 11 0 19 0;
+#X connect 12 0 14 0;
+#X connect 13 0 17 0;
+#X connect 14 0 15 0;
+#X connect 16 0 15 0;
+#X connect 17 0 15 0;
+#X connect 18 0 15 0;
+#X connect 19 0 15 0;
+#X connect 20 0 15 0;
+#X connect 21 0 15 0;
+#X connect 22 0 15 0;
+#X connect 24 0 23 0;
+#X connect 25 0 0 0;
+#X connect 26 0 7 0;
+#X connect 27 0 16 0;
+#X connect 28 0 35 0;
+#X connect 29 0 30 0;
+#X connect 31 0 32 0;
+#X connect 32 0 15 0;
+#X connect 33 0 34 0;
+#X connect 34 0 15 0;
+#X connect 35 0 2 0;
+#X connect 35 0 25 0;
+#X connect 35 0 8 0;
+#X connect 35 0 33 0;
+#X connect 35 0 37 0;
+#X connect 35 1 12 0;
+#X connect 35 1 13 0;
+#X connect 35 1 10 0;
+#X connect 35 1 9 0;
+#X connect 35 1 26 0;
+#X connect 35 1 27 0;
+#X connect 35 1 29 0;
+#X connect 35 1 11 0;
+#X connect 35 1 31 0;
+#X connect 35 2 24 0;
+#X connect 35 2 39 0;
+#X connect 37 0 38 0;
+#X connect 38 0 15 0;
+#X restore 414 39 pd creation_arguments;
+#N canvas 0 22 690 669 work_out_rhythms 0;
+#X obj 291 355 * 0.5;
+#X obj 291 378 i;
+#X obj 334 355 * 0.5;
+#X obj 334 378 i;
+#X obj 377 355 * 0.5;
+#X obj 377 378 i;
+#X obj 419 355 * 0.5;
+#X obj 419 378 i;
+#X obj 462 355 * 0.5;
+#X obj 462 378 i;
+#X obj 505 355 * 0.5;
+#X obj 505 378 i;
+#X floatatom 503 317 5 0 0 0 - - -;
+#X obj 291 402 sel 1;
+#X obj 334 402 sel 1;
+#X obj 377 402 sel 1;
+#X obj 419 402 sel 1;
+#X obj 462 402 sel 1;
+#X obj 505 402 sel 1;
+#X msg 291 423 1;
+#X msg 334 423 2;
+#X msg 377 423 3;
+#X msg 419 423 4;
+#X msg 462 423 5;
+#X msg 505 423 6;
+#X obj 291 468 -;
+#X obj 291 531 +;
+#X msg 170 495 7;
+#X msg 130 495 0;
+#X obj 535 280 f;
+#X obj 291 446 f;
+#X obj 67 63 moses 1;
+#X obj 125 86 moses 2;
+#X obj 166 107 moses 4;
+#X obj 144 127 sel 3;
+#X obj 204 127 moses 8;
+#X obj 245 148 moses 16;
+#X obj 223 168 sel 12;
+#X obj 187 147 sel 6;
+#X obj 94 105 sel 1.5;
+#X msg 51 283 0;
+#X msg 91 283 0;
+#X msg 131 283 1;
+#X msg 171 283 1;
+#X msg 211 283 2;
+#X msg 251 283 2;
+#X msg 291 283 3;
+#X msg 331 283 3;
+#X obj 268 188 sel 24;
+#X obj 290 168 moses 32;
+#X obj 67 40 r \$0-notedur;
+#X obj 516 235 r \$0-noterhythm;
+#X obj 291 491 moses 0;
+#X msg 291 511 0;
+#X obj 291 551 outlet;
+#X msg 371 283 4;
+#X msg 411 283 4;
+#X obj 334 188 sel 48;
+#X msg 449 283 5;
+#X msg 489 283 5;
+#X floatatom 349 490 5 0 0 0 - - -;
+#X connect 0 0 1 0;
+#X connect 0 0 2 0;
+#X connect 1 0 13 0;
+#X connect 2 0 3 0;
+#X connect 2 0 4 0;
+#X connect 3 0 14 0;
+#X connect 4 0 5 0;
+#X connect 4 0 6 0;
+#X connect 5 0 15 0;
+#X connect 6 0 7 0;
+#X connect 6 0 8 0;
+#X connect 7 0 16 0;
+#X connect 8 0 9 0;
+#X connect 8 0 10 0;
+#X connect 9 0 17 0;
+#X connect 10 0 11 0;
+#X connect 11 0 18 0;
+#X connect 12 0 0 0;
+#X connect 13 0 19 0;
+#X connect 14 0 20 0;
+#X connect 15 0 21 0;
+#X connect 16 0 22 0;
+#X connect 17 0 23 0;
+#X connect 18 0 24 0;
+#X connect 19 0 30 0;
+#X connect 20 0 30 0;
+#X connect 21 0 30 0;
+#X connect 22 0 30 0;
+#X connect 23 0 30 0;
+#X connect 24 0 30 0;
+#X connect 25 0 52 0;
+#X connect 25 0 60 0;
+#X connect 26 0 54 0;
+#X connect 27 0 26 1;
+#X connect 28 0 26 1;
+#X connect 29 0 12 0;
+#X connect 30 0 25 0;
+#X connect 31 1 32 0;
+#X connect 32 0 39 0;
+#X connect 32 1 33 0;
+#X connect 33 0 34 0;
+#X connect 33 1 35 0;
+#X connect 34 0 42 0;
+#X connect 34 0 27 0;
+#X connect 34 1 43 0;
+#X connect 34 1 28 0;
+#X connect 35 0 38 0;
+#X connect 35 1 36 0;
+#X connect 36 0 37 0;
+#X connect 36 1 49 0;
+#X connect 37 0 46 0;
+#X connect 37 0 27 0;
+#X connect 37 1 47 0;
+#X connect 37 1 28 0;
+#X connect 38 0 44 0;
+#X connect 38 0 27 0;
+#X connect 38 1 45 0;
+#X connect 38 1 28 0;
+#X connect 39 0 40 0;
+#X connect 39 0 27 0;
+#X connect 39 1 41 0;
+#X connect 39 1 28 0;
+#X connect 40 0 25 1;
+#X connect 41 0 25 1;
+#X connect 42 0 25 1;
+#X connect 43 0 25 1;
+#X connect 44 0 25 1;
+#X connect 45 0 25 1;
+#X connect 46 0 25 1;
+#X connect 47 0 25 1;
+#X connect 48 0 55 0;
+#X connect 48 0 27 0;
+#X connect 48 1 56 0;
+#X connect 48 1 28 0;
+#X connect 49 0 48 0;
+#X connect 49 1 57 0;
+#X connect 50 0 31 0;
+#X connect 51 0 29 0;
+#X connect 52 0 53 0;
+#X connect 52 1 26 0;
+#X connect 53 0 26 0;
+#X connect 55 0 25 1;
+#X connect 56 0 25 1;
+#X connect 57 0 27 0;
+#X connect 57 0 58 0;
+#X connect 57 1 28 0;
+#X connect 57 1 59 0;
+#X connect 58 0 25 1;
+#X connect 59 0 25 1;
+#X restore 948 70 pd work_out_rhythms;
+#N canvas 0 22 450 300 stemadjust 0;
+#X obj 84 45 inlet;
+#X obj 151 90 list length;
+#X obj 61 152 packel;
+#X obj 105 196 -;
+#X obj 159 246 pack f f;
+#X obj 157 271 outlet;
+#X obj 159 199 / 3;
+#X obj 83 91 t a a a;
+#X obj 231 168 r \$0-group_count;
+#X obj 231 188 - 1;
+#X obj 113 154 packel 7;
+#X connect 0 0 7 0;
+#X connect 1 0 2 1;
+#X connect 2 0 3 0;
+#X connect 3 0 6 0;
+#X connect 4 0 5 0;
+#X connect 6 0 4 0;
+#X connect 7 0 2 0;
+#X connect 7 1 10 0;
+#X connect 7 2 1 0;
+#X connect 8 0 9 0;
+#X connect 9 0 6 1;
+#X connect 10 0 3 1;
+#X connect 10 0 4 1;
+#X restore 339 1069 pd stemadjust;
+#X obj 425 1070 outlet;
+#X obj 910 552 inlet;
+#X text 874 534 adjust stem;
+#X obj 538 775 f;
+#X obj 910 571 unpack f f;
+#X obj 556 24 route \$12;
+#X text 856 622 ------->;
+#X text 265 926 <--------;
+#X floatatom 949 590 5 0 0 0 - - -;
+#X obj 537 21 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 285 1024 pack f f f f f f f;
+#X obj 910 590 * \$13;
+#X obj 929 609 +;
+#X floatatom 913 630 5 0 0 0 - - -;
+#X obj 493 730 -;
+#X floatatom 496 752 5 0 0 0 - - -;
+#X obj 369 753 spigot;
+#X floatatom 77 728 5 0 0 0 - - -;
+#X floatatom 273 979 5 0 0 0 - - -;
+#X obj 946 784 > 0;
+#X obj 1189 721 moses 3;
+#X msg 1228 742 3;
+#X obj 1272 683 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X floatatom 182 925 5 0 0 0 - - -;
+#X floatatom 157 971 5 0 0 0 - - -;
+#X floatatom 1069 876 5 0 0 0 - - -;
+#X floatatom 1015 874 5 0 0 0 - - -;
+#X floatatom 914 924 5 0 0 0 - - -;
+#X floatatom 1017 786 5 0 0 0 - - -;
+#X floatatom 923 876 5 0 0 0 - - -;
+#X obj 942 987 scaleXYZ 0 1 1;
+#X obj 965 918 -;
+#X msg 1161 846 0.09;
+#X msg 1161 827 0.14;
+#X msg 1161 808 0.2;
+#X msg 1161 789 30;
+#X obj 1017 925 - 1.17;
+#X obj 1096 669 * 0.9;
+#X text 37 279 notehead;
+#X obj 708 500 - 0.04;
+#X obj 616 820 r \$0-tail;
+#X floatatom 449 877 5 0 0 0 - - -;
+#X obj 784 77 s \$0-tail;
+#X obj 854 809 f;
+#X obj 1203 571 list append;
+#X obj 1203 530 niagara 7;
+#X obj 1203 551 niagara 2;
+#N canvas 0 22 643 642 tuples------------- 0;
+#X obj 532 286 r \$0-z;
+#X obj 516 38 inlet;
+#X obj 516 98 > 0;
+#X obj 59 202 gemhead;
+#X obj 58 316 translateXYZ;
+#X obj 58 336 shearYX;
+#X obj 56 356 color 1 1 1;
+#X obj 110 336 r \$0-color;
+#X obj 252 249 gemhead;
+#X obj 228 316 translateXYZ;
+#X obj 228 336 shearYX;
+#X obj 226 356 color 1 1 1;
+#X obj 280 336 r \$0-color;
+#X obj 156 590 text3d;
+#X obj 138 562 color 1 1 1;
+#X obj 190 542 r \$0-color;
+#X obj 167 378 gemhead;
+#X msg 275 538 font fonts/LucidaBrightRegular.ttf;
+#X obj 369 480 loadbang;
+#X msg 389 496 justify left top;
+#X obj 340 449 r \$0-lbn;
+#X obj 542 98 moses 0;
+#X obj 549 125 prepend text;
+#X obj 516 153 &&;
+#X obj 378 34 r \$0-note_count;
+#X text 366 12 flaws - what if first object is a rest?;
+#X msg 350 512 4;
+#X obj 130 52 inlet;
+#X obj 83 52 inlet;
+#X obj 181 55 inlet;
+#X obj 234 55 inlet;
+#X obj 284 56 inlet;
+#X text 54 12 x \, shear \, y \, stem \, stem*2*dir;
+#X obj 104 274 - 0.18;
+#X obj 274 273 - 0.18;
+#X obj 104 295 +;
+#X obj 274 295 +;
+#X obj 56 376 rectangle 1 0.015;
+#X obj 226 376 rectangle 1 0.015;
+#X obj 20 50 inlet;
+#X obj 31 74 packel 2;
+#X obj 15 98 packel 1;
+#X obj 226 30 r \$0-group_count;
+#X obj 336 53 - 1;
+#X obj 43 150 +;
+#X obj 131 130 *;
+#X obj 131 152 -;
+#X obj 116 174 +;
+#X obj 162 166 +;
+#X obj 250 146 *;
+#X obj 250 168 -;
+#X obj 235 190 +;
+#X obj 103 251 -;
+#X obj 265 216 -;
+#X obj 378 112 == 0;
+#X floatatom 194 148 5 0 0 0 - - -;
+#X obj 83 96 * 0.3;
+#X obj 181 96 * 0.3;
+#X obj 178 353 * 0.2;
+#X obj 355 350 * 0.2;
+#X obj 184 492 +;
+#X obj 161 492 +;
+#X obj 143 424 * 0.5;
+#X obj 196 423 * 0.5;
+#X obj 182 446 +;
+#X msg 374 206 0.18;
+#X msg 419 206 -0.18;
+#X obj 394 152 r \$0-direction;
+#X obj 390 182 sel 0 1;
+#X obj 113 463 - 0.02;
+#X obj 184 468 - 0.55;
+#X msg 373 240 0.55;
+#X msg 415 240 -0.55;
+#X obj 316 204 &&;
+#X obj 304 183 r \$0-showme;
+#X obj 138 522 translateXYZ 0 -40 0;
+#X connect 0 0 4 3;
+#X connect 0 0 9 3;
+#X connect 0 0 75 3;
+#X connect 1 0 2 0;
+#X connect 1 0 21 0;
+#X connect 2 0 23 0;
+#X connect 3 0 4 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 6 0 37 0;
+#X connect 7 0 6 1;
+#X connect 8 0 9 0;
+#X connect 9 0 10 0;
+#X connect 10 0 11 0;
+#X connect 11 0 38 0;
+#X connect 12 0 11 1;
+#X connect 14 0 13 0;
+#X connect 15 0 14 1;
+#X connect 16 0 75 0;
+#X connect 17 0 13 0;
+#X connect 18 0 17 0;
+#X connect 18 0 19 0;
+#X connect 18 0 26 0;
+#X connect 19 0 13 0;
+#X connect 20 0 19 0;
+#X connect 20 0 17 0;
+#X connect 20 0 26 0;
+#X connect 21 1 22 0;
+#X connect 22 0 13 0;
+#X connect 23 0 73 1;
+#X connect 24 0 54 0;
+#X connect 26 0 13 1;
+#X connect 27 0 5 1;
+#X connect 27 0 10 1;
+#X connect 28 0 45 0;
+#X connect 28 0 56 0;
+#X connect 29 0 49 0;
+#X connect 29 0 57 0;
+#X connect 30 0 52 1;
+#X connect 30 0 53 1;
+#X connect 31 0 35 1;
+#X connect 31 0 36 1;
+#X connect 31 0 60 1;
+#X connect 33 0 35 0;
+#X connect 34 0 36 0;
+#X connect 35 0 4 2;
+#X connect 36 0 9 2;
+#X connect 39 0 40 0;
+#X connect 39 0 41 0;
+#X connect 40 0 48 0;
+#X connect 40 0 51 0;
+#X connect 40 0 64 0;
+#X connect 41 0 44 0;
+#X connect 41 0 47 0;
+#X connect 41 0 69 0;
+#X connect 42 0 43 0;
+#X connect 43 0 45 1;
+#X connect 43 0 49 1;
+#X connect 44 0 4 1;
+#X connect 45 0 46 0;
+#X connect 45 0 55 0;
+#X connect 46 0 47 1;
+#X connect 47 0 9 1;
+#X connect 48 0 52 0;
+#X connect 49 0 50 0;
+#X connect 49 0 63 0;
+#X connect 50 0 51 1;
+#X connect 51 0 53 0;
+#X connect 52 0 33 0;
+#X connect 53 0 34 0;
+#X connect 54 0 23 1;
+#X connect 55 0 58 0;
+#X connect 55 0 59 0;
+#X connect 55 0 62 0;
+#X connect 56 0 44 1;
+#X connect 56 0 46 1;
+#X connect 57 0 48 1;
+#X connect 57 0 50 1;
+#X connect 58 0 37 1;
+#X connect 59 0 38 1;
+#X connect 60 0 75 2;
+#X connect 61 0 75 1;
+#X connect 62 0 61 1;
+#X connect 63 0 64 1;
+#X connect 64 0 70 0;
+#X connect 65 0 33 1;
+#X connect 65 0 34 1;
+#X connect 66 0 33 1;
+#X connect 66 0 34 1;
+#X connect 67 0 68 0;
+#X connect 68 0 65 0;
+#X connect 68 0 71 0;
+#X connect 68 1 66 0;
+#X connect 68 1 72 0;
+#X connect 69 0 61 0;
+#X connect 70 0 60 0;
+#X connect 71 0 70 1;
+#X connect 72 0 70 1;
+#X connect 73 0 8 0;
+#X connect 73 0 16 0;
+#X connect 73 0 3 0;
+#X connect 74 0 73 0;
+#X connect 75 0 14 0;
+#X restore 775 1071 pd tuples-------------;
+#X msg 591 178 -0.19;
+#X msg 642 183 -0.21;
+#X msg 550 179 -0.19;
+#X obj 56 357 translateXYZ 2 -40 -0.9;
+#X obj 398 250 translateXYZ 2 -40 -0.9;
+#X obj 591 541 translateXYZ 2 -40 -0.9;
+#X obj 381 571 translateXYZ 2 -40 -0.9;
+#X obj 39 876 translateXYZ 2 -40 0;
+#X obj 935 949 translateXYZ 2 -40 -0.9;
+#X obj 534 964 translateXYZ 2 -40 0;
+#X obj 284 153 t b;
+#X obj 286 134 r \$0-reclock;
+#X obj 551 89 moses 7;
+#X obj 591 111 - 7;
+#X obj 878 142 sel 0;
+#X obj 10 824 &&;
+#X obj 500 918 &&;
+#X obj 337 518 &&;
+#X obj 942 811 &&;
+#X obj 595 499 &&;
+#X obj 34 805 r \$0-showme;
+#X obj 904 755 r \$0-showme;
+#X obj 484 825 r \$0-showme;
+#X obj 292 468 r \$0-showme;
+#X obj 604 465 r \$0-showme;
+#X obj 20 217 r \$0-showme;
+#X obj 461 154 &&;
+#X obj 457 125 r \$0-showme;
+#X obj 18 98 s \$0-showme;
+#X obj 556 5 inlet;
+#X text 739 8 receive \$16;
+#X obj 631 6 r \$16;
+#X obj 623 24 route reclock;
+#N canvas 0 22 450 300 clockit 0;
+#X obj 61 57 inlet;
+#X obj 61 122 spigot 1;
+#X obj 151 122 t b;
+#X obj 151 141 f;
+#X obj 176 141 + 1;
+#X msg 186 97 0;
+#X msg 151 98 1;
+#X obj 61 174 outlet;
+#X obj 159 57 inlet;
+#X obj 159 78 t b b;
+#X obj 242 59 r \$0-clocked;
+#X obj 151 160 < 8;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 1 0 7 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 11 0;
+#X connect 4 0 3 1;
+#X connect 5 0 3 1;
+#X connect 6 0 1 1;
+#X connect 8 0 9 0;
+#X connect 9 0 6 0;
+#X connect 9 1 5 0;
+#X connect 11 0 1 1;
+#X restore 89 53 pd clockit;
+#X obj 717 24 s \$0-reclock;
+#X obj 158 46 r \$0-reclock;
+#X text 456 436 leger lines;
+#X text 605 448 dotted;
+#X obj 654 324 sel 0 1 5 6;
+#X msg 679 438 0.35;
+#X msg 687 401 0.3;
+#X obj 659 497 + 0.26;
+#X msg 656 417 0.26;
+#X msg 635 392 0.2;
+#X obj 89 89 unpack f f f f f f f f;
+#X obj 18 43 packel 9;
+#X obj 62 603 text3d;
+#X obj 556 43 route pitch rhythm xoff bt stem beam tie acc shfl altstem
+tail tuple articulation;
+#X obj 52 506 gemhead;
+#X obj 149 508 r \$0-color;
+#X obj 58 561 color 0 0 0;
+#X obj 56 537 translateXYZ 2 -40 -0.9;
+#X obj 93 423 r \$0-showme;
+#X obj 41 460 &&;
+#X obj 77 456 t b f;
+#X obj 39 436 != 0;
+#X text 39 485 articulation;
+#X obj 215 411 == 1;
+#X obj 192 456 sel 1;
+#X obj 214 436 &&;
+#X obj 249 410 == 0;
+#X obj 248 433 t b f;
+#X obj 254 384 r \$0-direction;
+#X obj 288 435 &&;
+#X obj 284 412 t b f;
+#X obj 244 457 sel 1;
+#X msg 125 601 text `;
+#X obj 142 578 loadbang;
+#X obj 116 510 +;
+#X msg 174 482 text I;
+#X msg 227 481 text E;
+#X obj 121 488 t b f;
+#X msg 116 446 0.38;
+#X msg 138 466 0.45;
+#X obj 159 68 r reclock;
+#X msg 236 551 0;
+#X obj 260 505 loadbang;
+#X obj 251 529 r \$0-lbn;
+#X obj 39 943 rectangle 0.015 0.6;
+#X connect 0 0 3 0;
+#X connect 2 0 261 0;
+#X connect 3 0 61 0;
+#X connect 3 0 115 0;
+#X connect 3 0 175 0;
+#X connect 3 0 238 0;
+#X connect 4 0 1 0;
+#X connect 4 0 304 0;
+#X connect 4 1 1 1;
+#X connect 4 1 304 1;
+#X connect 6 0 262 0;
+#X connect 7 0 5 0;
+#X connect 8 0 5 0;
+#X connect 9 0 5 0;
+#X connect 10 0 11 0;
+#X connect 11 0 16 0;
+#X connect 13 0 14 0;
+#X connect 14 0 7 0;
+#X connect 14 0 260 0;
+#X connect 14 1 9 0;
+#X connect 14 1 258 0;
+#X connect 14 2 8 0;
+#X connect 14 2 259 0;
+#X connect 15 0 13 0;
+#X connect 16 0 65 0;
+#X connect 20 0 29 0;
+#X connect 20 0 52 0;
+#X connect 20 0 53 0;
+#X connect 20 0 54 0;
+#X connect 21 0 5 0;
+#X connect 21 1 5 1;
+#X connect 22 0 264 2;
+#X connect 24 0 264 0;
+#X connect 25 0 275 1;
+#X connect 26 0 23 0;
+#X connect 26 0 43 0;
+#X connect 26 1 23 1;
+#X connect 26 1 43 1;
+#X connect 27 0 30 0;
+#X connect 28 0 30 1;
+#X connect 29 0 27 0;
+#X connect 29 0 32 0;
+#X connect 29 1 28 0;
+#X connect 29 1 31 0;
+#X connect 30 0 25 0;
+#X connect 31 0 23 0;
+#X connect 32 0 23 0;
+#X connect 33 0 15 0;
+#X connect 34 0 20 0;
+#X connect 34 1 14 0;
+#X connect 35 0 34 0;
+#X connect 36 0 187 0;
+#X connect 36 0 291 0;
+#X connect 36 0 303 0;
+#X connect 37 0 121 0;
+#X connect 38 0 50 0;
+#X connect 38 0 55 0;
+#X connect 38 0 88 0;
+#X connect 38 0 239 0;
+#X connect 38 0 261 1;
+#X connect 38 0 299 0;
+#X connect 38 0 309 1;
+#X connect 39 0 1 0;
+#X connect 40 0 1 0;
+#X connect 41 0 1 0;
+#X connect 42 0 56 0;
+#X connect 44 0 263 0;
+#X connect 45 0 249 0;
+#X connect 46 0 49 0;
+#X connect 47 0 49 0;
+#X connect 48 0 43 0;
+#X connect 49 0 277 1;
+#X connect 50 0 264 1;
+#X connect 51 0 16 1;
+#X connect 52 0 3 1;
+#X connect 53 0 45 1;
+#X connect 54 0 51 0;
+#X connect 55 0 262 1;
+#X connect 56 0 46 0;
+#X connect 56 0 58 0;
+#X connect 56 0 170 0;
+#X connect 56 1 57 0;
+#X connect 57 0 58 0;
+#X connect 57 0 170 0;
+#X connect 57 0 272 0;
+#X connect 57 0 296 0;
+#X connect 58 0 40 0;
+#X connect 58 0 59 0;
+#X connect 58 0 64 0;
+#X connect 58 0 67 0;
+#X connect 58 0 73 0;
+#X connect 58 0 193 0;
+#X connect 58 1 39 0;
+#X connect 58 1 59 0;
+#X connect 58 1 64 0;
+#X connect 58 1 67 0;
+#X connect 58 1 71 0;
+#X connect 58 1 193 0;
+#X connect 58 2 41 0;
+#X connect 58 2 71 0;
+#X connect 58 2 194 0;
+#X connect 58 2 60 0;
+#X connect 58 2 63 0;
+#X connect 58 2 69 0;
+#X connect 58 3 41 0;
+#X connect 58 3 71 0;
+#X connect 58 3 63 0;
+#X connect 58 3 195 0;
+#X connect 58 3 69 0;
+#X connect 58 3 60 0;
+#X connect 58 4 41 0;
+#X connect 58 4 72 0;
+#X connect 58 4 63 0;
+#X connect 58 4 195 0;
+#X connect 58 4 69 0;
+#X connect 58 4 60 0;
+#X connect 58 5 41 0;
+#X connect 58 5 66 0;
+#X connect 58 5 62 0;
+#X connect 58 5 70 0;
+#X connect 58 5 68 0;
+#X connect 58 5 195 0;
+#X connect 58 6 41 0;
+#X connect 58 6 62 0;
+#X connect 58 6 66 0;
+#X connect 58 6 70 0;
+#X connect 58 6 68 0;
+#X connect 58 6 195 0;
+#X connect 59 0 1 1;
+#X connect 59 0 5 1;
+#X connect 60 0 1 1;
+#X connect 60 0 5 1;
+#X connect 61 0 261 2;
+#X connect 61 0 326 0;
+#X connect 62 0 1 1;
+#X connect 62 0 5 1;
+#X connect 63 0 61 1;
+#X connect 63 0 65 1;
+#X connect 64 0 65 1;
+#X connect 64 0 61 1;
+#X connect 65 0 262 2;
+#X connect 66 0 65 1;
+#X connect 66 0 61 1;
+#X connect 67 0 55 1;
+#X connect 68 0 55 1;
+#X connect 69 0 55 1;
+#X connect 70 0 50 1;
+#X connect 71 0 50 1;
+#X connect 72 0 50 1;
+#X connect 73 0 50 1;
+#X connect 75 0 267 0;
+#X connect 76 0 267 2;
+#X connect 78 0 74 0;
+#X connect 79 0 182 0;
+#X connect 80 0 79 3;
+#X connect 80 0 79 2;
+#X connect 81 0 79 3;
+#X connect 81 0 79 2;
+#X connect 82 0 100 0;
+#X connect 83 0 74 0;
+#X connect 83 1 74 1;
+#X connect 84 0 74 0;
+#X connect 85 0 74 0;
+#X connect 86 0 274 1;
+#X connect 87 0 265 0;
+#X connect 88 0 220 0;
+#X connect 88 0 234 0;
+#X connect 88 0 265 1;
+#X connect 88 0 267 1;
+#X connect 89 0 88 1;
+#X connect 90 0 115 1;
+#X connect 91 0 90 1;
+#X connect 93 0 192 1;
+#X connect 94 0 89 0;
+#X connect 94 0 112 0;
+#X connect 94 1 113 0;
+#X connect 94 1 192 0;
+#X connect 96 0 86 0;
+#X connect 97 0 86 0;
+#X connect 98 0 273 1;
+#X connect 100 0 80 0;
+#X connect 100 0 108 0;
+#X connect 100 1 81 0;
+#X connect 100 1 109 0;
+#X connect 101 0 86 1;
+#X connect 103 0 105 0;
+#X connect 103 1 104 0;
+#X connect 104 0 107 0;
+#X connect 105 0 107 0;
+#X connect 106 0 107 0;
+#X connect 106 1 107 1;
+#X connect 107 0 220 3;
+#X connect 108 0 76 1;
+#X connect 109 0 76 1;
+#X connect 111 0 112 1;
+#X connect 112 0 90 0;
+#X connect 112 0 114 0;
+#X connect 113 0 90 0;
+#X connect 113 0 114 0;
+#X connect 114 0 336 2;
+#X connect 115 0 76 0;
+#X connect 115 0 116 0;
+#X connect 115 0 176 0;
+#X connect 115 0 220 6;
+#X connect 115 0 226 0;
+#X connect 116 0 233 0;
+#X connect 116 0 265 2;
+#X connect 117 0 114 1;
+#X connect 117 0 116 1;
+#X connect 118 0 78 0;
+#X connect 118 0 96 0;
+#X connect 118 1 84 0;
+#X connect 118 1 96 0;
+#X connect 118 2 85 0;
+#X connect 118 2 96 0;
+#X connect 118 3 96 0;
+#X connect 118 3 120 0;
+#X connect 118 4 119 0;
+#X connect 119 0 97 0;
+#X connect 120 0 74 0;
+#X connect 122 0 179 1;
+#X connect 123 0 181 1;
+#X connect 123 0 185 1;
+#X connect 124 0 180 1;
+#X connect 126 0 98 0;
+#X connect 126 0 127 0;
+#X connect 126 0 220 5;
+#X connect 126 0 227 0;
+#X connect 127 0 103 0;
+#X connect 127 0 118 0;
+#X connect 127 0 251 0;
+#X connect 127 1 128 0;
+#X connect 128 0 103 0;
+#X connect 128 0 118 0;
+#X connect 128 0 251 0;
+#X connect 129 0 184 1;
+#X connect 130 0 182 1;
+#X connect 135 0 94 0;
+#X connect 135 0 220 4;
+#X connect 136 0 113 1;
+#X connect 136 0 111 0;
+#X connect 136 0 220 2;
+#X connect 137 0 177 2;
+#X connect 137 0 106 0;
+#X connect 138 0 82 0;
+#X connect 139 0 265 3;
+#X connect 140 0 267 3;
+#X connect 143 0 266 0;
+#X connect 144 0 142 0;
+#X connect 144 1 142 1;
+#X connect 145 0 237 0;
+#X connect 145 0 241 0;
+#X connect 146 0 145 1;
+#X connect 147 0 142 0;
+#X connect 148 0 142 0;
+#X connect 149 0 148 0;
+#X connect 150 0 147 0;
+#X connect 151 0 149 1;
+#X connect 152 0 153 0;
+#X connect 152 1 151 0;
+#X connect 152 1 150 1;
+#X connect 153 0 154 0;
+#X connect 153 0 165 0;
+#X connect 153 1 155 0;
+#X connect 153 1 164 0;
+#X connect 154 0 150 0;
+#X connect 155 0 149 0;
+#X connect 156 0 235 0;
+#X connect 156 0 246 0;
+#X connect 157 0 156 1;
+#X connect 164 0 157 0;
+#X connect 165 0 157 0;
+#X connect 166 0 183 1;
+#X connect 167 0 266 3;
+#X connect 168 0 152 0;
+#X connect 169 0 245 0;
+#X connect 169 1 244 0;
+#X connect 169 2 243 0;
+#X connect 169 3 242 0;
+#X connect 169 4 242 0;
+#X connect 169 5 242 0;
+#X connect 169 6 242 0;
+#X connect 170 0 169 0;
+#X connect 170 0 230 0;
+#X connect 172 0 86 0;
+#X connect 172 1 86 1;
+#X connect 173 0 177 1;
+#X connect 173 0 202 0;
+#X connect 175 0 114 0;
+#X connect 176 0 220 1;
+#X connect 177 0 257 1;
+#X connect 177 1 257 2;
+#X connect 177 2 257 3;
+#X connect 177 3 257 4;
+#X connect 177 4 257 5;
+#X connect 178 0 117 0;
+#X connect 178 0 176 1;
+#X connect 179 0 1 0;
+#X connect 180 0 5 0;
+#X connect 181 0 23 0;
+#X connect 182 0 74 0;
+#X connect 183 0 142 0;
+#X connect 184 0 336 0;
+#X connect 185 0 43 0;
+#X connect 186 0 187 1;
+#X connect 187 0 186 0;
+#X connect 187 0 206 0;
+#X connect 189 0 48 0;
+#X connect 190 0 78 0;
+#X connect 191 0 101 0;
+#X connect 192 0 88 1;
+#X connect 193 0 196 0;
+#X connect 194 0 196 0;
+#X connect 195 0 196 0;
+#X connect 197 0 198 0;
+#X connect 198 0 93 0;
+#X connect 198 1 199 0;
+#X connect 198 2 200 0;
+#X connect 199 0 192 1;
+#X connect 200 0 192 1;
+#X connect 201 0 204 0;
+#X connect 202 0 201 0;
+#X connect 202 1 204 1;
+#X connect 203 0 102 0;
+#X connect 203 0 209 0;
+#X connect 204 0 203 1;
+#X connect 205 0 35 0;
+#X connect 206 0 207 0;
+#X connect 206 0 48 0;
+#X connect 207 0 305 0;
+#X connect 208 0 42 0;
+#X connect 208 0 125 0;
+#X connect 209 0 210 0;
+#X connect 211 0 214 0;
+#X connect 213 0 176 1;
+#X connect 213 0 117 0;
+#X connect 214 0 221 0;
+#X connect 214 1 218 0;
+#X connect 215 0 268 0;
+#X connect 215 0 305 0;
+#X connect 218 0 222 1;
+#X connect 219 0 207 1;
+#X connect 220 0 177 0;
+#X connect 220 0 203 0;
+#X connect 220 0 257 0;
+#X connect 221 0 222 0;
+#X connect 221 0 226 1;
+#X connect 222 0 223 0;
+#X connect 223 0 224 1;
+#X connect 224 0 225 0;
+#X connect 225 0 213 0;
+#X connect 226 0 224 0;
+#X connect 229 0 276 1;
+#X connect 230 0 154 1;
+#X connect 230 0 155 1;
+#X connect 230 1 231 0;
+#X connect 231 0 155 1;
+#X connect 231 0 154 1;
+#X connect 232 0 207 1;
+#X connect 236 0 156 0;
+#X connect 238 0 156 0;
+#X connect 239 0 145 0;
+#X connect 240 0 183 0;
+#X connect 241 0 266 1;
+#X connect 242 0 146 0;
+#X connect 243 0 146 0;
+#X connect 244 0 146 0;
+#X connect 245 0 146 0;
+#X connect 246 0 266 2;
+#X connect 247 0 240 1;
+#X connect 249 0 263 2;
+#X connect 250 0 172 0;
+#X connect 253 0 257 6;
+#X connect 254 0 203 1;
+#X connect 255 0 256 0;
+#X connect 255 1 254 1;
+#X connect 256 0 254 0;
+#X connect 258 0 11 1;
+#X connect 259 0 11 1;
+#X connect 260 0 11 1;
+#X connect 261 0 179 0;
+#X connect 262 0 180 0;
+#X connect 263 0 185 0;
+#X connect 264 0 181 0;
+#X connect 265 0 184 0;
+#X connect 266 0 240 0;
+#X connect 267 0 79 0;
+#X connect 269 0 268 0;
+#X connect 270 0 125 0;
+#X connect 270 1 271 0;
+#X connect 271 0 125 0;
+#X connect 272 0 47 0;
+#X connect 272 1 47 0;
+#X connect 273 0 87 0;
+#X connect 274 0 75 0;
+#X connect 275 0 24 0;
+#X connect 276 0 143 0;
+#X connect 277 0 44 0;
+#X connect 278 0 273 0;
+#X connect 279 0 276 0;
+#X connect 280 0 274 0;
+#X connect 281 0 275 0;
+#X connect 282 0 277 0;
+#X connect 283 0 2 0;
+#X connect 284 0 6 0;
+#X connect 285 0 284 0;
+#X connect 287 0 215 0;
+#X connect 289 0 215 0;
+#X connect 289 0 290 0;
+#X connect 290 0 292 0;
+#X connect 291 0 302 0;
+#X connect 293 0 291 1;
+#X connect 296 0 297 0;
+#X connect 296 1 298 0;
+#X connect 296 2 301 0;
+#X connect 296 3 301 0;
+#X connect 296 4 300 0;
+#X connect 297 0 299 1;
+#X connect 298 0 299 1;
+#X connect 299 0 263 1;
+#X connect 300 0 299 1;
+#X connect 301 0 299 1;
+#X connect 302 0 38 0;
+#X connect 302 1 0 0;
+#X connect 302 1 10 0;
+#X connect 302 1 22 0;
+#X connect 302 1 45 0;
+#X connect 302 2 131 0;
+#X connect 302 2 261 3;
+#X connect 302 2 262 3;
+#X connect 302 2 263 3;
+#X connect 302 2 264 3;
+#X connect 302 2 309 3;
+#X connect 302 4 34 2;
+#X connect 302 5 37 0;
+#X connect 302 6 37 1;
+#X connect 302 7 37 2;
+#X connect 303 0 286 0;
+#X connect 305 0 35 0;
+#X connect 305 1 42 0;
+#X connect 305 1 270 0;
+#X connect 305 2 38 1;
+#X connect 305 3 132 0;
+#X connect 305 4 133 0;
+#X connect 305 5 134 0;
+#X connect 305 6 229 0;
+#X connect 305 6 247 0;
+#X connect 305 7 284 1;
+#X connect 305 8 34 1;
+#X connect 305 9 178 0;
+#X connect 305 10 252 0;
+#X connect 305 11 253 0;
+#X connect 305 12 313 0;
+#X connect 305 12 315 0;
+#X connect 306 0 309 0;
+#X connect 307 0 308 1;
+#X connect 308 0 304 0;
+#X connect 309 0 308 0;
+#X connect 310 0 312 0;
+#X connect 311 0 306 0;
+#X connect 312 0 311 0;
+#X connect 312 1 311 1;
+#X connect 313 0 311 0;
+#X connect 315 0 317 0;
+#X connect 315 0 321 0;
+#X connect 316 0 327 0;
+#X connect 316 0 330 0;
+#X connect 317 0 316 0;
+#X connect 318 0 319 0;
+#X connect 319 0 317 0;
+#X connect 319 1 317 1;
+#X connect 320 0 318 0;
+#X connect 320 0 322 0;
+#X connect 321 0 323 0;
+#X connect 322 0 321 0;
+#X connect 322 1 321 1;
+#X connect 323 0 328 0;
+#X connect 323 0 331 0;
+#X connect 324 0 304 0;
+#X connect 325 0 324 0;
+#X connect 326 0 309 2;
+#X connect 327 0 304 0;
+#X connect 328 0 304 0;
+#X connect 329 0 326 0;
+#X connect 329 1 326 1;
+#X connect 330 0 329 0;
+#X connect 331 0 329 0;
+#X connect 332 0 291 1;
+#X connect 333 0 306 0;
+#X connect 334 0 333 0;
+#X connect 335 0 333 0;
diff --git a/gemnotes_0.2.3/polytimeq.pd b/gemnotes_0.2.3/polytimeq.pd
new file mode 100755
index 0000000..b4d09f2
--- /dev/null
+++ b/gemnotes_0.2.3/polytimeq.pd
@@ -0,0 +1,874 @@
+#N canvas 539 22 827 506 10;
+#X obj 167 96 inlet;
+#X obj 170 465 outlet;
+#N canvas 0 22 827 429 objectmaker 0;
+#X obj 26 116 kalashnikov 128;
+#X obj 61 142 t f f;
+#X obj 61 182 + 20;
+#X obj 67 273 s pd-\$0-voices;
+#X obj 61 162 * 100;
+#X obj 71 201 pack f f f f f;
+#X msg 205 142 4;
+#X obj 120 172 + 3;
+#X msg 68 234 obj \$1 100 timenote \$2 \$4 \$5 \, connect 0 0 \$3 0
+\, connect \$3 0 2 0 \, connect 1 0 \$3 1;
+#X msg 175 198 clear \, obj 50 40 inlet \, obj 150 40 inlet \, obj
+50 150 outlet;
+#X obj 178 93 loadbang;
+#X obj 230 328 s pd-\$0-voicecanvas;
+#X obj 58 38 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 53 64 t b b;
+#X obj 526 116 kalashnikov 128;
+#X obj 561 142 t f f;
+#X obj 561 182 + 20;
+#X obj 567 273 s pd-\$0-voices;
+#X obj 561 162 * 100;
+#X obj 571 201 pack f f f f f;
+#X obj 678 93 loadbang;
+#X obj 558 38 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 553 64 t b b;
+#X msg 675 198 clear \, obj 50 40 inlet \, obj 150 40 inlet \, obj
+250 40 inlet \, obj 50 150 outlet;
+#X obj 620 172 + 4;
+#X msg 568 233 obj \$1 100 timenq \$2 \$4 \$5 \, connect 0 0 \$3 0
+\, connect \$3 0 3 0 \, connect 1 0 \$3 1 \, connect 2 0 \$3 2;
+#X msg 172 27;
+#X obj 557 10 inlet;
+#X msg 219 293 connect 0 0 4 0 \, connect 1 0 4 1 \, connect 2 0 4
+2 \, connect 4 0 3 0;
+#X msg 705 142 1;
+#X obj 680 20 inlet;
+#X obj 160 148 140;
+#X obj 652 138 140;
+#X text 680 3 tempo;
+#X connect 0 1 1 0;
+#X connect 0 2 28 0;
+#X connect 1 0 4 0;
+#X connect 1 1 5 1;
+#X connect 1 1 7 0;
+#X connect 2 0 5 0;
+#X connect 4 0 2 0;
+#X connect 5 0 8 0;
+#X connect 6 0 5 4;
+#X connect 7 0 5 2;
+#X connect 8 0 3 0;
+#X connect 9 0 3 0;
+#X connect 10 0 6 0;
+#X connect 12 0 13 0;
+#X connect 13 0 0 0;
+#X connect 13 1 9 0;
+#X connect 13 1 31 0;
+#X connect 14 1 15 0;
+#X connect 14 2 28 0;
+#X connect 15 0 18 0;
+#X connect 15 1 19 1;
+#X connect 15 1 24 0;
+#X connect 16 0 19 0;
+#X connect 18 0 16 0;
+#X connect 19 0 25 0;
+#X connect 20 0 29 0;
+#X connect 21 0 22 0;
+#X connect 22 0 14 0;
+#X connect 22 1 23 0;
+#X connect 22 1 32 0;
+#X connect 23 0 17 0;
+#X connect 24 0 19 2;
+#X connect 25 0 17 0;
+#X connect 27 0 21 0;
+#X connect 28 0 11 0;
+#X connect 29 0 19 4;
+#X connect 30 0 31 1;
+#X connect 30 0 32 1;
+#X connect 31 0 5 3;
+#X connect 32 0 19 3;
+#X restore 564 320 pd objectmaker;
+#X obj 218 96 inlet;
+#X text 219 80 start;
+#X text 168 80 notes;
+#N canvas 0 22 450 300 \$0-voicecanvas 0;
+#X obj 39 37 inlet;
+#X obj 91 38 inlet;
+#X obj 142 38 inlet;
+#X obj 60 265 outlet;
+#N canvas 0 22 701 337 \$0-voices 0;
+#X obj 50 40 inlet;
+#X obj 150 40 inlet;
+#X obj 250 40 inlet;
+#X obj 50 150 outlet;
+#X obj 20 100 timenq 0 104 1;
+#X obj 120 100 timenq 1 104 1;
+#X obj 220 100 timenq 2 104 1;
+#X obj 320 100 timenq 3 104 1;
+#X obj 420 100 timenq 4 104 1;
+#X obj 520 100 timenq 5 104 1;
+#X obj 620 100 timenq 6 104 1;
+#X obj 720 100 timenq 7 104 1;
+#X obj 820 100 timenq 8 104 1;
+#X obj 920 100 timenq 9 104 1;
+#X obj 1020 100 timenq 10 104 1;
+#X obj 1120 100 timenq 11 104 1;
+#X obj 1220 100 timenq 12 104 1;
+#X obj 1320 100 timenq 13 104 1;
+#X obj 1420 100 timenq 14 104 1;
+#X obj 1520 100 timenq 15 104 1;
+#X obj 1620 100 timenq 16 104 1;
+#X obj 1720 100 timenq 17 104 1;
+#X obj 1820 100 timenq 18 104 1;
+#X obj 1920 100 timenq 19 104 1;
+#X obj 2020 100 timenq 20 104 1;
+#X obj 2120 100 timenq 21 104 1;
+#X obj 2220 100 timenq 22 104 1;
+#X obj 2320 100 timenq 23 104 1;
+#X obj 2420 100 timenq 24 104 1;
+#X obj 2520 100 timenq 25 104 1;
+#X obj 2620 100 timenq 26 104 1;
+#X obj 2720 100 timenq 27 104 1;
+#X obj 2820 100 timenq 28 104 1;
+#X obj 2920 100 timenq 29 104 1;
+#X obj 3020 100 timenq 30 104 1;
+#X obj 3120 100 timenq 31 104 1;
+#X obj 3220 100 timenq 32 104 1;
+#X obj 3320 100 timenq 33 104 1;
+#X obj 3420 100 timenq 34 104 1;
+#X obj 3520 100 timenq 35 104 1;
+#X obj 3620 100 timenq 36 104 1;
+#X obj 3720 100 timenq 37 104 1;
+#X obj 3820 100 timenq 38 104 1;
+#X obj 3920 100 timenq 39 104 1;
+#X obj 4020 100 timenq 40 104 1;
+#X obj 4120 100 timenq 41 104 1;
+#X obj 4220 100 timenq 42 104 1;
+#X obj 4320 100 timenq 43 104 1;
+#X obj 4420 100 timenq 44 104 1;
+#X obj 4520 100 timenq 45 104 1;
+#X obj 4620 100 timenq 46 104 1;
+#X obj 4720 100 timenq 47 104 1;
+#X obj 4820 100 timenq 48 104 1;
+#X obj 4920 100 timenq 49 104 1;
+#X obj 5020 100 timenq 50 104 1;
+#X obj 5120 100 timenq 51 104 1;
+#X obj 5220 100 timenq 52 104 1;
+#X obj 5320 100 timenq 53 104 1;
+#X obj 5420 100 timenq 54 104 1;
+#X obj 5520 100 timenq 55 104 1;
+#X obj 5620 100 timenq 56 104 1;
+#X obj 5720 100 timenq 57 104 1;
+#X obj 5820 100 timenq 58 104 1;
+#X obj 5920 100 timenq 59 104 1;
+#X obj 6020 100 timenq 60 104 1;
+#X obj 6120 100 timenq 61 104 1;
+#X obj 6220 100 timenq 62 104 1;
+#X obj 6320 100 timenq 63 104 1;
+#X obj 6420 100 timenq 64 104 1;
+#X obj 6520 100 timenq 65 104 1;
+#X obj 6620 100 timenq 66 104 1;
+#X obj 6720 100 timenq 67 104 1;
+#X obj 6820 100 timenq 68 104 1;
+#X obj 6920 100 timenq 69 104 1;
+#X obj 7020 100 timenq 70 104 1;
+#X obj 7120 100 timenq 71 104 1;
+#X obj 7220 100 timenq 72 104 1;
+#X obj 7320 100 timenq 73 104 1;
+#X obj 7420 100 timenq 74 104 1;
+#X obj 7520 100 timenq 75 104 1;
+#X obj 7620 100 timenq 76 104 1;
+#X obj 7720 100 timenq 77 104 1;
+#X obj 7820 100 timenq 78 104 1;
+#X obj 7920 100 timenq 79 104 1;
+#X obj 8020 100 timenq 80 104 1;
+#X obj 8120 100 timenq 81 104 1;
+#X obj 8220 100 timenq 82 104 1;
+#X obj 8320 100 timenq 83 104 1;
+#X obj 8420 100 timenq 84 104 1;
+#X obj 8520 100 timenq 85 104 1;
+#X obj 8620 100 timenq 86 104 1;
+#X obj 8720 100 timenq 87 104 1;
+#X obj 8820 100 timenq 88 104 1;
+#X obj 8920 100 timenq 89 104 1;
+#X obj 9020 100 timenq 90 104 1;
+#X obj 9120 100 timenq 91 104 1;
+#X obj 9220 100 timenq 92 104 1;
+#X obj 9320 100 timenq 93 104 1;
+#X obj 9420 100 timenq 94 104 1;
+#X obj 9520 100 timenq 95 104 1;
+#X obj 9620 100 timenq 96 104 1;
+#X obj 9720 100 timenq 97 104 1;
+#X obj 9820 100 timenq 98 104 1;
+#X obj 9920 100 timenq 99 104 1;
+#X obj 10020 100 timenq 100 104 1;
+#X obj 10120 100 timenq 101 104 1;
+#X obj 10220 100 timenq 102 104 1;
+#X obj 10320 100 timenq 103 104 1;
+#X obj 10420 100 timenq 104 104 1;
+#X obj 10520 100 timenq 105 104 1;
+#X obj 10620 100 timenq 106 104 1;
+#X obj 10720 100 timenq 107 104 1;
+#X obj 10820 100 timenq 108 104 1;
+#X obj 10920 100 timenq 109 104 1;
+#X obj 11020 100 timenq 110 104 1;
+#X obj 11120 100 timenq 111 104 1;
+#X obj 11220 100 timenq 112 104 1;
+#X obj 11320 100 timenq 113 104 1;
+#X obj 11420 100 timenq 114 104 1;
+#X obj 11520 100 timenq 115 104 1;
+#X obj 11620 100 timenq 116 104 1;
+#X obj 11720 100 timenq 117 104 1;
+#X obj 11820 100 timenq 118 104 1;
+#X obj 11920 100 timenq 119 104 1;
+#X obj 12020 100 timenq 120 104 1;
+#X obj 12120 100 timenq 121 104 1;
+#X obj 12220 100 timenq 122 104 1;
+#X obj 12320 100 timenq 123 104 1;
+#X obj 12420 100 timenq 124 104 1;
+#X obj 12520 100 timenq 125 104 1;
+#X obj 12620 100 timenq 126 104 1;
+#X obj 12720 100 timenq 127 104 1;
+#X connect 0 0 4 0;
+#X connect 0 0 5 0;
+#X connect 0 0 6 0;
+#X connect 0 0 7 0;
+#X connect 0 0 8 0;
+#X connect 0 0 9 0;
+#X connect 0 0 10 0;
+#X connect 0 0 11 0;
+#X connect 0 0 12 0;
+#X connect 0 0 13 0;
+#X connect 0 0 14 0;
+#X connect 0 0 15 0;
+#X connect 0 0 16 0;
+#X connect 0 0 17 0;
+#X connect 0 0 18 0;
+#X connect 0 0 19 0;
+#X connect 0 0 20 0;
+#X connect 0 0 21 0;
+#X connect 0 0 22 0;
+#X connect 0 0 23 0;
+#X connect 0 0 24 0;
+#X connect 0 0 25 0;
+#X connect 0 0 26 0;
+#X connect 0 0 27 0;
+#X connect 0 0 28 0;
+#X connect 0 0 29 0;
+#X connect 0 0 30 0;
+#X connect 0 0 31 0;
+#X connect 0 0 32 0;
+#X connect 0 0 33 0;
+#X connect 0 0 34 0;
+#X connect 0 0 35 0;
+#X connect 0 0 36 0;
+#X connect 0 0 37 0;
+#X connect 0 0 38 0;
+#X connect 0 0 39 0;
+#X connect 0 0 40 0;
+#X connect 0 0 41 0;
+#X connect 0 0 42 0;
+#X connect 0 0 43 0;
+#X connect 0 0 44 0;
+#X connect 0 0 45 0;
+#X connect 0 0 46 0;
+#X connect 0 0 47 0;
+#X connect 0 0 48 0;
+#X connect 0 0 49 0;
+#X connect 0 0 50 0;
+#X connect 0 0 51 0;
+#X connect 0 0 52 0;
+#X connect 0 0 53 0;
+#X connect 0 0 54 0;
+#X connect 0 0 55 0;
+#X connect 0 0 56 0;
+#X connect 0 0 57 0;
+#X connect 0 0 58 0;
+#X connect 0 0 59 0;
+#X connect 0 0 60 0;
+#X connect 0 0 61 0;
+#X connect 0 0 62 0;
+#X connect 0 0 63 0;
+#X connect 0 0 64 0;
+#X connect 0 0 65 0;
+#X connect 0 0 66 0;
+#X connect 0 0 67 0;
+#X connect 0 0 68 0;
+#X connect 0 0 69 0;
+#X connect 0 0 70 0;
+#X connect 0 0 71 0;
+#X connect 0 0 72 0;
+#X connect 0 0 73 0;
+#X connect 0 0 74 0;
+#X connect 0 0 75 0;
+#X connect 0 0 76 0;
+#X connect 0 0 77 0;
+#X connect 0 0 78 0;
+#X connect 0 0 79 0;
+#X connect 0 0 80 0;
+#X connect 0 0 81 0;
+#X connect 0 0 82 0;
+#X connect 0 0 83 0;
+#X connect 0 0 84 0;
+#X connect 0 0 85 0;
+#X connect 0 0 86 0;
+#X connect 0 0 87 0;
+#X connect 0 0 88 0;
+#X connect 0 0 89 0;
+#X connect 0 0 90 0;
+#X connect 0 0 91 0;
+#X connect 0 0 92 0;
+#X connect 0 0 93 0;
+#X connect 0 0 94 0;
+#X connect 0 0 95 0;
+#X connect 0 0 96 0;
+#X connect 0 0 97 0;
+#X connect 0 0 98 0;
+#X connect 0 0 99 0;
+#X connect 0 0 100 0;
+#X connect 0 0 101 0;
+#X connect 0 0 102 0;
+#X connect 0 0 103 0;
+#X connect 0 0 104 0;
+#X connect 0 0 105 0;
+#X connect 0 0 106 0;
+#X connect 0 0 107 0;
+#X connect 0 0 108 0;
+#X connect 0 0 109 0;
+#X connect 0 0 110 0;
+#X connect 0 0 111 0;
+#X connect 0 0 112 0;
+#X connect 0 0 113 0;
+#X connect 0 0 114 0;
+#X connect 0 0 115 0;
+#X connect 0 0 116 0;
+#X connect 0 0 117 0;
+#X connect 0 0 118 0;
+#X connect 0 0 119 0;
+#X connect 0 0 120 0;
+#X connect 0 0 121 0;
+#X connect 0 0 122 0;
+#X connect 0 0 123 0;
+#X connect 0 0 124 0;
+#X connect 0 0 125 0;
+#X connect 0 0 126 0;
+#X connect 0 0 127 0;
+#X connect 0 0 128 0;
+#X connect 0 0 129 0;
+#X connect 0 0 130 0;
+#X connect 0 0 131 0;
+#X connect 1 0 4 1;
+#X connect 1 0 5 1;
+#X connect 1 0 6 1;
+#X connect 1 0 7 1;
+#X connect 1 0 8 1;
+#X connect 1 0 9 1;
+#X connect 1 0 10 1;
+#X connect 1 0 11 1;
+#X connect 1 0 12 1;
+#X connect 1 0 13 1;
+#X connect 1 0 14 1;
+#X connect 1 0 15 1;
+#X connect 1 0 16 1;
+#X connect 1 0 17 1;
+#X connect 1 0 18 1;
+#X connect 1 0 19 1;
+#X connect 1 0 20 1;
+#X connect 1 0 21 1;
+#X connect 1 0 22 1;
+#X connect 1 0 23 1;
+#X connect 1 0 24 1;
+#X connect 1 0 25 1;
+#X connect 1 0 26 1;
+#X connect 1 0 27 1;
+#X connect 1 0 28 1;
+#X connect 1 0 29 1;
+#X connect 1 0 30 1;
+#X connect 1 0 31 1;
+#X connect 1 0 32 1;
+#X connect 1 0 33 1;
+#X connect 1 0 34 1;
+#X connect 1 0 35 1;
+#X connect 1 0 36 1;
+#X connect 1 0 37 1;
+#X connect 1 0 38 1;
+#X connect 1 0 39 1;
+#X connect 1 0 40 1;
+#X connect 1 0 41 1;
+#X connect 1 0 42 1;
+#X connect 1 0 43 1;
+#X connect 1 0 44 1;
+#X connect 1 0 45 1;
+#X connect 1 0 46 1;
+#X connect 1 0 47 1;
+#X connect 1 0 48 1;
+#X connect 1 0 49 1;
+#X connect 1 0 50 1;
+#X connect 1 0 51 1;
+#X connect 1 0 52 1;
+#X connect 1 0 53 1;
+#X connect 1 0 54 1;
+#X connect 1 0 55 1;
+#X connect 1 0 56 1;
+#X connect 1 0 57 1;
+#X connect 1 0 58 1;
+#X connect 1 0 59 1;
+#X connect 1 0 60 1;
+#X connect 1 0 61 1;
+#X connect 1 0 62 1;
+#X connect 1 0 63 1;
+#X connect 1 0 64 1;
+#X connect 1 0 65 1;
+#X connect 1 0 66 1;
+#X connect 1 0 67 1;
+#X connect 1 0 68 1;
+#X connect 1 0 69 1;
+#X connect 1 0 70 1;
+#X connect 1 0 71 1;
+#X connect 1 0 72 1;
+#X connect 1 0 73 1;
+#X connect 1 0 74 1;
+#X connect 1 0 75 1;
+#X connect 1 0 76 1;
+#X connect 1 0 77 1;
+#X connect 1 0 78 1;
+#X connect 1 0 79 1;
+#X connect 1 0 80 1;
+#X connect 1 0 81 1;
+#X connect 1 0 82 1;
+#X connect 1 0 83 1;
+#X connect 1 0 84 1;
+#X connect 1 0 85 1;
+#X connect 1 0 86 1;
+#X connect 1 0 87 1;
+#X connect 1 0 88 1;
+#X connect 1 0 89 1;
+#X connect 1 0 90 1;
+#X connect 1 0 91 1;
+#X connect 1 0 92 1;
+#X connect 1 0 93 1;
+#X connect 1 0 94 1;
+#X connect 1 0 95 1;
+#X connect 1 0 96 1;
+#X connect 1 0 97 1;
+#X connect 1 0 98 1;
+#X connect 1 0 99 1;
+#X connect 1 0 100 1;
+#X connect 1 0 101 1;
+#X connect 1 0 102 1;
+#X connect 1 0 103 1;
+#X connect 1 0 104 1;
+#X connect 1 0 105 1;
+#X connect 1 0 106 1;
+#X connect 1 0 107 1;
+#X connect 1 0 108 1;
+#X connect 1 0 109 1;
+#X connect 1 0 110 1;
+#X connect 1 0 111 1;
+#X connect 1 0 112 1;
+#X connect 1 0 113 1;
+#X connect 1 0 114 1;
+#X connect 1 0 115 1;
+#X connect 1 0 116 1;
+#X connect 1 0 117 1;
+#X connect 1 0 118 1;
+#X connect 1 0 119 1;
+#X connect 1 0 120 1;
+#X connect 1 0 121 1;
+#X connect 1 0 122 1;
+#X connect 1 0 123 1;
+#X connect 1 0 124 1;
+#X connect 1 0 125 1;
+#X connect 1 0 126 1;
+#X connect 1 0 127 1;
+#X connect 1 0 128 1;
+#X connect 1 0 129 1;
+#X connect 1 0 130 1;
+#X connect 1 0 131 1;
+#X connect 2 0 4 2;
+#X connect 2 0 5 2;
+#X connect 2 0 6 2;
+#X connect 2 0 7 2;
+#X connect 2 0 8 2;
+#X connect 2 0 9 2;
+#X connect 2 0 10 2;
+#X connect 2 0 11 2;
+#X connect 2 0 12 2;
+#X connect 2 0 13 2;
+#X connect 2 0 14 2;
+#X connect 2 0 15 2;
+#X connect 2 0 16 2;
+#X connect 2 0 17 2;
+#X connect 2 0 18 2;
+#X connect 2 0 19 2;
+#X connect 2 0 20 2;
+#X connect 2 0 21 2;
+#X connect 2 0 22 2;
+#X connect 2 0 23 2;
+#X connect 2 0 24 2;
+#X connect 2 0 25 2;
+#X connect 2 0 26 2;
+#X connect 2 0 27 2;
+#X connect 2 0 28 2;
+#X connect 2 0 29 2;
+#X connect 2 0 30 2;
+#X connect 2 0 31 2;
+#X connect 2 0 32 2;
+#X connect 2 0 33 2;
+#X connect 2 0 34 2;
+#X connect 2 0 35 2;
+#X connect 2 0 36 2;
+#X connect 2 0 37 2;
+#X connect 2 0 38 2;
+#X connect 2 0 39 2;
+#X connect 2 0 40 2;
+#X connect 2 0 41 2;
+#X connect 2 0 42 2;
+#X connect 2 0 43 2;
+#X connect 2 0 44 2;
+#X connect 2 0 45 2;
+#X connect 2 0 46 2;
+#X connect 2 0 47 2;
+#X connect 2 0 48 2;
+#X connect 2 0 49 2;
+#X connect 2 0 50 2;
+#X connect 2 0 51 2;
+#X connect 2 0 52 2;
+#X connect 2 0 53 2;
+#X connect 2 0 54 2;
+#X connect 2 0 55 2;
+#X connect 2 0 56 2;
+#X connect 2 0 57 2;
+#X connect 2 0 58 2;
+#X connect 2 0 59 2;
+#X connect 2 0 60 2;
+#X connect 2 0 61 2;
+#X connect 2 0 62 2;
+#X connect 2 0 63 2;
+#X connect 2 0 64 2;
+#X connect 2 0 65 2;
+#X connect 2 0 66 2;
+#X connect 2 0 67 2;
+#X connect 2 0 68 2;
+#X connect 2 0 69 2;
+#X connect 2 0 70 2;
+#X connect 2 0 71 2;
+#X connect 2 0 72 2;
+#X connect 2 0 73 2;
+#X connect 2 0 74 2;
+#X connect 2 0 75 2;
+#X connect 2 0 76 2;
+#X connect 2 0 77 2;
+#X connect 2 0 78 2;
+#X connect 2 0 79 2;
+#X connect 2 0 80 2;
+#X connect 2 0 81 2;
+#X connect 2 0 82 2;
+#X connect 2 0 83 2;
+#X connect 2 0 84 2;
+#X connect 2 0 85 2;
+#X connect 2 0 86 2;
+#X connect 2 0 87 2;
+#X connect 2 0 88 2;
+#X connect 2 0 89 2;
+#X connect 2 0 90 2;
+#X connect 2 0 91 2;
+#X connect 2 0 92 2;
+#X connect 2 0 93 2;
+#X connect 2 0 94 2;
+#X connect 2 0 95 2;
+#X connect 2 0 96 2;
+#X connect 2 0 97 2;
+#X connect 2 0 98 2;
+#X connect 2 0 99 2;
+#X connect 2 0 100 2;
+#X connect 2 0 101 2;
+#X connect 2 0 102 2;
+#X connect 2 0 103 2;
+#X connect 2 0 104 2;
+#X connect 2 0 105 2;
+#X connect 2 0 106 2;
+#X connect 2 0 107 2;
+#X connect 2 0 108 2;
+#X connect 2 0 109 2;
+#X connect 2 0 110 2;
+#X connect 2 0 111 2;
+#X connect 2 0 112 2;
+#X connect 2 0 113 2;
+#X connect 2 0 114 2;
+#X connect 2 0 115 2;
+#X connect 2 0 116 2;
+#X connect 2 0 117 2;
+#X connect 2 0 118 2;
+#X connect 2 0 119 2;
+#X connect 2 0 120 2;
+#X connect 2 0 121 2;
+#X connect 2 0 122 2;
+#X connect 2 0 123 2;
+#X connect 2 0 124 2;
+#X connect 2 0 125 2;
+#X connect 2 0 126 2;
+#X connect 2 0 127 2;
+#X connect 2 0 128 2;
+#X connect 2 0 129 2;
+#X connect 2 0 130 2;
+#X connect 2 0 131 2;
+#X connect 4 0 3 0;
+#X connect 5 0 3 0;
+#X connect 6 0 3 0;
+#X connect 7 0 3 0;
+#X connect 8 0 3 0;
+#X connect 9 0 3 0;
+#X connect 10 0 3 0;
+#X connect 11 0 3 0;
+#X connect 12 0 3 0;
+#X connect 13 0 3 0;
+#X connect 14 0 3 0;
+#X connect 15 0 3 0;
+#X connect 16 0 3 0;
+#X connect 17 0 3 0;
+#X connect 18 0 3 0;
+#X connect 19 0 3 0;
+#X connect 20 0 3 0;
+#X connect 21 0 3 0;
+#X connect 22 0 3 0;
+#X connect 23 0 3 0;
+#X connect 24 0 3 0;
+#X connect 25 0 3 0;
+#X connect 26 0 3 0;
+#X connect 27 0 3 0;
+#X connect 28 0 3 0;
+#X connect 29 0 3 0;
+#X connect 30 0 3 0;
+#X connect 31 0 3 0;
+#X connect 32 0 3 0;
+#X connect 33 0 3 0;
+#X connect 34 0 3 0;
+#X connect 35 0 3 0;
+#X connect 36 0 3 0;
+#X connect 37 0 3 0;
+#X connect 38 0 3 0;
+#X connect 39 0 3 0;
+#X connect 40 0 3 0;
+#X connect 41 0 3 0;
+#X connect 42 0 3 0;
+#X connect 43 0 3 0;
+#X connect 44 0 3 0;
+#X connect 45 0 3 0;
+#X connect 46 0 3 0;
+#X connect 47 0 3 0;
+#X connect 48 0 3 0;
+#X connect 49 0 3 0;
+#X connect 50 0 3 0;
+#X connect 51 0 3 0;
+#X connect 52 0 3 0;
+#X connect 53 0 3 0;
+#X connect 54 0 3 0;
+#X connect 55 0 3 0;
+#X connect 56 0 3 0;
+#X connect 57 0 3 0;
+#X connect 58 0 3 0;
+#X connect 59 0 3 0;
+#X connect 60 0 3 0;
+#X connect 61 0 3 0;
+#X connect 62 0 3 0;
+#X connect 63 0 3 0;
+#X connect 64 0 3 0;
+#X connect 65 0 3 0;
+#X connect 66 0 3 0;
+#X connect 67 0 3 0;
+#X connect 68 0 3 0;
+#X connect 69 0 3 0;
+#X connect 70 0 3 0;
+#X connect 71 0 3 0;
+#X connect 72 0 3 0;
+#X connect 73 0 3 0;
+#X connect 74 0 3 0;
+#X connect 75 0 3 0;
+#X connect 76 0 3 0;
+#X connect 77 0 3 0;
+#X connect 78 0 3 0;
+#X connect 79 0 3 0;
+#X connect 80 0 3 0;
+#X connect 81 0 3 0;
+#X connect 82 0 3 0;
+#X connect 83 0 3 0;
+#X connect 84 0 3 0;
+#X connect 85 0 3 0;
+#X connect 86 0 3 0;
+#X connect 87 0 3 0;
+#X connect 88 0 3 0;
+#X connect 89 0 3 0;
+#X connect 90 0 3 0;
+#X connect 91 0 3 0;
+#X connect 92 0 3 0;
+#X connect 93 0 3 0;
+#X connect 94 0 3 0;
+#X connect 95 0 3 0;
+#X connect 96 0 3 0;
+#X connect 97 0 3 0;
+#X connect 98 0 3 0;
+#X connect 99 0 3 0;
+#X connect 100 0 3 0;
+#X connect 101 0 3 0;
+#X connect 102 0 3 0;
+#X connect 103 0 3 0;
+#X connect 104 0 3 0;
+#X connect 105 0 3 0;
+#X connect 106 0 3 0;
+#X connect 107 0 3 0;
+#X connect 108 0 3 0;
+#X connect 109 0 3 0;
+#X connect 110 0 3 0;
+#X connect 111 0 3 0;
+#X connect 112 0 3 0;
+#X connect 113 0 3 0;
+#X connect 114 0 3 0;
+#X connect 115 0 3 0;
+#X connect 116 0 3 0;
+#X connect 117 0 3 0;
+#X connect 118 0 3 0;
+#X connect 119 0 3 0;
+#X connect 120 0 3 0;
+#X connect 121 0 3 0;
+#X connect 122 0 3 0;
+#X connect 123 0 3 0;
+#X connect 124 0 3 0;
+#X connect 125 0 3 0;
+#X connect 126 0 3 0;
+#X connect 127 0 3 0;
+#X connect 128 0 3 0;
+#X connect 129 0 3 0;
+#X connect 130 0 3 0;
+#X connect 131 0 3 0;
+#X restore 52 154 pd \$0-voices;
+#X connect 0 0 4 0;
+#X connect 1 0 4 1;
+#X connect 2 0 4 2;
+#X connect 4 0 3 0;
+#X restore 176 169 pd \$0-voicecanvas;
+#X obj 267 95 inlet;
+#X text 275 79 pq;
+#X obj 292 202 gemnotes_countbars;
+#X obj 214 214 == 0;
+#X obj 171 233 spigot 1;
+#X obj 292 221 spigot;
+#X obj 323 159 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 325 100 loadbang;
+#X msg 324 132 1;
+#X obj 291 317 sel -1 -2;
+#X obj 328 291 unpack f f f f f;
+#X obj 338 396 pack f f f f f;
+#X obj 222 395 pack s f f f f;
+#X text 364 265 b/# ?;
+#X obj 197 346 symbol +;
+#X obj 251 346 symbol .;
+#X obj 487 187 msgfile;
+#X obj 459 255 lister;
+#X msg 473 158 rewind \, bang;
+#X obj 550 109 openpanel;
+#X msg 541 134 read \$1;
+#X obj 470 211 niagara 1;
+#X obj 414 213 ==;
+#X obj 411 232 sel 1;
+#X obj 410 253 t b b;
+#X floatatom 368 229 5 0 0 0 - - -;
+#X msg 357 177 debug \$1;
+#X obj 357 155 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 465 282 route list;
+#X msg 250 134 reset;
+#X msg 547 190 print;
+#X obj 434 273 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X floatatom 457 231 5 0 0 0 - - -;
+#X obj 444 88 route symbol bang;
+#X obj 520 48 inlet;
+#X obj 201 191 prepend note;
+#X obj 223 434 prepend note;
+#X msg 228 256 bar;
+#X obj 221 280 spigot;
+#X obj 282 247 route bar;
+#X msg 274 273 0;
+#X msg 270 291 1;
+#X floatatom 619 301 5 60 180 2 tempo - -;
+#X obj 581 227 delay 500;
+#X obj 604 139 inlet;
+#X obj 603 165 t b f;
+#X msg 599 199 stop;
+#X obj 141 271 print GC;
+#X obj 358 332 * 1;
+#X obj 688 156 inlet;
+#X connect 0 0 6 0;
+#X connect 3 0 6 1;
+#X connect 3 0 25 0;
+#X connect 3 0 36 0;
+#X connect 6 0 11 0;
+#X connect 6 0 42 0;
+#X connect 7 0 6 2;
+#X connect 7 0 9 0;
+#X connect 9 0 12 0;
+#X connect 9 1 29 0;
+#X connect 9 1 32 0;
+#X connect 10 0 11 1;
+#X connect 11 0 1 0;
+#X connect 12 0 17 0;
+#X connect 12 0 54 0;
+#X connect 13 0 10 0;
+#X connect 13 0 12 1;
+#X connect 14 0 15 0;
+#X connect 15 0 13 0;
+#X connect 16 0 21 0;
+#X connect 16 1 22 0;
+#X connect 16 2 18 0;
+#X connect 17 0 16 0;
+#X connect 17 0 48 0;
+#X connect 17 1 55 0;
+#X connect 17 2 18 2;
+#X connect 17 2 19 2;
+#X connect 17 3 18 3;
+#X connect 17 3 19 3;
+#X connect 17 4 18 4;
+#X connect 17 4 19 4;
+#X connect 18 0 43 0;
+#X connect 19 0 43 0;
+#X connect 21 0 19 0;
+#X connect 22 0 19 0;
+#X connect 23 0 28 0;
+#X connect 24 0 35 0;
+#X connect 25 0 23 0;
+#X connect 26 0 27 0;
+#X connect 27 0 23 0;
+#X connect 28 0 29 1;
+#X connect 28 0 39 0;
+#X connect 28 1 24 1;
+#X connect 29 0 30 0;
+#X connect 30 0 31 0;
+#X connect 31 0 23 0;
+#X connect 31 1 24 0;
+#X connect 31 1 38 0;
+#X connect 32 0 44 0;
+#X connect 33 0 9 0;
+#X connect 34 0 33 0;
+#X connect 35 0 1 0;
+#X connect 35 0 9 0;
+#X connect 35 0 46 0;
+#X connect 36 0 9 0;
+#X connect 37 0 23 0;
+#X connect 40 0 27 0;
+#X connect 40 1 26 0;
+#X connect 41 0 40 0;
+#X connect 42 0 9 0;
+#X connect 43 0 1 0;
+#X connect 44 0 45 0;
+#X connect 45 0 1 0;
+#X connect 46 0 47 0;
+#X connect 47 0 45 1;
+#X connect 48 0 45 1;
+#X connect 49 0 2 1;
+#X connect 50 0 2 0;
+#X connect 51 0 52 0;
+#X connect 52 0 50 0;
+#X connect 52 1 49 0;
+#X connect 52 1 53 0;
+#X connect 53 0 50 0;
+#X connect 55 0 18 1;
+#X connect 55 0 19 1;
+#X connect 56 0 55 1;
diff --git a/gemnotes_0.2.3/rest.pd b/gemnotes_0.2.3/rest.pd
new file mode 100755
index 0000000..4b5433a
--- /dev/null
+++ b/gemnotes_0.2.3/rest.pd
@@ -0,0 +1,350 @@
+#N canvas 64 112 817 536 10;
+#X floatatom 110 205 5 0 0 0 - - -;
+#X obj 76 336 text3d;
+#X obj 52 236 gemhead;
+#X obj 48 311 color 1 1 1;
+#N canvas 0 22 450 300 inittext 0;
+#X obj 128 155 outlet;
+#X obj 279 151 outlet;
+#X msg 283 110 11;
+#X obj 150 57 loadbang;
+#X obj 240 53 r \$0-lbn;
+#X msg 27 110 font fonts/Music8.ttf \, justify left top;
+#X connect 2 0 1 0;
+#X connect 3 0 5 0;
+#X connect 3 0 2 0;
+#X connect 4 0 2 0;
+#X connect 4 0 5 0;
+#X connect 5 0 0 0;
+#X restore 136 313 pd inittext;
+#X obj 89 10 inlet;
+#X obj 157 57 pack f f f;
+#X obj 182 150 +;
+#X floatatom 441 91 5 0 0 0 value - -;
+#X obj 356 15 inlet;
+#X obj 441 106 moses 7;
+#X obj 481 128 - 7;
+#X obj 441 149 sel 0 1 2 3 4 5 6;
+#X msg 710 309 11;
+#X msg 734 306 9;
+#X obj 134 264 - 0;
+#X msg 780 311 6;
+#X msg 549 254 0.415;
+#X msg 508 262 0;
+#X msg 559 236 1;
+#X msg 127 10 x y z len clef r g b;
+#X obj 444 497 text3d;
+#X obj 438 434 gemhead;
+#X obj 444 472 color 1 1 1;
+#X obj 639 448 loadbang;
+#X msg 454 335 0;
+#X msg 480 336 1;
+#X obj 487 434 + 0.37;
+#X msg 559 473 text g;
+#X obj 440 364 f;
+#X msg 527 374 0.37;
+#X msg 566 370 0.28;
+#X msg 618 367 0.19;
+#X msg 545 11 (note) rhythm x-offset;
+#X msg 243 218 text =;
+#X msg 295 218 text ?;
+#X msg 349 216 text -;
+#X msg 398 216 text >;
+#X msg 625 188 text <;
+#X msg 679 186 text Z;
+#X msg 728 186 text Y;
+#N canvas 0 22 690 669 work_out_rhythms 0;
+#X obj 291 355 * 0.5;
+#X obj 291 378 i;
+#X obj 334 355 * 0.5;
+#X obj 334 378 i;
+#X obj 377 355 * 0.5;
+#X obj 377 378 i;
+#X obj 419 355 * 0.5;
+#X obj 419 378 i;
+#X obj 462 355 * 0.5;
+#X obj 462 378 i;
+#X obj 505 355 * 0.5;
+#X obj 505 378 i;
+#X floatatom 503 317 5 0 0 0 - - -;
+#X obj 291 402 sel 1;
+#X obj 334 402 sel 1;
+#X obj 377 402 sel 1;
+#X obj 419 402 sel 1;
+#X obj 462 402 sel 1;
+#X obj 505 402 sel 1;
+#X msg 291 423 1;
+#X msg 334 423 2;
+#X msg 377 423 3;
+#X msg 419 423 4;
+#X msg 462 423 5;
+#X msg 505 423 6;
+#X obj 291 468 -;
+#X obj 291 531 +;
+#X msg 220 494 7;
+#X msg 130 495 0;
+#X obj 535 280 f;
+#X obj 291 446 f;
+#X obj 67 63 moses 1;
+#X obj 125 86 moses 2;
+#X obj 166 107 moses 4;
+#X obj 144 127 sel 3;
+#X obj 204 127 moses 8;
+#X obj 245 148 moses 16;
+#X obj 223 168 sel 12;
+#X obj 187 147 sel 6;
+#X obj 94 105 sel 1.5;
+#X msg 51 283 0;
+#X msg 91 283 0;
+#X msg 131 283 1;
+#X msg 171 283 1;
+#X msg 211 283 2;
+#X msg 251 283 2;
+#X msg 291 283 3;
+#X msg 331 283 3;
+#X obj 268 188 sel 24;
+#X obj 290 168 moses 32;
+#X obj 291 491 moses 0;
+#X msg 291 511 0;
+#X obj 291 551 outlet;
+#X msg 371 283 4;
+#X msg 411 283 4;
+#X obj 334 188 sel 48;
+#X msg 449 283 5;
+#X msg 489 283 5;
+#X floatatom 349 490 5 0 0 0 - - -;
+#X obj 67 40 inlet;
+#X obj 516 235 inlet;
+#X msg 315 47;
+#X floatatom 193 66 5 0 0 0 - - -;
+#X floatatom 354 556 5 0 0 0 - - -;
+#X connect 0 0 1 0;
+#X connect 0 0 2 0;
+#X connect 1 0 13 0;
+#X connect 2 0 3 0;
+#X connect 2 0 4 0;
+#X connect 3 0 14 0;
+#X connect 4 0 5 0;
+#X connect 4 0 6 0;
+#X connect 5 0 15 0;
+#X connect 6 0 7 0;
+#X connect 6 0 8 0;
+#X connect 7 0 16 0;
+#X connect 8 0 9 0;
+#X connect 8 0 10 0;
+#X connect 9 0 17 0;
+#X connect 10 0 11 0;
+#X connect 11 0 18 0;
+#X connect 12 0 0 0;
+#X connect 13 0 19 0;
+#X connect 14 0 20 0;
+#X connect 15 0 21 0;
+#X connect 16 0 22 0;
+#X connect 17 0 23 0;
+#X connect 18 0 24 0;
+#X connect 19 0 30 0;
+#X connect 20 0 30 0;
+#X connect 21 0 30 0;
+#X connect 22 0 30 0;
+#X connect 23 0 30 0;
+#X connect 24 0 30 0;
+#X connect 25 0 50 0;
+#X connect 25 0 58 0;
+#X connect 26 0 52 0;
+#X connect 26 0 63 0;
+#X connect 27 0 26 1;
+#X connect 28 0 26 1;
+#X connect 29 0 12 0;
+#X connect 30 0 25 0;
+#X connect 31 1 32 0;
+#X connect 32 0 39 0;
+#X connect 32 1 33 0;
+#X connect 33 0 34 0;
+#X connect 33 1 35 0;
+#X connect 34 0 42 0;
+#X connect 34 0 27 0;
+#X connect 34 1 43 0;
+#X connect 34 1 28 0;
+#X connect 35 0 38 0;
+#X connect 35 1 36 0;
+#X connect 36 0 37 0;
+#X connect 36 1 49 0;
+#X connect 37 0 46 0;
+#X connect 37 0 27 0;
+#X connect 37 1 47 0;
+#X connect 37 1 28 0;
+#X connect 38 0 44 0;
+#X connect 38 0 27 0;
+#X connect 38 1 45 0;
+#X connect 38 1 28 0;
+#X connect 39 0 40 0;
+#X connect 39 0 27 0;
+#X connect 39 1 41 0;
+#X connect 39 1 28 0;
+#X connect 40 0 25 1;
+#X connect 41 0 25 1;
+#X connect 42 0 25 1;
+#X connect 43 0 25 1;
+#X connect 44 0 25 1;
+#X connect 45 0 25 1;
+#X connect 46 0 25 1;
+#X connect 47 0 25 1;
+#X connect 48 0 53 0;
+#X connect 48 0 27 0;
+#X connect 48 1 54 0;
+#X connect 48 1 28 0;
+#X connect 49 0 48 0;
+#X connect 49 1 55 0;
+#X connect 50 0 51 0;
+#X connect 50 1 26 0;
+#X connect 51 0 26 0;
+#X connect 53 0 25 1;
+#X connect 54 0 25 1;
+#X connect 55 0 27 0;
+#X connect 55 0 56 0;
+#X connect 55 1 28 0;
+#X connect 55 1 57 0;
+#X connect 56 0 25 1;
+#X connect 57 0 25 1;
+#X connect 59 0 31 0;
+#X connect 59 0 62 0;
+#X connect 60 0 29 0;
+#X restore 494 81 pd work_out_rhythms;
+#X obj 256 44 \$1;
+#X obj 301 44 \$2;
+#X obj 342 43 \$3;
+#X obj 243 65 change;
+#X obj 290 65 change;
+#X obj 340 65 change;
+#X obj 89 29 unpack f f f f f f f f f;
+#X obj 426 405 &&;
+#X text 606 56 args: xoff rhythm duration;
+#X obj 533 60 s \$0-lbn;
+#X msg 450 7 0;
+#X obj 394 7 spigot 1;
+#X obj 500 5 t b;
+#X obj 393 58 route xoff rhy dur;
+#X obj 376 35 route \$4;
+#X obj 632 84 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 530 434 - 0.05;
+#X obj 296 10 t b b b;
+#X obj 343 112 delay 0;
+#X obj 341 136 \$2;
+#X floatatom 518 128 5 0 0 0 - - -;
+#X obj 56 287 translateXYZ 2 -42 -0.9;
+#X obj 444 453 translateXYZ 2 -42 -0.9;
+#X connect 0 0 15 0;
+#X connect 2 0 63 0;
+#X connect 3 0 1 0;
+#X connect 4 0 1 0;
+#X connect 4 0 21 0;
+#X connect 4 1 1 1;
+#X connect 4 1 21 1;
+#X connect 5 0 48 0;
+#X connect 5 0 53 0;
+#X connect 5 0 59 0;
+#X connect 6 0 3 1;
+#X connect 6 0 23 1;
+#X connect 7 0 27 0;
+#X connect 7 0 63 1;
+#X connect 8 0 10 0;
+#X connect 9 0 56 0;
+#X connect 10 0 12 0;
+#X connect 10 0 25 0;
+#X connect 10 1 11 0;
+#X connect 10 1 26 0;
+#X connect 11 0 12 0;
+#X connect 11 0 62 0;
+#X connect 12 0 13 0;
+#X connect 12 0 18 0;
+#X connect 12 0 30 0;
+#X connect 12 0 34 0;
+#X connect 12 1 13 0;
+#X connect 12 1 18 0;
+#X connect 12 1 30 0;
+#X connect 12 1 35 0;
+#X connect 12 2 13 0;
+#X connect 12 2 18 0;
+#X connect 12 2 30 0;
+#X connect 12 2 36 0;
+#X connect 12 3 13 0;
+#X connect 12 3 18 0;
+#X connect 12 3 37 0;
+#X connect 12 3 32 0;
+#X connect 12 4 14 0;
+#X connect 12 4 17 0;
+#X connect 12 4 38 0;
+#X connect 12 4 32 0;
+#X connect 12 5 19 0;
+#X connect 12 5 16 0;
+#X connect 12 5 32 0;
+#X connect 12 5 39 0;
+#X connect 12 6 16 0;
+#X connect 12 6 19 0;
+#X connect 12 6 32 0;
+#X connect 12 6 40 0;
+#X connect 13 0 1 1;
+#X connect 13 0 21 1;
+#X connect 14 0 1 1;
+#X connect 14 0 21 1;
+#X connect 15 0 58 0;
+#X connect 15 0 63 2;
+#X connect 16 0 1 1;
+#X connect 16 0 21 1;
+#X connect 17 0 15 1;
+#X connect 18 0 15 1;
+#X connect 19 0 15 1;
+#X connect 22 0 64 0;
+#X connect 23 0 21 0;
+#X connect 24 0 28 0;
+#X connect 25 0 29 0;
+#X connect 26 0 29 0;
+#X connect 27 0 64 1;
+#X connect 28 0 21 0;
+#X connect 29 0 49 1;
+#X connect 30 0 27 1;
+#X connect 31 0 27 1;
+#X connect 32 0 27 1;
+#X connect 34 0 1 0;
+#X connect 35 0 1 0;
+#X connect 36 0 1 0;
+#X connect 37 0 1 0;
+#X connect 38 0 1 0;
+#X connect 39 0 1 0;
+#X connect 40 0 1 0;
+#X connect 41 0 8 0;
+#X connect 42 0 45 0;
+#X connect 43 0 46 0;
+#X connect 44 0 47 0;
+#X connect 45 0 7 1;
+#X connect 46 0 41 1;
+#X connect 47 0 41 0;
+#X connect 48 0 7 0;
+#X connect 48 1 0 0;
+#X connect 48 2 63 3;
+#X connect 48 2 64 3;
+#X connect 48 5 6 0;
+#X connect 48 6 6 1;
+#X connect 48 7 6 2;
+#X connect 48 8 2 0;
+#X connect 48 8 49 0;
+#X connect 49 0 22 0;
+#X connect 52 0 53 1;
+#X connect 53 0 52 0;
+#X connect 53 0 54 0;
+#X connect 54 0 51 0;
+#X connect 55 0 7 1;
+#X connect 55 1 41 1;
+#X connect 55 2 41 0;
+#X connect 56 0 55 0;
+#X connect 58 0 64 2;
+#X connect 59 0 42 0;
+#X connect 59 0 60 0;
+#X connect 59 1 43 0;
+#X connect 59 2 28 0;
+#X connect 59 2 44 0;
+#X connect 60 0 61 0;
+#X connect 61 0 41 1;
+#X connect 63 0 3 0;
+#X connect 64 0 23 0;
diff --git a/gemnotes_0.2.3/sharpsandflats.pd b/gemnotes_0.2.3/sharpsandflats.pd
new file mode 100755
index 0000000..7bc980b
--- /dev/null
+++ b/gemnotes_0.2.3/sharpsandflats.pd
@@ -0,0 +1,146 @@
+#N canvas 0 0 777 499 10;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array flats 128 float 3;
+#A 0 0 81 1 82 2 3 84 4 85 5 86 6 7 88 8 89 9 10 91 11 92 12 93 13
+14 95 15 96 16 17 98 18 99 19 100 20 21 102 22 103 23 24 105 25 106
+26 107 27 28 109 29 110 30 31 112 32 113 33 114 34 35 116 36 117 37
+38 119 39 120 40 121 41 42 123 43 124 44 45 126 46 127 47 128 48 49
+130 50 131 51 52 133 53 134 54 135 55 56 137 57 138 58 59 140 60 141
+61 142 62 63 144 64 145 65 66 147 67 148 68 149 69 70 151 71 152 72
+73 154 74;
+#X coords 0 160 128 -1 200 140 1;
+#X restore 15 336 graph;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array sharps 128 float 3;
+#A 0 0 80 1 81 2 3 83 4 84 5 85 6 7 87 8 88 9 10 90 11 91 12 92 13
+14 94 15 95 16 17 97 18 98 19 99 20 21 101 22 102 23 24 104 25 105
+26 106 27 28 108 29 109 30 31 111 32 112 33 113 34 35 115 36 116 37
+38 118 39 119 40 120 41 42 122 43 123 44 45 125 46 126 47 127 48 49
+129 50 130 51 52 132 53 133 54 134 55 56 136 57 137 58 59 139 60 140
+61 141 62 63 143 64 144 65 66 146 67 147 68 148 69 70 150 71 151 72
+73 153 74;
+#X coords 0 160 127 -1 200 140 1;
+#X restore 233 336 graph;
+#X obj 110 28 kalashnikov 128;
+#X obj 153 48 t f f;
+#X obj 419 241 +;
+#X msg 392 186 0;
+#X obj 74 115 % 12;
+#X obj 395 137 sel 0 1 2 3 4 5 6 7 8 9 10 11;
+#X obj 200 72 / 12;
+#X obj 200 92 i;
+#X msg 419 186 1;
+#X msg 446 186 2;
+#X msg 473 186 3;
+#X msg 500 186 4;
+#X msg 527 186 5;
+#X msg 554 186 6;
+#X obj 579 137 sel 0 1 2 3 4 5 6 7 8 9 10 11;
+#X msg 587 188 0;
+#X msg 616 188 80;
+#X obj 419 261 +;
+#X obj 200 112 * 7;
+#X obj 419 287 tabwrite flats;
+#X obj 39 241 +;
+#X msg 12 186 0;
+#X obj 15 137 sel 0 1 2 3 4 5 6 7 8 9 10 11;
+#X msg 39 186 1;
+#X msg 66 186 2;
+#X msg 93 186 3;
+#X msg 120 186 4;
+#X msg 147 186 5;
+#X msg 174 186 6;
+#X obj 199 137 sel 0 1 2 3 4 5 6 7 8 9 10 11;
+#X msg 207 188 0;
+#X msg 236 188 80;
+#X obj 39 261 +;
+#X obj 39 287 tabwrite sharps;
+#X obj 110 10 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 526 115 % 12;
+#X msg 532 345 \; flats const 0 \; sharps const 0;
+#X connect 2 1 3 0;
+#X connect 3 0 6 0;
+#X connect 3 1 8 0;
+#X connect 3 1 21 1;
+#X connect 3 1 35 1;
+#X connect 3 1 37 0;
+#X connect 4 0 19 0;
+#X connect 5 0 4 0;
+#X connect 6 0 7 0;
+#X connect 6 0 24 0;
+#X connect 7 0 5 0;
+#X connect 7 1 10 0;
+#X connect 7 2 10 0;
+#X connect 7 3 11 0;
+#X connect 7 4 11 0;
+#X connect 7 5 12 0;
+#X connect 7 6 13 0;
+#X connect 7 7 13 0;
+#X connect 7 8 14 0;
+#X connect 7 9 14 0;
+#X connect 7 10 15 0;
+#X connect 7 11 15 0;
+#X connect 8 0 9 0;
+#X connect 9 0 20 0;
+#X connect 10 0 4 0;
+#X connect 11 0 4 0;
+#X connect 12 0 4 0;
+#X connect 13 0 4 0;
+#X connect 14 0 4 0;
+#X connect 15 0 4 0;
+#X connect 16 0 17 0;
+#X connect 16 1 18 0;
+#X connect 16 2 17 0;
+#X connect 16 3 18 0;
+#X connect 16 4 17 0;
+#X connect 16 5 17 0;
+#X connect 16 6 18 0;
+#X connect 16 7 17 0;
+#X connect 16 8 18 0;
+#X connect 16 9 17 0;
+#X connect 16 10 18 0;
+#X connect 16 11 17 0;
+#X connect 17 0 19 1;
+#X connect 18 0 19 1;
+#X connect 19 0 21 0;
+#X connect 20 0 4 1;
+#X connect 20 0 22 1;
+#X connect 22 0 34 0;
+#X connect 23 0 22 0;
+#X connect 24 0 23 0;
+#X connect 24 1 23 0;
+#X connect 24 2 25 0;
+#X connect 24 3 25 0;
+#X connect 24 4 26 0;
+#X connect 24 5 27 0;
+#X connect 24 6 27 0;
+#X connect 24 7 28 0;
+#X connect 24 8 28 0;
+#X connect 24 9 29 0;
+#X connect 24 10 29 0;
+#X connect 24 11 30 0;
+#X connect 25 0 22 0;
+#X connect 26 0 22 0;
+#X connect 27 0 22 0;
+#X connect 28 0 22 0;
+#X connect 29 0 22 0;
+#X connect 30 0 22 0;
+#X connect 31 0 32 0;
+#X connect 31 1 33 0;
+#X connect 31 2 32 0;
+#X connect 31 3 33 0;
+#X connect 31 4 32 0;
+#X connect 31 5 32 0;
+#X connect 31 6 33 0;
+#X connect 31 7 32 0;
+#X connect 31 8 33 0;
+#X connect 31 9 32 0;
+#X connect 31 10 33 0;
+#X connect 31 11 32 0;
+#X connect 32 0 34 1;
+#X connect 33 0 34 1;
+#X connect 34 0 35 0;
+#X connect 36 0 2 0;
+#X connect 37 0 31 0;
+#X connect 37 0 16 0;
diff --git a/gemnotes_0.2.3/slavenote.pd b/gemnotes_0.2.3/slavenote.pd
new file mode 100755
index 0000000..f12ab02
--- /dev/null
+++ b/gemnotes_0.2.3/slavenote.pd
@@ -0,0 +1,1145 @@
+#N canvas 3 94 1246 635 10;
+#X floatatom 110 265 5 0 0 0 - - -;
+#X obj 76 396 text3d;
+#X obj 52 296 gemhead;
+#X obj 110 294 +;
+#N canvas 0 22 450 300 inittext 0;
+#X obj 128 155 outlet;
+#X obj 279 151 outlet;
+#X msg 283 110 11;
+#X obj 150 57 r \$0-lbn;
+#X msg 27 110 font fonts/Music8.ttf \, justify left top;
+#X connect 2 0 1 0;
+#X connect 3 0 4 0;
+#X connect 3 0 2 0;
+#X connect 4 0 0 0;
+#X restore 136 373 pd inittext;
+#X obj 459 337 text3d;
+#X obj 397 182 gemhead;
+#X msg 626 259 text (;
+#X msg 548 122 text *;
+#X msg 744 259 text &;
+#X msg 560 153 text -;
+#X msg 685 259 text ';
+#X floatatom 493 141 5 0 0 0 - - -;
+#X obj 493 161 +;
+#X obj 771 149 hradio 15 1 0 3 empty empty empty 0 -8 0 10 -262144
+-1 -1 0;
+#X obj 771 167 sel 0 1 2;
+#X msg 771 130 2;
+#X obj 495 196 +;
+#X text 622 164 #;
+#X text 674 164 nat;
+#X text 734 164 b;
+#X floatatom 245 113 5 0 0 1 y-position - -;
+#N canvas 0 22 442 272 inittext 0;
+#X obj 128 155 outlet;
+#X obj 259 153 outlet;
+#X msg 263 112 11;
+#X obj 195 68 r \$0-lbn;
+#X msg 19 109 font fonts/Music8.ttf \, justify left top;
+#X connect 2 0 1 0;
+#X connect 3 0 4 0;
+#X connect 3 0 2 0;
+#X connect 4 0 0 0;
+#X restore 485 316 pd inittext;
+#X floatatom 435 479 5 0 0 0 - - -;
+#X obj 401 610 text3d;
+#X obj 337 527 gemhead;
+#X obj 362 461 tgl 15 0 empty empty show/hide 17 7 0 10 -262144 -1
+-1 0 1;
+#N canvas 0 22 450 300 inittext 0;
+#X obj 128 155 outlet;
+#X obj 259 153 outlet;
+#X msg 263 115 11;
+#X obj 157 78 r \$0-lbn;
+#X msg 10 115 font fonts/Music8.ttf \, justify left top;
+#X connect 2 0 1 0;
+#X connect 3 0 4 0;
+#X connect 3 0 2 0;
+#X connect 4 0 0 0;
+#X restore 461 587 pd inittext;
+#X obj 362 414 < -4;
+#X obj 410 413 > 6;
+#X obj 372 380 t f f;
+#X obj 362 439 ||;
+#X text 481 413 Leger 1:;
+#X msg 680 225 -0.19;
+#N canvas 695 468 671 300 topleger 0;
+#X msg 53 137 text +;
+#X obj 124 98 sel 0 1 2 3 4 5 6 7 8 9;
+#X msg 97 137 text r;
+#X obj 98 207 outlet;
+#X obj 137 34 inlet;
+#X msg 142 136 text s;
+#X msg 186 136 text t;
+#X msg 231 138 text u;
+#X msg 275 138 text v;
+#X msg 320 139 text w;
+#X msg 364 139 text x;
+#X msg 409 139 text y;
+#X msg 453 139 text z;
+#X obj 226 67 * 0.5;
+#X obj 263 69 i;
+#X obj 151 60 moses 7;
+#X obj 200 60 - 7;
+#X connect 0 0 3 0;
+#X connect 1 0 0 0;
+#X connect 1 1 2 0;
+#X connect 1 2 5 0;
+#X connect 1 3 6 0;
+#X connect 1 4 7 0;
+#X connect 1 5 8 0;
+#X connect 1 6 9 0;
+#X connect 1 7 10 0;
+#X connect 1 8 11 0;
+#X connect 1 9 12 0;
+#X connect 2 0 3 0;
+#X connect 4 0 15 0;
+#X connect 5 0 3 0;
+#X connect 6 0 3 0;
+#X connect 7 0 3 0;
+#X connect 8 0 3 0;
+#X connect 9 0 3 0;
+#X connect 10 0 3 0;
+#X connect 11 0 3 0;
+#X connect 12 0 3 0;
+#X connect 13 0 14 0;
+#X connect 14 0 1 0;
+#X connect 15 1 16 0;
+#X connect 16 0 13 0;
+#X restore 508 481 pd topleger;
+#N canvas 1087 523 450 300 botleger 0;
+#X obj 114 63 inlet;
+#X msg 61 211 text a;
+#X obj 113 157 i;
+#X obj 113 135 * -0.5;
+#X obj 74 184 sel 0 1 2 3 4 5 6 7;
+#X msg 107 211 text h;
+#X msg 152 211 text i;
+#X msg 197 211 text j;
+#X msg 243 211 text k;
+#X msg 288 211 text l;
+#X msg 333 211 text m;
+#X msg 378 211 text n;
+#X obj 152 259 outlet;
+#X floatatom 200 162 5 0 0 0 - - -;
+#X floatatom 189 124 5 0 0 0 - - -;
+#X obj 114 86 moses -4;
+#X obj 113 109 + 5;
+#X text 237 61 k \, l \, m \, n - bottom of font reached.;
+#X connect 0 0 15 0;
+#X connect 1 0 12 0;
+#X connect 2 0 4 0;
+#X connect 2 0 13 0;
+#X connect 3 0 2 0;
+#X connect 4 0 1 0;
+#X connect 4 1 5 0;
+#X connect 4 2 6 0;
+#X connect 4 3 7 0;
+#X connect 4 4 8 0;
+#X connect 4 5 9 0;
+#X connect 4 6 10 0;
+#X connect 4 7 11 0;
+#X connect 5 0 12 0;
+#X connect 6 0 12 0;
+#X connect 7 0 12 0;
+#X connect 8 0 12 0;
+#X connect 9 0 12 0;
+#X connect 10 0 12 0;
+#X connect 11 0 12 0;
+#X connect 15 0 14 0;
+#X connect 15 0 16 0;
+#X connect 16 0 3 0;
+#X restore 343 485 pd botleger;
+#N canvas 0 22 450 300 loadbng 0;
+#X obj 79 89 del 20;
+#X obj 79 116 outlet;
+#X obj 79 59 r \$0-lbn;
+#X connect 0 0 1 0;
+#X connect 2 0 0 0;
+#X restore 771 111 pd loadbng;
+#N canvas 0 22 287 304 pos 0;
+#X obj 20 -15 inlet;
+#X obj 166 -18 inlet;
+#X obj 20 77 spigot 1;
+#X obj 20 98 tabread flats;
+#X obj 110 77 spigot;
+#X obj 20 181 - 28;
+#X obj 110 98 tabread sharps;
+#X obj 65 55 == 0;
+#X obj 20 125 moses 80;
+#X obj 28 154 - 80;
+#X msg 54 181 1;
+#X obj 20 6 f;
+#X obj 65 229 outlet;
+#X msg 65 155 2;
+#X obj 110 181 - 28;
+#X obj 110 125 moses 80;
+#X obj 118 154 - 80;
+#X msg 144 181 1;
+#X msg 155 155 0;
+#X obj 20 229 outlet;
+#X obj 20 208 -;
+#X obj 116 11 t b f;
+#X obj 234 43 inlet;
+#X msg 210 124 12;
+#X msg 242 124 0;
+#X obj 223 90 sel 1 2;
+#X obj 223 62 t b f;
+#X connect 0 0 11 0;
+#X connect 1 0 21 0;
+#X connect 2 0 3 0;
+#X connect 3 0 8 0;
+#X connect 4 0 6 0;
+#X connect 5 0 20 0;
+#X connect 6 0 15 0;
+#X connect 7 0 2 1;
+#X connect 8 0 10 0;
+#X connect 8 0 5 0;
+#X connect 8 1 9 0;
+#X connect 8 1 13 0;
+#X connect 9 0 5 0;
+#X connect 10 0 12 0;
+#X connect 11 0 4 0;
+#X connect 11 0 2 0;
+#X connect 13 0 12 0;
+#X connect 14 0 20 0;
+#X connect 15 0 17 0;
+#X connect 15 0 14 0;
+#X connect 15 1 16 0;
+#X connect 15 1 18 0;
+#X connect 16 0 14 0;
+#X connect 17 0 12 0;
+#X connect 18 0 12 0;
+#X connect 20 0 19 0;
+#X connect 21 0 11 0;
+#X connect 21 1 7 0;
+#X connect 21 1 4 1;
+#X connect 22 0 26 0;
+#X connect 23 0 20 1;
+#X connect 24 0 20 1;
+#X connect 25 0 23 0;
+#X connect 25 1 24 0;
+#X connect 26 0 11 0;
+#X connect 26 1 25 0;
+#X restore 245 94 pd pos;
+#X floatatom 245 78 5 0 0 0 - - -;
+#X obj 89 10 inlet;
+#X obj 157 97 pack f f f;
+#X obj 138 208 +;
+#X msg 1003 115 text G;
+#X msg 959 115 text 7;
+#X msg 1064 115 text W;
+#X floatatom 860 54 5 0 0 0 value - -;
+#X obj 590 618 text3d;
+#X obj 576 424 gemhead;
+#X obj 701 464 +;
+#X msg 844 395 0;
+#X msg 870 396 1;
+#X obj 657 488 + 0.37;
+#X msg 802 538 text g;
+#X obj 708 490 - 0.08;
+#X obj 830 424 f;
+#X obj 389 535 - 0.048;
+#X obj 443 157 * 0.092;
+#X obj 156 264 * 0.092;
+#X obj 729 416 * 0.092;
+#X obj 443 137 + 2;
+#X obj 303 194 - 0.185;
+#X obj 857 72 moses 7;
+#X obj 897 94 - 7;
+#X obj 959 93 sel 0 1 2 3 4 5 6;
+#X msg 740 369 11;
+#X msg 767 370 9;
+#X obj 134 324 - 0;
+#X msg 810 371 6;
+#X msg 1081 279 0.415;
+#X msg 967 384 0;
+#X obj 485 220 - 0;
+#X msg 1091 261 1;
+#X msg 1142 255 0.185;
+#X msg 1200 198 0.085;
+#X msg 1140 210 0.149;
+#X msg 1083 376 0.113;
+#X msg 1055 446 0.048;
+#X msg 1070 408 0.088;
+#X msg 629 220 -0.17;
+#X msg 986 344 0.02;
+#X obj 10 833 gemhead;
+#X obj 39 908 rectangle 0.01 0.6;
+#X obj 76 844 +;
+#X msg 183 691 0;
+#X obj 226 794 - 2.32;
+#X msg 262 764 2.32;
+#X text 294 763 <--- changes with screen dimensions!!!;
+#X msg 232 606 0.25;
+#X obj 183 669 sel 0 1;
+#X text 287 680 <--- changes with notehead size!!!;
+#X text 162 655 bottom/top;
+#X msg 519 641 bottom/top stemlength beamed;
+#X text 23 755 a stem;
+#X obj 251 708 * -1;
+#X obj 237 727 -0.5;
+#X obj 279 725 0.5;
+#X obj 247 825 -;
+#X obj 190 777 +;
+#X obj 159 128 s \$0-color;
+#X obj 149 298 r \$0-color;
+#X obj 479 448 r \$0-color;
+#X obj 430 267 r \$0-color;
+#X obj 631 116 s \$0-value;
+#X obj 83 645 r \$0-value;
+#X obj 165 871 r \$0-color;
+#X obj 113 129 s \$0-z;
+#X obj 643 96 s \$0-direction;
+#X obj 183 633 r \$0-direction;
+#X obj 167 845 r \$0-z;
+#X obj 797 851 text3d;
+#X obj 769 641 gemhead;
+#N canvas 0 22 450 300 inittext 0;
+#X obj 128 155 outlet;
+#X obj 259 153 outlet;
+#X msg 263 112 11;
+#X obj 120 40 r \$0-lbn;
+#X msg 54 134 font fonts/Music8.ttf \, justify left top;
+#X connect 2 0 1 0;
+#X connect 3 0 4 0;
+#X connect 3 0 2 0;
+#X connect 4 0 0 0;
+#X restore 857 787 pd inittext;
+#X obj 783 702 +;
+#X floatatom 789 669 5 0 0 0 - - -;
+#N canvas 316 144 450 300 bottie 0;
+#X msg 79 129 text A;
+#X msg 127 129 text B;
+#X msg 185 129 text C;
+#X msg 246 129 text D;
+#X obj 81 168 outlet;
+#X obj 77 57 inlet;
+#X obj 80 94 sel 3 2 1 0;
+#X connect 0 0 4 0;
+#X connect 1 0 4 0;
+#X connect 2 0 4 0;
+#X connect 3 0 4 0;
+#X connect 5 0 6 0;
+#X connect 6 0 0 0;
+#X connect 6 1 1 0;
+#X connect 6 2 2 0;
+#X connect 6 3 3 0;
+#X restore 1090 745 pd bottie;
+#N canvas 316 144 450 300 toptie 0;
+#X obj 81 168 outlet;
+#X obj 77 57 inlet;
+#X msg 79 129 text P;
+#X msg 127 129 text Q;
+#X msg 185 129 text R;
+#X msg 246 129 text S;
+#X obj 81 94 sel 3 2 1 0;
+#X connect 1 0 6 0;
+#X connect 2 0 0 0;
+#X connect 3 0 0 0;
+#X connect 4 0 0 0;
+#X connect 5 0 0 0;
+#X connect 6 0 2 0;
+#X connect 6 1 3 0;
+#X connect 6 2 4 0;
+#X connect 6 3 5 0;
+#X restore 1020 745 pd toptie;
+#X obj 1090 693 spigot 1;
+#X obj 1020 693 spigot;
+#X obj 1135 674 == 0;
+#X obj 1040 625 t f f;
+#X obj 1040 647 sel 1 0;
+#X obj 1020 674 f;
+#X obj 1090 674 f;
+#X obj 855 727 +;
+#X floatatom 903 703 5 0 0 0 - - -;
+#X text 961 721 Y;
+#X text 1018 614 X;
+#X msg 983 615 0.79;
+#X text 928 613 minim;
+#X text 914 596 semibrieve;
+#X text 922 629 crotchet;
+#X text 925 647 quaver;
+#X msg 983 596 1.19;
+#X msg 983 634 0.56;
+#X msg 983 653 0.36;
+#X msg 1042 721 0.66;
+#X msg 973 721 -0.97;
+#X obj 924 755 r \$0-color;
+#X obj 849 607 f;
+#X obj 904 735 r \$0-z;
+#X obj 1027 581 r \$0-direction;
+#X obj 882 527 sel 0 1 2 3 4 5 6;
+#X obj 931 455 f;
+#X msg 127 10 x y z len clef r g b;
+#X msg 586 217 -0.19;
+#X obj 269 482 t b;
+#X obj 48 371 color 0 0 0;
+#X obj 372 301 color 0 0 0;
+#X obj 373 585 color 0 0 0;
+#X obj 754 828 color 0 0 0;
+#X obj 39 888 color 0 0 0;
+#X obj 764 794 scaleXYZ 0 0 0;
+#X obj 590 562 color 0 0 0;
+#X obj 533 10 inlet;
+#X msg 330 11 0;
+#X obj 274 11 spigot 1;
+#X obj 796 510 r \$0-lbn;
+#X floatatom 46 256 5 0 0 0 - - -;
+#X floatatom 559 81 5 0 0 0 - - -;
+#X obj 213 690 0.25;
+#X msg 959 216 0;
+#X msg 993 215 1;
+#X msg 1019 217 2;
+#X obj 962 241 s \$0-font_switch;
+#X obj 232 568 r \$0-font_switch;
+#X obj 232 587 sel 0 1 2;
+#X msg 264 606 0.2;
+#X msg 290 606 0.17;
+#X obj 380 9 t b;
+#N canvas 78 87 1153 300 creation_arguments 0;
+#X obj 271 122 moses 1e-07;
+#X msg 271 141 60;
+#X obj 157 103 \$2;
+#X obj 157 160 s \$0-noterhythm;
+#X obj 126 44 spigot 1;
+#X msg 181 44 0;
+#X obj 126 25 inlet;
+#X obj 365 160 s \$0-notedur;
+#X obj 468 108 \$5;
+#X obj 900 162 prepend shfl;
+#X obj 899 218 outlet;
+#X obj 56 159 prepend xoff;
+#X obj 809 163 prepend acc;
+#X obj 271 160 prepend pitch;
+#X obj 728 161 prepend tie;
+#X obj 449 163 prepend bt;
+#X obj 271 103 \$3;
+#X obj 365 103 \$4;
+#X obj 89 93 \$1;
+#X obj 266 55 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 318 22 inlet;
+#X obj 642 58 prepend proot;
+#X obj 629 108 \$6;
+#X obj 809 106 \$7;
+#X obj 900 105 \$8;
+#X obj 642 38 \$9;
+#X obj 118 67 t b b b;
+#X msg 92 227 xoff rhythm pitch dur bt tie acc shfl proot route;
+#X obj 988 101 \$12;
+#X obj 988 157 prepend articulation;
+#X obj 188 125 s \$0-lbn;
+#X connect 0 0 1 0;
+#X connect 0 1 13 0;
+#X connect 1 0 13 0;
+#X connect 2 0 3 0;
+#X connect 4 0 5 0;
+#X connect 4 0 26 0;
+#X connect 5 0 4 1;
+#X connect 6 0 4 0;
+#X connect 8 0 15 0;
+#X connect 9 0 10 0;
+#X connect 11 0 10 0;
+#X connect 12 0 10 0;
+#X connect 13 0 10 0;
+#X connect 14 0 10 0;
+#X connect 15 0 10 0;
+#X connect 16 0 0 0;
+#X connect 17 0 7 0;
+#X connect 18 0 11 0;
+#X connect 20 0 26 0;
+#X connect 21 0 10 0;
+#X connect 22 0 14 0;
+#X connect 23 0 12 0;
+#X connect 24 0 9 0;
+#X connect 25 0 21 0;
+#X connect 26 0 2 0;
+#X connect 26 0 8 0;
+#X connect 26 0 28 0;
+#X connect 26 1 17 0;
+#X connect 26 1 18 0;
+#X connect 26 1 23 0;
+#X connect 26 1 24 0;
+#X connect 26 1 16 0;
+#X connect 26 2 25 0;
+#X connect 26 2 22 0;
+#X connect 26 2 30 0;
+#X connect 28 0 29 0;
+#X connect 29 0 10 0;
+#X restore 392 32 pd creation_arguments;
+#N canvas 0 22 690 669 work_out_rhythms 0;
+#X obj 291 355 * 0.5;
+#X obj 291 378 i;
+#X obj 334 355 * 0.5;
+#X obj 334 378 i;
+#X obj 377 355 * 0.5;
+#X obj 377 378 i;
+#X obj 419 355 * 0.5;
+#X obj 419 378 i;
+#X obj 462 355 * 0.5;
+#X obj 462 378 i;
+#X obj 505 355 * 0.5;
+#X obj 505 378 i;
+#X floatatom 503 317 5 0 0 0 - - -;
+#X obj 291 402 sel 1;
+#X obj 334 402 sel 1;
+#X obj 377 402 sel 1;
+#X obj 419 402 sel 1;
+#X obj 462 402 sel 1;
+#X obj 505 402 sel 1;
+#X msg 291 423 1;
+#X msg 334 423 2;
+#X msg 377 423 3;
+#X msg 419 423 4;
+#X msg 462 423 5;
+#X msg 505 423 6;
+#X obj 291 468 -;
+#X obj 291 531 +;
+#X msg 170 495 7;
+#X msg 130 495 0;
+#X obj 535 280 f;
+#X obj 291 446 f;
+#X obj 67 63 moses 1;
+#X obj 125 86 moses 2;
+#X obj 166 107 moses 4;
+#X obj 144 127 sel 3;
+#X obj 204 127 moses 8;
+#X obj 245 148 moses 16;
+#X obj 223 168 sel 12;
+#X obj 187 147 sel 6;
+#X obj 94 105 sel 1.5;
+#X msg 51 283 0;
+#X msg 91 283 0;
+#X msg 131 283 1;
+#X msg 171 283 1;
+#X msg 211 283 2;
+#X msg 251 283 2;
+#X msg 291 283 3;
+#X msg 331 283 3;
+#X obj 268 188 sel 24;
+#X obj 290 168 moses 32;
+#X obj 67 40 r \$0-notedur;
+#X obj 516 235 r \$0-noterhythm;
+#X obj 291 491 moses 0;
+#X msg 291 511 0;
+#X obj 291 551 outlet;
+#X msg 371 283 4;
+#X msg 411 283 4;
+#X obj 334 188 sel 48;
+#X msg 449 283 5;
+#X msg 489 283 5;
+#X floatatom 349 490 5 0 0 0 - - -;
+#X connect 0 0 1 0;
+#X connect 0 0 2 0;
+#X connect 1 0 13 0;
+#X connect 2 0 3 0;
+#X connect 2 0 4 0;
+#X connect 3 0 14 0;
+#X connect 4 0 5 0;
+#X connect 4 0 6 0;
+#X connect 5 0 15 0;
+#X connect 6 0 7 0;
+#X connect 6 0 8 0;
+#X connect 7 0 16 0;
+#X connect 8 0 9 0;
+#X connect 8 0 10 0;
+#X connect 9 0 17 0;
+#X connect 10 0 11 0;
+#X connect 11 0 18 0;
+#X connect 12 0 0 0;
+#X connect 13 0 19 0;
+#X connect 14 0 20 0;
+#X connect 15 0 21 0;
+#X connect 16 0 22 0;
+#X connect 17 0 23 0;
+#X connect 18 0 24 0;
+#X connect 19 0 30 0;
+#X connect 20 0 30 0;
+#X connect 21 0 30 0;
+#X connect 22 0 30 0;
+#X connect 23 0 30 0;
+#X connect 24 0 30 0;
+#X connect 25 0 52 0;
+#X connect 25 0 60 0;
+#X connect 26 0 54 0;
+#X connect 27 0 26 1;
+#X connect 28 0 26 1;
+#X connect 29 0 12 0;
+#X connect 30 0 25 0;
+#X connect 31 1 32 0;
+#X connect 32 0 39 0;
+#X connect 32 1 33 0;
+#X connect 33 0 34 0;
+#X connect 33 1 35 0;
+#X connect 34 0 42 0;
+#X connect 34 0 27 0;
+#X connect 34 1 43 0;
+#X connect 34 1 28 0;
+#X connect 35 0 38 0;
+#X connect 35 1 36 0;
+#X connect 36 0 37 0;
+#X connect 36 1 49 0;
+#X connect 37 0 46 0;
+#X connect 37 0 27 0;
+#X connect 37 1 47 0;
+#X connect 37 1 28 0;
+#X connect 38 0 44 0;
+#X connect 38 0 27 0;
+#X connect 38 1 45 0;
+#X connect 38 1 28 0;
+#X connect 39 0 40 0;
+#X connect 39 0 27 0;
+#X connect 39 1 41 0;
+#X connect 39 1 28 0;
+#X connect 40 0 25 1;
+#X connect 41 0 25 1;
+#X connect 42 0 25 1;
+#X connect 43 0 25 1;
+#X connect 44 0 25 1;
+#X connect 45 0 25 1;
+#X connect 46 0 25 1;
+#X connect 47 0 25 1;
+#X connect 48 0 55 0;
+#X connect 48 0 27 0;
+#X connect 48 1 56 0;
+#X connect 48 1 28 0;
+#X connect 49 0 48 0;
+#X connect 49 1 57 0;
+#X connect 50 0 31 0;
+#X connect 51 0 29 0;
+#X connect 52 0 53 0;
+#X connect 52 1 26 0;
+#X connect 53 0 26 0;
+#X connect 55 0 25 1;
+#X connect 56 0 25 1;
+#X connect 57 0 27 0;
+#X connect 57 0 58 0;
+#X connect 57 1 28 0;
+#X connect 57 1 59 0;
+#X connect 58 0 25 1;
+#X connect 59 0 25 1;
+#X restore 892 16 pd work_out_rhythms;
+#X obj 507 12 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 770 576 > 0;
+#X floatatom 337 138 5 0 0 1 y-position - -;
+#N canvas 0 22 287 304 pos 0;
+#X obj 20 -15 inlet;
+#X obj 166 -18 inlet;
+#X obj 20 77 spigot 1;
+#X obj 20 98 tabread flats;
+#X obj 110 77 spigot;
+#X obj 20 181 - 28;
+#X obj 110 98 tabread sharps;
+#X obj 65 55 == 0;
+#X obj 20 125 moses 80;
+#X obj 28 154 - 80;
+#X msg 54 181 1;
+#X obj 20 6 f;
+#X obj 65 229 outlet;
+#X msg 65 155 2;
+#X obj 110 181 - 28;
+#X obj 110 125 moses 80;
+#X obj 118 154 - 80;
+#X msg 144 181 1;
+#X msg 155 155 0;
+#X obj 20 229 outlet;
+#X obj 20 208 -;
+#X obj 116 11 t b f;
+#X obj 234 43 inlet;
+#X msg 210 124 12;
+#X msg 242 124 0;
+#X obj 223 90 sel 1 2;
+#X obj 223 62 t b f;
+#X connect 0 0 11 0;
+#X connect 1 0 21 0;
+#X connect 2 0 3 0;
+#X connect 3 0 8 0;
+#X connect 4 0 6 0;
+#X connect 5 0 20 0;
+#X connect 6 0 15 0;
+#X connect 7 0 2 1;
+#X connect 8 0 10 0;
+#X connect 8 0 5 0;
+#X connect 8 1 9 0;
+#X connect 8 1 13 0;
+#X connect 9 0 5 0;
+#X connect 10 0 12 0;
+#X connect 11 0 4 0;
+#X connect 11 0 2 0;
+#X connect 13 0 12 0;
+#X connect 14 0 20 0;
+#X connect 15 0 17 0;
+#X connect 15 0 14 0;
+#X connect 15 1 16 0;
+#X connect 15 1 18 0;
+#X connect 16 0 14 0;
+#X connect 17 0 12 0;
+#X connect 18 0 12 0;
+#X connect 20 0 19 0;
+#X connect 21 0 11 0;
+#X connect 21 1 7 0;
+#X connect 21 1 4 1;
+#X connect 22 0 26 0;
+#X connect 23 0 20 1;
+#X connect 24 0 20 1;
+#X connect 25 0 23 0;
+#X connect 25 1 24 0;
+#X connect 26 0 11 0;
+#X connect 26 1 25 0;
+#X restore 368 116 pd pos;
+#X floatatom 388 99 5 0 0 0 - - -;
+#X obj 241 257 -;
+#X obj 1010 515 moses 3;
+#X msg 1049 536 3;
+#X obj 570 10 route \$10;
+#X text 409 200 Accidental#:b;
+#X text 820 608 Tie^;
+#X floatatom 251 317 5 0 0 0 - - -;
+#X obj 348 232 -;
+#X obj 304 277 < 4;
+#X obj 241 288 abs;
+#X obj 304 296 * 0.092;
+#X obj 304 351 * 0.046;
+#X obj 18 88 s \$0-showme;
+#N canvas 0 22 450 300 clockit 0;
+#X obj 61 57 inlet;
+#X obj 61 122 spigot 1;
+#X obj 151 122 t b;
+#X obj 151 141 f;
+#X obj 176 141 + 1;
+#X msg 186 97 0;
+#X msg 151 98 1;
+#X obj 61 174 outlet;
+#X obj 159 57 inlet;
+#X obj 159 78 t b b;
+#X obj 242 59 r \$0-clocked;
+#X obj 151 160 < 8;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 1 0 7 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 11 0;
+#X connect 4 0 3 1;
+#X connect 5 0 3 1;
+#X connect 6 0 1 1;
+#X connect 8 0 9 0;
+#X connect 9 0 6 0;
+#X connect 9 1 5 0;
+#X connect 11 0 1 1;
+#X restore 89 33 pd clockit;
+#X obj 156 35 r \$0-reclock;
+#X obj 18 33 packel 9;
+#X obj 17 272 r \$0-showme;
+#X obj 390 162 &&;
+#X obj 314 157 r \$0-showme;
+#X obj 330 507 &&;
+#X obj 284 456 r \$0-showme;
+#X obj 770 607 &&;
+#X obj 692 604 r \$0-showme;
+#X obj 10 797 &&;
+#X obj 12 774 r \$0-showme;
+#X obj 91 773 > 0;
+#X obj 580 402 &&;
+#X obj 504 367 r \$0-showme;
+#X obj 89 69 unpack f f f f f f f f;
+#X obj 648 10 r \$11;
+#X obj 628 33 route reclock;
+#X obj 548 33 s \$0-reclock;
+#X obj 48 605 text3d;
+#X obj 38 508 gemhead;
+#X obj 135 510 r \$0-color;
+#X obj 44 563 color 0 0 0;
+#X obj 42 539 translateXYZ 2 -40 -0.9;
+#X obj 79 425 r \$0-showme;
+#X obj 27 462 &&;
+#X obj 63 458 t b f;
+#X obj 25 438 != 0;
+#X text 25 487 articulation;
+#X obj 201 413 == 1;
+#X obj 178 458 sel 1;
+#X obj 200 438 &&;
+#X obj 235 412 == 0;
+#X obj 234 435 t b f;
+#X obj 240 386 r \$0-direction;
+#X obj 274 437 &&;
+#X obj 270 414 t b f;
+#X obj 230 459 sel 1;
+#X msg 111 603 text `;
+#X obj 128 580 loadbang;
+#X obj 102 512 +;
+#X msg 160 484 text I;
+#X msg 213 483 text E;
+#X obj 107 490 t b f;
+#X msg 102 448 0.38;
+#X msg 124 468 0.45;
+#X obj 471 56 route pitch rhythm xoff bt tie acc shfl proot articulation
+;
+#X msg 186 569 0;
+#X obj 210 523 loadbang;
+#X obj 201 547 r \$0-lbn;
+#X obj 398 240 translateXYZ 2 -45 -0.9;
+#X obj 56 347 translateXYZ 2 -45 -0.9;
+#X obj 381 561 translateXYZ 2 -45 -0.9;
+#X obj 644 513 translateXYZ 2 -42 -0.9;
+#X obj 777 761 translateXYZ 2 -45 -0.9;
+#X obj 39 866 translateXYZ 2 -45 0;
+#X connect 0 0 3 0;
+#X connect 2 0 240 0;
+#X connect 3 0 66 0;
+#X connect 3 0 97 0;
+#X connect 3 0 145 0;
+#X connect 4 0 1 0;
+#X connect 4 1 1 1;
+#X connect 6 0 239 0;
+#X connect 7 0 5 0;
+#X connect 8 0 5 0;
+#X connect 9 0 5 0;
+#X connect 10 0 5 0;
+#X connect 11 0 5 0;
+#X connect 12 0 13 0;
+#X connect 13 0 17 0;
+#X connect 14 0 15 0;
+#X connect 15 0 7 0;
+#X connect 15 0 144 0;
+#X connect 15 1 11 0;
+#X connect 15 1 78 0;
+#X connect 15 2 9 0;
+#X connect 15 2 33 0;
+#X connect 16 0 14 0;
+#X connect 17 0 70 0;
+#X connect 21 0 30 0;
+#X connect 21 0 57 0;
+#X connect 21 0 58 0;
+#X connect 21 0 59 0;
+#X connect 21 0 176 0;
+#X connect 22 0 5 0;
+#X connect 22 1 5 1;
+#X connect 23 0 241 2;
+#X connect 25 0 241 0;
+#X connect 26 0 195 1;
+#X connect 27 0 24 0;
+#X connect 27 0 46 0;
+#X connect 27 1 24 1;
+#X connect 27 1 46 1;
+#X connect 28 0 31 0;
+#X connect 29 0 31 1;
+#X connect 30 0 28 0;
+#X connect 30 0 35 0;
+#X connect 30 1 29 0;
+#X connect 30 1 34 0;
+#X connect 31 0 26 0;
+#X connect 33 0 13 1;
+#X connect 34 0 24 0;
+#X connect 35 0 24 0;
+#X connect 36 0 16 0;
+#X connect 37 0 21 0;
+#X connect 37 1 15 0;
+#X connect 38 0 37 0;
+#X connect 39 0 155 0;
+#X connect 39 0 189 0;
+#X connect 39 0 191 0;
+#X connect 40 0 98 0;
+#X connect 41 0 51 0;
+#X connect 41 0 55 0;
+#X connect 41 0 60 0;
+#X connect 41 0 82 0;
+#X connect 41 0 157 0;
+#X connect 41 0 240 1;
+#X connect 42 0 1 0;
+#X connect 43 0 1 0;
+#X connect 44 0 1 0;
+#X connect 45 0 61 0;
+#X connect 47 0 242 0;
+#X connect 48 0 53 0;
+#X connect 49 0 54 0;
+#X connect 50 0 54 0;
+#X connect 51 0 242 1;
+#X connect 52 0 46 0;
+#X connect 53 0 242 2;
+#X connect 54 0 202 1;
+#X connect 55 0 241 1;
+#X connect 56 0 17 1;
+#X connect 57 0 3 1;
+#X connect 58 0 48 1;
+#X connect 59 0 56 0;
+#X connect 60 0 183 0;
+#X connect 61 0 49 0;
+#X connect 61 0 63 0;
+#X connect 61 0 142 0;
+#X connect 61 1 62 0;
+#X connect 62 0 50 0;
+#X connect 62 0 63 0;
+#X connect 62 0 142 0;
+#X connect 63 0 43 0;
+#X connect 63 0 64 0;
+#X connect 63 0 69 0;
+#X connect 63 0 72 0;
+#X connect 63 0 79 0;
+#X connect 63 0 160 0;
+#X connect 63 1 42 0;
+#X connect 63 1 64 0;
+#X connect 63 1 69 0;
+#X connect 63 1 72 0;
+#X connect 63 1 76 0;
+#X connect 63 1 160 0;
+#X connect 63 2 44 0;
+#X connect 63 2 76 0;
+#X connect 63 2 160 0;
+#X connect 63 2 65 0;
+#X connect 63 2 68 0;
+#X connect 63 2 74 0;
+#X connect 63 3 44 0;
+#X connect 63 3 76 0;
+#X connect 63 3 160 0;
+#X connect 63 3 65 0;
+#X connect 63 3 68 0;
+#X connect 63 3 74 0;
+#X connect 63 4 44 0;
+#X connect 63 4 65 0;
+#X connect 63 4 77 0;
+#X connect 63 4 68 0;
+#X connect 63 4 74 0;
+#X connect 63 4 161 0;
+#X connect 63 5 44 0;
+#X connect 63 5 71 0;
+#X connect 63 5 67 0;
+#X connect 63 5 75 0;
+#X connect 63 5 73 0;
+#X connect 63 5 162 0;
+#X connect 63 6 44 0;
+#X connect 63 6 67 0;
+#X connect 63 6 71 0;
+#X connect 63 6 75 0;
+#X connect 63 6 73 0;
+#X connect 63 6 162 0;
+#X connect 64 0 1 1;
+#X connect 64 0 5 1;
+#X connect 65 0 1 1;
+#X connect 65 0 5 1;
+#X connect 66 0 240 2;
+#X connect 67 0 1 1;
+#X connect 67 0 5 1;
+#X connect 68 0 66 1;
+#X connect 68 0 70 1;
+#X connect 69 0 70 1;
+#X connect 69 0 66 1;
+#X connect 70 0 239 2;
+#X connect 71 0 70 1;
+#X connect 71 0 66 1;
+#X connect 72 0 60 1;
+#X connect 73 0 60 1;
+#X connect 74 0 60 1;
+#X connect 75 0 55 1;
+#X connect 76 0 55 1;
+#X connect 77 0 55 1;
+#X connect 78 0 13 1;
+#X connect 79 0 55 1;
+#X connect 80 0 244 0;
+#X connect 82 0 244 1;
+#X connect 83 0 82 1;
+#X connect 84 0 97 1;
+#X connect 85 0 84 1;
+#X connect 87 0 159 1;
+#X connect 88 0 83 0;
+#X connect 88 0 94 0;
+#X connect 88 1 95 0;
+#X connect 88 1 159 0;
+#X connect 93 0 94 1;
+#X connect 94 0 84 0;
+#X connect 94 0 96 0;
+#X connect 95 0 84 0;
+#X connect 95 0 96 0;
+#X connect 96 0 81 2;
+#X connect 97 0 244 2;
+#X connect 99 0 146 1;
+#X connect 100 0 148 1;
+#X connect 100 0 152 1;
+#X connect 101 0 147 1;
+#X connect 103 0 201 0;
+#X connect 104 0 150 1;
+#X connect 107 0 88 0;
+#X connect 108 0 244 3;
+#X connect 110 0 243 0;
+#X connect 111 0 109 0;
+#X connect 111 1 109 1;
+#X connect 112 0 243 1;
+#X connect 113 0 112 1;
+#X connect 114 0 109 0;
+#X connect 115 0 109 0;
+#X connect 116 0 114 0;
+#X connect 117 0 115 0;
+#X connect 118 0 116 1;
+#X connect 119 0 120 0;
+#X connect 119 1 118 0;
+#X connect 119 1 117 1;
+#X connect 120 0 121 0;
+#X connect 120 0 136 0;
+#X connect 120 1 122 0;
+#X connect 120 1 135 0;
+#X connect 121 0 117 0;
+#X connect 122 0 116 0;
+#X connect 123 0 243 2;
+#X connect 124 0 123 1;
+#X connect 127 0 113 0;
+#X connect 132 0 113 0;
+#X connect 133 0 113 0;
+#X connect 134 0 113 0;
+#X connect 135 0 124 0;
+#X connect 136 0 124 0;
+#X connect 137 0 149 1;
+#X connect 138 0 151 1;
+#X connect 139 0 243 3;
+#X connect 140 0 119 0;
+#X connect 141 0 132 0;
+#X connect 141 1 127 0;
+#X connect 141 2 133 0;
+#X connect 141 3 134 0;
+#X connect 141 4 134 0;
+#X connect 141 5 134 0;
+#X connect 141 6 134 0;
+#X connect 142 0 141 0;
+#X connect 142 0 177 0;
+#X connect 144 0 13 1;
+#X connect 145 0 96 0;
+#X connect 146 0 1 0;
+#X connect 147 0 5 0;
+#X connect 148 0 24 0;
+#X connect 149 0 109 0;
+#X connect 150 0 81 0;
+#X connect 151 0 149 0;
+#X connect 152 0 46 0;
+#X connect 153 0 179 0;
+#X connect 154 0 155 1;
+#X connect 155 0 154 0;
+#X connect 155 0 168 0;
+#X connect 156 0 52 0;
+#X connect 159 0 82 1;
+#X connect 160 0 163 0;
+#X connect 161 0 163 0;
+#X connect 162 0 163 0;
+#X connect 164 0 165 0;
+#X connect 165 0 87 0;
+#X connect 165 1 166 0;
+#X connect 165 2 167 0;
+#X connect 166 0 159 1;
+#X connect 167 0 159 1;
+#X connect 168 0 169 0;
+#X connect 169 0 235 0;
+#X connect 170 0 45 0;
+#X connect 170 0 102 0;
+#X connect 171 0 169 1;
+#X connect 172 0 197 1;
+#X connect 173 0 176 1;
+#X connect 174 0 173 0;
+#X connect 175 0 174 0;
+#X connect 176 0 185 0;
+#X connect 177 0 122 1;
+#X connect 177 0 121 1;
+#X connect 177 1 178 0;
+#X connect 178 0 122 1;
+#X connect 178 0 121 1;
+#X connect 179 0 235 0;
+#X connect 182 0 184 0;
+#X connect 182 0 187 0;
+#X connect 183 0 239 1;
+#X connect 184 0 186 0;
+#X connect 185 0 182 0;
+#X connect 186 0 183 1;
+#X connect 187 0 95 1;
+#X connect 187 0 93 0;
+#X connect 189 0 204 0;
+#X connect 190 0 189 1;
+#X connect 191 0 188 0;
+#X connect 192 0 2 0;
+#X connect 193 0 6 0;
+#X connect 194 0 193 0;
+#X connect 195 0 25 0;
+#X connect 196 0 195 0;
+#X connect 197 0 110 0;
+#X connect 198 0 197 0;
+#X connect 199 0 80 0;
+#X connect 200 0 199 0;
+#X connect 201 0 199 1;
+#X connect 202 0 47 0;
+#X connect 203 0 202 0;
+#X connect 204 0 41 0;
+#X connect 204 0 112 0;
+#X connect 204 1 0 0;
+#X connect 204 1 12 0;
+#X connect 204 1 23 0;
+#X connect 204 1 123 0;
+#X connect 204 1 48 0;
+#X connect 204 2 105 0;
+#X connect 204 2 239 3;
+#X connect 204 2 240 3;
+#X connect 204 2 241 3;
+#X connect 204 2 242 3;
+#X connect 204 4 37 2;
+#X connect 204 4 174 2;
+#X connect 204 5 40 0;
+#X connect 204 6 40 1;
+#X connect 204 7 40 2;
+#X connect 205 0 206 0;
+#X connect 206 0 207 0;
+#X connect 206 1 235 0;
+#X connect 209 0 212 0;
+#X connect 210 0 211 1;
+#X connect 211 0 208 0;
+#X connect 212 0 211 0;
+#X connect 213 0 215 0;
+#X connect 214 0 209 0;
+#X connect 215 0 214 0;
+#X connect 215 1 214 1;
+#X connect 216 0 214 0;
+#X connect 218 0 220 0;
+#X connect 218 0 224 0;
+#X connect 219 0 230 0;
+#X connect 219 0 233 0;
+#X connect 220 0 219 0;
+#X connect 221 0 222 0;
+#X connect 222 0 220 0;
+#X connect 222 1 220 1;
+#X connect 223 0 221 0;
+#X connect 223 0 225 0;
+#X connect 224 0 226 0;
+#X connect 225 0 224 0;
+#X connect 225 1 224 1;
+#X connect 226 0 231 0;
+#X connect 226 0 234 0;
+#X connect 227 0 208 0;
+#X connect 228 0 227 0;
+#X connect 229 0 212 2;
+#X connect 230 0 208 0;
+#X connect 231 0 208 0;
+#X connect 232 0 229 0;
+#X connect 232 1 229 1;
+#X connect 233 0 232 0;
+#X connect 234 0 232 0;
+#X connect 235 0 38 0;
+#X connect 235 1 45 0;
+#X connect 235 1 102 0;
+#X connect 235 2 41 1;
+#X connect 235 2 158 0;
+#X connect 235 3 106 0;
+#X connect 235 4 138 0;
+#X connect 235 4 172 0;
+#X connect 235 5 193 1;
+#X connect 235 6 37 1;
+#X connect 235 6 174 1;
+#X connect 235 7 175 0;
+#X connect 235 8 216 0;
+#X connect 235 8 218 0;
+#X connect 236 0 209 0;
+#X connect 237 0 236 0;
+#X connect 238 0 236 0;
+#X connect 239 0 147 0;
+#X connect 240 0 146 0;
+#X connect 241 0 148 0;
+#X connect 242 0 152 0;
+#X connect 243 0 151 0;
+#X connect 244 0 150 0;
diff --git a/gemnotes_0.2.3/src/LICENSE.txt b/gemnotes_0.2.3/src/LICENSE.txt
new file mode 100755
index 0000000..edfda65
--- /dev/null
+++ b/gemnotes_0.2.3/src/LICENSE.txt
@@ -0,0 +1,29 @@
+This software is copyrighted by Edward Kelly. The following
+terms (the "Standard Improved BSD License") apply to all files associated with the software unless explicitly disclaimed in individual files:
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+3. The name of the author may not be used to endorse or promote
+ products derived from this software without specific prior
+ written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/gemnotes_0.2.3/src/Makefile b/gemnotes_0.2.3/src/Makefile
new file mode 100755
index 0000000..21578d3
--- /dev/null
+++ b/gemnotes_0.2.3/src/Makefile
@@ -0,0 +1,406 @@
+## Pd library template version 1.0.11
+# For instructions on how to use this template, see:
+# http://puredata.info/docs/developer/MakefileTemplate
+LIBRARY_NAME = ekext
+
+# add your .c source files, one object per file, to the SOURCES
+# variable, help files will be included automatically
+SOURCES = gemnotes_countbars.c polyquant.c gemnotes_counter.c
+
+# list all pd objects (i.e. myobject.pd) files here, and their helpfiles will
+# be included automatically
+PDOBJECTS =
+
+# example patches and related files, in the 'examples' subfolder
+EXAMPLES =
+
+# manuals and related files, in the 'manual' subfolder
+MANUAL =
+
+# if you want to include any other files in the source and binary tarballs,
+# list them here. This can be anything from header files, test patches,
+# documentation, etc. README.txt and LICENSE.txt are required and therefore
+# automatically included
+EXTRA_DIST = peakit~_license.txt voicing_detector~test3-help.pd maskxor-test.pd
+
+
+
+#------------------------------------------------------------------------------#
+#
+# things you might need to edit if you are using other C libraries
+#
+#------------------------------------------------------------------------------#
+
+ALL_CFLAGS = -I"$(PD_INCLUDE)"
+ALL_LDFLAGS =
+SHARED_LDFLAGS =
+ALL_LIBS =
+
+
+#------------------------------------------------------------------------------#
+#
+# you shouldn't need to edit anything below here, if we did it right :)
+#
+#------------------------------------------------------------------------------#
+
+# these can be set from outside without (usually) breaking the build
+CFLAGS = -Wall -W -g
+LDFLAGS =
+LIBS =
+
+# get library version from meta file
+LIBRARY_VERSION = $(shell sed -n 's|^\#X text [0-9][0-9]* [0-9][0-9]* VERSION \(.*\);|\1|p' $(LIBRARY_NAME)-meta.pd)
+
+ALL_CFLAGS += -DPD -DVERSION='"$(LIBRARY_VERSION)"'
+
+PD_INCLUDE = $(PD_PATH)/include/pd
+# where to install the library, overridden below depending on platform
+prefix = /usr/local
+libdir = $(prefix)/lib
+pkglibdir = $(libdir)/pd-externals
+objectsdir = $(pkglibdir)
+
+INSTALL = install
+INSTALL_PROGRAM = $(INSTALL) -p -m 644
+INSTALL_DATA = $(INSTALL) -p -m 644
+INSTALL_DIR = $(INSTALL) -p -m 755 -d
+
+ALLSOURCES := $(SOURCES) $(SOURCES_android) $(SOURCES_cygwin) $(SOURCES_macosx) \
+ $(SOURCES_iphoneos) $(SOURCES_linux) $(SOURCES_windows)
+
+DISTDIR=$(LIBRARY_NAME)-$(LIBRARY_VERSION)
+ORIGDIR=pd-$(LIBRARY_NAME:~=)_$(LIBRARY_VERSION)
+
+UNAME := $(shell uname -s)
+ifeq ($(UNAME),Darwin)
+ CPU := $(shell uname -p)
+ ifeq ($(CPU),arm) # iPhone/iPod Touch
+ SOURCES += $(SOURCES_iphoneos)
+ EXTENSION = pd_darwin
+ SHARED_EXTENSION = dylib
+ OS = iphoneos
+ PD_PATH = /Applications/Pd-extended.app/Contents/Resources
+ IPHONE_BASE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin
+ CC=$(IPHONE_BASE)/gcc
+ CPP=$(IPHONE_BASE)/cpp
+ CXX=$(IPHONE_BASE)/g++
+ ISYSROOT = -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk
+ IPHONE_CFLAGS = -miphoneos-version-min=3.0 $(ISYSROOT) -arch armv6
+ OPT_CFLAGS = -fast -funroll-loops -fomit-frame-pointer
+ ALL_CFLAGS := $(IPHONE_CFLAGS) $(ALL_CFLAGS)
+ ALL_LDFLAGS += -arch armv6 -bundle -undefined dynamic_lookup $(ISYSROOT)
+ SHARED_LDFLAGS += -arch armv6 -dynamiclib -undefined dynamic_lookup $(ISYSROOT)
+ ALL_LIBS += -lc $(LIBS_iphoneos)
+ STRIP = strip -x
+ DISTBINDIR=$(DISTDIR)-$(OS)
+ else # Mac OS X
+ SOURCES += $(SOURCES_macosx)
+ EXTENSION = pd_darwin
+ SHARED_EXTENSION = dylib
+ OS = macosx
+ PD_PATH = /Applications/Pd-extended.app/Contents/Resources
+ OPT_CFLAGS = -ftree-vectorize -ftree-vectorizer-verbose=2 -fast
+# build universal 32-bit on 10.4 and 32/64 on newer
+ FAT_FLAGS = -arch i386 -mmacosx-version-min=10.4
+# FAT_FLAGS = -arch i386 -arch x86_64 -mmacosx-version-min=10.4
+ SOURCES += $(SOURCES_iphoneos)
+ ALL_CFLAGS += $(FAT_FLAGS) -fPIC -I/sw/include
+ # if the 'pd' binary exists, check the linking against it to aid with stripping
+ BUNDLE_LOADER = $(shell test ! -e $(PD_PATH)/bin/pd || echo -bundle_loader $(PD_PATH)/bin/pd)
+ ALL_LDFLAGS += $(FAT_FLAGS) -bundle $(BUNDLE_LOADER) -undefined dynamic_lookup -L/sw/lib
+ SHARED_LDFLAGS += $(FAT_FLAGS) -dynamiclib -undefined dynamic_lookup \
+ -install_name @loader_path/$(SHARED_LIB) -compatibility_version 1 -current_version 1.0
+ ALL_LIBS += -lc $(LIBS_macosx)
+ STRIP = strip -x
+ DISTBINDIR=$(DISTDIR)-$(OS)
+# install into ~/Library/Pd on Mac OS X since /usr/local isn't used much
+ pkglibdir=$(HOME)/Library/Pd
+ endif
+endif
+# Tho Android uses Linux, we use this fake uname to provide an easy way to
+# setup all this things needed to cross-compile for Android using the NDK
+ifeq ($(UNAME),ANDROID)
+ CPU := arm
+ SOURCES += $(SOURCES_android)
+ EXTENSION = pd_linux
+ SHARED_EXTENSION = so
+ OS = android
+ PD_PATH = /usr
+ NDK_BASE := /usr/local/android-ndk
+ NDK_PLATFORM_VERSION := 5
+ NDK_SYSROOT=$(NDK_BASE)/platforms/android-$(NDK_PLATFORM_VERSION)/arch-arm
+ NDK_UNAME := $(shell uname -s | tr '[A-Z]' '[a-z]')
+ NDK_TOOLCHAIN_BASE=$(NDK_BASE)/toolchains/arm-linux-androideabi-4.4.3/prebuilt/$(NDK_UNAME)-x86
+ CC := $(NDK_TOOLCHAIN_BASE)/bin/arm-linux-androideabi-gcc --sysroot=$(NDK_SYSROOT)
+ OPT_CFLAGS = -O6 -funroll-loops -fomit-frame-pointer
+ CFLAGS +=
+ LDFLAGS += -rdynamic -shared
+ SHARED_LDFLAGS += -Wl,-soname,$(SHARED_LIB) -shared
+ LIBS += -lc $(LIBS_android)
+ STRIP := $(NDK_TOOLCHAIN_BASE)/bin/arm-linux-androideabi-strip \
+ --strip-unneeded -R .note -R .comment
+ DISTBINDIR=$(DISTDIR)-$(OS)-$(shell uname -m)
+endif
+ifeq ($(UNAME),Linux)
+ CPU := $(shell uname -m)
+ SOURCES += $(SOURCES_linux)
+ EXTENSION = pd_linux
+ SHARED_EXTENSION = so
+ OS = linux
+ PD_PATH = /usr
+ OPT_CFLAGS = -O6 -funroll-loops -fomit-frame-pointer
+ ALL_CFLAGS += -fPIC
+ ALL_LDFLAGS += -rdynamic -shared -fPIC
+ SHARED_LDFLAGS += -Wl,-soname,$(SHARED_LIB) -shared
+ ALL_LIBS += -lc $(LIBS_linux)
+ STRIP = strip --strip-unneeded -R .note -R .comment
+ DISTBINDIR=$(DISTDIR)-$(OS)-$(shell uname -m)
+endif
+ifeq ($(UNAME),GNU)
+ # GNU/Hurd, should work like GNU/Linux for basically all externals
+ CPU := $(shell uname -m)
+ SOURCES += $(SOURCES_linux)
+ EXTENSION = pd_linux
+ SHARED_EXTENSION = so
+ OS = linux
+ PD_PATH = /usr
+ OPT_CFLAGS = -O6 -funroll-loops -fomit-frame-pointer
+ ALL_CFLAGS += -fPIC
+ ALL_LDFLAGS += -rdynamic -shared -fPIC
+ SHARED_LDFLAGS += -shared -Wl,-soname,$(SHARED_LIB)
+ ALL_LIBS += -lc $(LIBS_linux)
+ STRIP = strip --strip-unneeded -R .note -R .comment
+ DISTBINDIR=$(DISTDIR)-$(OS)-$(shell uname -m)
+endif
+ifeq ($(UNAME),GNU/kFreeBSD)
+ # Debian GNU/kFreeBSD, should work like GNU/Linux for basically all externals
+ CPU := $(shell uname -m)
+ SOURCES += $(SOURCES_linux)
+ EXTENSION = pd_linux
+ SHARED_EXTENSION = so
+ OS = linux
+ PD_PATH = /usr
+ OPT_CFLAGS = -O6 -funroll-loops -fomit-frame-pointer
+ ALL_CFLAGS += -fPIC
+ ALL_LDFLAGS += -rdynamic -shared -fPIC
+ SHARED_LDFLAGS += -shared -Wl,-soname,$(SHARED_LIB)
+ ALL_LIBS += -lc $(LIBS_linux)
+ STRIP = strip --strip-unneeded -R .note -R .comment
+ DISTBINDIR=$(DISTDIR)-$(OS)-$(shell uname -m)
+endif
+ifeq (CYGWIN,$(findstring CYGWIN,$(UNAME)))
+ CPU := $(shell uname -m)
+ SOURCES += $(SOURCES_cygwin)
+ EXTENSION = dll
+ SHARED_EXTENSION = dll
+ OS = cygwin
+ PD_PATH = $(shell cygpath $$PROGRAMFILES)/pd
+ OPT_CFLAGS = -O6 -funroll-loops -fomit-frame-pointer
+ ALL_CFLAGS +=
+ ALL_LDFLAGS += -rdynamic -shared -L"$(PD_PATH)/src" -L"$(PD_PATH)/bin"
+ SHARED_LDFLAGS += -shared -Wl,-soname,$(SHARED_LIB)
+ ALL_LIBS += -lc -lpd $(LIBS_cygwin)
+ STRIP = strip --strip-unneeded -R .note -R .comment
+ DISTBINDIR=$(DISTDIR)-$(OS)
+endif
+ifeq (MINGW,$(findstring MINGW,$(UNAME)))
+ CPU := $(shell uname -m)
+ SOURCES += $(SOURCES_windows)
+ EXTENSION = dll
+ SHARED_EXTENSION = dll
+ OS = windows
+ PD_PATH = $(shell cd "$$PROGRAMFILES/pd" && pwd)
+ # MinGW doesn't seem to include cc so force gcc
+ CC=gcc
+ OPT_CFLAGS = -O3 -funroll-loops -fomit-frame-pointer
+ ALL_CFLAGS += -mms-bitfields
+ ALL_LDFLAGS += -s -shared -Wl,--enable-auto-import -L"$(PD_PATH)/src" -L"$(PD_PATH)/bin" -L"$(PD_PATH)/obj"
+ SHARED_LDFLAGS += -shared
+ ALL_LIBS += -lpd -lwsock32 -lkernel32 -luser32 -lgdi32 $(LIBS_windows)
+ STRIP = strip --strip-unneeded -R .note -R .comment
+ DISTBINDIR=$(DISTDIR)-$(OS)
+endif
+
+# in case somebody manually set the HELPPATCHES above
+HELPPATCHES ?= $(SOURCES:.c=-help.pd) $(PDOBJECTS:.pd=-help.pd)
+
+ALL_CFLAGS := $(ALL_CFLAGS) $(CFLAGS) $(OPT_CFLAGS)
+ALL_LDFLAGS := $(LDFLAGS) $(ALL_LDFLAGS)
+ALL_LIBS := $(LIBS) $(ALL_LIBS)
+
+SHARED_SOURCE ?= $(shell test ! -e lib$(LIBRARY_NAME).c || \
+ echo lib$(LIBRARY_NAME).c )
+SHARED_HEADER ?= $(shell test ! -e $(LIBRARY_NAME).h || echo $(LIBRARY_NAME).h)
+SHARED_LIB = $(SHARED_SOURCE:.c=.$(SHARED_EXTENSION))
+
+.PHONY = install libdir_install single_install install-doc install-examples install-manual clean distclean dist etags $(LIBRARY_NAME)
+
+all: $(SOURCES:.c=.$(EXTENSION)) $(SHARED_LIB)
+
+%.o: %.c
+ $(CC) $(ALL_CFLAGS) -o "$*.o" -c "$*.c"
+
+%.$(EXTENSION): %.o $(SHARED_LIB)
+ $(CC) $(ALL_LDFLAGS) -o "$*.$(EXTENSION)" "$*.o" $(ALL_LIBS) $(SHARED_LIB)
+ chmod a-x "$*.$(EXTENSION)"
+
+# this links everything into a single binary file
+$(LIBRARY_NAME): $(SOURCES:.c=.o) $(LIBRARY_NAME).o
+ $(CC) $(ALL_LDFLAGS) -o $(LIBRARY_NAME).$(EXTENSION) $(SOURCES:.c=.o) $(LIBRARY_NAME).o $(ALL_LIBS)
+ chmod a-x $(LIBRARY_NAME).$(EXTENSION)
+
+$(SHARED_LIB): $(SHARED_SOURCE:.c=.o)
+ $(CC) $(SHARED_LDFLAGS) -o $(SHARED_LIB) $(SHARED_SOURCE:.c=.o) $(LIBS)
+
+install: libdir_install
+
+# The meta and help files are explicitly installed to make sure they are
+# actually there. Those files are not optional, then need to be there.
+libdir_install: $(SOURCES:.c=.$(EXTENSION)) $(SHARED_LIB) install-doc install-examples install-manual
+ $(INSTALL_DIR) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)
+ $(INSTALL_DATA) $(LIBRARY_NAME)-meta.pd \
+ $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)
+ test -z "$(strip $(SOURCES))" || (\
+ $(INSTALL_PROGRAM) $(SOURCES:.c=.$(EXTENSION)) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME) && \
+ $(STRIP) $(addprefix $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)/,$(SOURCES:.c=.$(EXTENSION))))
+ test -z "$(strip $(SHARED_LIB))" || \
+ $(INSTALL_DATA) $(SHARED_LIB) \
+ $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)
+ test -z "$(strip $(wildcard $(SOURCES:.c=.tcl)))" || \
+ $(INSTALL_DATA) $(wildcard $(SOURCES:.c=.tcl)) \
+ $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)
+ test -z "$(strip $(PDOBJECTS))" || \
+ $(INSTALL_DATA) $(PDOBJECTS) \
+ $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)
+
+# install library linked as single binary
+single_install: $(LIBRARY_NAME) install-doc install-examples install-manual
+ $(INSTALL_DIR) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)
+ $(INSTALL_PROGRAM) $(LIBRARY_NAME).$(EXTENSION) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)
+ $(STRIP) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)/$(LIBRARY_NAME).$(EXTENSION)
+
+install-doc:
+ $(INSTALL_DIR) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)
+ test -z "$(strip $(SOURCES) $(PDOBJECTS))" || \
+ $(INSTALL_DATA) $(HELPPATCHES) \
+ $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)
+ $(INSTALL_DATA) README.txt $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)/README.txt
+ $(INSTALL_DATA) LICENSE.txt $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)/LICENSE.txt
+
+install-examples:
+ test -z "$(strip $(EXAMPLES))" || \
+ $(INSTALL_DIR) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)/examples && \
+ for file in $(EXAMPLES); do \
+ $(INSTALL_DATA) examples/$$file $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)/examples; \
+ done
+
+install-manual:
+ test -z "$(strip $(MANUAL))" || \
+ $(INSTALL_DIR) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)/manual && \
+ for file in $(MANUAL); do \
+ $(INSTALL_DATA) manual/$$file $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)/manual; \
+ done
+
+
+clean:
+ -rm -f -- $(SOURCES:.c=.o) $(SOURCES_LIB:.c=.o) $(SHARED_SOURCE:.c=.o)
+ -rm -f -- $(SOURCES:.c=.$(EXTENSION))
+ -rm -f -- $(LIBRARY_NAME).o
+ -rm -f -- $(LIBRARY_NAME).$(EXTENSION)
+ -rm -f -- $(SHARED_LIB)
+
+distclean: clean
+ -rm -f -- $(DISTBINDIR).tar.gz
+ -rm -rf -- $(DISTBINDIR)
+ -rm -f -- $(DISTDIR).tar.gz
+ -rm -rf -- $(DISTDIR)
+ -rm -f -- $(ORIGDIR).tar.gz
+ -rm -rf -- $(ORIGDIR)
+
+
+$(DISTBINDIR):
+ $(INSTALL_DIR) $(DISTBINDIR)
+
+libdir: all $(DISTBINDIR)
+ $(INSTALL_DATA) $(LIBRARY_NAME)-meta.pd $(DISTBINDIR)
+ $(INSTALL_DATA) $(SOURCES) $(SHARED_SOURCE) $(SHARED_HEADER) $(DISTBINDIR)
+ $(INSTALL_DATA) $(HELPPATCHES) $(DISTBINDIR)
+ test -z "$(strip $(EXTRA_DIST))" || \
+ $(INSTALL_DATA) $(EXTRA_DIST) $(DISTBINDIR)
+# tar --exclude-vcs -czpf $(DISTBINDIR).tar.gz $(DISTBINDIR)
+
+$(DISTDIR):
+ $(INSTALL_DIR) $(DISTDIR)
+
+$(ORIGDIR):
+ $(INSTALL_DIR) $(ORIGDIR)
+
+dist: $(DISTDIR)
+ $(INSTALL_DATA) Makefile $(DISTDIR)
+ $(INSTALL_DATA) README.txt $(DISTDIR)
+ $(INSTALL_DATA) LICENSE.txt $(DISTDIR)
+ $(INSTALL_DATA) $(LIBRARY_NAME)-meta.pd $(DISTDIR)
+ test -z "$(strip $(ALLSOURCES))" || \
+ $(INSTALL_DATA) $(ALLSOURCES) $(DISTDIR)
+ test -z "$(strip $(wildcard $(ALLSOURCES:.c=.tcl)))" || \
+ $(INSTALL_DATA) $(wildcard $(ALLSOURCES:.c=.tcl)) $(DISTDIR)
+ test -z "$(strip $(SHARED_HEADER))" || \
+ $(INSTALL_DATA) $(SHARED_HEADER) $(DISTDIR)
+ test -z "$(strip $(SHARED_SOURCE))" || \
+ $(INSTALL_DATA) $(SHARED_SOURCE) $(DISTDIR)
+ test -z "$(strip $(PDOBJECTS))" || \
+ $(INSTALL_DATA) $(PDOBJECTS) $(DISTDIR)
+ test -z "$(strip $(HELPPATCHES))" || \
+ $(INSTALL_DATA) $(HELPPATCHES) $(DISTDIR)
+ test -z "$(strip $(EXTRA_DIST))" || \
+ $(INSTALL_DATA) $(EXTRA_DIST) $(DISTDIR)
+ test -z "$(strip $(EXAMPLES))" || \
+ $(INSTALL_DIR) $(DISTDIR)/examples && \
+ for file in $(EXAMPLES); do \
+ $(INSTALL_DATA) examples/$$file $(DISTDIR)/examples; \
+ done
+ test -z "$(strip $(MANUAL))" || \
+ $(INSTALL_DIR) $(DISTDIR)/manual && \
+ for file in $(MANUAL); do \
+ $(INSTALL_DATA) manual/$$file $(DISTDIR)/manual; \
+ done
+ tar --exclude-vcs -czpf $(DISTDIR).tar.gz $(DISTDIR)
+
+# make a Debian source package
+dpkg-source:
+ debclean
+ make distclean dist
+ mv $(DISTDIR) $(ORIGDIR)
+ tar --exclude-vcs -czpf ../$(ORIGDIR).orig.tar.gz $(ORIGDIR)
+ rm -f -- $(DISTDIR).tar.gz
+ rm -rf -- $(DISTDIR) $(ORIGDIR)
+ cd .. && dpkg-source -b $(LIBRARY_NAME)
+
+etags:
+ etags *.h $(SOURCES) ../../pd/src/*.[ch] /usr/include/*.h /usr/include/*/*.h
+
+showsetup:
+ @echo "CC: $(CC)"
+ @echo "CFLAGS: $(CFLAGS)"
+ @echo "LDFLAGS: $(LDFLAGS)"
+ @echo "LIBS: $(LIBS)"
+ @echo "ALL_CFLAGS: $(ALL_CFLAGS)"
+ @echo "ALL_LDFLAGS: $(ALL_LDFLAGS)"
+ @echo "ALL_LIBS: $(ALL_LIBS)"
+ @echo "PD_INCLUDE: $(PD_INCLUDE)"
+ @echo "PD_PATH: $(PD_PATH)"
+ @echo "objectsdir: $(objectsdir)"
+ @echo "LIBRARY_NAME: $(LIBRARY_NAME)"
+ @echo "LIBRARY_VERSION: $(LIBRARY_VERSION)"
+ @echo "SOURCES: $(SOURCES)"
+ @echo "SHARED_HEADER: $(SHARED_HEADER)"
+ @echo "SHARED_SOURCE: $(SHARED_SOURCE)"
+ @echo "SHARED_LIB: $(SHARED_LIB)"
+ @echo "PDOBJECTS: $(PDOBJECTS)"
+ @echo "ALLSOURCES: $(ALLSOURCES)"
+ @echo "ALLSOURCES TCL: $(wildcard $(ALLSOURCES:.c=.tcl))"
+ @echo "UNAME: $(UNAME)"
+ @echo "CPU: $(CPU)"
+ @echo "pkglibdir: $(pkglibdir)"
+ @echo "DISTDIR: $(DISTDIR)"
+ @echo "ORIGDIR: $(ORIGDIR)"
diff --git a/gemnotes_0.2.3/src/ekext-meta.pd b/gemnotes_0.2.3/src/ekext-meta.pd
new file mode 100755
index 0000000..3d50706
--- /dev/null
+++ b/gemnotes_0.2.3/src/ekext-meta.pd
@@ -0,0 +1,6 @@
+#N canvas 15 49 200 200 10;
+#N canvas 25 49 420 300 META 0;
+#X text 13 41 NAME ekext;
+#X text 10 25 AUTHOR Ed Kelly;
+#X text 10 10 VERSION 0.1.3;
+#X restore 10 10 pd META;
diff --git a/gemnotes_0.2.3/src/gemnotes_countbars.c b/gemnotes_0.2.3/src/gemnotes_countbars.c
new file mode 100755
index 0000000..4650d22
--- /dev/null
+++ b/gemnotes_0.2.3/src/gemnotes_countbars.c
@@ -0,0 +1,255 @@
+#include "m_pd.h"
+#include <math.h>
+
+static t_class *gemnotes_countbars_class;
+
+/* list inlet: [rhythm dur vel start]
+ * when the BPM changes, the offset accumulates the start time of the first
+ * note, and is subtracted from subsequent inter-onset times
+ */
+
+/* The Gemnotes system can only handle one voice at the moment. */
+
+/* this object is probably where key signatures (flatsharp flag) and dynamics
+ * will be calculated eventually, since it has access to the pitch and
+ * velocity information
+ */
+
+typedef struct _gemnotes_countbars {
+ t_object x_obj;
+ t_atom outlist[5];
+ t_float bpm, qtime, divtime, numer, denom;
+ // int setoffset, iotdiv;
+ t_float allcount, barcount, barlen, bardiv, iot, offset, rhythm, dur, notedur, nbars;
+ t_float start, pitch, vel;
+ t_float prevstart, previot, prevdurt, prevdur, tdiff, polydiff;
+ t_float outstart;
+ int ndurs, polycompare, debug;
+ t_outlet *note, *bars;
+} t_gemnotes_countbars;
+
+/* There are real problems with this algorithm. Firstly it assumes that all notes
+ * are not polyrhythmic against the basic pulse, so manual editing of the score
+ * will be necessary if there are polyrhythmic note divisions. Secondly, there can
+ * only be one voice with chords.
+ * Perhaps this should all be folded into polyquant, with polyquant
+ * measuring all 136 MIDI timings internally...
+ * ...for live input transcription, there would need to be quantization
+ * of the inter-onset time.
+ * I need to learn about clocks in PD!
+ */
+
+void gemnotes_countbars_note (t_gemnotes_countbars *z, t_symbol *s, int argc, t_atom *argv)
+{
+ float newcount = 0;
+ if(argc == 5)
+ {
+ z->prevstart = z->start;
+ z->prevdur = z->dur;
+
+ z->pitch = atom_getfloat(argv);
+ z->rhythm = atom_getfloat(argv+1);
+ z->dur = atom_getfloat(argv+2);
+ z->vel = atom_getfloat(argv+3);
+ z->start = atom_getfloat(argv+4);
+
+ z->prevdurt = z->notedur;
+ z->notedur = z->divtime * z->dur;
+
+
+ z->previot = z->iot;
+ z->iot = z->start - z->prevstart;
+
+ z->tdiff = z->iot - z->prevdurt;
+ z->outstart = 0;
+ /* Deal with polyrhythmic notes - a kludge until polyquant is integrated with this object */
+ z->polydiff = z->iot / z->divtime;
+ z->polycompare = (int)z->polydiff;
+ if(z->tdiff < 2 && z->tdiff > -2 && z->allcount > 0)
+ {
+ newcount = z->barcount + z->prevdur;
+ if(newcount >= z->barlen)
+ {
+ z->nbars++;
+ outlet_float(z->bars, z->nbars);
+ }
+ z->barcount = (float)((int)newcount % (int)z->barlen);
+ z->allcount++;
+ if(z->debug == 1) post("barcount = %d, barlen = %d, + sign",(int)z->barcount, (int)z->barlen);
+ z->outstart = -1;
+ }
+ else if((float)z->polycompare - z->polydiff < -2)
+ {
+ newcount = z->barcount + z->polydiff;
+ if(newcount >= z->barlen)
+ {
+ z->nbars++;
+ outlet_float(z->bars, z->nbars);
+ newcount -= z->barlen;
+ z->barcount = newcount;
+ }
+ else if(newcount < z->barlen)
+ {
+ z->barcount = newcount;
+ }
+ z->outstart = z->barcount;
+ if(z->debug == 1) post("barcount = %d, barlen = %d, poly",(int)z->barcount, (int)z->barlen);
+ }
+ else if(z->iot < 2 && z->allcount > 0)
+ {
+ z->outstart = -2;
+ post("chord");
+ }
+ else if(z->allcount == 0)
+ {
+ z->outstart = 0;
+ z->allcount++;
+ z->nbars = 1;
+ outlet_float(z->bars, z->nbars);
+ post("start");
+ }
+ else if(z->tdiff > 1)
+ {
+ //assumes that the inter-onset time is always either 1 duration or more
+ //this bit will need to be changed for multi-voice scenarios to be supported
+ //but since it is proportional notation, maybe we can minimize rests
+ z->ndurs = 1;
+ while(z->tdiff > 1)
+ {
+ z->ndurs++;
+ z->tdiff -= z->divtime;
+ }
+ z->allcount += (float)z->ndurs;
+ newcount = (float)z->ndurs;
+ while(newcount >= z->barlen)
+ {
+ newcount -= z->barlen;
+ z->nbars++;
+ outlet_float(z->bars, z->nbars);
+ }
+ newcount += z->barcount;
+ if(newcount >= z->barlen)
+ {
+ z->nbars++;
+ outlet_float(z->bars, z->nbars);
+ }
+ z->barcount = (float)((int)(z->barcount + (float)z->ndurs) % (int)z->barlen);
+ z->outstart = z->barcount;
+ if(z->debug == 1) post("barcount = %d, barlen = %d - floatstart",(int)z->barcount, (int)z->barlen);
+ }
+ else
+ {
+ post("iot:%f,tdiff:%f,prevdur:%f,previot:%f,nomethod",z->iot, z->tdiff, z->prevdurt, z->previot);
+ }
+ SETFLOAT(&z->outlist[0], z->outstart);
+ SETFLOAT(&z->outlist[1], z->pitch);
+ SETFLOAT(&z->outlist[2], z->dur);
+ SETFLOAT(&z->outlist[4], z->vel);
+ outlet_list(z->note, gensym("list"), 5, z->outlist);
+ }
+}
+
+void gemnotes_countbars_bpm (t_gemnotes_countbars *z, t_floatarg f)
+{
+ if(f != z->bpm && f > 0)
+ {
+ post("Tempo = %f Beats Per-Minute",f);
+ z->bpm = f;
+ // z->setoffset = 1;
+ z->qtime = 60000/f;
+ z->divtime = z->qtime / (z->bardiv / 4);
+ z->notedur = z->divtime * z->dur;
+ }
+}
+
+void gemnotes_countbars_bar (t_gemnotes_countbars *z, t_symbol *s, int argc, t_atom *argv)
+{
+ if(argc > 2)
+ {
+ z->numer = atom_getfloat(argv);
+ z->denom = atom_getfloat(argv+1);
+ z->bardiv = atom_getfloat(argv+2);
+ z->barlen = z->numer / z->denom * z->bardiv;
+ z->divtime = z->qtime / (z->bardiv / 4);
+ z->prevdurt = z->divtime;
+ z->barcount = 0;
+ post("Bar of %d/%d, divisions: %d", (int)z->numer, (int)z->denom, (int)z->bardiv);
+ }
+ else if(argc > 1)
+ {
+ z->numer = atom_getfloat(argv);
+ z->denom = atom_getfloat(argv+1);
+ z->barlen = z->numer / z->denom * z->bardiv;
+ z->divtime = z->qtime / (z->bardiv / 4);
+ z->prevdurt = z->divtime;
+ z->barcount = 0;
+ post("Bar of %d/%d, divisions: %d", (int)z->numer, (int)z->denom, (int)z->bardiv);
+ }
+ else if(argc > 0)
+ {
+ z->numer = atom_getfloat(argv);
+ z->barlen = z->numer / z->denom * z->bardiv;
+ z->divtime = z->qtime / (z->bardiv / 4);
+ z->prevdurt = z->divtime;
+ z->barcount = 0;
+ post("Bar of %d/%d, divisions: %d", (int)z->numer, (int)z->denom, (int)z->bardiv);
+ }
+}
+
+void gemnotes_countbars_debug(t_gemnotes_countbars *z, t_floatarg f)
+{
+ z->debug = f != 0 ? (int)f : 0;
+}
+
+void gemnotes_countbars_reset(t_gemnotes_countbars *z)
+{
+ z->allcount = z->barcount = 0;
+ z->nbars = 1;
+}
+
+void *gemnotes_countbars_new(t_symbol *s, int argc, t_atom *argv)
+{
+ t_gemnotes_countbars *z = (t_gemnotes_countbars *)pd_new(gemnotes_countbars_class);
+ int i;
+ for(i=0;i<5;i++) SETFLOAT(&z->outlist[i], 0);
+
+ z->bpm = 120;
+ z->numer = 4;
+ z->denom = 4;
+ z->bardiv = 16;
+ // args: bpm, numer, denom, div
+ if(argc > 0) z->bpm = atom_getfloat(argv);
+ if(argc > 1) z->numer = atom_getfloat(argv+1);
+ if(argc > 2) z->denom = atom_getfloat(argv+2);
+ if(argc > 3) z->bardiv = atom_getfloat(argv+3);
+
+ z->qtime = 60000/z->bpm;
+ z->divtime = z->qtime / (z->bardiv / z->denom);
+ z->prevdurt = z->divtime;
+
+ z->barlen = z->numer / z->denom * z->bardiv;
+ z->barcount = z->allcount = 0;
+ z->previot = 0;
+ z->prevstart = -125;
+ z->nbars = 1;
+ z->note = outlet_new(&z->x_obj, gensym("list"));
+ z->bars = outlet_new(&z->x_obj, gensym("float"));
+
+ return(void *)z;
+}
+
+void gemnotes_countbars_setup(void)
+{
+ gemnotes_countbars_class = class_new(gensym("gemnotes_countbars"),
+ (t_newmethod)gemnotes_countbars_new,
+ 0, sizeof(t_gemnotes_countbars),
+ 0, A_GIMME, 0);
+ post("gemnotes_countbars - yu need this for realtime notation...");
+ post("version 0.4...by Ed Kelly 2010 - morph_2016@yahoo.co.uk");
+
+ class_addmethod(gemnotes_countbars_class, (t_method)gemnotes_countbars_note, gensym("note"), A_GIMME, 0);
+ class_addmethod(gemnotes_countbars_class, (t_method)gemnotes_countbars_bar, gensym("bar"), A_GIMME, 0);
+ class_addmethod(gemnotes_countbars_class, (t_method)gemnotes_countbars_bpm, gensym("bpm"), A_DEFFLOAT, 0);
+ class_addmethod(gemnotes_countbars_class, (t_method)gemnotes_countbars_reset, gensym("reset"), A_DEFFLOAT, 0);
+ class_addmethod(gemnotes_countbars_class, (t_method)gemnotes_countbars_debug, gensym("debug"), A_DEFFLOAT, 0);
+}
diff --git a/gemnotes_0.2.3/src/gemnotes_counter-help.pd b/gemnotes_0.2.3/src/gemnotes_counter-help.pd
new file mode 100755
index 0000000..e4ae13a
--- /dev/null
+++ b/gemnotes_0.2.3/src/gemnotes_counter-help.pd
@@ -0,0 +1,68 @@
+#N canvas 0 0 590 490 10;
+#X obj 190 141 gemnotes_counter;
+#X floatatom 23 209 5 0 0 3 offset - -;
+#X floatatom 62 209 5 0 0 3 rhythm - -;
+#X floatatom 102 210 5 0 0 3 duration - -;
+#X floatatom 158 210 5 0 0 3 grouplen - -;
+#X floatatom 212 210 5 0 0 3 groupcount - -;
+#X floatatom 290 207 5 0 0 3 rest_offset - -;
+#X floatatom 361 208 5 0 0 3 rest_rhythm - -;
+#X obj 259 173 tgl 15 0 empty empty beam -2 21 0 10 -262144 -1 -1 0
+1;
+#X obj 236 173 tgl 15 0 empty empty tie -2 21 0 10 -262144 -1 -1 0
+1;
+#X obj 401 190 bng 15 250 50 0 empty empty newbar -3 21 0 10 -262144
+-1 -1;
+#X obj 116 36 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 176 39 f;
+#X floatatom 191 24 5 0 0 0 - - -;
+#X obj 176 22 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X msg 245 37 bar 4 4 4 16;
+#X msg 258 57 bar 6 8 6 16 4 16 2 16;
+#X msg 249 91 step 1;
+#X msg 314 93 step 2;
+#X msg 362 94 allstep 0.11;
+#X msg 363 115 allstep 0.18;
+#X obj 97 281 cnv 15 300 150 empty empty gemnotes_milestones 20 12
+0 14 -204800 -13330 0;
+#X text 123 309 Phase 1: build prototype objects.;
+#X text 123 327 Phase 2: build prototype objectmakers;
+#X text 124 345 Phase 3: build gemnotes_counter;
+#X text 124 364 Phase 4: Implement and debug counter object;
+#X text 125 382 Phase 5: build and link to score translator;
+#X text 125 399 Phase 6: rehearse and perform Islands 1;
+#X obj 103 309 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 103 327 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 103 345 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 103 363 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 103 381 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 103 399 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X text 406 345 September - December 2010;
+#X connect 0 0 1 0;
+#X connect 0 1 2 0;
+#X connect 0 2 3 0;
+#X connect 0 3 4 0;
+#X connect 0 4 5 0;
+#X connect 0 5 9 0;
+#X connect 0 6 8 0;
+#X connect 0 7 6 0;
+#X connect 0 8 7 0;
+#X connect 0 9 10 0;
+#X connect 11 0 0 0;
+#X connect 12 0 0 0;
+#X connect 13 0 12 1;
+#X connect 14 0 12 0;
+#X connect 15 0 0 0;
+#X connect 16 0 0 0;
+#X connect 17 0 0 0;
+#X connect 18 0 0 0;
+#X connect 19 0 0 0;
+#X connect 20 0 0 0;
diff --git a/gemnotes_0.2.3/src/gemnotes_counter.c b/gemnotes_0.2.3/src/gemnotes_counter.c
new file mode 100755
index 0000000..595e605
--- /dev/null
+++ b/gemnotes_0.2.3/src/gemnotes_counter.c
@@ -0,0 +1,1267 @@
+/* Gemnotes_counter is a beat, beamgroup and bar counter for the gemnotes system.
+ * It is used to count the elements of music notation, and to send commands to
+ * dynamic object makers to render notes, rests, time signatures and barlines.
+ * It keeps track of the number of obects created, and whether objects are linked
+ * together (such as beamed groups of notes).
+ * BSD license
+ */
+
+#include "m_pd.h"
+#include <math.h>
+
+static int gemnotes_counter_splits[6][33] = {
+ /* 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 */
+ {0,1,2,3,4,3,6,4,8,6,6, 8, 8, 8, 8, 8, 8, 8, 6, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8},
+ {0,0,0,0,0,2,0,3,0,3,4, 3, 4, 3, 6, 4, 8, 6, 6, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8},
+ {0,0,0,0,0,0,0,0,0,0,0, 0, 0, 2, 0, 3, 0, 3, 6, 3, 4, 3, 6, 4, 8, 6, 8, 8, 8, 8, 8, 8, 8},
+ {0,0,0,0,0,0,0,0,0,0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 3, 0, 3, 2, 3, 4, 3, 6, 4, 8},
+ {0,0,0,0,0,0,0,0,0,0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 3, 0},
+ {0,0,0,0,0,0,0,0,0,0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
+};
+
+t_class *gemnotes_counter_class;
+
+typedef struct gemnotes_counter
+{
+ t_object x_obj;
+ t_atom groups[128];
+ t_atom keysig[7];
+ t_atom temposign[3];
+ t_atom dynamics[5];
+ t_atom terrace[2];
+ t_float articulation;
+// t_float artnote;
+ int numgroups, nowgroup, beforerest;//, lastgroup;
+ t_float allcount, allstep;
+ t_float barcount, barlen, barrem, numerator, denominator, nextnumer, nextdenom;
+ t_float groupcount, grouplen, groupnum, groupdiv, grouprem, gnoterem, bnotecount;
+ t_float stepdiv, rhythm, duration, beam, tied, step, rrest, tailon;
+ t_float objects, initobjects, groupobject, barlast;
+ t_float barnotes, barrests, barpos, restlen, lastdur;
+ t_float tempo, stavelen, fstavenum, group_id;
+ int stavenum;
+ t_float fractional, offset, initoffset, keyset, rested, prevrested, polyrhythm;
+ t_outlet *off, *rhy, *dur, *grp, *gcount, *tie, *bm, *rest, *rhyrest, *bar, *slave, *numer, *denom, *g_obj, *tail, *tuple, *bpm, *n_obj, *debugger, *groupid, *artic, *dyn;//, *stave;
+} t_gemnotes_counter;
+
+void gemnotes_counter_bang(t_gemnotes_counter *z)
+/* This function inserts a note at the current position, then makes any adjustments
+ * needed for the next beamgroups and bars etc. It also generates tie signals,
+ * and indicates whether tuples are being used */
+{
+// outlet_float(z->artic, z->articulation);
+// z->articulation = 0;
+ z->gnoterem = z->grouprem / z->stepdiv;
+ float zpoly, polydiv;
+ int ipoly, gdiv, prevstave;
+ float chunk = z->step;
+ float thischunk, thatchunk, maxchunk, tail;
+ float prevnumer, prevdenom;
+ int i, j, x, y;
+ while(chunk > 0)
+ {
+// z->rested = 0;
+ thischunk = z->gnoterem <= chunk ? z->gnoterem : chunk;
+ thischunk = thischunk > 32 ? 32 : thischunk;
+ chunk -= thischunk;
+ z->beam = z->groupcount > 0 && z->groupdiv >= 8 ? 1 : 0;
+ i = (int)thischunk;
+ for(j=0;j<6;j++)
+ {
+ x = gemnotes_counter_splits[j][i];
+ if(x > 0)
+ {
+ /* prevstave = z->stavenum;
+ z->stavenum = (int)((z->allcount*z->allstep+z->offset) / z->stavelen);
+ z->fstavenum = (float)z->stavenum;
+ outlet_float(z->stave,z->fstavenum);
+ if(z->stavenum > prevstave)
+ {
+ z->objects = z->initobjects;
+ z->groupobject = z->objects;
+ z->groupnum -= z->groupcount;
+ z->groupcount = 0;
+ z->beam = 0;
+ z->allcount = 0;
+ } */
+ z->tailon = z->grouprem <= z->step && z->rested == 1 || z->groupcount == z->groupnum - 1 && z->rested == 1 ? 1 : 0;
+ thischunk -= (float)x;
+ z->tied = chunk > 0 || thischunk > 0 ? 1 : 0;
+
+ z->barlast = 0;
+ outlet_float(z->groupid,z->group_id);
+ outlet_float(z->n_obj, z->objects);
+ outlet_float(z->tuple, z->polyrhythm);
+ if(z->beam == 0)
+ {
+ z->groupobject = z->objects;
+ outlet_float(z->g_obj, z->objects);
+ }
+ outlet_float(z->artic, z->articulation);
+ z->articulation = 0;
+ outlet_float(z->tail, z->tailon);
+ z->objects++;
+ outlet_float(z->bm, z->beam);
+ outlet_float(z->tie, z->tied);
+ outlet_float(z->gcount, z->groupcount);
+ outlet_float(z->grp, z->groupnum);
+ outlet_float(z->dur, (float)x);
+ outlet_float(z->rhy, z->rhythm);
+ outlet_float(z->off, z->allcount*z->allstep+z->offset);
+ thatchunk = (float)x * z->stepdiv;
+ maxchunk = thatchunk > 16 ? 16 : thatchunk;
+ z->allcount += maxchunk;
+ z->barcount += thatchunk;
+ z->barrem -= thatchunk;
+ // z->barnotes += thatchunk;
+ z->groupcount += (float)x;
+ z->grouprem -= thatchunk;
+ z->lastdur = thatchunk;
+ z->prevrested = z->rested;
+ z->rested = 0;
+ }
+ }
+ if(z->barrem < 1 && z->allcount > 0 && z->barlast == 0)
+ {
+ z->group_id++;
+ z->barlast = 1;
+ outlet_float(z->groupid, z->group_id);
+ outlet_float(z->n_obj, z->objects);
+ // z->barpos += (z->barnotes + z->barrests) * z->allstep;
+ maxchunk = z->lastdur > 16 ? 16 : z->lastdur;
+ z->barpos = (z->allcount - (maxchunk / 2)) * z->allstep + z->offset;
+ // This is the alternative barpos method, if the other one can't be made to work.
+ z->objects++;
+ outlet_float(z->bar, z->barpos);
+ z->barnotes = z->barrests = 0;
+ if(z->nextnumer)
+ {
+ prevnumer = z->numerator;
+ prevdenom = z->denominator;
+ z->numerator = z->nextnumer;
+ if(z->nextdenom)
+ {
+ z->denominator = z->nextdenom;
+ }
+ if(z->numerator != prevnumer || z->denominator != prevdenom)
+ {
+ outlet_float(z->n_obj, z->objects);
+ z->objects++;
+ outlet_float(z->denom, z->denominator);
+ outlet_float(z->numer, z->numerator);
+ }
+ z->nextnumer = z->nextdenom = 0;
+ z->barlen = (64 / z->denominator) * z->numerator;
+ }
+ z->nowgroup = 0;
+ z->groupcount = 0;
+ z->barcount = 0;
+ z->groupnum = atom_getfloatarg(z->nowgroup, 128, z->groups);
+ z->groupdiv = atom_getfloatarg(z->nowgroup + 1, 128, z->groups);
+ z->polyrhythm = 0;
+ gdiv = (int)z->groupdiv;
+ if(gdiv != 64 && gdiv != 32 && gdiv != 16 && gdiv != 8 && gdiv != 4 && gdiv != 2 && gdiv != 1)
+ {
+ // polydiv = 1;
+ zpoly = z->groupdiv;
+ ipoly = (int)zpoly;
+
+ for(i=0;i<7;i++)
+ {
+ // polydiv *= 0.5;
+ zpoly *= 0.5;
+ ipoly = (int)zpoly;
+ post("ipoly = %d, zpoly = %f",ipoly,zpoly);
+ if(fabs(zpoly - (float)ipoly) < 0.1) z->polyrhythm = zpoly;
+ }
+ }
+ z->stepdiv = 64 / z->groupdiv;
+ z->grouplen = z->groupnum * z->stepdiv;
+ z->grouprem = z->grouplen;
+ z->rhythm = z->groupdiv >= 64 ? 64 : z->groupdiv >= 32 ? 32 : z->groupdiv >= 16 ? 16 : z->groupdiv >= 8 ? 8 : z->groupdiv >= 4 ? 4 : z->groupdiv >= 2 ? 2 : 1;
+ z->barrem = z->barlen;
+ }
+ else if(z->grouprem < 1)
+ {
+ z->group_id++;
+ outlet_float(z->groupid, z->group_id);
+ z->nowgroup = (z->nowgroup + 1) % z->numgroups;
+ z->groupcount = 0;
+ z->groupnum = atom_getfloatarg(z->nowgroup * 2, 128, z->groups);
+ z->groupdiv = atom_getfloatarg(z->nowgroup * 2 + 1, 128, z->groups);
+ z->polyrhythm = 0;
+ gdiv = (int)z->groupdiv;
+ if(gdiv != 64 && gdiv != 32 && gdiv != 16 && gdiv != 8 && gdiv != 4 && gdiv != 2 && gdiv != 1)
+ {
+ // polydiv = 1;
+ zpoly = z->groupdiv;
+ ipoly = (int)zpoly;
+
+ for(i=0;i<7;i++)
+ {
+ // polydiv *= 0.5;
+ zpoly *= 0.5;
+ ipoly = (int)zpoly;
+ post("ipoly = %d, zpoly = %f",ipoly,zpoly);
+ if(fabs(zpoly - (float)ipoly) < 0.1) z->polyrhythm = zpoly;
+ }
+ }
+ z->stepdiv = 64 / z->groupdiv;
+ z->grouplen = z->groupnum * z->stepdiv;
+ z->grouprem = z->grouplen;
+ z->rhythm = z->groupdiv >= 64 ? 64 : z->groupdiv >= 32 ? 32 : z->groupdiv >= 16 ? 16 : z->groupdiv >= 8 ? 8 : z->groupdiv >= 4 ? 4 : z->groupdiv >= 2 ? 2 : 1;
+ }
+ }
+ outlet_float(z->debugger, z->allcount*z->allstep+z->offset);
+}
+
+void gemnotes_counter_float(t_gemnotes_counter *z, t_floatarg f)
+/* this function inserts rests if the float is different from the current position,
+ * also a barline if the float is less than the current position within the bar.
+ * Otherwise it inserts a note at the current position if the float is the same (sic)*/
+{
+ z->gnoterem = z->grouprem / z->stepdiv;
+ int i, j, x;
+ float fpos = f * z->stepdiv;
+ int ipoly, gdiv, prevstave;
+ float zpoly, polydiv;
+ float chunk, thischunk, thatchunk, maxchunk, prevnumer, prevdenom;
+ if(fpos != z->barcount)
+ {
+ if(fpos < z->barcount)
+ {
+ // z->beam = 0;
+ j = 0;
+ chunk = (z->barrem + fpos) / z->stepdiv;
+ z->barpos += ((z->barrem / z->stepdiv) * z->restlen + z->barnotes) * z->allstep;
+ while(chunk > 0)
+ {
+ z->barlast = 0;
+ thischunk = z->gnoterem <= chunk ? z->gnoterem : chunk;
+ thischunk = thischunk > 32 ? 32 : thischunk;
+ chunk -= thischunk;
+ i = (int)thischunk;
+ for(j=0;j<6;j++)
+ {
+ x = gemnotes_counter_splits[j][i];
+ if(x > 0)
+ {
+ /* prevstave = z->stavenum;
+ z->stavenum = (int)((z->allcount*z->allstep+z->offset) / z->stavelen);
+ z->fstavenum = (float)z->stavenum;
+ outlet_float(z->stave,z->fstavenum);
+ if(z->stavenum > prevstave)
+ {
+ z->objects = z->initobjects;
+ z->groupobject = z->objects;
+ z->groupnum -= z->groupcount;
+ z->groupcount = 0;
+ z->allcount = 0;
+ }
+ if(z->rested == 0 && z->prevrested == 1)
+ {
+ z->tailon = z->groupobject;
+ outlet_float(z->tail, z->tailon);
+ } */
+ z->prevrested = z->rested;
+ z->rested = 1;
+ outlet_float(z->n_obj, z->objects);
+ z->objects++;
+ outlet_float(z->tuple, z->polyrhythm);
+ outlet_float(z->rhyrest, z->rhythm);
+ outlet_float(z->dur, (float)x);
+ outlet_float(z->rest, z->allcount*z->allstep + z->offset);
+ thatchunk = (float)x * z->stepdiv;
+ z->allcount += thatchunk * z->restlen;
+ // z->barrests += thatchunk * z->restlen;
+ z->barcount += thatchunk;
+ z->barrem -= thatchunk;
+ z->groupcount += (float)x;
+ thischunk -= (float)x;
+ z->grouprem -= thatchunk;
+ z->lastdur = thatchunk * z->restlen;
+ z->rested = 1;
+ }
+ }
+ if(z->barrem < 1 && z->barlast == 0) //&& z->allcount > 0)
+ {
+ z->group_id++;
+ outlet_float(z->groupid, z->group_id);
+ outlet_float(z->n_obj, z->objects);
+ z->barlast = 1;
+ z->objects++;
+ maxchunk = z->lastdur > 16 ? 16 : z->lastdur;
+ z->barpos = (z->allcount - (maxchunk / 2)) * z->allstep + z->offset;
+ // z->barpos += (z->barnotes + z->barrests) * z->allstep;
+ outlet_float(z->bar, z->barpos);
+ z->barnotes = z->barrests = 0;
+ if(z->nextnumer)
+ {
+ prevnumer = z->numerator;
+ prevdenom = z->denominator;
+ z->numerator = z->nextnumer;
+ if(z->nextdenom)
+ {
+ z->denominator = z->nextdenom;
+ }
+ if(z->numerator != prevnumer || z->denominator != prevdenom)
+ {
+ outlet_float(z->n_obj, z->objects);
+ z->objects++;
+ outlet_float(z->denom, z->denominator);
+ outlet_float(z->numer, z->numerator);
+ }
+ z->nextnumer = z->nextdenom = 0;
+ z->barlen = (64 / z->denominator) * z->numerator;
+ }
+
+ z->nowgroup = 0;
+ z->groupnum = atom_getfloatarg(z->nowgroup * 2, 128, z->groups);
+ z->groupdiv = atom_getfloatarg(z->nowgroup * 2 + 1, 128, z->groups);
+ z->stepdiv = 64 / z->groupdiv;
+ z->barcount = fpos * z->stepdiv;
+ z->barrem = z->barlen - z->barcount;
+ z->grouplen = z->groupnum * z->stepdiv;
+ z->grouprem = z->groupnum - fpos;
+ if(z->grouprem <= 0) // a horrible kludge!!!recursion needed
+ {
+ z->nowgroup = (z->nowgroup + 1) % z->numgroups;
+ z->groupnum = atom_getfloatarg(z->nowgroup * 2, 128, z->groups);
+ z->groupdiv = atom_getfloatarg(z->nowgroup * 2 + 1, 128, z->groups);
+ z->stepdiv = 64 / z->groupdiv;
+ z->grouplen = z->groupnum * z->stepdiv;
+ z->grouprem = z->groupnum - (0 - fpos);
+ if(z->grouprem <= 0)
+ {
+ z->nowgroup = (z->nowgroup + 1) % z->numgroups;
+ z->groupnum = atom_getfloatarg(z->nowgroup * 2, 128, z->groups);
+ z->groupdiv = atom_getfloatarg(z->nowgroup * 2 + 1, 128, z->groups);
+ z->stepdiv = 64 / z->groupdiv;
+ z->grouplen = z->groupnum * z->stepdiv;
+ z->grouprem = z->groupnum - (0 - z->grouprem);
+ }
+ }
+ z->rhythm = z->groupdiv >= 64 ? 64 : z->groupdiv >= 32 ? 32 : z->groupdiv >= 16 ? 16 : z->groupdiv >= 8 ? 8 : z->groupdiv >= 4 ? 4 : z->groupdiv >= 2 ? 2 : 1;
+ z->groupcount = 0;
+ z->polyrhythm = 0;
+ gdiv = (int)z->groupdiv;
+ if(gdiv != 64 && gdiv != 32 && gdiv != 16 && gdiv != 8 && gdiv != 4 && gdiv != 2 && gdiv != 1)
+ {
+ // polydiv = 1;
+ zpoly = z->groupdiv;
+ ipoly = (int)zpoly;
+
+ for(i=0;i<7;i++)
+ {
+ // polydiv *= 0.5;
+ zpoly *= 0.5;
+ ipoly = (int)zpoly;
+ post("ipoly = %d, zpoly = %f",ipoly,zpoly);
+ if(fabs(zpoly - (float)ipoly) < 0.1) z->polyrhythm = zpoly;
+ }
+ }
+ }
+ else if(z->grouprem < 1)
+ {
+ z->group_id++;
+ outlet_float(z->groupid, z->group_id);
+ z->nowgroup = (z->nowgroup + 1) % z->numgroups;
+ z->groupcount = 0;
+ z->groupnum = atom_getfloatarg(z->nowgroup * 2, 128, z->groups);
+ z->groupdiv = atom_getfloatarg(z->nowgroup * 2 + 1, 128, z->groups);
+ z->stepdiv = 64 / z->groupdiv;
+ z->grouplen = z->groupnum * z->stepdiv;
+ z->grouprem = z->grouplen;
+ z->rhythm = z->groupdiv >= 64 ? 64 : z->groupdiv >= 32 ? 32 : z->groupdiv >= 16 ? 16 : z->groupdiv >= 8 ? 8 : z->groupdiv >= 4 ? 4 : z->groupdiv >= 2 ? 2 : 1;
+ z->polyrhythm = 0;
+ gdiv = (int)z->groupdiv;
+ if(gdiv != 64 && gdiv != 32 && gdiv != 16 && gdiv != 8 && gdiv != 4 && gdiv != 2 && gdiv != 1)
+ {
+ polydiv = 1;
+ zpoly = z->groupdiv;
+ ipoly = (int)zpoly;
+
+ for(i=0;i<7;i++)
+ {
+ polydiv *= 0.5;
+ zpoly *= 0.5;
+ ipoly = (int)zpoly;
+ post("ipoly = %d, zpoly = %f",ipoly,zpoly);
+ if(fabs(zpoly - (float)ipoly) < 0.1) z->polyrhythm = zpoly;
+ }
+ }
+ }
+ }
+ }
+ else if(fpos > z->barcount)
+ {
+ z->beam = 0;
+ chunk = (fpos - z->barcount) / z->stepdiv;
+ while(chunk > 0)
+ {
+ thischunk = z->gnoterem <= chunk ? z->gnoterem : chunk;
+ thischunk = thischunk > 32 ? 32 : thischunk;
+ chunk -= thischunk;
+ i = (int)thischunk;
+ for(j=0;j<6;j++)
+ {
+ x = gemnotes_counter_splits[j][i];
+ if(x > 0)
+ {
+ z->barlast = 0;
+ /* prevstave = z->stavenum;
+ z->stavenum = (int)((z->allcount*z->allstep+z->offset) / z->stavelen);
+ z->fstavenum = (float)z->stavenum;
+ outlet_float(z->stave,z->fstavenum);
+ if(z->stavenum > prevstave)
+ {
+ z->objects = z->initobjects;
+ z->groupobject = z->objects;
+ z->groupnum -= z->groupcount;
+ z->groupcount = 0;
+ z->allcount = 0;
+ } */
+ if(z->rested == 0 && z->prevrested == 1)
+ {
+ z->tailon = z->groupobject;
+ outlet_float(z->tail, z->tailon);
+ }
+ z->prevrested = z->rested;
+ z->rested = 1;
+ outlet_float(z->groupid, z->group_id);
+ outlet_float(z->n_obj, z->objects);
+ z->objects++;
+ outlet_float(z->tuple, z->polyrhythm);
+ outlet_float(z->rhyrest, z->rhythm);
+ outlet_float(z->dur, (float)x);
+ outlet_float(z->rest, z->allcount*z->allstep + z->offset);
+ thatchunk = (float)x * z->stepdiv;
+ z->allcount += thatchunk * z->restlen;
+ // z->barrests += thatchunk * z->restlen;
+ z->barcount += thatchunk;
+ z->barrem -= thatchunk;
+ z->groupcount += (float)x;
+ thischunk -= (float)x;
+ z->grouprem -= thatchunk;
+ z->lastdur = thatchunk * z->restlen;
+ }
+ }
+ if(z->grouprem < 1)
+ {
+ z->group_id++;
+ outlet_float(z->groupid, z->group_id);
+ z->nowgroup = (z->nowgroup + 1) % z->numgroups;
+ z->groupcount = 0;
+ z->groupnum = atom_getfloatarg(z->nowgroup * 2, 128, z->groups);
+ z->groupdiv = atom_getfloatarg(z->nowgroup * 2 + 1, 128, z->groups);
+ z->polyrhythm = 0;
+ gdiv = (int)z->groupdiv;
+ if(gdiv != 64 && gdiv != 32 && gdiv != 16 && gdiv != 8 && gdiv != 4 && gdiv != 2 && gdiv != 1)
+ {
+ // polydiv = 1;
+ zpoly = z->groupdiv;
+ ipoly = (int)zpoly;
+
+ for(i=0;i<7;i++)
+ {
+ // polydiv *= 0.5;
+ zpoly *= 0.5;
+ ipoly = (int)zpoly;
+ post("ipoly = %d, zpoly = %f",ipoly,zpoly);
+ if(fabs(zpoly - (float)ipoly) < 0.1) z->polyrhythm = zpoly;
+ }
+ }
+ z->stepdiv = 64 / z->groupdiv;
+ z->grouplen = z->groupnum * z->stepdiv;
+ z->grouprem = z->grouplen;
+ z->rhythm = z->groupdiv >= 64 ? 64 : z->groupdiv >= 32 ? 32 : z->groupdiv >= 16 ? 16 : z->groupdiv >= 8 ? 8 : z->groupdiv >= 4 ? 4 : z->groupdiv >= 2 ? 2 : 1;
+ }
+ }
+ }
+ }
+/* the entire "bang" routine */
+ chunk = z->step;
+ while(chunk > 0)
+ {
+ thischunk = z->gnoterem <= chunk ? z->gnoterem : chunk;
+ thischunk = thischunk > 32 ? 32 : thischunk;
+ chunk -= thischunk;
+ /* if(z->rested == 1)
+ {
+ z->groupnum -= z->groupcount;
+ z->groupcount = 0;
+ } */
+ z->beam = z->grouprem && z->groupcount > 0 && z->groupdiv >= 8 ? 1 : 0;
+ i = (int)thischunk;
+ for(j=0;j<6;j++)
+ {
+ x = gemnotes_counter_splits[j][i];
+ if(x > 0)
+ {
+ /* prevstave = z->stavenum;
+ z->stavenum = (int)((z->allcount*z->allstep+z->offset) / z->stavelen);
+ z->fstavenum = (float)z->stavenum;
+ outlet_float(z->stave,z->fstavenum);
+ if(z->stavenum > prevstave)
+ {
+ z->objects = z->initobjects;
+ z->groupobject = z->objects;
+ z->groupnum -= z->groupcount;
+ z->groupcount = 0;
+ z->beam = 0;
+ z->allcount = 0;
+ } */
+ z->tailon = z->grouprem <= z->step && z->rested == 1 || z->groupcount == z->groupnum - 1 && z->rested == 1 ? 1 : 0;
+ thischunk -= (float)x;
+ z->tied = chunk > 0 || thischunk > 0 ? 1 : 0;
+
+ z->barlast = 0;
+ outlet_float(z->n_obj, z->objects);
+ outlet_float(z->tuple, z->polyrhythm);
+ if(z->beam == 0)
+ {
+ z->groupobject = z->objects;
+ outlet_float(z->g_obj, z->objects);
+ }
+ outlet_float(z->artic, z->articulation);
+ z->articulation = 0;
+ outlet_float(z->tail, z->tailon);
+ z->objects++;
+ outlet_float(z->bm, z->beam);
+ outlet_float(z->tie, z->tied);
+ outlet_float(z->gcount, z->groupcount);
+ outlet_float(z->grp, z->groupnum);
+ outlet_float(z->dur, (float)x);
+ outlet_float(z->rhy, z->rhythm);
+ outlet_float(z->off, z->allcount*z->allstep+z->offset);
+ thatchunk = (float)x * z->stepdiv;
+ maxchunk = thatchunk > 16 ? 16 : thatchunk;
+ z->allcount += maxchunk;
+ z->barcount += thatchunk;
+ z->barrem -= thatchunk;
+ // z->barnotes += thatchunk;
+ z->groupcount += (float)x;
+ z->grouprem -= thatchunk;
+ z->prevrested = z->rested;
+ z->rested = 0;
+ z->lastdur = thatchunk * z->restlen;
+ }
+ }
+ if(z->barrem < 1 && z->allcount > 0 && z->barlast == 0)
+ {
+ z->barlast = 1;
+ z->group_id++;
+ outlet_float(z->groupid, z->group_id);
+ outlet_float(z->n_obj, z->objects);
+ maxchunk = z->lastdur > 16 ? 16 : z->lastdur;
+ z->barpos = (z->allcount - (maxchunk / 2)) * z->allstep + z->offset;
+ // z->barpos += (z->barnotes + z->barrests) * z->allstep;
+ z->objects++;
+ outlet_float(z->bar, z->barpos);
+ z->barnotes = z->barrests = 0;
+ if(z->nextnumer)
+ {
+ prevnumer = z->numerator;
+ prevdenom = z->denominator;
+ z->numerator = z->nextnumer;
+ if(z->nextdenom)
+ {
+ z->denominator = z->nextdenom;
+ }
+ if(z->numerator != prevnumer || z->denominator != prevdenom)
+ {
+ outlet_float(z->n_obj, z->objects);
+ z->objects++;
+ outlet_float(z->denom, z->denominator);
+ outlet_float(z->numer, z->numerator);
+ }
+ z->nextnumer = z->nextdenom = 0;
+ z->barlen = (64 / z->denominator) * z->numerator;
+ }
+ z->nowgroup = 0;
+ z->groupcount = 0;
+ z->barcount = 0;
+ z->groupnum = atom_getfloatarg(z->nowgroup, 128, z->groups);
+ z->groupdiv = atom_getfloatarg(z->nowgroup + 1, 128, z->groups);
+ z->polyrhythm = 0;
+ gdiv = (int)z->groupdiv;
+ if(gdiv != 64 && gdiv != 32 && gdiv != 16 && gdiv != 8 && gdiv != 4 && gdiv != 2 && gdiv != 1)
+ {
+ // polydiv = 1;
+ zpoly = z->groupdiv;
+ ipoly = (int)zpoly;
+
+ for(i=0;i<7;i++)
+ {
+ // polydiv *= 0.5;
+ zpoly *= 0.5;
+ ipoly = (int)zpoly;
+ post("ipoly = %d, zpoly = %f",ipoly,zpoly);
+ if(fabs(zpoly - (float)ipoly) < 0.1) z->polyrhythm = zpoly;
+ }
+ }
+ z->stepdiv = 64 / z->groupdiv;
+ z->grouplen = z->groupnum * z->stepdiv;
+ z->grouprem = z->grouplen;
+ z->rhythm = z->groupdiv >= 64 ? 64 : z->groupdiv >= 32 ? 32 : z->groupdiv >= 16 ? 16 : z->groupdiv >= 8 ? 8 : z->groupdiv >= 4 ? 4 : z->groupdiv >= 2 ? 2 : 1;
+ z->barrem = z->barlen;
+ }
+ else if(z->grouprem < 1)
+ {
+ z->group_id++;
+ outlet_float(z->groupid, z->group_id);
+
+ z->nowgroup = (z->nowgroup + 1) % z->numgroups;
+ z->groupcount = 0;
+ z->groupnum = atom_getfloatarg(z->nowgroup * 2, 128, z->groups);
+ z->groupdiv = atom_getfloatarg(z->nowgroup * 2 + 1, 128, z->groups);
+ z->polyrhythm = 0;
+ gdiv = (int)z->groupdiv;
+ if(gdiv != 64 && gdiv != 32 && gdiv != 16 && gdiv != 8 && gdiv != 4 && gdiv != 2 && gdiv != 1)
+ {
+ // polydiv = 1;
+ zpoly = z->groupdiv;
+ ipoly = (int)zpoly;
+
+ for(i=0;i<7;i++)
+ {
+ // polydiv *= 0.5;
+ zpoly *= 0.5;
+ ipoly = (int)zpoly;
+ post("ipoly = %d, zpoly = %f",ipoly,zpoly);
+ if(fabs(zpoly - (float)ipoly) < 0.1) z->polyrhythm = zpoly;
+ }
+ }
+ z->stepdiv = 64 / z->groupdiv;
+ z->grouplen = z->groupnum * z->stepdiv;
+ z->grouprem = z->grouplen;
+ z->rhythm = z->groupdiv >= 64 ? 64 : z->groupdiv >= 32 ? 32 : z->groupdiv >= 16 ? 16 : z->groupdiv >= 8 ? 8 : z->groupdiv >= 4 ? 4 : z->groupdiv >= 2 ? 2 : 1;
+ }
+ }
+ outlet_float(z->debugger, z->allcount*z->allstep+z->offset);
+}
+
+void gemnotes_counter_bar(t_gemnotes_counter *z, t_symbol *s, int argc, t_atom *argv)
+{
+ z->gnoterem = z->grouprem / z->stepdiv;
+ int i, j, x, y, ipoly;
+ int scope = (int)((float)argc * 0.5);
+ // post("scope = %d", scope);
+ float chunk, thischunk, thatchunk, maxchunk, zpoly;
+ float num, div, prevnumer, prevdenom;
+ j = 0;
+ // make a rests function for a whole bar, or the rest of the bar, and a barline;
+ chunk = z->barrem / z->stepdiv;
+ // post("chunk = %f",chunk);
+ z->barpos += (z->barnotes + ((z->barrem / z->stepdiv) * z->restlen) * z->allstep);
+ if(z->allcount > 0)
+ {
+ /* while(chunk > 0)
+ {
+ thischunk = z->gnoterem <= chunk ? z->gnoterem : chunk;
+ thischunk = thischunk > 32 ? 32 : thischunk;
+ chunk -= thischunk;
+ i = (int)thischunk;
+ // post("i = %d",i);
+
+ for(j=0;j<6;j++)
+ {
+ x = gemnotes_counter_splits[j][i];
+ // post("x = %d",x);
+ if(x > 0)
+ {
+ if(z->rested == 0 && z->objects == z->groupobject)
+ {
+ z->tailon = z->groupobject;
+ outlet_float(z->tail, z->tailon);
+ }
+ z->rested = 1;
+ outlet_float(z->n_obj, z->objects);
+ z->objects++;
+ outlet_float(z->tuple, z->polyrhythm);
+ outlet_float(z->rhyrest, z->rhythm);
+ outlet_float(z->dur, (float)x);
+ outlet_float(z->rest, z->allcount*z->allstep + z->offset);
+
+ thatchunk = (float)x * z->stepdiv;
+ z->allcount += thatchunk * z->restlen;
+ z->barcount += thatchunk;
+ z->barrem -= thatchunk;
+ z->groupcount += (float)x;
+ thischunk -= (float)x;
+ z->grouprem -= thatchunk;
+ }
+ }
+ } */
+ if(z->barlast == 0)
+ {
+ z->barlast = 1;
+ outlet_float(z->n_obj, z->objects);
+ z->objects++;
+ maxchunk = z->lastdur > 16 ? 16 : z->lastdur;
+ z->barpos = (z->allcount - (maxchunk / 2)) * z->allstep + z->offset;
+ outlet_float(z->bar, z->barpos);
+ z->barnotes = z->barrests = 0;
+ }
+ }
+ if(argc)
+ {
+ prevnumer = z->numerator;
+ prevdenom = z->denominator;
+ z->numerator = atom_getfloat(argv);
+ if(argc > 1)
+ {
+ z->denominator = atom_getfloat(argv+1);
+ z->numgroups = 0;
+ if(scope > 1)
+ {
+ for(i = 0;i < scope - 1;i++)
+ {
+ j = i + 1;
+ num = atom_getfloat(argv+(j*2));
+ div = atom_getfloat(argv+(j*2+1));
+ SETFLOAT(&z->groups[i*2],num);
+ SETFLOAT(&z->groups[i*2+1],div);
+ z->numgroups++;
+ }
+ }
+ }
+ if(z->numerator != prevnumer || z->denominator != prevdenom || z->allcount == 0)
+ {
+ outlet_float(z->n_obj, z->objects);
+ z->objects++;
+ outlet_float(z->denom, z->denominator);
+ outlet_float(z->numer, z->numerator);
+ }
+ z->barlen = (64 / z->denominator) * z->numerator;
+ }
+ z->nowgroup = 0;
+ z->groupcount = 0;
+ z->barcount = 0;
+ z->groupnum = atom_getfloatarg(z->nowgroup * 2, 128, z->groups);
+ z->groupdiv = atom_getfloatarg(z->nowgroup * 2 + 1, 128, z->groups);
+ z->stepdiv = 64 / z->groupdiv;
+ z->grouplen = z->groupnum * z->stepdiv;
+ z->grouprem = z->grouplen;
+ z->rhythm = z->groupdiv >= 64 ? 64 : z->groupdiv >= 32 ? 32 : z->groupdiv >= 16 ? 16 : z->groupdiv >= 8 ? 8 : z->groupdiv >= 4 ? 4 : z->groupdiv >= 2 ? 2 : 1;
+ z->barrem = z->barlen;
+ outlet_float(z->debugger, z->allcount*z->allstep+z->offset);
+}
+
+void gemnotes_counter_articulation(t_gemnotes_counter *z, t_floatarg art)
+{
+ z->articulation = art;
+}
+
+void gemnotes_counter_dyn(t_gemnotes_counter *z, t_symbol *s, int argc, t_atom *argv)
+{
+ float terraced = 0;
+ float dynfirst = 0;
+ float dynlen = 0;
+ float dynlast = 0;
+ float hairpin = 0;
+ switch(argc)
+ // outlet_list(x->mapout, gensym("list"), x->max+1, x->x_map.nomap);
+
+ {
+ case 1:
+ terraced = atom_getfloat(argv);
+ SETFLOAT(&z->terrace[0], z->allcount*z->allstep+z->offset);
+ SETFLOAT(&z->terrace[1], terraced);
+ outlet_float(z->n_obj, z->objects);
+ z->objects++;
+ outlet_list(z->dyn, gensym("list"), 2, z->terrace);
+ break;
+ case 3:
+ dynfirst = atom_getfloat(argv);
+ dynlen = atom_getfloat(argv+1) * z->stepdiv * z->allstep;
+ dynlast = atom_getfloat(argv+2);
+ hairpin = dynfirst > dynlast ? 0 : 1;
+ SETFLOAT(&z->dynamics[0], z->allcount*z->allstep+z->offset);
+ SETFLOAT(&z->dynamics[1], dynfirst);
+ SETFLOAT(&z->dynamics[2], dynlen);
+ SETFLOAT(&z->dynamics[3], dynlast);
+ SETFLOAT(&z->dynamics[4], hairpin); //bt
+ outlet_float(z->n_obj, z->objects);
+ z->objects++;
+ outlet_list(z->dyn, gensym("list"), 5, z->dynamics);
+// outlet_float(z->off, z->allcount*z->allstep+z->offset);
+ break;
+ default:
+ break;
+ }
+}
+
+// new method 6-1-11
+void gemnotes_counter_groups(t_gemnotes_counter *z, t_symbol *s, int argc, t_atom *argv)
+{
+ float argc2 = (float)argc * 0.5;
+ int iargc2 = (int)argc2;
+ int i,j,k;
+ z->numgroups = iargc2;
+ j = 0;
+ k = 0;
+ float num, div;
+ num = 4;
+ div = 16;
+ if(iargc2)
+ {
+ for(i=0;i<iargc2;i++)
+ {
+ j = i*2;
+ k = j+1;
+ num = atom_getfloat(argv+j);
+ div = atom_getfloat(argv+k);
+ SETFLOAT(&z->groups[j],num);
+ SETFLOAT(&z->groups[k],div);
+ }
+ if((float)iargc2 < argc2)
+ {
+ z->numgroups++;
+ num = atom_getfloat(argv+(argc-1));
+ SETFLOAT(&z->groups[j],num);
+ SETFLOAT(&z->groups[k],div);
+ }
+ }
+ else if(argc2)
+ {
+ num = atom_getfloat(argv);
+ div = 16;
+ SETFLOAT(&z->groups[j],num);
+ SETFLOAT(&z->groups[k],div);
+ }
+ z->nowgroup = 0;
+ z->groupcount = 0;
+ z->groupnum = atom_getfloatarg(z->nowgroup * 2, 128, z->groups);
+ z->groupdiv = atom_getfloatarg(z->nowgroup * 2 + 1, 128, z->groups);
+ z->stepdiv = 64 / z->groupdiv;
+ z->grouplen = z->groupnum * z->stepdiv;
+ z->grouprem = z->grouplen;
+ z->rhythm = z->groupdiv >= 64 ? 64 : z->groupdiv >= 32 ? 32 : z->groupdiv >= 16 ? 16 : z->groupdiv >= 8 ? 8 : z->groupdiv >= 4 ? 4 : z->groupdiv >= 2 ? 2 : 1;
+}
+
+void gemnotes_counter_group(t_gemnotes_counter *z, t_floatarg f1, t_floatarg f2)
+{
+ int ipoly, gdiv, i;
+ float zpoly, polydiv;
+ if(f1 && f2)
+ {
+ z->groupcount = 0;
+ z->groupnum = f1;
+ z->groupdiv = f2;
+ z->stepdiv = 64 / z->groupdiv;
+ z->grouplen = z->groupnum * z->stepdiv;
+ z->grouprem = z->grouplen;
+ z->rhythm = z->groupdiv >= 64 ? 64 : z->groupdiv >= 32 ? 32 : z->groupdiv >= 16 ? 16 : z->groupdiv >= 8 ? 8 : z->groupdiv >= 4 ? 4 : z->groupdiv >= 2 ? 2 : 1;
+ z->polyrhythm = 0;
+ gdiv = z->groupdiv;
+ z->group_id++;
+ outlet_float(z->groupid, z->group_id);
+ if(gdiv != 64 && gdiv != 32 && gdiv != 16 && gdiv != 8 && gdiv != 4 && gdiv != 2 && gdiv != 1)
+ {
+ // polydiv = 1;
+ zpoly = z->groupdiv;
+ ipoly = (int)zpoly;
+
+ for(i=0;i<7;i++)
+ {
+ // polydiv *= 0.5;
+ zpoly *= 0.5;
+ ipoly = (int)zpoly;
+ post("ipoly = %d, zpoly = %f",ipoly,zpoly);
+ if(fabs(zpoly - (float)ipoly) < 0.1) z->polyrhythm = zpoly;
+ }
+ }
+ }
+}
+
+void gemnotes_counter_rest(t_gemnotes_counter *z, t_symbol *s, int argc, t_atom *argv)
+{
+ z->gnoterem = z->grouprem / z->stepdiv;
+
+ float chunk, thischunk, thatchunk, prevnumer, prevdenom;
+ int i, j, x;
+ float zpoly, polydiv;
+ int ipoly, gdiv, prevstave;
+ float rdur = argc > 0 ? atom_getfloat(argv) : z->step;
+ z->restlen = argc > 1 ? atom_getfloat(argv+1) : z->restlen;
+ if(rdur > 0)
+ {
+ if(z->rested == 0 && z->prevrested == 1)
+ {
+ z->tailon = z->groupobject;
+ outlet_float(z->tail, z->tailon);
+ }
+ z->beam = 0;
+ j = 0;
+ chunk = rdur;
+ while(chunk > 0)
+ {
+ thischunk = z->gnoterem <= chunk ? z->gnoterem : chunk;
+ thischunk = thischunk > 32 ? 32 : thischunk;
+ chunk -= thischunk;
+ i = (int)thischunk;
+ x = gemnotes_counter_splits[j][i];
+ if(x > 0)
+ {
+ /* prevstave = z->stavenum;
+ z->stavenum = (int)((z->allcount*z->allstep+z->offset) / z->stavelen);
+ z->fstavenum = (float)z->stavenum;
+ outlet_float(z->stave,z->fstavenum);
+ if(z->stavenum > prevstave)
+ {
+ z->objects = z->initobjects;
+ z->groupobject = z->objects;
+ outlet_float(z->g_obj, z->objects);
+ z->allcount = 0;
+ } */
+ z->barlast = 0;
+ outlet_float(z->n_obj, z->objects);
+ z->objects++;
+ outlet_float(z->tuple, z->polyrhythm);
+ outlet_float(z->rhyrest, z->rhythm);
+ outlet_float(z->dur, (float)x);
+ outlet_float(z->rest, z->allcount*z->allstep+z->offset);
+ thatchunk = (float)x * z->stepdiv;
+ z->allcount += thatchunk * z->restlen;
+ z->lastdur = thatchunk * z->restlen;
+ // z->barrests += thatchunk * z->restlen;
+ z->barcount += thatchunk;
+ z->barrem -= thatchunk;
+ z->groupcount += (float)x;
+ thischunk -= (float)x;
+ z->grouprem -= thatchunk;
+ z->prevrested = z->rested;
+ z->rested = 1;
+ }
+ if(z->barrem < 1 && z->barlast == 0)
+ {
+ z->barlast = 1;
+ outlet_float(z->n_obj, z->objects);
+ // z->barpos += (z->barnotes + z->barrests) * z->allstep;
+ z->barpos = (z->allcount - (z->lastdur / 2)) * z->allstep + z->offset;
+ z->objects++;
+ outlet_float(z->bar, z->barpos);
+ z->barnotes = z->barrests = 0;
+ if(z->nextnumer)
+ {
+ prevnumer = z->numerator;
+ prevdenom = z->denominator;
+ z->numerator = z->nextnumer;
+ if(z->nextdenom)
+ {
+ z->denominator = z->nextdenom;
+ }
+ if(z->numerator != prevnumer || z->denominator != prevdenom)
+ {
+ outlet_float(z->n_obj, z->objects);
+ z->objects++;
+ outlet_float(z->denom, z->denominator);
+ outlet_float(z->numer, z->numerator);
+ }
+ z->nextnumer = z->nextdenom = 0;
+ z->barlen = (64 / z->denominator) * z->numerator;
+ }
+
+ z->nowgroup = 0;
+ z->groupcount = 0;
+ z->barcount = 0;
+ z->groupnum = atom_getfloatarg(z->nowgroup, 128, z->groups);
+ z->groupdiv = atom_getfloatarg(z->nowgroup + 1, 128, z->groups);
+ z->polyrhythm = 0;
+ gdiv = z->groupdiv;
+ if(gdiv != 64 && gdiv != 32 && gdiv != 16 && gdiv != 8 && gdiv != 4 && gdiv != 2 && gdiv != 1)
+ {
+ // polydiv = 1;
+ zpoly = z->groupdiv;
+ ipoly = (int)zpoly;
+
+ for(i=0;i<7;i++)
+ {
+ // polydiv *= 0.5;
+ zpoly *= 0.5;
+ ipoly = (int)zpoly;
+ post("ipoly = %d, zpoly = %f",ipoly,zpoly);
+ if(fabs(zpoly - (float)ipoly) < 0.1) z->polyrhythm = zpoly;
+ }
+ }
+ z->stepdiv = 64 / z->groupdiv;
+ z->grouplen = z->groupnum * z->stepdiv;
+ z->grouprem = z->grouplen;
+ z->rhythm = z->groupdiv >= 64 ? 64 : z->groupdiv >= 32 ? 32 : z->groupdiv >= 16 ? 16 : z->groupdiv >= 8 ? 8 : z->groupdiv >= 4 ? 4 : z->groupdiv >= 2 ? 2 : 1;
+ z->barrem = z->barlen;
+ }
+ else if(z->grouprem < 1)
+ {
+ z->nowgroup = (z->nowgroup + 1) % z->numgroups;
+ z->groupcount = 0;
+ z->groupnum = atom_getfloatarg(z->nowgroup * 2, 128, z->groups);
+ z->groupdiv = atom_getfloatarg(z->nowgroup * 2 + 1, 128, z->groups);
+ z->polyrhythm = 0;
+ gdiv = z->groupdiv;
+ if(gdiv != 64 && gdiv != 32 && gdiv != 16 && gdiv != 8 && gdiv != 4 && gdiv != 2 && gdiv != 1)
+ {
+ // polydiv = 1;
+ zpoly = z->groupdiv;
+ ipoly = (int)zpoly;
+
+ for(i=0;i<7;i++)
+ {
+ // polydiv *= 0.5;
+ zpoly *= 0.5;
+ ipoly = (int)zpoly;
+ post("ipoly = %d, zpoly = %f",ipoly,zpoly);
+ if(fabs(zpoly - (float)ipoly) < 0.1) z->polyrhythm = zpoly;
+ }
+ }
+ z->stepdiv = 64 / z->groupdiv;
+ z->grouplen = z->groupnum * z->stepdiv;
+ z->grouprem = z->grouplen;
+ z->rhythm = z->groupdiv >= 64 ? 64 : z->groupdiv >= 32 ? 32 : z->groupdiv >= 16 ? 16 : z->groupdiv >= 8 ? 8 : z->groupdiv >= 4 ? 4 : z->groupdiv >= 2 ? 2 : 1;
+ }
+ }
+ }
+ outlet_float(z->debugger, z->allcount*z->allstep+z->offset);
+}
+
+void gemnotes_counter_nextbar(t_gemnotes_counter *z, t_symbol *s, int argc, t_atom *argv)
+{
+ if(argc)
+ {
+ z->nextnumer = atom_getfloat(argv);
+ if(argc > 1) z->nextdenom = atom_getfloat(argv+1);
+ else z->nextdenom = z->denominator;
+ }
+}
+
+void gemnotes_counter_tempo(t_gemnotes_counter *z, t_symbol *s, int argc, t_atom *argv)
+{
+ float thisoffset, thisbpm, thisrhythm, thatbpm, thatrhythm;
+ thisrhythm = 4;
+ thisoffset = z->allcount*z->allstep;
+ if(argc)
+ {
+ thisbpm = atom_getfloat(argv);
+ if(argc > 1)
+ {
+ thisrhythm = atom_getfloat(argv+1);
+ }
+ // else thisrhythm = atom_getfloatarg(1,2,z->temposign);
+ // thatbpm = atom_getfloatarg(0,2,z->temposign);
+ // thatrhythm = atom_getfloatarg(1,2,z->temposign);
+ // if(thisbpm != thatbpm || thisrhythm != thatrhythm)
+ // {
+ outlet_float(z->n_obj, z->objects);
+ z->objects++;
+ // if(z->allcount == 0)
+ SETFLOAT(&z->temposign[0],thisoffset);
+ // else if (z->allcount > 0) SETFLOAT(&z->temposign[0],z->allcount*z->allstep+z->offset);
+ SETFLOAT(&z->temposign[1],thisbpm);
+ SETFLOAT(&z->temposign[2],thisrhythm);
+ outlet_list(z->bpm, gensym("list"), 3, z->temposign);
+ // }
+ }
+ post("thisoffset = %f", thisoffset);
+}
+
+void gemnotes_counter_debug(t_gemnotes_counter *z, t_floatarg f)
+{
+ post("numer = %d,denom = %d,groupnum = %d,groupdiv = %d",(int)z->numerator,(int)z->denominator,(int)z->groupnum,(int)z->groupdiv);
+ post("allcount = %d, barcount = %d, groupcount = %d",(int)z->allcount,(int)z->barcount,(int)z->groupcount);
+ post("barlen = %d,barrem = %d,grouplen = %d,grouprem = %d",(int)z->barlen,(int)z->barrem,(int)z->grouplen,(int)z->grouprem);
+ int i = f;
+ int j, x;
+ for(j=0;j<6;j++)
+ {
+ x = gemnotes_counter_splits[j][i];
+ post("j = %d, i = %d, x = %d",j,i,x);
+ }
+}
+
+void gemnotes_counter_step(t_gemnotes_counter *z, t_floatarg f)
+{
+ z->step = f;
+ z->fractional = ((int)(z->step * 100) % 100) != 0 ? 1 : 0;
+}
+
+void gemnotes_counter_offset(t_gemnotes_counter *z, t_floatarg f)
+{
+ if(f)
+ {
+ z->offset += f;
+ }
+ else if(!f)
+ {
+ z->offset = z->initoffset;
+ }
+}
+
+void gemnotes_counter_chord(t_gemnotes_counter *z)
+{
+ outlet_float(z->artic, z->articulation);
+ z->articulation = 0;
+ outlet_float(z->n_obj, z->objects);
+ z->objects++;
+ outlet_bang(z->slave);
+}
+
+void gemnotes_counter_hdsq(t_gemnotes_counter *z, t_floatarg f)
+{
+ if(f)
+ {
+ z->offset += z->allcount * z->allstep;
+ z->allstep = f;
+ z->allcount = 0;
+ }
+ else if(!f)
+ {
+ z->offset += z->allcount * z->allstep;
+ z->allstep = 0.15;
+ z->allcount = 0;
+ }
+}
+
+void gemnotes_counter_reset(t_gemnotes_counter *z)
+{
+ int gdiv, ipoly, i;
+ float zpoly, polydiv;
+ z->group_id = 0;
+ z->allcount = 0;
+ z->nowgroup = 0;
+ z->groupcount = 0;
+ z->barcount = 0;
+ z->barnotes = z->barrests = z->barpos = 0;
+ z->offset = z->initoffset;
+ z->objects = z->initobjects;
+ z->groupnum = atom_getfloatarg(z->nowgroup * 2, 128, z->groups);
+ z->groupdiv = atom_getfloatarg(z->nowgroup * 2 + 1, 128, z->groups);
+ z->polyrhythm = 0;
+ gdiv = z->groupdiv;
+ if(gdiv != 64 && gdiv != 32 && gdiv != 16 && gdiv != 8 && gdiv != 4 && gdiv != 2 && gdiv != 1)
+ {
+ polydiv = 1;
+ zpoly = z->groupdiv;
+ ipoly = (int)zpoly;
+
+ for(i=0;i<7;i++)
+ {
+ polydiv *= 0.5;
+ zpoly *= 0.5;
+ ipoly = (int)zpoly;
+ if(fabs(zpoly - (float)ipoly) < 0.1) z->polyrhythm = zpoly;
+ }
+ }
+ z->stepdiv = 64 / z->groupdiv;
+ z->grouplen = z->groupnum * z->stepdiv;
+ z->grouprem = z->grouplen;
+ z->rhythm = z->groupdiv >= 64 ? 64 : z->groupdiv >= 32 ? 32 : z->groupdiv >= 16 ? 16 : z->groupdiv >= 8 ? 8 : z->groupdiv >= 4 ? 4 : z->groupdiv >= 2 ? 2 : 1;
+ z->barrem = z->barlen;
+ // z->stavenum = 0;
+ // outlet_float(z->stave,0);
+ outlet_float(z->debugger, z->allcount);
+}
+
+void *gemnotes_counter_new(t_symbol *s, int argc, t_atom *argv)
+{
+ t_gemnotes_counter *z = (t_gemnotes_counter *)pd_new(gemnotes_counter_class);
+ int i;
+ for(i=0;i<128;i++)
+ {
+ SETFLOAT(&z->groups[i],0);
+ }
+ SETFLOAT(&z->groups[0],4);
+ SETFLOAT(&z->groups[1],16);
+
+ SETFLOAT(&z->temposign[0],0);
+ SETFLOAT(&z->temposign[1],120);
+ SETFLOAT(&z->temposign[2],4);
+
+ z->group_id = 0;
+ z->numgroups = 1;
+ z->nowgroup = 0;
+ // z->lastgroup = 0;
+ z->stepdiv = 4;
+ z->allstep = 0.15;
+ z->allcount = z->barcount = z->groupcount = 0;
+ z->step = 1;
+ z->barrem = z->barlen = 48;
+
+ z->grouprem = z->grouplen = 16;
+ z->groupnum = 4;
+ z->groupdiv = 16;
+
+ z->barnotes = 0;
+ z->barrests = 0;
+ z->barpos = 0;
+ z->barlast = 0;
+ z->restlen = 0.5;
+
+ z->beam = z->tied = 0;
+ z->rhythm = 16;
+
+ z->numerator = argc > 0 ? atom_getfloat(argv) : 3;
+ z->denominator = argc > 1 ? atom_getfloat(argv+1) : 4;
+ z->nextnumer = z->nextdenom = 0;
+
+ z->initobjects = argc > 2 ? atom_getfloat(argv+2) : 0;
+ z->objects = z->initobjects;
+ z->initoffset = argc > 3 ? atom_getfloat(argv+3) : 0;
+ z->offset = z->initoffset;
+ z->groupobject = -1;
+ z->stavelen = argc > 4 ? atom_getfloat(argv+4) : 18;
+ z->stavenum = 0;
+ z->fstavenum = 0;
+ z->articulation = 0;
+
+ z->off = outlet_new(&z->x_obj, gensym("float"));
+ z->rhy = outlet_new(&z->x_obj, gensym("float"));
+ z->dur = outlet_new(&z->x_obj, gensym("float"));
+ z->grp = outlet_new(&z->x_obj, gensym("float"));
+ z->gcount = outlet_new(&z->x_obj, gensym("float"));
+ z->tie = outlet_new(&z->x_obj, gensym("float"));
+ z->bm = outlet_new(&z->x_obj, gensym("float"));
+ z->rest = outlet_new(&z->x_obj, gensym("float"));
+ z->rhyrest = outlet_new(&z->x_obj, gensym("float"));
+ z->bar = outlet_new(&z->x_obj, gensym("float"));
+ z->slave = outlet_new(&z->x_obj, gensym("bang"));
+ z->numer = outlet_new(&z->x_obj, gensym("float"));
+ z->denom = outlet_new(&z->x_obj, gensym("float"));
+ z->tail = outlet_new(&z->x_obj, gensym("float"));
+ z->tuple = outlet_new(&z->x_obj, gensym("float"));
+ z->bpm = outlet_new(&z->x_obj, gensym("list"));
+ z->g_obj = outlet_new(&z->x_obj, gensym("float"));
+ z->n_obj = outlet_new(&z->x_obj, gensym("float"));
+ z->debugger = outlet_new(&z->x_obj, gensym("float"));
+ z->groupid = outlet_new(&z->x_obj, gensym("float"));
+ z->artic = outlet_new(&z->x_obj, gensym("float"));
+ z->dyn = outlet_new(&z->x_obj, gensym("list"));
+ // z->stave = outlet_new(&z->x_obj, gensym("float"));
+ return(void *)z;
+}
+
+void gemnotes_counter_setup(void)
+{
+ gemnotes_counter_class = class_new(gensym("gemnotes_counter"),
+ (t_newmethod)gemnotes_counter_new,
+ 0, sizeof(t_gemnotes_counter),
+ 0, A_GIMME, 0);
+ post("gemnotes_counter - segmented all / bar / beamgroup counter...");
+ post("...for dynamic object creation of musical scores.");
+ post("version 0.6...by Ed Kelly 2012 - morph_2016@yahoo.co.uk");
+
+ class_addbang(gemnotes_counter_class, gemnotes_counter_bang);
+ class_addfloat(gemnotes_counter_class, gemnotes_counter_float);
+ class_addmethod(gemnotes_counter_class, (t_method)gemnotes_counter_step, gensym("step"), A_DEFFLOAT, 0);
+ class_addmethod(gemnotes_counter_class, (t_method)gemnotes_counter_reset, gensym("reset"), A_DEFFLOAT, 0);
+ class_addmethod(gemnotes_counter_class, (t_method)gemnotes_counter_offset, gensym("offset"), A_DEFFLOAT, 0);
+ class_addmethod(gemnotes_counter_class, (t_method)gemnotes_counter_hdsq, gensym("hdsq"), A_DEFFLOAT, 0);
+ class_addmethod(gemnotes_counter_class, (t_method)gemnotes_counter_chord, gensym("chord"), A_DEFFLOAT, 0);
+ class_addmethod(gemnotes_counter_class, (t_method)gemnotes_counter_rest, gensym("rest"), A_GIMME, 0);
+ class_addmethod(gemnotes_counter_class, (t_method)gemnotes_counter_bar, gensym("bar"), A_GIMME, 0);
+ class_addmethod(gemnotes_counter_class, (t_method)gemnotes_counter_tempo, gensym("tempo"), A_GIMME, 0);
+ class_addmethod(gemnotes_counter_class, (t_method)gemnotes_counter_group, gensym("group"), A_DEFFLOAT, A_DEFFLOAT, 0);
+ class_addmethod(gemnotes_counter_class, (t_method)gemnotes_counter_debug, gensym("debug"), A_DEFFLOAT, 0);
+ class_addmethod(gemnotes_counter_class, (t_method)gemnotes_counter_nextbar, gensym("nextbar"), A_GIMME, 0);
+ class_addmethod(gemnotes_counter_class, (t_method)gemnotes_counter_dyn, gensym("dyn"), A_GIMME, 0);
+ class_addmethod(gemnotes_counter_class, (t_method)gemnotes_counter_articulation, gensym("articulation"), A_DEFFLOAT, 0);
+}
diff --git a/gemnotes_0.2.3/src/polyquant-help.pd b/gemnotes_0.2.3/src/polyquant-help.pd
new file mode 100755
index 0000000..87de60f
--- /dev/null
+++ b/gemnotes_0.2.3/src/polyquant-help.pd
@@ -0,0 +1,61 @@
+#N canvas 0 0 655 328 10;
+#X text 286 48 creation arguments: tempo polyrhythm-depth;
+#X text 294 92 depth 1: half \, quarter \, eighth notes etc;
+#X text 294 105 depth 2: + triplets;
+#X text 294 118 depth 3: + triplets and quintuplets;
+#X text 294 132 depth 4: + triplets \, quintuplets and septuplets;
+#X text 302 12 polyquant is a polyrhythmic quantizer;
+#X text 294 148 and so on \, adding 11th \, 13th \, 17th \, 19th \,
+23rd \, 29th \, 31th \, 37th \, 41th \, 43th \, 47th \, 53th \, 59th
+and 61th divisions of the beat;
+#X obj 66 88 timer;
+#X floatatom 66 252 5 0 0 1 time - -;
+#X floatatom 95 236 5 0 0 1 division - -;
+#X floatatom 124 221 5 0 0 1 number - -;
+#X floatatom 153 206 5 0 0 1 sign - -;
+#X obj 66 187 polyquant 140 4;
+#X obj 66 67 t b b;
+#X obj 52 38 metro 200;
+#X floatatom 66 110 5 0 0 0 - - -;
+#X text 294 63 tempo is in beats-per-minute;
+#X obj 52 14 loadbang;
+#X msg 114 103 mode \$1;
+#X obj 114 84 hradio 15 1 0 3 empty empty empty 0 -8 0 10 -262144 -1
+-1 1;
+#X floatatom 173 116 5 1 18 2 polyrhythmic_depth - -;
+#X text 295 77 polyrhythm depth is explained below;
+#X obj 116 28 random 1800;
+#X text 272 202 sign: -1 means the input time is less than the output
+time \, 1 means the input time is greater than the output time;
+#X text 272 229 number: number of notes of division value of the quantized
+output;
+#X text 272 257 division: division of the beat (8th \, 16th \, 6th
+\, 20th etc);
+#X text 272 275 time: quantized time value;
+#X obj 116 50 + 50;
+#X msg 173 132 plimit \$1;
+#X text 162 64 0 = both;
+#X text 162 75 1 = always lengthen;
+#X text 162 86 2 = always shorten;
+#X text 131 69 MODE:;
+#X floatatom 240 136 5 60 180 2 BPM - -;
+#X msg 240 152 bpm \$1;
+#X connect 7 0 15 0;
+#X connect 12 0 8 0;
+#X connect 12 1 9 0;
+#X connect 12 2 10 0;
+#X connect 12 3 11 0;
+#X connect 13 0 7 0;
+#X connect 13 1 7 1;
+#X connect 13 1 22 0;
+#X connect 14 0 13 0;
+#X connect 15 0 12 0;
+#X connect 17 0 14 0;
+#X connect 18 0 12 0;
+#X connect 19 0 18 0;
+#X connect 20 0 28 0;
+#X connect 22 0 27 0;
+#X connect 27 0 14 1;
+#X connect 28 0 12 0;
+#X connect 33 0 34 0;
+#X connect 34 0 12 0;
diff --git a/gemnotes_0.2.3/src/polyquant.c b/gemnotes_0.2.3/src/polyquant.c
new file mode 100755
index 0000000..4d79e3b
--- /dev/null
+++ b/gemnotes_0.2.3/src/polyquant.c
@@ -0,0 +1,178 @@
+/*
+ * polyquant: polyrhythmic notelength parser
+ * Copyright (C) 2010 edward kelly <morph_2016@yahoo.co.uk>
+ *
+ * This software is BSD licensed. See LICENSE.txt for more details
+ */
+
+#include "m_pd.h"
+#include <math.h>
+
+t_class *polyquant_class;
+
+typedef struct _polyquant {
+ t_object x_obj;
+ float dmatrix[18][9];
+ float tmatrix[18][9][64];
+ t_float bpm, qtime, wtime, plimit, dlimit, mode, sim_win, sim_sign, simile, bestsim, bestdiv, besttime, bestnum, bestsign, startoff, startnow;
+ t_outlet *time, *div, *num, *sign;//, *sta;
+} t_polyquant;
+
+static float primes[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61};
+
+void polyquant_float(t_polyquant *x, t_floatarg f) {
+ int i, j, k;
+ float sim_min;
+ x->bestsim = 0;
+ // x->sim_win = x->sim_win > 0 ? x->sim_win : 0.01; /* defaults to 0.01 so that we avoid /0 errors */
+ for(i = 0;i < x->plimit;i++) {
+ for(j = x->dlimit;j < 9;j++) {
+ for(k=0;k<64;k++) {
+ float tvalue = x->tmatrix[i][j][k];
+ sim_min = (f > tvalue) ? (f - tvalue) : (tvalue - f);
+ x->sim_sign = (f >= tvalue) ? 1 : -1;
+ x->simile = 1 / ((sim_min / x->sim_win) + 1);
+ if(x->mode == 0) {
+ if(x->simile >= x->bestsim){
+ x->bestsim = x->simile;
+ x->bestdiv = x->dmatrix[i][j];
+ x->besttime = tvalue;
+ x->bestnum = (float)k+1;
+ x->bestsign = x->sim_sign;
+ }
+ }
+ else if(x->mode == 1) {
+ if(x->simile >= x->bestsim && x->sim_sign == -1){
+ x->bestsim = x->simile;
+ x->bestdiv = x->dmatrix[i][j];
+ x->besttime = tvalue;
+ x->bestnum = (float)k+1;
+ x->bestsign = x->sim_sign;
+ }
+ }
+ else if(x->mode == 2) {
+ if(x->simile >= x->bestsim && x->sim_sign == 1){
+ x->bestsim = x->simile;
+ x->bestdiv = x->dmatrix[i][j];
+ x->besttime = tvalue;
+ x->bestnum = (float)k+1;
+ x->bestsign = x->sim_sign;
+ }
+ }
+ }
+ }
+ //so...the start time quantized, and then the quantized start becomes 0
+ //so that the duration alone is quantized.
+ //build it into the gemnotes_counter, so that you can make a gemnotes_counter_live
+ }
+ outlet_float(x->sign, x->bestsign);
+ outlet_float(x->num, x->bestnum);
+ outlet_float(x->div, x->bestdiv);
+ outlet_float(x->time, x->besttime);
+}
+
+/*
+ * The rarity of vintage instruments is a musician's cartel
+ */
+
+void polyquant_bang(t_polyquant *x) {
+ outlet_float(x->sign, x->bestsign);
+ outlet_float(x->num, x->bestnum);
+ outlet_float(x->div, x->bestdiv);
+ outlet_float(x->time, x->besttime);
+}
+
+void polyquant_bpm(t_polyquant *x, t_floatarg f) {
+ x->bpm = f > 0 ? f : 120;
+ x->qtime = 60000/x->bpm;
+ x->wtime = 4 * x->qtime;
+}
+
+void polyquant_plimit(t_polyquant *x, t_floatarg f) {
+ x->plimit = f < 1 ? 1 : f > 18 ? 18 : f;
+}
+
+void polyquant_dlimit(t_polyquant *x, t_floatarg f) {
+ x->dlimit = f < 0 ? 0 : f > 8 ? 8 : f;
+}
+
+void polyquant_mode(t_polyquant *x, t_floatarg f) {
+ x->mode = f < 0 ? 0 : f > 2 ? 2 : f;
+}
+
+void polyquant_win(t_polyquant *x, t_floatarg f) {
+ x->sim_win = f > 0 ? f : 10;
+}
+
+void *polyquant_new(t_floatarg ibpm, t_floatarg flim)
+{
+ t_polyquant *x = (t_polyquant *)pd_new(polyquant_class);
+ x->mode = 0;
+ x->bpm = ibpm > 0 ? ibpm : 120;
+ x->qtime = 60000 / x->bpm;
+ x->wtime = x->qtime * 4;
+ x->plimit = flim < 1 ? 1 : flim > 18 ? 18 : flim;
+ x->dlimit = 4;
+ x->sim_win = 10;
+ x->time = outlet_new(&x->x_obj, gensym("float"));
+ x->div = outlet_new(&x->x_obj, gensym("float"));
+ x->num = outlet_new(&x->x_obj, gensym("float"));
+ x->sign = outlet_new(&x->x_obj, gensym("float"));
+
+ int i, j, k;
+ float div, time;
+ //init dmatrix
+ for(i=0;i<18;i++) {
+ for(j=0;j<9;j++) {
+ x->dmatrix[i][j] = 0;
+ }
+ }
+
+ j = 0;
+ div = 0;
+ for(i=0;i<18;i++) {
+ div = primes[i];
+ while(div<=128) {
+ div *= 2;
+ }
+ x->dmatrix[i][0] = div;
+ while(div>=1) {
+ j++;
+ div *= 0.5;
+ x->dmatrix[i][j] = div;
+ }
+ }
+ //init tmatrix
+ for(i=0;i<18;i++) {
+ for(j=0;j<9;j++) {
+ div = x->dmatrix[i][j];
+ if(div>0) {
+ k = 0;
+ time = x->wtime / div;
+ for(k=0;k<64;k++) {
+ x->tmatrix[i][j][k] = time * (k + 1);
+ }
+ }
+ }
+ }
+ return(void *)x;
+}
+
+
+void polyquant_setup(void) {
+ polyquant_class = class_new(gensym("polyquant"),
+ (t_newmethod)polyquant_new,
+ 0, sizeof(t_polyquant),
+ 0, A_DEFFLOAT, A_DEFFLOAT, 0);
+ post("|---------->polyquant<----------|");
+ post("|---->polyrhythmic quantize<----|");
+ post("|-->edward<--->kelly<--->2010<--|");
+
+ class_addbang(polyquant_class, polyquant_bang);
+ class_addfloat(polyquant_class, polyquant_float);
+ class_addmethod(polyquant_class, (t_method)polyquant_bpm, gensym("bpm"), A_DEFFLOAT, 0);
+ class_addmethod(polyquant_class, (t_method)polyquant_plimit, gensym("plimit"), A_DEFFLOAT, 0);
+ class_addmethod(polyquant_class, (t_method)polyquant_dlimit, gensym("dlimit"), A_DEFFLOAT, 0);
+ class_addmethod(polyquant_class, (t_method)polyquant_mode, gensym("mode"), A_DEFFLOAT, 0);
+ class_addmethod(polyquant_class, (t_method)polyquant_win, gensym("win"), A_DEFFLOAT, 0);
+}
diff --git a/gemnotes_0.2.3/stave.pd b/gemnotes_0.2.3/stave.pd
new file mode 100755
index 0000000..b5a4801
--- /dev/null
+++ b/gemnotes_0.2.3/stave.pd
@@ -0,0 +1,172 @@
+#N canvas 0 22 486 625 10;
+#X obj 96 195 l2s .;
+#X msg 86 150 .;
+#X msg 127 150 .;
+#X obj 96 176 list;
+#X obj 96 214 prepend text;
+#X obj 86 112 t f b;
+#X obj 86 131 kalashnikov;
+#X obj 99 485 translateXYZ;
+#X obj 16 203 gemhead;
+#X obj 99 568 text3d;
+#X msg 330 552 justify left top;
+#X obj 242 527 loadbang;
+#X obj 270 80 inlet;
+#X obj 301 308 gemhead;
+#X obj 301 393 translateXYZ;
+#X msg 393 186 #;
+#X msg 360 193 ";
+#X obj 357 308 prepend text;
+#X obj 296 259 > 0;
+#X obj 375 156 sel 1 2;
+#X obj 405 568 text3d;
+#X obj 124 268 t b;
+#X obj 122 352 outlet;
+#X obj 81 516 color 1 1 1;
+#X obj 389 261 pack f f f;
+#X obj 398 226 t b;
+#X obj 300 425 color 1 1 1;
+#X obj 123 299 del 0;
+#X obj 369 16 inlet;
+#X obj 16 293 t b;
+#X obj 122 331 pack f f f f f 1 1 1 f;
+#X text 359 0 activate;
+#X msg 158 522 11;
+#X msg 224 588 justify;
+#X obj 296 281 &&;
+#X obj 320 239 t b f;
+#X obj 19 313 spigot 1;
+#X obj 67 250 == 0;
+#X obj 270 99 route x y z fs len clef r g b slow;
+#X obj 23 343 spigot;
+#X obj 13 407 cup;
+#X obj 45 389 >= 1;
+#X obj 44 409 sel 1;
+#X obj 44 430 del 0;
+#X msg 46 451 0;
+#X obj 82 279 > 0;
+#X msg 153 84 0;
+#X obj 153 61 loadbang;
+#X obj 227 469 r font;
+#X obj 223 492 sel 0 1;
+#X obj 373 37 sel 0;
+#X msg 451 138 0;
+#X msg 400 75 0;
+#X obj 373 56 t b b;
+#X obj 310 467 scaleXYZ 1 1 1;
+#X msg 420 380 1;
+#X msg 421 437 0.86;
+#X obj 8 265 metro 20;
+#X msg 154 552 font fonts/Music7.ttf;
+#X msg 271 509 font fonts/Music7chunky.ttf;
+#X connect 0 0 3 1;
+#X connect 0 0 4 0;
+#X connect 1 0 3 0;
+#X connect 2 0 3 1;
+#X connect 3 0 0 0;
+#X connect 4 0 9 0;
+#X connect 5 0 6 0;
+#X connect 5 1 2 0;
+#X connect 6 0 1 0;
+#X connect 7 0 23 0;
+#X connect 8 0 7 0;
+#X connect 10 0 9 0;
+#X connect 10 0 20 0;
+#X connect 11 0 58 0;
+#X connect 11 0 10 0;
+#X connect 11 0 32 0;
+#X connect 12 0 38 0;
+#X connect 13 0 14 0;
+#X connect 14 0 26 0;
+#X connect 15 0 17 0;
+#X connect 16 0 17 0;
+#X connect 17 0 20 0;
+#X connect 18 0 34 0;
+#X connect 19 0 16 0;
+#X connect 19 1 15 0;
+#X connect 19 1 55 0;
+#X connect 19 1 56 0;
+#X connect 21 0 27 0;
+#X connect 23 0 9 0;
+#X connect 24 0 23 1;
+#X connect 24 0 26 1;
+#X connect 25 0 24 0;
+#X connect 26 0 54 0;
+#X connect 27 0 30 0;
+#X connect 28 0 8 0;
+#X connect 28 0 35 0;
+#X connect 28 0 50 0;
+#X connect 29 0 36 0;
+#X connect 29 0 39 0;
+#X connect 30 0 22 0;
+#X connect 32 0 9 1;
+#X connect 32 0 20 1;
+#X connect 33 0 9 0;
+#X connect 34 0 13 0;
+#X connect 35 0 34 0;
+#X connect 35 1 34 1;
+#X connect 36 0 30 0;
+#X connect 37 0 36 1;
+#X connect 38 0 7 1;
+#X connect 38 0 14 1;
+#X connect 38 0 30 0;
+#X connect 38 1 7 2;
+#X connect 38 1 21 0;
+#X connect 38 1 14 2;
+#X connect 38 1 30 1;
+#X connect 38 2 7 3;
+#X connect 38 2 21 0;
+#X connect 38 2 14 3;
+#X connect 38 2 30 2;
+#X connect 38 3 20 1;
+#X connect 38 3 21 0;
+#X connect 38 4 5 0;
+#X connect 38 4 21 0;
+#X connect 38 4 30 3;
+#X connect 38 5 19 0;
+#X connect 38 5 18 0;
+#X connect 38 5 21 0;
+#X connect 38 5 30 4;
+#X connect 38 6 24 0;
+#X connect 38 6 21 0;
+#X connect 38 6 30 5;
+#X connect 38 7 24 1;
+#X connect 38 7 25 0;
+#X connect 38 7 21 0;
+#X connect 38 7 30 6;
+#X connect 38 8 24 2;
+#X connect 38 8 25 0;
+#X connect 38 8 21 0;
+#X connect 38 8 30 7;
+#X connect 38 9 37 0;
+#X connect 38 9 45 0;
+#X connect 38 9 41 1;
+#X connect 39 0 40 0;
+#X connect 40 0 41 0;
+#X connect 41 0 42 0;
+#X connect 42 0 43 0;
+#X connect 42 0 30 0;
+#X connect 43 0 44 0;
+#X connect 44 0 40 0;
+#X connect 45 0 39 1;
+#X connect 46 0 8 0;
+#X connect 46 0 35 0;
+#X connect 47 0 46 0;
+#X connect 48 0 49 0;
+#X connect 49 0 58 0;
+#X connect 49 1 59 0;
+#X connect 50 0 53 0;
+#X connect 50 1 30 8;
+#X connect 50 1 57 0;
+#X connect 51 0 30 8;
+#X connect 52 0 30 8;
+#X connect 52 0 57 0;
+#X connect 53 0 30 0;
+#X connect 53 1 52 0;
+#X connect 54 0 20 0;
+#X connect 55 0 54 1;
+#X connect 56 0 54 1;
+#X connect 57 0 29 0;
+#X connect 58 0 9 0;
+#X connect 58 0 20 0;
+#X connect 59 0 9 0;
diff --git a/gemnotes_0.2.3/tempo.pd b/gemnotes_0.2.3/tempo.pd
new file mode 100755
index 0000000..59a8fb2
--- /dev/null
+++ b/gemnotes_0.2.3/tempo.pd
@@ -0,0 +1,261 @@
+#N canvas 362 206 1010 598 10;
+#X obj 76 272 text3d;
+#X obj 52 172 gemhead;
+#N canvas 893 275 450 300 inittext 0;
+#X obj 128 155 outlet;
+#X obj 279 151 outlet;
+#X msg 27 110 font fonts/Music8.ttf \, justify left top;
+#X obj 150 57 r \$0-lbn;
+#X msg 283 110 8;
+#X connect 2 0 0 0;
+#X connect 3 0 2 0;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
+#X restore 129 247 pd inittext;
+#X msg 257 156 text G;
+#X msg 209 156 text 7;
+#X msg 305 156 text W;
+#X obj 48 247 color 0 0 0;
+#X obj 56 223 translateXYZ 2 -40 -0.9;
+#X obj 221 118 sel 1 2 4 8 16 32 64;
+#X obj 203 66 moses 0;
+#X msg 203 87 1;
+#X msg 242 86 0;
+#X obj 173 86 abs;
+#N canvas 0 0 450 300 inittext 0;
+#X obj 128 155 outlet;
+#X obj 259 153 outlet;
+#X msg 10 115 font fonts/Music8.ttf \, justify left top;
+#X obj 157 78 r \$0-lbn;
+#X msg 263 115 6;
+#X connect 2 0 0 0;
+#X connect 3 0 2 0;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
+#X restore 371 236 pd inittext;
+#X obj 360 268 text3d;
+#X obj 370 129 gemhead;
+#X msg 527 244 text g;
+#X obj 360 212 color 0 0 0;
+#X obj 527 225 r \$0-lbn;
+#X obj 361 181 translateXYZ 2 -40 -0.9;
+#X text 369 111 the dot;
+#X text 109 171 the notehead;
+#X obj 171 554 text3d;
+#X obj 135 442 gemhead;
+#X text 253 376 a tail;
+#X msg 371 518 text ~;
+#N canvas 22 321 450 300 inittext 0;
+#X obj 128 155 outlet;
+#X obj 259 153 outlet;
+#X msg 30 83 font fonts/Music8.ttf \, justify left top;
+#X obj 225 52 r \$0-lbn;
+#X msg 263 112 6;
+#X connect 2 0 0 0;
+#X connect 3 0 2 0;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
+#X restore 267 525 pd inittext;
+#X msg 411 518 text b;
+#X msg 451 518 text c;
+#X msg 126 381 1;
+#X msg 154 417 0;
+#X obj 155 398 t b;
+#X msg 491 518 text |;
+#X obj 300 500 r \$0-color;
+#X obj 276 448 r \$0-z;
+#X obj 171 528 color 0 0 0;
+#X obj 371 497 r \$0-lbn;
+#X obj 159 468 translateXYZ 2 -40 0;
+#X obj 126 348 sel 8 16 32 64;
+#X obj 467 381 gemhead;
+#X text 480 303 a stem;
+#X obj 622 419 r \$0-color;
+#X obj 624 393 r \$0-z;
+#X obj 496 436 color 0 0 0;
+#X obj 496 414 translateXYZ 2 -40 0;
+#X obj 26 10 inlet;
+#X obj 94 57 pack f f f;
+#X obj 96 88 s \$0-color;
+#X obj 68 111 s \$0-z;
+#X obj 26 29 unpack f f f f f f f f;
+#X obj 99 201 +;
+#X obj 189 194 r \$0-z;
+#X obj 194 440 +;
+#X obj 468 361 > 3.999;
+#X obj 495 160 r \$0-z;
+#X obj 419 30 \$1;
+#X text 442 17 offset;
+#X obj 665 40 \$2;
+#X text 689 29 BPM;
+#X obj 337 32 \$3;
+#X text 360 21 rhythm;
+#X obj 149 500 rotateXYZ 0 180 180;
+#X obj 675 133 makefilename =%d;
+#X obj 493 21 inlet;
+#X obj 480 45 route \$4;
+#X obj 457 69 route xoff bpm rhythm;
+#X msg 230 28 0;
+#X obj 174 28 spigot 1;
+#X obj 291 26 t b;
+#X obj 292 63 s \$0-lbn;
+#N canvas 705 393 442 272 inittext 0;
+#X obj 128 155 outlet;
+#X obj 259 153 outlet;
+#X obj 195 68 r \$0-lbn;
+#X msg 33 92 font fonts/LucidaBrightRegular.ttf \, justify left top
+;
+#X msg 263 113 5;
+#X connect 2 0 3 0;
+#X connect 2 0 4 0;
+#X connect 3 0 0 0;
+#X connect 4 0 1 0;
+#X restore 743 357 pd inittext;
+#X msg 682 170 text \$1;
+#X obj 438 209 r \$0-color;
+#X obj 700 388 text3d;
+#X obj 710 249 gemhead;
+#X obj 608 313 +;
+#X obj 700 332 color 0 0 0;
+#X obj 701 301 translateXYZ 2 -40 -0.9;
+#X obj 835 280 r \$0-z;
+#X obj 778 329 r \$0-color;
+#X text 787 388 tempo;
+#X obj 769 257 + 0.1;
+#X obj 404 160 + 0.28;
+#X obj 533 392 + 0.17;
+#X obj 496 480 rectangle 0.015 0.25;
+#X obj 565 120 sel 0 1;
+#X msg 587 139 0.1;
+#X msg 565 139 0;
+#X obj 122 145 + 0.35;
+#X obj 450 154 - 0.45;
+#X obj 818 260 - 1.18;
+#X obj 575 393 - 1.14;
+#X obj 237 445 - 2.42;
+#X connect 1 0 7 0;
+#X connect 2 0 0 0;
+#X connect 2 1 0 1;
+#X connect 3 0 0 0;
+#X connect 4 0 0 0;
+#X connect 5 0 0 0;
+#X connect 6 0 0 0;
+#X connect 7 0 6 0;
+#X connect 8 0 4 0;
+#X connect 8 1 3 0;
+#X connect 8 2 5 0;
+#X connect 8 3 5 0;
+#X connect 8 4 5 0;
+#X connect 8 5 5 0;
+#X connect 8 6 5 0;
+#X connect 9 0 10 0;
+#X connect 9 0 12 0;
+#X connect 9 1 11 0;
+#X connect 9 1 8 0;
+#X connect 9 1 38 0;
+#X connect 9 1 53 0;
+#X connect 10 0 15 0;
+#X connect 10 0 85 0;
+#X connect 11 0 15 0;
+#X connect 11 0 85 0;
+#X connect 12 0 8 0;
+#X connect 12 0 38 0;
+#X connect 12 0 53 0;
+#X connect 13 0 14 0;
+#X connect 13 1 14 1;
+#X connect 15 0 19 0;
+#X connect 16 0 14 0;
+#X connect 17 0 14 0;
+#X connect 18 0 16 0;
+#X connect 19 0 17 0;
+#X connect 23 0 37 0;
+#X connect 25 0 22 0;
+#X connect 26 0 22 0;
+#X connect 26 1 22 1;
+#X connect 27 0 22 0;
+#X connect 28 0 22 0;
+#X connect 29 0 23 0;
+#X connect 30 0 23 0;
+#X connect 31 0 30 0;
+#X connect 32 0 22 0;
+#X connect 33 0 35 1;
+#X connect 34 0 37 3;
+#X connect 35 0 22 0;
+#X connect 36 0 25 0;
+#X connect 37 0 61 0;
+#X connect 38 0 25 0;
+#X connect 38 0 29 0;
+#X connect 38 1 27 0;
+#X connect 38 1 29 0;
+#X connect 38 2 28 0;
+#X connect 38 2 29 0;
+#X connect 38 3 32 0;
+#X connect 38 3 29 0;
+#X connect 38 4 31 0;
+#X connect 39 0 44 0;
+#X connect 41 0 43 1;
+#X connect 42 0 44 3;
+#X connect 43 0 84 0;
+#X connect 44 0 43 0;
+#X connect 45 0 49 0;
+#X connect 45 0 67 0;
+#X connect 46 0 47 0;
+#X connect 46 0 6 1;
+#X connect 49 0 50 0;
+#X connect 49 1 75 0;
+#X connect 49 1 88 0;
+#X connect 49 1 89 0;
+#X connect 49 1 90 0;
+#X connect 49 1 91 0;
+#X connect 49 2 48 0;
+#X connect 49 5 46 0;
+#X connect 49 6 46 1;
+#X connect 49 7 46 2;
+#X connect 50 0 7 1;
+#X connect 50 0 82 0;
+#X connect 50 0 83 0;
+#X connect 51 0 7 3;
+#X connect 52 0 37 1;
+#X connect 53 0 39 0;
+#X connect 54 0 19 3;
+#X connect 55 0 50 1;
+#X connect 57 0 62 0;
+#X connect 59 0 9 0;
+#X connect 61 0 35 0;
+#X connect 62 0 71 0;
+#X connect 63 0 64 0;
+#X connect 64 0 65 0;
+#X connect 65 0 50 1;
+#X connect 65 1 62 0;
+#X connect 65 2 9 0;
+#X connect 66 0 67 1;
+#X connect 67 0 66 0;
+#X connect 67 0 68 0;
+#X connect 68 0 59 0;
+#X connect 68 0 55 0;
+#X connect 68 0 57 0;
+#X connect 68 0 69 0;
+#X connect 70 0 73 0;
+#X connect 70 1 73 1;
+#X connect 71 0 73 0;
+#X connect 72 0 17 1;
+#X connect 74 0 77 0;
+#X connect 76 0 73 0;
+#X connect 77 0 76 0;
+#X connect 78 0 77 3;
+#X connect 79 0 76 1;
+#X connect 81 0 77 1;
+#X connect 82 0 19 1;
+#X connect 82 0 81 0;
+#X connect 83 0 44 1;
+#X connect 83 0 52 0;
+#X connect 85 0 87 0;
+#X connect 85 1 86 0;
+#X connect 86 0 81 1;
+#X connect 87 0 81 1;
+#X connect 88 0 7 2;
+#X connect 89 0 19 2;
+#X connect 90 0 77 2;
+#X connect 91 0 44 2;
+#X connect 91 0 92 0;
+#X connect 92 0 37 2;
diff --git a/gemnotes_0.2.3/timenq.pd b/gemnotes_0.2.3/timenq.pd
new file mode 100755
index 0000000..3f4c7a3
--- /dev/null
+++ b/gemnotes_0.2.3/timenq.pd
@@ -0,0 +1,33 @@
+#N canvas 0 22 516 300 10;
+#X obj 68 21 inlet;
+#X obj 71 104 > 0;
+#X obj 71 125 sel 1 0;
+#X obj 71 146 timer;
+#X obj 72 242 prepend \$1;
+#X obj 69 276 outlet;
+#X text 201 115 time notes;
+#X obj 66 56 route \$1;
+#X obj 115 102 moses 1;
+#X obj 51 170 polyquant \$2 \$3;
+#X obj 226 62 timer;
+#X obj 227 31 inlet;
+#X obj 71 215 pack f f f f;
+#X obj 359 27 inlet;
+#X obj 69 81 t f f;
+#X connect 0 0 7 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 2 0 10 1;
+#X connect 2 1 3 1;
+#X connect 3 0 9 0;
+#X connect 4 0 5 0;
+#X connect 7 0 14 0;
+#X connect 8 1 12 2;
+#X connect 9 1 12 0;
+#X connect 9 2 12 1;
+#X connect 10 0 12 3;
+#X connect 11 0 10 0;
+#X connect 12 0 4 0;
+#X connect 13 0 9 0;
+#X connect 14 0 1 0;
+#X connect 14 1 8 0;
diff --git a/gemnotes_0.2.3/translate_midi.pd b/gemnotes_0.2.3/translate_midi.pd
new file mode 100755
index 0000000..d22d619
--- /dev/null
+++ b/gemnotes_0.2.3/translate_midi.pd
@@ -0,0 +1,93 @@
+#N canvas 463 113 682 437 10;
+#X obj 102 49 midifile;
+#X obj 249 48 sel 1;
+#X obj 102 149 pack f 0;
+#X obj 102 320 prepend add;
+#X obj 102 339 msgfile;
+#X obj 214 275 print;
+#X msg 200 344 print;
+#X obj 271 303 savepanel;
+#X msg 271 323 write \$1;
+#X obj 271 265 bng 15 250 50 0 empty empty SAVE_SCORE 17 7 0 10 -262144
+-1 -1;
+#X msg 249 70 clear;
+#X msg 220 202 finished!;
+#X obj 102 241 polytimeq;
+#X obj 193 91 route 20 21;
+#X obj 189 126 *;
+#X floatatom 164 175 5 0 0 0 - - -;
+#X msg 164 191 bpm \$1;
+#X obj 102 99 route 128 144;
+#X obj 131 70 route controller;
+#X obj 218 110 t b f;
+#X obj 210 151 change;
+#X msg 289 82 set 1;
+#X obj 303 58 loadbang;
+#X obj 102 27 bng 15 250 50 0 empty empty OPEN_MIDI_FILE 17 7 0 10
+-262144 -1 -1;
+#X obj 212 7 tgl 15 0 empty empty BEGIN_CONVERSION 17 7 0 10 -262144
+-1 -1 0 1;
+#X obj 212 27 t f f;
+#X obj 165 150 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#N canvas 0 22 450 300 (subpatch) 0;
+#X obj 138 77 openpanel;
+#X obj 132 54 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 37 105 loadbang;
+#X obj 108 215 outlet;
+#X obj 135 25 inlet;
+#X msg 133 107 set \$1 \, bang;
+#X msg 93 150 /media/sda3/Data/puredata/2010/vibra/M1_bars.txt;
+#X obj 101 178 symbol;
+#X connect 0 0 5 0;
+#X connect 1 0 0 0;
+#X connect 4 0 1 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 7 0 3 0;
+#X restore 138 170 pd;
+#X obj 102 125 unpack f;
+#X text 299 130 This patch (attempts) to convert standard MIDI files
+to text scores for use with Gemnotes.;
+#X text 301 164 The files are rarely perfect and often need a little
+editing after they are generated in order to produce really beautiful
+scores.;
+#X connect 0 0 17 0;
+#X connect 0 1 18 0;
+#X connect 0 2 11 0;
+#X connect 1 0 12 1;
+#X connect 1 0 21 0;
+#X connect 1 0 10 0;
+#X connect 2 0 12 0;
+#X connect 3 0 4 0;
+#X connect 6 0 4 0;
+#X connect 7 0 8 0;
+#X connect 8 0 4 0;
+#X connect 9 0 7 0;
+#X connect 10 0 4 0;
+#X connect 11 0 5 0;
+#X connect 12 0 3 0;
+#X connect 12 0 5 0;
+#X connect 13 0 14 0;
+#X connect 13 1 19 0;
+#X connect 14 0 20 0;
+#X connect 15 0 16 0;
+#X connect 16 0 12 2;
+#X connect 16 0 3 0;
+#X connect 17 0 28 0;
+#X connect 17 1 12 0;
+#X connect 18 0 13 0;
+#X connect 19 0 14 0;
+#X connect 19 1 14 1;
+#X connect 20 0 15 0;
+#X connect 21 0 20 0;
+#X connect 22 0 21 0;
+#X connect 22 0 10 0;
+#X connect 23 0 0 0;
+#X connect 24 0 25 0;
+#X connect 25 0 0 1;
+#X connect 25 1 1 0;
+#X connect 26 0 27 0;
+#X connect 27 0 12 3;
+#X connect 28 0 2 0;
diff --git a/gemnotes_0.2.3/tsig.pd b/gemnotes_0.2.3/tsig.pd
new file mode 100755
index 0000000..d3a9ac3
--- /dev/null
+++ b/gemnotes_0.2.3/tsig.pd
@@ -0,0 +1,182 @@
+#N canvas 393 271 887 434 10;
+#X obj 73 249 text3d;
+#X msg 117 233 font fonts/LucidaBrightRegular.ttf;
+#X obj 310 217 loadbang;
+#X msg 330 233 justify left top;
+#X obj 73 214 color 1 1 1;
+#X obj 43 130 gemhead;
+#X obj 298 137 pack f f f;
+#X obj 186 155 +;
+#X obj 151 9 inlet;
+#X obj 194 176 prepend text;
+#X obj 136 155 + -1.74;
+#X obj 463 279 text3d;
+#X obj 463 244 color 1 1 1;
+#X obj 431 160 gemhead;
+#X obj 576 185 +;
+#X obj 279 176 prepend text;
+#X obj 528 185 + -2.12;
+#X obj 96 155 + 0.7;
+#X obj 486 185 + 0.7;
+#X obj 116 48 > 9;
+#X obj 116 69 sel 0 1;
+#X obj 516 48 > 9;
+#X obj 516 69 sel 0 1;
+#X obj 96 90 t b;
+#X obj 486 90 t b;
+#X msg 192 207 7;
+#X obj 26 28 sel 1 7 4;
+#X obj 449 32 sel 1 7 4;
+#X obj 43 111 > 0;
+#X obj 431 141 > 0;
+#X obj 317 115 t b;
+#X obj 280 262 pack f f;
+#X obj 281 289 outlet;
+#X obj 331 6 inlet;
+#X obj 413 188 t b;
+#X obj 185 33 unpack f f f f f f f f;
+#X msg 116 133 0.1;
+#X msg 138 133 0;
+#X msg 160 133 0.12;
+#X msg 192 133 0.08;
+#X msg 516 163 0.1;
+#X msg 538 163 0;
+#X msg 560 163 0.12;
+#X msg 594 163 0.08;
+#X msg 636 116 xoff \$1;
+#X msg 578 120 n \$1;
+#X msg 613 139 d \$1;
+#X obj 96 175 +;
+#X obj 486 204 +;
+#X obj 656 24 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 639 89 change;
+#X obj 599 84 change;
+#X obj 559 99 change;
+#X obj 581 31 t b;
+#X obj 581 57 \$2;
+#X obj 617 57 \$3;
+#X obj 645 57 \$1;
+#X obj 685 55 \$4;
+#X obj 121 176 +;
+#X obj 383 9 route xoff fs n d yoff;
+#X obj 514 206 +;
+#X obj 688 87 change;
+#X msg 695 117 yoff \$1;
+#X obj 73 195 translateXYZ 0 -40 0;
+#X obj 463 225 translateXYZ 0 -40 0;
+#X connect 1 0 0 0;
+#X connect 1 0 11 0;
+#X connect 2 0 1 0;
+#X connect 2 0 3 0;
+#X connect 2 0 25 0;
+#X connect 3 0 0 0;
+#X connect 3 0 11 0;
+#X connect 4 0 0 0;
+#X connect 5 0 63 0;
+#X connect 6 0 4 1;
+#X connect 6 0 12 1;
+#X connect 7 0 63 3;
+#X connect 8 0 35 0;
+#X connect 8 0 53 0;
+#X connect 9 0 0 0;
+#X connect 10 0 58 0;
+#X connect 12 0 11 0;
+#X connect 13 0 64 0;
+#X connect 14 0 64 3;
+#X connect 15 0 11 0;
+#X connect 16 0 60 0;
+#X connect 17 0 47 0;
+#X connect 18 0 48 0;
+#X connect 19 0 20 0;
+#X connect 20 0 36 0;
+#X connect 20 0 23 0;
+#X connect 20 1 37 0;
+#X connect 20 1 23 0;
+#X connect 21 0 22 0;
+#X connect 22 0 40 0;
+#X connect 22 0 24 0;
+#X connect 22 1 41 0;
+#X connect 22 1 24 0;
+#X connect 23 0 17 0;
+#X connect 24 0 18 0;
+#X connect 25 0 0 1;
+#X connect 25 0 11 1;
+#X connect 26 0 38 0;
+#X connect 26 0 23 0;
+#X connect 26 1 38 0;
+#X connect 26 1 23 0;
+#X connect 26 2 39 0;
+#X connect 26 2 23 0;
+#X connect 26 3 19 0;
+#X connect 27 0 42 0;
+#X connect 27 0 24 0;
+#X connect 27 1 42 0;
+#X connect 27 1 24 0;
+#X connect 27 2 43 0;
+#X connect 27 2 24 0;
+#X connect 27 3 21 0;
+#X connect 28 0 5 0;
+#X connect 29 0 13 0;
+#X connect 30 0 6 0;
+#X connect 31 0 32 0;
+#X connect 33 0 34 0;
+#X connect 33 0 59 0;
+#X connect 34 0 3 0;
+#X connect 34 0 1 0;
+#X connect 34 0 25 0;
+#X connect 35 0 17 0;
+#X connect 35 0 18 0;
+#X connect 35 1 10 0;
+#X connect 35 1 16 0;
+#X connect 35 2 7 0;
+#X connect 35 2 14 0;
+#X connect 35 5 6 0;
+#X connect 35 6 6 1;
+#X connect 35 7 6 2;
+#X connect 36 0 17 1;
+#X connect 37 0 17 1;
+#X connect 38 0 17 1;
+#X connect 39 0 17 1;
+#X connect 40 0 18 1;
+#X connect 41 0 18 1;
+#X connect 42 0 18 1;
+#X connect 43 0 18 1;
+#X connect 44 0 59 0;
+#X connect 45 0 59 0;
+#X connect 46 0 59 0;
+#X connect 47 0 63 1;
+#X connect 48 0 64 1;
+#X connect 49 0 54 0;
+#X connect 49 0 55 0;
+#X connect 49 0 56 0;
+#X connect 50 0 44 0;
+#X connect 51 0 46 0;
+#X connect 52 0 45 0;
+#X connect 53 0 34 0;
+#X connect 53 0 54 0;
+#X connect 53 0 55 0;
+#X connect 53 0 56 0;
+#X connect 53 0 57 0;
+#X connect 54 0 52 0;
+#X connect 55 0 51 0;
+#X connect 56 0 50 0;
+#X connect 57 0 61 0;
+#X connect 58 0 63 2;
+#X connect 59 0 47 1;
+#X connect 59 0 48 1;
+#X connect 59 2 26 0;
+#X connect 59 2 28 0;
+#X connect 59 2 9 0;
+#X connect 59 2 31 0;
+#X connect 59 3 27 0;
+#X connect 59 3 29 0;
+#X connect 59 3 15 0;
+#X connect 59 3 31 1;
+#X connect 59 4 58 1;
+#X connect 59 4 60 1;
+#X connect 60 0 64 2;
+#X connect 61 0 62 0;
+#X connect 62 0 59 0;
+#X connect 63 0 4 0;
+#X connect 64 0 12 0;
diff --git a/gemnotes_0.2.3/vera.ttf b/gemnotes_0.2.3/vera.ttf
new file mode 100755
index 0000000..58cd6b5
--- /dev/null
+++ b/gemnotes_0.2.3/vera.ttf
Binary files differ