#N canvas 0 25 1022 661 10; #X floatatom 245 389 5 0 0 0 - - -; #N canvas 0 25 1016 640 relativistic 0; #X msg 601 -22 1; #X msg 535 -23 -1; #X obj 570 37 +; #X obj 638 35 int; #X floatatom 570 56 5 0 0 0 - - -; #X floatatom 312 195 5 0 0 0 - - -; #X obj 707 127 / 7; #X obj 732 148 int; #X floatatom 736 170 5 0 0 0 - - -; #X floatatom 686 151 5 0 0 0 - - -; #X obj 733 190 * -1; #X obj 717 209 +; #X obj 717 228 < 0; #X obj 717 247 * -1; #X obj 717 266 +; #X text 662 108 integer floor to determine octave correctly; #X obj 717 284 * 12; #X obj 503 445 +; #X msg 501 -23 -2; #X msg 634 -23 2; #X msg 471 -24 -3; #X msg 665 -22 3; #X msg 440 -25 -4; #X msg 695 -21 4; #X msg 409 -26 -5; #X msg 726 -20 5; #X obj 130 357 f; #X obj 161 357 f; #X obj 192 357 f; #X obj 223 357 f; #X obj 253 357 f; #X floatatom 389 396 5 0 0 0 - - -; #X floatatom 93 305 5 0 0 0 - - -; #X floatatom 127 305 5 0 0 0 - - -; #X floatatom 161 305 5 0 0 0 - - -; #X floatatom 195 305 5 0 0 0 - - -; #X floatatom 229 305 5 0 0 0 - - -; #X obj 279 357 f; #X obj 305 357 f; #X floatatom 263 305 5 0 0 0 - - -; #X floatatom 297 305 5 0 0 0 - - -; #X obj 573 96 t f f; #X obj 34 -423 inlet scalelist; #X obj 503 464 outlet note; #X msg 566 -23 0; #X floatatom 686 12 5 0 0 0 - - -; #X floatatom 638 54 5 0 0 0 - - -; #X obj 312 176 mod 7; #X text 197 238 unpack scale to individual notes (twice \, because two notes play at once); #X obj 569 -120 key; #X floatatom 569 -101 5 0 0 0 - - -; #X obj 516 -70 sel 116; #X obj 564 -70 sel 32; #X obj 468 -70 sel 114; #X obj 606 -70 sel 121; #X obj 654 -70 sel 117; #X obj 702 -70 sel 105; #X obj 420 -70 sel 101; #X obj 750 -70 sel 111; #X obj 372 -70 sel 119; #X obj 324 -70 sel 113; #X obj 798 -70 sel 112; #X obj 34 -404 sort; #X obj 783 0 loadbang; #X msg 783 19 30; #X obj 130 -423 inlet numberofnotes; #X obj 331 357 f; #X floatatom 332 305 5 0 0 0 - - -; #X obj 312 214 select 0 1 2 3 4 5 6 7 8 9 10 11; #X obj 180 267 unpack f f f f f f f f f f f f; #X floatatom 366 305 5 0 0 0 - - -; #X floatatom 400 305 5 0 0 0 - - -; #X floatatom 434 305 5 0 0 0 - - -; #X floatatom 469 305 5 0 0 0 - - -; #X obj 357 357 f; #X obj 383 357 f; #X obj 409 357 f; #X obj 435 357 f; #X connect 0 0 2 0; #X connect 1 0 2 0; #X connect 2 0 3 0; #X connect 2 0 4 0; #X connect 3 0 2 1; #X connect 3 0 46 0; #X connect 4 0 41 0; #X connect 5 0 68 0; #X connect 6 0 7 0; #X connect 6 0 9 0; #X connect 7 0 8 0; #X connect 8 0 10 0; #X connect 8 0 14 1; #X connect 9 0 11 0; #X connect 10 0 11 1; #X connect 11 0 12 0; #X connect 12 0 13 0; #X connect 13 0 14 0; #X connect 14 0 16 0; #X connect 16 0 17 0; #X connect 17 0 43 0; #X connect 18 0 2 0; #X connect 19 0 2 0; #X connect 20 0 2 0; #X connect 21 0 2 0; #X connect 22 0 2 0; #X connect 23 0 2 0; #X connect 24 0 2 0; #X connect 25 0 2 0; #X connect 26 0 31 0; #X connect 27 0 31 0; #X connect 28 0 31 0; #X connect 29 0 31 0; #X connect 30 0 31 0; #X connect 31 0 17 1; #X connect 37 0 31 0; #X connect 38 0 31 0; #X connect 41 0 6 0; #X connect 41 1 47 0; #X connect 42 0 62 0; #X connect 44 0 2 0; #X connect 45 0 2 1; #X connect 47 0 5 0; #X connect 49 0 50 0; #X connect 50 0 51 0; #X connect 50 0 52 0; #X connect 50 0 53 0; #X connect 50 0 54 0; #X connect 50 0 55 0; #X connect 50 0 57 0; #X connect 50 0 56 0; #X connect 50 0 58 0; #X connect 50 0 59 0; #X connect 50 0 61 0; #X connect 50 0 60 0; #X connect 51 0 1 0; #X connect 52 0 44 0; #X connect 53 0 18 0; #X connect 54 0 0 0; #X connect 55 0 19 0; #X connect 56 0 21 0; #X connect 57 0 20 0; #X connect 58 0 23 0; #X connect 59 0 22 0; #X connect 60 0 24 0; #X connect 61 0 25 0; #X connect 62 0 69 0; #X connect 63 0 64 0; #X connect 64 0 45 0; #X connect 65 0 47 1; #X connect 65 0 6 1; #X connect 66 0 31 0; #X connect 68 0 26 0; #X connect 68 1 27 0; #X connect 68 2 28 0; #X connect 68 3 29 0; #X connect 68 4 30 0; #X connect 68 5 37 0; #X connect 68 6 38 0; #X connect 68 7 66 0; #X connect 68 8 74 0; #X connect 68 9 75 0; #X connect 68 10 76 0; #X connect 68 11 77 0; #X connect 69 0 26 1; #X connect 69 0 32 0; #X connect 69 1 27 1; #X connect 69 1 33 0; #X connect 69 2 28 1; #X connect 69 2 34 0; #X connect 69 3 29 1; #X connect 69 3 35 0; #X connect 69 4 30 1; #X connect 69 4 36 0; #X connect 69 5 37 1; #X connect 69 5 39 0; #X connect 69 6 38 1; #X connect 69 6 40 0; #X connect 69 7 66 1; #X connect 69 7 67 0; #X connect 69 8 70 0; #X connect 69 8 74 1; #X connect 69 9 71 0; #X connect 69 9 75 1; #X connect 69 10 72 0; #X connect 69 10 76 1; #X connect 69 11 73 0; #X connect 69 11 77 1; #X connect 74 0 31 0; #X connect 75 0 31 0; #X connect 76 0 31 0; #X connect 77 0 31 0; #X restore 245 365 pd relativistic; #X msg 672 -9 \; number-of-notes 6 \; scale-list 0 2 4 6 8 10; #X text 824 11 hexatonic; #X text 796 -187 pentatonic; #X msg 672 -199 \; number-of-notes 5 \; scale-list 0 2 4 7 9; #X msg 672 -142 \; number-of-notes 5 \; scale-list 0 3 5 7 10; #X text 805 -127 pentatonic minor (blues); #X text 818 -66 blues with tritone; #X msg 672 -81 \; number-of-notes 6 \; scale-list 0 3 5 6 7 10; #X msg 672 241 \; number-of-notes 8 \; scale-list 0 1 3 4 6 7 9 10 ; #X obj 672 87 vradio 15 1 0 7 empty empty empty 0 -6 0 10 -262144 -1 -1 0; #X text 686 85 ionian; #X text 687 101 dorian; #X text 687 115 phrygian; #X text 687 132 lydian; #X text 687 146 mixolydian; #X text 688 161 aeolian; #X text 688 176 locrian; #X obj 672 49 loadbang; #X msg 672 68 0; #N canvas 0 25 1016 656 diatonicmodes 0; #X obj 72 -461 sel 0 1 2 3 4 5 6; #X msg 72 -440 0; #X msg 46 -123 add2 \$1; #X obj 46 -143 mod 12; #X msg 104 -133 set; #X msg 45 -99 11 9 7 5 4 2 0; #X msg 86 -420 -2; #X msg 100 -400 -4; #X msg 114 -380 -5; #X msg 128 -360 -7; #X msg 142 -340 -9; #X msg 156 -320 -11; #X obj 67 -287 expr $f1+0 \; $f1+2 \; $f1+4 \; $f1+5 \; $f1+7 \; $f1+9 \; $f1+11; #X obj 45 -76 sort; #X msg 45 -52 \; number-of-notes 7 \; scale-list \$1 \$2 \$3 \$4 \$5 \$6 \$7; #X obj 45 -483 t b f b; #X obj 8 -511 inlet; #X connect 0 0 1 0; #X connect 0 1 6 0; #X connect 0 2 7 0; #X connect 0 3 8 0; #X connect 0 4 9 0; #X connect 0 5 10 0; #X connect 0 6 11 0; #X connect 1 0 12 0; #X connect 2 0 5 0; #X connect 3 0 2 0; #X connect 4 0 5 0; #X connect 5 0 13 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 12 0 3 0; #X connect 12 1 3 0; #X connect 12 2 3 0; #X connect 12 3 3 0; #X connect 12 4 3 0; #X connect 12 5 3 0; #X connect 12 6 3 0; #X connect 13 0 14 0; #X connect 15 0 5 0; #X connect 15 1 0 0; #X connect 15 2 4 0; #X connect 16 0 15 0; #X restore 672 203 pd diatonicmodes; #X text 775 116 diatonic mode selector; #X text 841 254 octatonic 1; #X text 841 322 octatonic 2; #X msg 672 309 \; number-of-notes 8 \; scale-list 0 2 3 5 6 8 9 11 ; #X text 84 142 In Linux (Ubuntu at least) \, you might get better results if you change your keyboard settings so it doesn't do repeated keypresses when you hold down a key. Or you could create a fix in the patch with [delay] or something.; #N canvas 0 25 1016 656 keylistmaker 0; #X floatatom 175 -148 5 0 11 0 - - -; #X msg 261 148 set; #X msg 223 178 0 2 4 5 7 9 11 11 8 9 10 11; #X obj 178 31 mod 12; #X msg 178 50 add2 \$1; #X obj 175 -94 t b f b; #X text 207 -149 key (0-11); #X msg 259 412 \$1 \$2 \$3 \$4 \$5; #X msg 277 431 \$1 \$2 \$3 \$4 \$5 \$6; #X msg 296 451 \$1 \$2 \$3 \$4 \$5 \$6 \$7; #X obj 238 239 i; #X floatatom 393 161 5 0 0 0 - - -; #X text 430 160 # of notes in scale; #X obj 94 -58 +; #X obj 118 -58 +; #X obj 142 -58 +; #X obj 166 -58 +; #X obj 190 -58 +; #X obj 214 -58 +; #X obj 238 -58 +; #X obj 262 -58 +; #X obj 393 139 r number-of-notes; #X obj 74 -422 r scale-list; #X obj 224 217 t b l; #X obj 74 -402 t b l; #X floatatom 70 -350 5 0 0 0 - - -; #X floatatom 95 -330 5 0 0 0 - - -; #X floatatom 124 -311 5 0 0 0 - - -; #X floatatom 149 -294 5 0 0 0 - - -; #X floatatom 170 -276 5 0 0 0 - - -; #X floatatom 195 -256 5 0 0 0 - - -; #X floatatom 224 -237 5 0 0 0 - - -; #X floatatom 249 -220 5 0 0 0 - - -; #X obj 279 590 outlet scalelist; #X obj 514 588 outlet numberofnotes; #X obj 353 -343 inlet key; #X obj 90 -374 unpack f f f f f f f f f f f f; #X obj 286 -58 +; #X obj 310 -58 +; #X obj 334 -58 +; #X obj 358 -58 +; #X floatatom 264 -203 5 0 0 0 - - -; #X floatatom 289 -183 5 0 0 0 - - -; #X floatatom 318 -164 5 0 0 0 - - -; #X floatatom 343 -147 5 0 0 0 - - -; #X obj 245 258 unpack f f f f f f f f f f f f; #X obj 227 281 pack 5 f f f f f f f f f f f f; #X obj 227 300 route 1 2 3 4 5 6 7 8 9 10 11 12; #X msg 205 336 \$1; #X msg 216 355 \$1 \$2; #X msg 231 374 \$1 \$2 \$3; #X msg 243 393 \$1 \$2 \$3 \$4; #X msg 315 471 \$1 \$2 \$3 \$4 \$5 \$6 \$7 \$8; #X msg 325 490 \$1 \$2 \$3 \$4 \$5 \$6 \$7 \$8 \$9; #X msg 335 509 \$1 \$2 \$3 \$4 \$5 \$6 \$7 \$8 \$9 \$10; #X msg 347 528 \$1 \$2 \$3 \$4 \$5 \$6 \$7 \$8 \$9 \$10 \$11; #X msg 357 547 \$1 \$2 \$3 \$4 \$5 \$6 \$7 \$8 \$9 \$10 \$11 \$12; #X connect 0 0 5 0; #X connect 1 0 2 0; #X connect 2 0 23 0; #X connect 3 0 4 0; #X connect 4 0 2 0; #X connect 5 0 2 0; #X connect 5 1 13 0; #X connect 5 1 14 0; #X connect 5 1 15 0; #X connect 5 1 16 0; #X connect 5 1 17 0; #X connect 5 1 18 0; #X connect 5 1 19 0; #X connect 5 1 20 0; #X connect 5 1 37 0; #X connect 5 1 38 0; #X connect 5 1 39 0; #X connect 5 1 40 0; #X connect 5 2 1 0; #X connect 7 0 33 0; #X connect 8 0 33 0; #X connect 9 0 33 0; #X connect 10 0 46 0; #X connect 11 0 10 1; #X connect 11 0 34 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 11 0; #X connect 22 0 24 0; #X connect 23 0 10 0; #X connect 23 1 45 0; #X connect 24 0 0 0; #X connect 24 1 36 0; #X connect 35 0 0 0; #X connect 36 0 13 1; #X connect 36 0 25 0; #X connect 36 1 14 1; #X connect 36 1 26 0; #X connect 36 2 15 1; #X connect 36 2 27 0; #X connect 36 3 16 1; #X connect 36 3 28 0; #X connect 36 4 17 1; #X connect 36 4 29 0; #X connect 36 5 18 1; #X connect 36 5 30 0; #X connect 36 6 19 1; #X connect 36 6 31 0; #X connect 36 7 20 1; #X connect 36 7 32 0; #X connect 36 8 37 1; #X connect 36 8 41 0; #X connect 36 9 38 1; #X connect 36 9 42 0; #X connect 36 10 39 1; #X connect 36 10 43 0; #X connect 36 11 40 1; #X connect 36 11 44 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 45 0 46 1; #X connect 45 1 46 2; #X connect 45 2 46 3; #X connect 45 3 46 4; #X connect 45 4 46 5; #X connect 45 5 46 6; #X connect 45 6 46 7; #X connect 45 7 46 8; #X connect 45 8 46 9; #X connect 45 9 46 10; #X connect 45 10 46 11; #X connect 45 11 46 12; #X connect 46 0 47 0; #X connect 47 0 48 0; #X connect 47 1 49 0; #X connect 47 2 50 0; #X connect 47 3 51 0; #X connect 47 4 7 0; #X connect 47 5 8 0; #X connect 47 6 9 0; #X connect 47 7 52 0; #X connect 47 8 53 0; #X connect 47 9 54 0; #X connect 47 10 55 0; #X connect 47 11 56 0; #X connect 48 0 33 0; #X connect 49 0 33 0; #X connect 50 0 33 0; #X connect 51 0 33 0; #X connect 52 0 33 0; #X connect 53 0 33 0; #X connect 54 0 33 0; #X connect 55 0 33 0; #X connect 56 0 33 0; #X restore 245 345 pd keylistmaker; #X obj 245 515 outlet note; #X obj 245 307 nbx 5 35 -1e+37 1e+37 0 0 empty empty empty 35 -6 0 35 -262144 -1 -1 0 256; #X text 243 288 choose a key! 0-11 for c to b; #X text 85 -201 Q: Why change mode when changing key would do pretty much the same thing?; #X text 85 72 You can select between the different scales listed on the right. Or you could make any number of different scales with message boxes similar to those.; #X text 892 393 chromatic; #X msg 672 381 \; number-of-notes 12 \; scale-list 0 1 2 3 4 5 6 7 8 9 10 11; #N canvas 0 0 450 300 accidentals 0; #X obj 48 3 key; #X obj 43 138 keyup; #X obj 65 162 sel; #X obj 87 138 spigot; #X obj 48 53 t f f b; #X msg 135 118 0; #X floatatom 95 162 5 0 0 0 - - -; #X msg 107 118 1; #X obj 67 76 sel 45 61; #X msg 65 198 0; #X obj 75 97 t b; #X msg 93 198 1; #X msg 37 198 -1; #X obj 42 246 +; #X obj 46 223 t b f; #X floatatom 42 268 5 0 0 0 - - -; #X obj -18 3 inlet note; #X obj 41 291 outlet note; #X connect 0 0 4 0; #X connect 1 0 2 0; #X connect 2 0 9 0; #X connect 3 0 2 1; #X connect 3 0 6 0; #X connect 4 0 3 0; #X connect 4 1 8 0; #X connect 4 2 5 0; #X connect 5 0 3 1; #X connect 7 0 3 1; #X connect 8 0 10 0; #X connect 8 0 12 0; #X connect 8 1 10 0; #X connect 8 1 11 0; #X connect 9 0 14 0; #X connect 10 0 7 0; #X connect 11 0 14 0; #X connect 12 0 14 0; #X connect 13 0 15 0; #X connect 14 0 13 0; #X connect 14 1 13 1; #X connect 15 0 17 0; #X connect 16 0 13 0; #X restore 245 451 pd accidentals; #X text 110 423 use - and = keys if you need to raise or lower pitch temporarily by a semitone; #X obj 484 515 outlet noteoff; #X obj 391 515 outlet noteon; #N canvas 0 25 1016 656 envelope 0; #X obj 95 5 key; #X obj 113 117 keyup; #X obj 127 141 sel; #X obj 10 58 sel 113 119 101 114 116 32 121 117 105 111 112; #X obj 149 117 spigot; #X obj 110 34 t f f b; #X msg 197 97 0; #X obj 45 77 t b; #X floatatom 157 141 5 0 0 0 - - -; #X msg 169 97 1; #X obj 229 95 key; #X obj 229 115 sel 96; #X obj 108 204 spigot; #X obj 234 155 tgl 15 0 empty empty empty 0 -6 0 10 -262144 -1 -1 1 1; #X obj 282 111 loadbang; #X msg 282 130 1; #X text 118 2 envelope trigger; #X text 47 136 envelope; #X text 251 92 press ` key to toggle sustain; #X msg 11 135 bang; #X msg 108 163 bang; #X obj 108 225 outlet noteoff; #X obj 16 225 outlet noteon; #X connect 0 0 5 0; #X connect 1 0 2 0; #X connect 2 0 20 0; #X connect 3 0 7 0; #X connect 3 1 7 0; #X connect 3 2 7 0; #X connect 3 3 7 0; #X connect 3 4 7 0; #X connect 3 5 7 0; #X connect 3 6 7 0; #X connect 3 7 7 0; #X connect 3 8 7 0; #X connect 3 9 7 0; #X connect 3 10 7 0; #X connect 4 0 2 1; #X connect 4 0 8 0; #X connect 5 0 4 0; #X connect 5 1 3 0; #X connect 5 2 6 0; #X connect 6 0 4 1; #X connect 7 0 19 0; #X connect 7 0 9 0; #X connect 9 0 4 1; #X connect 10 0 11 0; #X connect 11 0 13 0; #X connect 12 0 21 0; #X connect 13 0 12 1; #X connect 14 0 15 0; #X connect 15 0 13 0; #X connect 19 0 22 0; #X connect 20 0 12 0; #X restore 406 483 pd envelope; #X text 390 464 press ` key to toggle sustain; #X text 84 -171 A: In the patch's current form \, there's really no difference. But the reason there are separate functions for mode and key is in case you want to assign a key on the keyboard to \, say \, go to the nearest tonic note (or any specific scale degree). This way you can do that easily \, as the scale list that goes in [inlet scalelist] in [pd relativistic] is ordered with the tonic note first (before it goes through [sort] \, that is).; #X text 84 -28 On a QWERTY keyboard \, use QWERTYUIOP keys to go up and down the scale that you select \, and the space bar to repeat the last note played. Use the ` key to toggle sustain. I don't know if this patch works the same with different keyboard layouts or not.; #X text 865 518 sg 2008; #X connect 0 0 35 0; #X connect 1 0 0 0; #X connect 11 0 21 0; #X connect 19 0 20 0; #X connect 20 0 11 0; #X connect 27 0 1 0; #X connect 27 1 1 1; #X connect 29 0 27 0; #X connect 35 0 28 0; #X connect 39 0 38 0; #X connect 39 1 37 0;