#N canvas 635 134 972 740 12; #N canvas 1287 785 450 250 (subpatch) 0; #X array scale 8 float 3; #A 0 2 2 1 2 2 2 1 1; #X coords 0 0 8 12 200 140 1 0 0; #X restore 594 89 graph; #X obj 201 564 noteout; #X floatatom 273 555 5 0 0 0 - - -; #X obj 255 299 + 2; #X obj 217 271 t f f f; #X obj 466 291 + 4; #X obj 150 414 +; #X obj 169 322 t f f; #X obj 352 390 tabread scale; #X obj 301 385 * 12; #X obj 301 411 +; #X obj 320 319 t f f; #X obj 498 390 tabread scale; #X obj 466 319 t f f; #X obj 456 416 +; #X obj 201 509 makenote 127 200; #X obj 452 389 * 12; #X obj 201 367 mod 7; #X obj 301 360 div 7; #X obj 352 364 mod 7; #X obj 452 364 div 7; #X obj 498 364 mod 7; #X obj 471 558 array set scale; #X text 570 532 major; #X obj 83 36 grid; #X obj 115 94 route 1; #X obj 115 119 unpack f f; #X obj 217 202 spigot; #X msg 149 9 connect; #X obj 201 459 + 60; #X obj 256 174 < 7; #X obj 27 13 r grid; #X msg 9 97 set \$2 \$3 \$1; #X obj 9 122 s grid; #X text 235 485 root; #X obj 182 154 t f f; #X obj 83 61 t a a; #X text 232 10 thingy for playing chords. TODO more scales \, chord types \, inversions \, extensions \, chromatic notes \, the fun chord stuff. Also better interface.; #X obj 201 484 + 0; #X msg 471 532 2 2 1 2 2 2 1; #N canvas 750 277 916 709 get-note 1; #X msg 205 142 0; #X obj 163 142 until; #X obj 163 167 f; #X obj 163 192 + 1; #X obj 195 263 - 1; #X obj 195 288 tabread scale; #X obj 195 343 +; #X obj 195 368 t f f; #X obj 177 396 f; #X obj 177 421 t f b; #X msg 222 421 0; #X obj 163 217 t f f; #X obj 163 276 sel; #X obj 173 114 t b f b f, f 12; #X obj 141 53 inlet scale_degree; #X obj 126 462 outlet; #X obj 141 78 sel 0; #X msg 127 169 0; #X obj 195 313 - 1; #X text 5 12 TODO clean this bullshit up \, comment it \, and add inversions to it; #X connect 0 0 2 1; #X connect 1 0 2 0; #X connect 2 0 3 0; #X connect 3 0 2 1; #X connect 3 0 11 0; #X connect 4 0 5 0; #X connect 5 0 18 0; #X connect 6 0 7 0; #X connect 7 0 8 1; #X connect 7 1 6 1; #X connect 8 0 9 0; #X connect 9 0 15 0; #X connect 9 1 10 0; #X connect 10 0 7 0; #X connect 11 0 12 0; #X connect 11 1 4 0; #X connect 12 0 8 0; #X connect 13 1 1 0; #X connect 13 2 0 0; #X connect 13 3 12 1; #X connect 14 0 16 0; #X connect 16 0 17 0; #X connect 16 1 13 0; #X connect 17 0 15 0; #X connect 18 0 6 0; #X restore 196 396 pd get-note; #X connect 2 0 1 2; #X connect 3 0 11 0; #X connect 4 0 7 0; #X connect 5 0 13 0; #X connect 6 0 29 0; #X connect 7 0 6 0; #X connect 7 1 17 0; #X connect 8 0 10 1; #X connect 9 0 10 0; #X connect 10 0 29 0; #X connect 11 0 18 0; #X connect 11 1 19 0; #X connect 12 0 14 1; #X connect 13 0 20 0; #X connect 13 1 21 0; #X connect 14 0 29 0; #X connect 15 0 1 0; #X connect 15 1 1 1; #X connect 16 0 14 0; #X connect 17 0 40 0; #X connect 18 0 9 0; #X connect 19 0 8 0; #X connect 20 0 16 0; #X connect 21 0 12 0; #X connect 24 0 36 0; #X connect 25 0 26 0; #X connect 26 0 35 0; #X connect 27 0 4 0; #X connect 28 0 24 0; #X connect 29 0 38 0; #X connect 30 0 27 1; #X connect 31 0 24 0; #X connect 32 0 33 0; #X connect 35 0 27 0; #X connect 35 1 30 0; #X connect 36 0 32 0; #X connect 36 1 25 0; #X connect 38 0 15 0; #X connect 39 0 22 0; #X connect 40 0 6 1;