#N canvas 316 256 664 268 10; #X obj 8 -86 *~; #N canvas 464 92 524 467 wiimote_stuff 0; #X msg 35 257 disconnect; #X obj 296 244 tgl 25 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #X obj 138 331 wiimote; #X msg 296 274 setRumble \$1; #X obj 232 121 tgl 25 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 1; #X obj 138 121 tgl 25 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #X msg 232 151 reportAcceleration \$1; #X msg 138 151 reportIR \$1; #N canvas 269 47 700 512 \$0-accelerometer-stuff 0; #X obj 218 12 inlet; #X obj 366 221 unpack 0 0 0; #X obj 92 612 expr sqrt(pow($f1 \, 2) + pow($f2 \, 2) + pow($f3 \, 2)); #X obj 357 280 atan; #X obj 357 259 expr $f1 / $f2; #X obj 389 304 expr if ($f1 > 0 \, 3.14159 \, -3.14159); #X obj 357 331 pack 0 0 0; #X obj 357 353 expr if ($f3 <= 0 \, $f1 + $f2 \, $f1); #X obj 357 375 * -1; #X obj 432 38 unpack 0 0 0; #X obj 42 443 s \$0-wii-pitch-set; #X obj 357 445 s \$0-wii-roll-set; #X text 75 514 The pitch and roll are only accurate if there are no extra accelerations due to hand movement. We can check if the total acceleration is close to gravity and only use pitch and roll in that case. The total acceleration is given by:; #X text 444 16 raw accerlation:; #X obj 31 221 unpack 0 0 0; #X obj 42 280 atan; #X obj 42 259 expr $f1 / $f2; #X obj 74 304 expr if ($f1 > 0 \, 3.14159 \, -3.14159); #X obj 42 331 pack 0 0 0; #X obj 42 353 expr if ($f3 <= 0 \, $f1 + $f2 \, $f1); #X obj 42 375 * -1; #X obj 225 578 unpack 0 0 0; #X obj 476 126 -; #X obj 475 151 abs; #X obj 463 97 t f f; #X obj 475 172 nbx 5 14 0 1 0 0 empty empty empty 0 -8 0 10 -262144 -1 -1 0 256; #X obj 475 190 s wiimote_accel; #X obj 433 67 expr abs($f1)+abs($f2)+abs($f3); #X obj 184 209 nbx 5 14 0 1 0 0 empty empty empty 0 -8 0 10 -262144 -1 -1 0.6 256; #X obj 184 248 s squelch; #X floatatom 154 99 5 0 0 0 - - -; #X obj 154 77 r nunchuk-btn-set; #X obj 154 120 change; #X obj 229 166 r nc-accY-set; #X obj 184 188 gate 1 1; #X msg 154 166 1; #X msg 184 166 0; #X obj 154 142 sel 3 0; #X connect 0 0 9 0; #X connect 0 0 14 0; #X connect 0 0 1 0; #X connect 1 0 4 0; #X connect 1 0 5 0; #X connect 1 2 4 1; #X connect 1 2 6 2; #X connect 3 0 6 0; #X connect 4 0 3 0; #X connect 5 0 6 1; #X connect 6 0 7 0; #X connect 7 0 8 0; #X connect 8 0 11 0; #X connect 9 0 27 0; #X connect 9 1 27 1; #X connect 9 2 27 2; #X connect 14 1 16 0; #X connect 14 1 17 0; #X connect 14 2 16 1; #X connect 14 2 18 2; #X connect 15 0 18 0; #X connect 16 0 15 0; #X connect 17 0 18 1; #X connect 18 0 19 0; #X connect 19 0 20 0; #X connect 20 0 10 0; #X connect 21 0 2 0; #X connect 21 1 2 1; #X connect 21 2 2 2; #X connect 22 0 23 0; #X connect 23 0 25 0; #X connect 24 0 22 1; #X connect 24 1 22 0; #X connect 25 0 26 0; #X connect 27 0 24 0; #X connect 28 0 29 0; #X connect 30 0 32 0; #X connect 31 0 30 0; #X connect 32 0 37 0; #X connect 33 0 34 1; #X connect 34 0 28 0; #X connect 35 0 34 0; #X connect 36 0 34 0; #X connect 37 0 35 0; #X connect 37 1 36 0; #X restore 145 410 pd \$0-accelerometer-stuff; #X obj 391 121 tgl 25 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 1; #X text 131 73 By default \, the wiimote does not report acceleration data \, IR data \, or any data from an attached extension (eg \, nunchuck). You must specifically enable each reporting mode:; #X msg 391 151 reportNunchuck \$1; #N canvas 60 289 920 244 \$0-nunchuck-stuff 0; #X obj 559 61 inlet; #X obj 559 96 unpack 0 0; #X obj 49 71 inlet; #X text 42 32 inlet #1: BUTTONS; #X text 294 35 inlet #2: ACCELERATION; #X obj 304 72 inlet; #X obj 304 105 unpack 0 0 0; #X text 567 32 inlet #3: STICK; #X obj 49 117 s nunchuk-btn-set; #X floatatom 559 141 5 0 0 0 - - -; #X floatatom 616 142 5 0 0 0 - - -; #X obj 558 168 split 140 240; #X obj 644 168 split 140 240; #X text 567 123 l r; #X text 627 123 u d; #X obj 558 221 s nunlr; #X msg 611 195 140; #X msg 697 196 140; #X obj 644 222 s nunud; #X obj 442 197 s nunlrc; #X obj 500 197 s nunudc; #X obj 343 144 s nc-accY-set; #X obj 304 163 s nc-accX-set; #X obj 383 125 s nc-accZ-set; #X connect 0 0 1 0; #X connect 1 0 9 0; #X connect 1 1 10 0; #X connect 2 0 8 0; #X connect 5 0 6 0; #X connect 6 0 22 0; #X connect 6 1 21 0; #X connect 6 2 23 0; #X connect 9 0 11 0; #X connect 9 0 19 0; #X connect 10 0 12 0; #X connect 10 0 20 0; #X connect 11 0 15 0; #X connect 11 1 16 0; #X connect 12 0 18 0; #X connect 12 1 17 0; #X connect 16 0 15 0; #X connect 17 0 18 0; #X restore 164 365 pd \$0-nunchuck-stuff; #N canvas 20 113 330 216 \$0-button-stuff 0; #X obj 41 33 inlet; #X obj 41 86 unpack 0 0; #X obj 41 140 s wii-btn01-set; #X obj 106 120 s wii-btn02-set; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 1 1 3 0; #X restore 138 432 pd \$0-button-stuff; #X obj 31 138 tgl 25 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #X text 53 186 Enable metro to get accelerometer uppdates; #X text 53 197 (xyz wiimote \, xyz nunchuk \, ir); #X obj 24 7 inlet; #X obj 295 18 inlet; #X obj 350 18 inlet; #X obj 24 35 l2ork_wiimote_connect; #X obj 32 168 metro 20; #X obj 153 388 speedlim 50; #X obj 332 217 r rumble; #X connect 0 0 2 0; #X connect 1 0 3 0; #X connect 2 0 13 0; #X connect 2 1 8 0; #X connect 2 3 12 0; #X connect 2 4 12 1; #X connect 2 5 12 2; #X connect 3 0 2 0; #X connect 4 0 6 0; #X connect 5 0 7 0; #X connect 6 0 2 0; #X connect 7 0 2 0; #X connect 9 0 11 0; #X connect 11 0 2 0; #X connect 14 0 21 0; #X connect 17 0 20 0; #X connect 18 0 9 0; #X connect 18 0 4 0; #X connect 19 0 14 0; #X connect 20 0 2 0; #X connect 21 0 2 0; #X connect 22 0 8 0; #X connect 23 0 1 0; #X restore 288 -88 pd wiimote_stuff; #X obj 131 -67 l2ork_monitor; #X obj 334 -107 tgl 15 0 empty empty 2 17 7 0 10 -4034 -1 -1 1 1; #X obj 381 -107 tgl 15 0 empty empty 3 17 7 0 10 -4034 -1 -1 0 1; #X obj 288 -107 bng 15 250 50 0 empty empty 1 17 7 0 10 -4034 -1 -1 ; #X obj 131 -109 speedlim 100; #X obj 8 -1 l2ork_output~; #N canvas 85 100 858 459 sound 0; #N canvas 324 252 458 307 audio-loop 0; #X obj 23 147 /; #X obj 23 219 +~ 1; #X obj 23 96 t b f; #X obj 24 269 outlet~; #N canvas 0 0 450 300 (subpatch) 0; #X array \$0-array 674138 float 0; #X coords 0 1 674137 -1 200 150 1; #X restore 234 93 graph; #X obj 53 68 r \$0-totsamps; #X obj 76 171 r \$0-totsamps; #X obj 23 195 *~; #X obj 23 171 phasor~; #X obj 23 243 tabread4~ \$0-array; #X obj 23 68 * 1; #X floatatom 23 41 5 0 0 0 - - -; #X obj 23 -9 loadbang; #X msg 23 16 1; #X obj 238 21 samplerate~; #X obj 238 -1 loadbang; #X floatatom 23 122 8 0 0 0 - - -; #X obj 314 45 wavinfo; #X obj 366 23 inlet; #X obj 314 -1 r filename1; #N canvas 535 182 301 377 startup1 0; #X obj 100 334 soundfiler; #X obj 72 24 loadbang; #X obj 72 50 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 72 71 f \$0; #X obj 100 233 pack s s; #X obj 100 209 openpanel; #X msg 100 311 read -resize \$1 \$2; #X obj 100 188 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 100 164 inlet; #X obj 26 233 s filename1; #X msg 72 100 \; readfile1 symbol \$1-array \;; #X obj 162 209 r readfile1; #X connect 1 0 2 0; #X connect 2 0 3 0; #X connect 3 0 10 0; #X connect 4 0 6 0; #X connect 5 0 4 0; #X connect 5 0 9 0; #X connect 6 0 0 0; #X connect 7 0 5 0; #X connect 8 0 7 0; #X connect 11 0 4 1; #X restore 366 45 pd startup1; #X connect 0 0 8 0; #X connect 1 0 9 0; #X connect 2 0 16 0; #X connect 2 1 0 1; #X connect 5 0 10 1; #X connect 6 0 7 1; #X connect 7 0 1 0; #X connect 8 0 7 0; #X connect 9 0 3 0; #X connect 10 0 2 0; #X connect 11 0 10 0; #X connect 12 0 13 0; #X connect 13 0 11 0; #X connect 14 0 16 0; #X connect 15 0 14 0; #X connect 16 0 0 0; #X connect 17 0 7 1; #X connect 17 0 10 1; #X connect 17 0 13 0; #X connect 18 0 20 0; #X connect 19 0 17 0; #X restore 35 27 pd audio-loop; #X obj 34 409 outlet~; #X floatatom 629 38 5 0 0 0 - - -; #X obj 672 265 nbx 5 14 -144 144 0 0 empty empty empty 0 -8 0 10 -262144 -1 -1 0 256; #X obj 615 149 loadbang; #X obj 34 320 rj/e_pitchshift; #X msg 550 390 pitch \$1; #X floatatom 550 189 5 0 0 0 - - -; #X obj 550 166 r nunudc; #X obj 550 259 nbx 5 14 -12 12 0 0 empty empty empty 0 -8 0 10 -262144 -1 -1 0 256; #X obj 550 235 * 12; #X obj 550 279 + 0; #X msg 615 171 0; #X obj 550 211 expr ($f1-130)/93; #X obj 629 16 r nunchuk-btn-set; #X obj 488 279 s monitor; #X obj 629 59 change; #X obj 595 345 int; #X obj 550 301 r ptch_rnd; #X obj 550 322 gate 2 1; #X obj 35 5 inlet; #X obj 550 370 +; #X obj 576 370 r fine_tune; #X obj 121 5 inlet; #N canvas 280 252 458 307 audio-loop2 0; #X obj 23 147 /; #X obj 23 219 +~ 1; #X obj 23 96 t b f; #X obj 24 269 outlet~; #N canvas 0 0 450 300 (subpatch) 0; #X array \$0-array2 881898 float 0; #X coords 0 1 881897 -1 200 150 1; #X restore 234 93 graph; #X obj 23 195 *~; #X obj 23 171 phasor~; #X obj 23 68 * 1; #X floatatom 23 41 5 0 0 0 - - -; #X obj 23 -9 loadbang; #X msg 23 16 1; #X obj 238 21 samplerate~; #X obj 238 -1 loadbang; #X floatatom 23 122 8 0 0 0 - - -; #X obj 314 45 wavinfo; #X obj 366 23 inlet; #X obj 23 243 tabread4~ \$0-array2; #X obj 314 -1 r filename2; #N canvas 655 171 301 377 startup2 0; #X obj 100 334 soundfiler; #X obj 72 24 loadbang; #X obj 72 50 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 72 71 f \$0; #X obj 100 233 pack s s; #X obj 100 209 openpanel; #X msg 100 311 read -resize \$1 \$2; #X obj 100 188 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 100 164 inlet; #X obj 26 233 s filename2; #X msg 72 100 \; readfile2 symbol \$1-array2 \;; #X obj 162 209 r readfile2; #X connect 1 0 2 0; #X connect 2 0 3 0; #X connect 3 0 10 0; #X connect 4 0 6 0; #X connect 5 0 4 0; #X connect 5 0 9 0; #X connect 6 0 0 0; #X connect 7 0 5 0; #X connect 8 0 7 0; #X connect 11 0 4 1; #X restore 366 45 pd startup2; #X connect 0 0 6 0; #X connect 1 0 16 0; #X connect 2 0 13 0; #X connect 2 1 0 1; #X connect 5 0 1 0; #X connect 6 0 5 0; #X connect 7 0 2 0; #X connect 8 0 7 0; #X connect 9 0 10 0; #X connect 10 0 8 0; #X connect 11 0 13 0; #X connect 12 0 11 0; #X connect 13 0 0 0; #X connect 14 0 5 1; #X connect 14 0 7 1; #X connect 14 0 10 0; #X connect 15 0 18 0; #X connect 16 0 3 0; #X connect 17 0 14 0; #X restore 121 27 pd audio-loop2; #X obj 121 133 *~; #X obj 147 112 line~; #X obj 270 267 line~; #X obj 200 222 expr 1-$f1; #X obj 200 267 line~; #X obj 57 381 *~; #X obj 320 152 loadbang; #X msg 320 172 0; #X obj 213 27 loadbang; #X obj 147 48 r mod-lvl; #X obj 147 90 pack 0 10; #X obj 270 245 pack 0 10; #X obj 200 245 pack 0 10; #X obj 277 62 r nc-accX-set; #X obj 277 84 nbx 5 14 -1 1 0 0 empty empty empty 0 -8 0 10 -262144 -1 -1 -1 256; #X obj 277 152 change; #N canvas 10 69 450 300 ___monitor 0; #X obj 126 52 inlet~; #X obj 125 92 snapshot~; #X obj 196 124 metro 100; #X obj 213 71 loadbang; #X msg 211 97 1; #X floatatom 125 120 5 0 0 0 - - -; #X connect 0 0 1 0; #X connect 1 0 5 0; #X connect 2 0 1 0; #X connect 3 0 4 0; #X connect 4 0 2 0; #X coords 0 -1 1 1 39 21 1 121 118; #X restore 292 372 pd ___monitor; #X msg 186 174 squelch \$1; #X obj 57 354 rj/e_vocoder myvocoder; #X msg 375 153 1; #X msg 432 153 0; #X obj 396 176 change; #X obj 396 196 s nunchuk-dbg; #X obj 375 133 split -1 1; #X obj 34 297 *~; #X obj 186 131 r squelch; #X obj 186 152 expr $f1*25+5; #X obj 277 129 expr ($f1+1); #X obj 672 192 nbx 8 14 -12 12 0 0 empty empty empty 0 -8 0 10 -262144 -1 -1 0 256; #X obj 672 127 r nc-accY-set; #X obj 672 149 gate 1 1; #X msg 629 105 1; #X msg 659 105 0; #X obj 629 81 sel 2 3 0; #X obj 672 211 * 12; #X obj 672 170 expr int((-$f1/1.5708)*12); #X msg 213 47 1; #X obj 34 195 *~; #X obj 50 173 line~; #X obj 61 107 loadbang; #X obj 50 151 pack 0 10; #X msg 61 127 1; #X obj 50 83 r sndc-lvl; #X connect 0 0 62 0; #X connect 2 0 16 0; #X connect 3 0 11 1; #X connect 4 0 12 0; #X connect 5 0 1 0; #X connect 5 0 43 0; #X connect 6 0 5 1; #X connect 7 0 13 0; #X connect 8 0 7 0; #X connect 9 0 11 0; #X connect 9 0 15 0; #X connect 10 0 9 0; #X connect 11 0 19 1; #X connect 12 0 53 0; #X connect 13 0 10 0; #X connect 14 0 2 0; #X connect 16 0 58 0; #X connect 17 0 21 0; #X connect 18 0 19 0; #X connect 19 0 21 0; #X connect 19 1 17 0; #X connect 20 0 0 0; #X connect 21 0 6 0; #X connect 22 0 21 1; #X connect 23 0 24 0; #X connect 24 0 25 0; #X connect 25 0 43 1; #X connect 26 0 25 1; #X connect 27 0 30 1; #X connect 28 0 37 0; #X connect 29 0 49 1; #X connect 30 0 1 0; #X connect 31 0 32 0; #X connect 32 0 28 0; #X connect 32 0 36 0; #X connect 33 0 61 0; #X connect 34 0 35 0; #X connect 35 0 26 0; #X connect 36 0 27 0; #X connect 37 0 29 0; #X connect 38 0 39 0; #X connect 39 0 48 0; #X connect 39 0 52 0; #X connect 40 0 28 0; #X connect 40 0 36 0; #X connect 42 0 43 2; #X connect 43 0 30 0; #X connect 44 0 46 0; #X connect 45 0 46 0; #X connect 46 0 47 0; #X connect 48 0 44 0; #X connect 48 1 45 0; #X connect 49 0 5 0; #X connect 50 0 51 0; #X connect 51 0 42 0; #X connect 52 0 40 0; #X connect 53 0 59 0; #X connect 54 0 55 1; #X connect 55 0 60 0; #X connect 56 0 55 0; #X connect 57 0 55 0; #X connect 58 0 56 0; #X connect 58 2 57 0; #X connect 59 0 3 0; #X connect 60 0 53 0; #X connect 61 0 35 0; #X connect 62 0 49 0; #X connect 63 0 62 1; #X connect 64 0 66 0; #X connect 65 0 63 0; #X connect 66 0 65 0; #X connect 67 0 65 0; #X restore 7 -133 pd sound; #X obj 7 -166 bng 30 250 50 0 empty empty 5_load_hum 35 7 0 10 -4034 -1 -1; #X obj 288 -149 key; #N canvas 293 177 642 376 delays 0; #X text 437 209 <-- delay time; #X text 313 258 add the original and the delayed signal; #X obj 109 279 +~; #X text 357 235 feedback gain; #X text 313 258 add the original and the delayed signal; #X obj 282 262 +~; #X text 357 235 feedback gain; #X obj 148 303 delwrite~ l-del 2000; #X obj 318 284 delwrite~ r-del 2000; #X obj 299 235 *~ 0.6; #X obj 123 257 *~ 0.7; #X obj 272 143 pack 0 100; #X obj 114 171 pack 0 100; #X obj 114 192 line~; #X obj 260 191 *~; #X obj 272 167 line~; #X obj 80 225 *~; #X obj 113 48 inlet~; #X obj 202 352 outlet~; #X obj 272 51 expr $f1/1.5708; #X obj 272 73 nbx 8 14 0 1 0 0 empty empty empty 0 -8 0 10 -262144 -1 -1 0 256; #X obj 272 8 r nc-accY-set; #X obj 383 149 expr 250-($f1*200); #X obj 123 120 expr 400-($f1*360); #X obj 123 234 vd~ l-del 400; #X msg 123 142 \$1 1000; #X obj 300 213 vd~ r-del 250; #X obj 296 191 line~; #X msg 383 170 \$1 1000; #X obj 123 213 line~; #X obj 332 191 expr 0.6-$f1*0.3; #X obj 160 213 expr 0.7-$f1*0.3; #X floatatom 373 30 5 0 0 0 - - -; #X obj 373 8 r nunchuk-btn-set; #X obj 373 51 change; #X obj 272 30 gate 1 1; #X obj 373 118 expr abs(1-$i1); #X obj 373 73 select 1 3 0; #X msg 373 96 1; #X msg 402 96 0; #X connect 2 0 7 0; #X connect 2 0 18 0; #X connect 5 0 8 0; #X connect 5 0 18 0; #X connect 9 0 5 1; #X connect 10 0 2 1; #X connect 11 0 15 0; #X connect 12 0 13 0; #X connect 13 0 16 1; #X connect 14 0 5 0; #X connect 15 0 14 1; #X connect 16 0 2 0; #X connect 17 0 14 0; #X connect 17 0 16 0; #X connect 19 0 20 0; #X connect 20 0 11 0; #X connect 20 0 12 0; #X connect 20 0 22 0; #X connect 20 0 23 0; #X connect 20 0 30 0; #X connect 20 0 31 0; #X connect 21 0 35 1; #X connect 22 0 28 0; #X connect 23 0 25 0; #X connect 24 0 10 0; #X connect 25 0 29 0; #X connect 26 0 9 0; #X connect 27 0 26 0; #X connect 28 0 27 0; #X connect 29 0 24 0; #X connect 30 0 9 1; #X connect 31 0 10 1; #X connect 32 0 34 0; #X connect 33 0 32 0; #X connect 34 0 37 0; #X connect 35 0 19 0; #X connect 36 0 35 0; #X connect 37 0 38 0; #X connect 37 2 39 0; #X connect 38 0 36 0; #X connect 39 0 36 0; #X restore 26 -54 pd delays; #X text 113 81 4 (toggle db to 30); #X obj 131 -130 r monitor; #N canvas 123 310 403 249 modulators 0; #X obj 46 100 * 1; #X obj 46 41 nbx 5 14 0 1e+37 0 0 empty empty empty 0 -8 0 10 -262144 -1 -1 0 256; #X obj 46 18 r wiimote_accel; #X obj 77 189 line~; #X floatatom 158 26 5 0 0 0 - - -; #X obj 158 5 r wii-btn02-set; #X obj 77 168 pack 0 50; #X obj 46 82 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 -262144 -1 -1 0 256; #X msg 95 142 0; #X msg 222 156 30; #X obj 46 61 pow 2; #X obj 46 121 split 0.03 1; #X msg 163 176 0.03; #X msg 163 156 1000; #X msg 222 196 0.5; #X msg 222 176 0.2; #X obj 278 178 s ptch_rnd; #X msg 309 156 2; #X msg 278 156 1; #X obj 77 210 outlet~; #X msg 163 196 8; #X obj 238 76 sel 8 0 4 12; #X obj 158 76 sel 4 0 8 12; #X obj 238 52 gate 2 1; #X obj 257 5 r toggle_ctrls; #X obj 257 26 + 1; #X connect 0 0 11 0; #X connect 1 0 10 0; #X connect 2 0 1 0; #X connect 3 0 19 0; #X connect 4 0 23 1; #X connect 5 0 4 0; #X connect 6 0 3 0; #X connect 7 0 0 0; #X connect 8 0 6 0; #X connect 9 0 6 1; #X connect 10 0 7 0; #X connect 11 0 6 0; #X connect 11 1 8 0; #X connect 12 0 11 1; #X connect 13 0 6 1; #X connect 14 0 0 1; #X connect 15 0 11 1; #X connect 17 0 16 0; #X connect 18 0 16 0; #X connect 20 0 0 1; #X connect 21 0 13 0; #X connect 21 0 12 0; #X connect 21 0 20 0; #X connect 21 0 18 0; #X connect 21 1 9 0; #X connect 21 1 15 0; #X connect 21 1 14 0; #X connect 21 1 18 0; #X connect 21 2 9 0; #X connect 21 2 15 0; #X connect 21 2 14 0; #X connect 21 2 17 0; #X connect 21 3 17 0; #X connect 21 3 13 0; #X connect 21 3 12 0; #X connect 21 3 20 0; #X connect 22 0 13 0; #X connect 22 0 12 0; #X connect 22 0 20 0; #X connect 22 0 18 0; #X connect 22 1 9 0; #X connect 22 1 15 0; #X connect 22 1 14 0; #X connect 22 1 18 0; #X connect 22 2 17 0; #X connect 22 2 9 0; #X connect 22 2 15 0; #X connect 22 2 14 0; #X connect 22 3 17 0; #X connect 22 3 13 0; #X connect 22 3 12 0; #X connect 22 3 20 0; #X connect 23 0 21 0; #X connect 23 1 22 0; #X connect 24 0 25 0; #X connect 25 0 23 0; #X restore 24 -110 pd modulators; #X obj 131 -88 expr ($f1+12)*4.167; #X obj 288 -128 sel 49 50 51 45 61; #N canvas 130 134 450 300 fine-tune 0; #X obj 57 -72 nbx 5 18 -1 1 0 0 empty empty empty 0 -8 0 14 -260097 -1 -1 -0.66 256; #X obj 57 -23 s fine_tune; #X obj 57 -93 +; #X msg 98 -115 0.01; #X msg 57 -115 -0.01; #X obj 130 -23 sssad fine-tune; #X obj 57 -140 inlet; #X obj 98 -140 inlet; #N canvas 146 175 832 328 state-saving 0; #X obj 418 12 cnv 15 400 300 empty empty Restore 300 12 0 14 -233017 -123526 0; #X obj 13 12 cnv 15 400 300 empty empty Save 300 12 0 14 -233017 -123526 0; #X obj 239 237 textfile; #X msg 128 138 clear; #X msg 313 220 print; #X obj 239 161 list prepend add; #X obj 239 187 list trim; #X obj 491 217 textfile; #X obj 491 247 s SSSAD; #X obj 491 159 until; #X msg 491 138 100; #X msg 435 200 print; #X text 486 269 also received inside sssad; #X obj 106 238 s SSSAD_ADMIN; #X obj 239 93 r SSSAD_ADMIN; #X obj 239 137 route persist; #X obj 239 115 list trim; #X msg 106 172 save; #X msg 120 211 set; #X obj 559 244 s SSSAD_ADMIN; #X msg 559 219 set; #X text 533 70 Avoid loops. A bang normally also works.; #X obj 84 58 inlet; #X obj 491 70 inlet; #X obj 491 115 t b f; #X obj 84 102 t f b b; #X msg 84 285 write \$1.hum.preset.txt; #X msg 538 160 read \$1.hum.preset.txt \, rewind; #X connect 3 0 2 0; #X connect 4 0 2 0; #X connect 5 0 6 0; #X connect 6 0 2 0; #X connect 7 0 8 0; #X connect 7 1 9 1; #X connect 7 1 20 0; #X connect 9 0 7 0; #X connect 10 0 9 0; #X connect 11 0 7 0; #X connect 14 0 16 0; #X connect 15 0 5 0; #X connect 16 0 15 0; #X connect 17 0 13 0; #X connect 18 0 13 0; #X connect 20 0 19 0; #X connect 22 0 25 0; #X connect 23 0 24 0; #X connect 24 0 10 0; #X connect 24 1 27 0; #X connect 25 0 26 0; #X connect 25 1 17 0; #X connect 25 2 3 0; #X connect 26 0 2 0; #X connect 27 0 7 0; #X restore 229 -2 pd state-saving; #X obj 316 -44 loadbang; #X msg 316 -23 1; #X msg 229 -23 1; #X text 55 -57 pitch tuning; #X text 250 -58 save; #X obj 257 -72 bng 15 250 50 0 empty empty empty 17 7 0 10 -162280 -1 -1; #X obj 196 -72 nbx 3 18 0 100 0 0 mod-lvl empty empty 0 -8 0 14 -257985 -1 -1 3 256; #X text 194 -57 mod level; #X obj 130 -2 sssad mod-level; #X obj 134 -72 nbx 3 18 0 100 0 0 sndc-lvl empty empty 0 -8 0 14 -257985 -1 -1 3 256; #X text 132 -57 sndc level; #X obj 130 19 sssad sndc-level; #X connect 0 0 1 0; #X connect 0 0 2 1; #X connect 0 0 5 1; #X connect 2 0 0 0; #X connect 3 0 2 0; #X connect 4 0 2 0; #X connect 5 0 0 0; #X connect 6 0 4 0; #X connect 7 0 3 0; #X connect 9 0 10 0; #X connect 10 0 8 1; #X connect 11 0 8 0; #X connect 14 0 11 0; #X connect 15 0 17 1; #X connect 17 0 15 0; #X connect 18 0 20 1; #X connect 20 0 18 0; #X coords 0 -1 1 1 225 36 1 53 -76; #X restore 414 -107 pd fine-tune; #X obj 131 -166 bng 30 250 50 0 empty empty 6_load_mod_sound 35 7 0 10 -4034 -1 -1; #X obj 8 -23 *~ 5; #X obj 314 -148 tgl 15 0 empty nunchuk-dbg nunchuk 18 8 0 8 -159808 -1 -1 1 1; #X obj 378 -148 tgl 15 0 toggle_ctrls empty swap_AB_wiimote_buttons 18 8 0 8 -159808 -1 -1 0 1; #X connect 0 0 19 0; #X connect 0 0 11 0; #X connect 3 0 1 1; #X connect 4 0 1 2; #X connect 5 0 1 0; #X connect 6 0 15 0; #X connect 8 0 0 0; #X connect 9 0 8 0; #X connect 10 0 16 0; #X connect 11 0 19 0; #X connect 13 0 6 0; #X connect 14 0 0 1; #X connect 15 0 2 0; #X connect 16 0 5 0; #X connect 16 1 3 0; #X connect 16 2 4 0; #X connect 16 3 17 0; #X connect 16 4 17 1; #X connect 18 0 8 1; #X connect 19 0 7 0;