#N canvas 72 0 919 691 12; #X symbolatom 157 205 18 0 0 2 next_chord - -; #N canvas 39 349 531 328 readme 0; #X text 59 31 howto populate the graph: play the chord \, when the output of [chord] is ok bang the "add" message. bang it each time you change chord \, it will store the transitions; #X text 56 120 howto ask for the next chord: play the chord \, bang the "set" message \, this will set the current chord without adding it to the graph's memory \, now bang the next 1 message. this chord_graph will respond with the chord you played most of the times after the current chord. you can send "next x" where x is from 0 to 1 \, 0 = max novelty \, 1= min novelty; #X text 56 259 you can save graph state sending the write message; #X restore 607 47 pd readme; #X obj 121 329 harmonizer; #X msg 52 286 current \$1; #X msg 158 283 target \$1; #X obj 52 262 symbol; #X obj 52 242 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 157 261 symbol; #X obj 289 261 int 36; #X obj 355 262 int 60; #X obj 426 260 int 67; #X obj 494 259 int 76; #X obj 566 262 int 84; #X obj 335 289 pack f f f f f; #X obj 358 233 t b b b b b; #X obj 246 369 unpack f f f f f; #X obj 127 108 symbol; #X obj 98 43 bng 15 250 50 0 empty empty change_chord 0 -6 0 8 -262144 -1 -1; #X msg 127 132 set \$1; #N canvas 0 0 714 424 midi 0; #X obj 141 253 outlet; #X obj 271 31 notein; #X obj 271 66 chord 59; #X msg 175 149 add \$1; #X obj 175 121 symbol; #X obj 176 94 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 248 163 symbol; #X obj 249 136 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X msg 248 191 set \$1; #X symbolatom 311 101 25 0 0 0 - - -; #X connect 1 0 2 0; #X connect 1 1 2 1; #X connect 2 2 4 1; #X connect 2 2 6 1; #X connect 2 2 9 0; #X connect 3 0 0 0; #X connect 4 0 3 0; #X connect 5 0 4 0; #X connect 6 0 8 0; #X connect 7 0 6 0; #X connect 8 0 0 0; #X restore 512 135 pd midi; #N canvas 0 0 458 308 fileIO 0; #X obj 143 225 outlet; #X msg 115 77 write test.graph; #X msg 145 105 read test.graph; #X msg 175 135 init 1; #X connect 1 0 0 0; #X connect 2 0 0 0; #X connect 3 0 0 0; #X restore 429 134 pd fileIO; #X obj 100 73 t b b; #X obj 157 228 t b a; #X obj 28 404 bang; #X obj 203 420 mtof; #X obj 252 419 mtof; #X obj 337 423 mtof; #X obj 180 601 dac~; #X obj 109 431 print; #X obj 74 111 f 1; #X msg 59 135 next \$1; #X obj 63 70 vsl 15 30 0 1 0 0 empty empty empty 0 -8 0 8 -262144 -1 -1 2610 1; #X floatatom 32 112 5 0 0 0 - - -; #X obj 178 571 csoundapi~ bay.orc; #X msg 488 520 event i 10 0 17000 10 30; #X msg 488 543 event i 30 0 17000 2 30; #X msg 489 496 event i 25 0 17000 0.98 0.8 20000; #X obj 482 458 loadbang; #X msg 196 492 event i 9 0 10 \$1 80 0.5; #X obj 295 422 mtof; #X obj 381 424 mtof; #X obj 462 22 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 ; #X obj 462 41 metro 7000; #X obj 13 32 r novelty; #X obj 599 121 int 0; #X obj 646 120 + 1; #X obj 600 171 tabread tab-novelty; #X obj 600 194 s novelty; #X obj 685 119 table tab-novelty; #X obj 600 147 % 10; #X obj 462 63 t b b; #X msg 467 377 \; tab-novelty 0 1 1 0.8 0.7 0.3 0.5 0.9 0.1 0 0.2; #X obj 203 97 symbol; #X msg 203 125 tonality \$1; #X obj 203 73 bng 15 250 50 0 empty empty change 0 -6 0 8 -262144 -1 -1; #X obj 19 160 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X symbolatom 305 204 15 0 0 2 tonality - -; #X obj 83 169 chords_memory test.graph; #X obj 307 94 symbol; #X obj 307 70 bng 15 250 50 0 empty empty change 0 -6 0 8 -262144 -1 -1; #X msg 307 122 modulation \$1; #X obj 445 189 print sequence; #X msg 235 15 search 9 1 5 0.9; #X connect 2 0 15 0; #X connect 2 0 28 0; #X connect 3 0 2 0; #X connect 4 0 2 0; #X connect 5 0 3 0; #X connect 6 0 5 0; #X connect 7 0 4 0; #X connect 8 0 13 0; #X connect 9 0 13 1; #X connect 10 0 13 2; #X connect 11 0 13 3; #X connect 12 0 13 4; #X connect 13 0 2 0; #X connect 14 0 8 0; #X connect 14 1 9 0; #X connect 14 2 10 0; #X connect 14 3 11 0; #X connect 14 4 12 0; #X connect 15 0 8 1; #X connect 15 0 23 0; #X connect 15 0 24 0; #X connect 15 1 9 1; #X connect 15 1 25 0; #X connect 15 2 10 1; #X connect 15 2 39 0; #X connect 15 3 11 1; #X connect 15 3 26 0; #X connect 15 4 12 1; #X connect 15 4 40 0; #X connect 16 0 18 0; #X connect 17 0 21 0; #X connect 18 0 57 0; #X connect 19 0 57 0; #X connect 20 0 57 0; #X connect 21 0 29 0; #X connect 22 0 14 0; #X connect 22 1 7 0; #X connect 23 0 5 0; #X connect 24 0 38 0; #X connect 25 0 38 0; #X connect 26 0 38 0; #X connect 29 0 30 0; #X connect 30 0 57 0; #X connect 31 0 29 1; #X connect 31 0 32 0; #X connect 33 0 27 0; #X connect 33 1 27 1; #X connect 34 0 33 0; #X connect 35 0 33 0; #X connect 36 0 33 0; #X connect 37 0 36 0; #X connect 37 0 34 0; #X connect 37 0 35 0; #X connect 37 0 51 0; #X connect 38 0 33 0; #X connect 39 0 38 0; #X connect 40 0 38 0; #X connect 41 0 42 0; #X connect 42 0 50 0; #X connect 43 0 31 0; #X connect 44 0 45 0; #X connect 44 0 49 0; #X connect 45 0 44 1; #X connect 46 0 47 0; #X connect 49 0 46 0; #X connect 50 0 21 0; #X connect 50 1 44 0; #X connect 52 0 53 0; #X connect 53 0 57 0; #X connect 54 0 52 0; #X connect 55 0 57 0; #X connect 57 0 0 0; #X connect 57 0 5 1; #X connect 57 0 22 0; #X connect 57 0 52 1; #X connect 57 0 16 0; #X connect 57 0 58 1; #X connect 57 1 56 0; #X connect 57 2 61 0; #X connect 58 0 60 0; #X connect 59 0 58 0; #X connect 60 0 57 0; #X connect 62 0 57 0;