#N canvas -1018 -16 552 614 10; #X declare -lib OSC -lib mrpeach; #X obj 98 -50 soundfiler; #X obj 98 -13 expr 44100 / $f1; #X floatatom 98 -31 5 0 0 0 - - -; #X msg 25 -69 \; pd dsp \$1; #N canvas 799 23 298 426 toggle 0; #X obj 6 224 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 1 ; #X obj 13 275 s osc-out; #X msg 13 252 /monome/grid/led/set 0 0 \$1; #X obj 6 304 outlet; #X floatatom 64 28 5 0 0 0 - - -; #X floatatom 123 28 5 0 1 0 - - -; #X floatatom 6 24 5 0 0 0 - - -; #X obj 123 47 == 1; #X obj 6 2 r x; #X obj 64 6 r y; #X obj 123 6 r s; #X obj 6 66 expr $i1 + $i2 + $i3; #X obj 6 86 == 3; #X obj 6 47 == 0; #X obj 7 196 sel 1; #X obj 7 168 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1 ; #X obj 64 47 == 0; #X connect 0 0 2 0; #X connect 0 0 3 0; #X connect 2 0 1 0; #X connect 4 0 16 0; #X connect 5 0 7 0; #X connect 6 0 13 0; #X connect 7 0 11 2; #X connect 8 0 6 0; #X connect 9 0 4 0; #X connect 10 0 5 0; #X connect 11 0 12 0; #X connect 12 0 15 0; #X connect 13 0 11 0; #X connect 14 0 0 0; #X connect 15 0 14 0; #X connect 16 0 11 1; #X restore 25 -88 pd toggle; #N canvas 844 112 240 234 gridinterface 0; #X obj -277 -63 r osc-out; #X obj -277 -22 routeOSC /monome/grid/key; #X obj -277 -1 unpack f f f; #X obj -277 -43 serialosc; #X obj -208 22 s s; #X obj -277 22 s x; #X obj -243 22 s y; #X msg -206 -61 /monome/grid/led/all 0; #N canvas 272 344 609 869 toggles 0; #X msg 37 117 \$3 \$2 \$1; #X text 102 116 state \, x \, y; #X obj 37 146 route 1; #X text 92 145 if a key-down pass x \, y out left; #X obj 70 253 * 16; #X obj 37 228 unpack; #X text 102 252 multiply y value by 16; #X obj 37 279 +; #X text 67 278 add x value to y*16; #X floatatom 37 304 5 0 0 0 - - -; #X text 78 303 this is our 'index' for the current key; #X obj 37 763 tabwrite grid; #X obj 37 426 tabread grid; #X obj 37 389 t f f; #X text 120 425 look up the stored value at the pressed index; #X text 82 389 first set the index to write to \, and prepare to draw an LED; #X floatatom 37 457 5 0 0 0 - - -; #X text 84 456 the stored state; #X obj 37 485 == 0; #X text 72 483 invert the stored state; #X text 126 764 and write the new state to the table; #X obj 284 577 / 16; #X obj 284 602 int; #X obj 246 623 % 16; #X obj 227 657 pack f f f; #X msg 227 683 \$2 \$3 \$1; #X text 397 96 this is the table itself; #X text 291 549 convert our index back into x \, y coordinates; #X text 299 683 the send the value to the grid; #X obj 37 36 inlet; #X obj 227 708 outlet; #X text 321 575 we divide by 16 to determine the row; #X text 292 624 and use the remainder to determine the column; #X obj 246 551 t f f; #X text 274 707 x \, y \, state to serialosc; #X text 78 36 y \, x \, state from the top 6 rows; #X obj 459 73 table grid 128; #X text 20 828 http://monome.org; #X text 20 811 grid studies 3-1-1; #X connect 0 0 2 0; #X connect 2 0 5 0; #X connect 4 0 7 1; #X connect 5 0 7 0; #X connect 5 1 4 0; #X connect 7 0 9 0; #X connect 9 0 13 0; #X connect 12 0 16 0; #X connect 13 0 12 0; #X connect 13 1 11 1; #X connect 13 1 33 0; #X connect 16 0 18 0; #X connect 18 0 11 0; #X connect 18 0 24 0; #X connect 21 0 22 0; #X connect 22 0 24 2; #X connect 23 0 24 1; #X connect 24 0 25 0; #X connect 25 0 30 0; #X connect 29 0 0 0; #X connect 33 0 23 0; #X connect 33 1 21 0; #X restore -281 64 pd toggles; #X obj -281 129 s osc-out; #X msg -281 97 /monome/grid/led/set \$2 \$1 \$3; #X connect 0 0 3 0; #X connect 1 0 2 0; #X connect 2 0 5 0; #X connect 2 1 6 0; #X connect 2 2 4 0; #X connect 3 0 1 0; #X connect 7 0 3 0; #X connect 8 0 10 0; #X connect 10 0 9 0; #X restore -10 -37 pd gridinterface; #X msg 98 -88 8; #X obj 104 6 s \$0-sampleSpeed; #X floatatom 98 38 5 0 0 0 - - -; #N canvas 65 138 208 285 compensateSpeed 0; #X obj 28 40 r \$0-sampleSpeed; #X obj 13 96 *; #X obj 13 68 expr 1 / $f1; #X obj 13 12 r \$0-playbackLength; #X obj 13 124 outlet; #X connect 0 0 1 1; #X connect 1 0 4 0; #X connect 2 0 1 0; #X connect 3 0 2 0; #X restore -22 21 pd compensateSpeed; #X obj -22 1 t b f; #X obj -22 -18 r \$0-playbackSpeed; #N canvas -457 -16 463 337 sampleslice 1; #X floatatom 307 75 5 0 0 0 - - -; #X floatatom 366 75 5 0 1 0 - - -; #X floatatom 249 71 5 0 0 0 - - -; #X obj 366 94 == 1; #X obj 249 49 r x; #X obj 307 53 r y; #X obj 366 53 r s; #X obj 307 94 == 1; #X obj 249 113 expr $i1 + $i2 + $i3; #X obj 249 133 == 3; #X obj 249 153 spigot; #X obj 249 94 <= 15; #X obj 249 259 * 0.0666667; #X obj 38 173 inlet; #X obj 39 346 outlet; #X msg -2 196 bang; #X floatatom 38 220 5 0 0 0 - - -; #X msg -12 241 0; #X obj 400 128 sel 1; #X obj 38 264 * 1; #X obj 341 164 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X text 378 233 one div by dif no. of buttons as loop length changes ; #X text 331 274 1 / 15 result for even distribution over 15 leds; #X obj 77 173 inlet; #X obj 458 138 r \$0-playbackLength; #X msg 319 190 1; #X floatatom 319 234 5 0 0 0 - - -; #X obj 458 163 * 15; #X obj 319 212 / \$1; #X obj 249 346 outlet; #X connect 0 0 7 0; #X connect 1 0 3 0; #X connect 2 0 10 0; #X connect 2 0 11 0; #X connect 3 0 8 2; #X connect 3 0 18 0; #X connect 4 0 2 0; #X connect 5 0 0 0; #X connect 6 0 1 0; #X connect 7 0 8 1; #X connect 8 0 9 0; #X connect 9 0 10 1; #X connect 10 0 12 0; #X connect 11 0 8 0; #X connect 12 0 29 0; #X connect 13 0 16 0; #X connect 15 0 16 0; #X connect 16 0 19 0; #X connect 17 0 14 0; #X connect 18 0 20 0; #X connect 19 0 14 0; #X connect 20 0 25 0; #X connect 23 0 19 1; #X connect 24 0 27 0; #X connect 25 0 28 0; #X connect 26 0 12 1; #X connect 27 0 28 1; #X connect 28 0 26 0; #X restore 98 69 pd sampleslice; #X obj 98 115 phasor~; #X obj 98 169 *~; #X obj 151 114 r \$0-playbackLength; #X obj 151 152 line~; #X obj 151 133 pack f 50; #X obj 151 171 r \$0-playbackStart; #X obj 151 209 line~; #X obj 151 190 pack f 50; #X obj 98 226 +~; #X obj 150 243 unsig~ 20; #N canvas 155 356 302 323 gridrowdisplay 0; #X obj 107 -1836 s osc-out; #X msg 76 -1924 /monome/grid/led/row 0 \$1 0 0; #X msg 76 -1943 \$1; #X msg 48 -1865 /monome/grid/led/set \$1 \$2 1; #X floatatom 76 -1961 5 0 0 0 - - -; #X floatatom 93 -1905 5 0 0 0 - - -; #X obj 154 -1961 loadbang; #X obj 48 -1884 pack i i; #X floatatom 49 -2093 5 0 0 0 - - -; #X obj 49 -2033 t f b; #X msg 115 -1961 1; #X obj 49 -2117 inlet; #X obj 49 -2068 * 16; #X obj 135 -2075 hsl 128 15 0 1 0 0 empty empty empty -2 -8 0 10 -262144 -1 -1 0 1; #X connect 1 0 0 0; #X connect 2 0 1 0; #X connect 3 0 0 0; #X connect 4 0 2 0; #X connect 5 0 7 1; #X connect 6 0 10 0; #X connect 7 0 3 0; #X connect 8 0 12 0; #X connect 9 0 7 0; #X connect 9 1 4 0; #X connect 10 0 4 0; #X connect 10 0 5 0; #X connect 11 0 8 0; #X connect 12 0 9 0; #X restore 150 262 pd gridrowdisplay; #X obj 98 352 *~; #X obj 150 281 r \$0-sampleSize; #X obj 150 319 line~; #X obj 150 300 pack f 50; #X obj 98 489 dac~; #N canvas 9 23 609 533 faderdisplay 1; #X obj 35 289 vsl 15 10 0 1 0 0 empty empty empty 0 -9 0 10 -262144 -1 -1 900 1; #X floatatom 90 30 5 0 0 0 - - -; #X floatatom 149 30 5 0 1 0 - - -; #X floatatom 32 26 5 0 0 0 - - -; #X obj 149 49 == 1; #X obj 32 4 r x; #X obj 90 8 r y; #X obj 149 8 r s; #X obj 32 68 expr $i1 + $i2 + $i3; #X obj 32 88 == 3; #X obj 90 49 >= 8; #X obj 32 49 == 0; #X floatatom 35 145 5 0 0 0 - - -; #X obj 32 118 spigot; #X obj 35 165 * -1; #X obj 35 186 + 15; #X obj 35 207 / 7; #X obj 167 278 s osc-out; #X msg 176 227 /monome/grid/led/row 0 15 0 0; #X msg 167 200 /monome/grid/led/set 0 \$1 1; #X obj 35 304 outlet; #X connect 0 0 20 0; #X connect 1 0 10 0; #X connect 1 0 13 0; #X connect 2 0 4 0; #X connect 3 0 11 0; #X connect 4 0 8 2; #X connect 5 0 3 0; #X connect 6 0 1 0; #X connect 7 0 2 0; #X connect 8 0 9 0; #X connect 9 0 13 1; #X connect 10 0 8 1; #X connect 11 0 8 0; #X connect 12 0 14 0; #X connect 12 0 19 0; #X connect 13 0 12 0; #X connect 14 0 15 0; #X connect 15 0 16 0; #X connect 16 0 0 0; #X connect 18 0 17 0; #X connect 19 0 17 0; #X restore 119 451 pd faderdisplay; #X msg 304 -42 1; #X obj 304 -70 r \$0-resetPlaybackSpeed; #X obj 304 -14 s \$0-playbackSpeed; #N canvas -456 350 161 221 calcPlaybackLength 1; #X floatatom -385 -73 5 0 0 0 - - -; #X floatatom -427 -73 5 0 0 0 - - -; #X obj -411 -46 -; #X obj -412 -101 t f b; #X obj -411 -19 s \$0-playbackLength; #X obj -441 -155 r \$0-playbackStart; #X obj -411 -128 r \$0-playbackEnd; #X connect 0 0 2 0; #X connect 1 0 2 1; #X connect 2 0 4 0; #X connect 3 0 1 0; #X connect 3 1 0 0; #X connect 5 0 3 0; #X connect 6 0 0 0; #X restore 304 82 pd calcPlaybackLength; #X obj 351 104 loadbang; #N canvas 16 23 398 269 makeCrown 0; #X obj 30 177 clip~ 0 1; #X obj 10 215 tabwrite~ \$0-crown; #X obj 30 97 vline~; #X msg 30 74 -0.25 \, 0.25 10; #X obj 30 121 cos~; #X obj 30 149 *~ 3; #X obj 10 39 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 10 -19 inlet; #N canvas 0 22 450 300 (subpatch) 0; #X array \$0-crown 441 float 0; #X coords 0 1 440 0 200 140 1; #X restore 173 48 graph; #X obj 122 -17 inlet; #X text 50 -18 1 bang; #X text 162 -17 2 float \, higher values shorten ramps; #X obj 132 11 t b f; #X connect 0 0 1 0; #X connect 2 0 4 0; #X connect 3 0 2 0; #X connect 4 0 5 0; #X connect 5 0 0 0; #X connect 6 0 3 0; #X connect 6 0 1 0; #X connect 7 0 6 0; #X connect 9 0 5 1; #X connect 9 0 12 0; #X connect 12 0 6 0; #X restore 364 144 pd makeCrown; #N canvas 491 200 302 226 setDefaultValues 0; #X obj 127 120 s \$0-playbackSpeed; #X msg 127 92 1; #X obj 46 120 s \$0-volume; #X msg 46 92 0.5; #X obj 46 186 s \$0-playbackStart; #X msg 46 158 0; #X obj 172 186 s \$0-playbackEnd; #X msg 172 158 1; #X obj 16 14 inlet; #X connect 1 0 0 0; #X connect 3 0 2 0; #X connect 5 0 4 0; #X connect 7 0 6 0; #X connect 8 0 3 0; #X connect 8 0 1 0; #X connect 8 0 5 0; #X connect 8 0 7 0; #X restore 364 165 pd setDefaultValues; #N canvas -276 347 263 304 gui 1; #N canvas 0 22 450 278 (subpatch) 0; #X array channelL 403200 float 2; #X coords 0 1 403200 -1 200 140 1 0 0; #X restore -47 6 graph; #X text -46 225 -2; #X obj -44 152 hsl 195 15 0 1 0 0 \$0-playbackPosition \$0-playbackPosition empty -2 -6 0 8 -257985 -1 -1 6566 1; #X obj -44 200 hsl 195 15 0 1 0 0 \$0-playbackEnd \$0-playbackEnd empty -2 -6 0 8 -261234 -1 -1 19200 1; #X obj -39 173 hsl 195 15 0 1 0 0 \$0-playbackStart \$0-playbackStart empty -2 -6 0 8 -204786 -1 -1 5200 1; #X obj -44 226 hsl 170 15 -2 2 0 0 \$0-playbackSpeed \$0-playbackSpeed empty -2 -6 0 8 -204800 -1 -1 10875 1; #X text 35 150 position; #X text 40 198 end; #X text 35 174 start; #X text 119 225 2; #X text 7 225 playback speed; #X obj 164 111 vsl 15 128 0 1 0 0 \$0-volume \$0-volume empty 0 -9 0 10 -232576 -1 -1 6350 1; #X text 169 140 v; #X text 170 147 o; #X text 170 157 l; #X text 170 167 u; #X text 170 177 m; #X text 170 187 e; #X obj 138 226 bng 15 250 50 0 \$0-resetPlaybackSpeed empty empty 17 7 0 10 -204800 -1 -1; #X restore 306 57 pd gui; #X msg 98 -69 read -resize \$1.wav channelL; #X obj 98 375 tabread4~ channelL; #X obj 113 413 tabread4~ \$0-crown; #X obj 113 394 *~ 441; #X obj 98 432 *~; #X obj -31 243 unsig~ 20; #X obj -31 262 s \$0-playbackPosition; #X obj 98 470 *~ 1; #X obj 179 -30 s \$0-sampleSize; #X msg 407 308 0.309; #X connect 0 0 2 0; #X connect 0 0 46 0; #X connect 1 0 7 0; #X connect 1 0 8 0; #X connect 2 0 1 0; #X connect 4 0 3 0; #X connect 6 0 38 0; #X connect 8 0 12 0; #X connect 9 0 8 0; #X connect 10 0 8 0; #X connect 10 1 12 1; #X connect 11 0 10 0; #X connect 12 0 13 0; #X connect 12 1 13 1; #X connect 13 0 14 0; #X connect 13 0 41 0; #X connect 14 0 21 0; #X connect 15 0 17 0; #X connect 16 0 14 1; #X connect 17 0 16 0; #X connect 18 0 20 0; #X connect 19 0 21 1; #X connect 20 0 19 0; #X connect 21 0 22 0; #X connect 21 0 24 0; #X connect 21 0 43 0; #X connect 22 0 23 0; #X connect 24 0 39 0; #X connect 25 0 27 0; #X connect 26 0 24 1; #X connect 27 0 26 0; #X connect 29 0 45 1; #X connect 30 0 32 0; #X connect 31 0 30 0; #X connect 34 0 35 0; #X connect 34 0 36 0; #X connect 38 0 0 0; #X connect 39 0 42 0; #X connect 40 0 42 1; #X connect 41 0 40 0; #X connect 42 0 45 0; #X connect 43 0 44 0; #X connect 45 0 28 0; #X connect 45 0 28 1; #X connect 47 0 20 0;