#N canvas 1194 100 1243 637 12; #X obj 318 86 inlet; #X obj 513 514 outlet; #X text 48 14 port of Arduino library ResponsiveAnalogRead \, a self-adjusting exponential moving average filter; #N canvas 1288 365 956 926 handleNewValue 0; #X obj 224 57 inlet; #X obj 224 81 route bang; #N canvas 78 78 523 537 amplifyEdgeVals 0; #X obj 100 42 inlet; #X obj 132 419 outlet; #X obj 100 208 moses; #X obj 132 237 moses; #X obj 132 92 r \$0-activityThresh; #X obj 164 120 r \$0-resolution; #X obj 180 148 r \$0-activityThresh; #X obj 164 206 -; #X obj 180 172 t b f; #X obj 100 265 * 2; #X obj 100 338 -; #X obj 164 265 * 2; #X obj 164 289 -; #X obj 197 264 r \$0-resolution; #X obj 164 337 +; #X obj 197 290 r \$0-activityThresh; #X connect 0 0 2 0; #X connect 2 0 9 0; #X connect 2 1 3 0; #X connect 3 0 1 0; #X connect 3 1 11 0; #X connect 4 0 2 1; #X connect 5 0 7 0; #X connect 6 0 8 0; #X connect 7 0 3 1; #X connect 8 0 7 0; #X connect 8 1 7 1; #X connect 9 0 10 0; #X connect 10 0 1 0; #X connect 11 0 12 0; #X connect 12 0 14 0; #X connect 13 0 12 1; #X connect 14 0 1 0; #X connect 15 0 14 1; #X connect 15 0 10 1; #X restore 321 223 pd amplifyEdgeVals; #X obj 291 167 list prepend; #X obj 389 110 t b f; #X obj 129 634 value \$0-smoothValue; #X obj 291 350 list prepend; #X obj 291 374 route 0 1; #X obj 353 437 value \$0-errorEMA; #X obj 353 461 abs; #X obj 353 512 <; #X obj 372 142 &&; #X obj 291 193 route 0 1; #X obj 321 555 list prepend; #X obj 321 579 route 0 1; #X obj 351 633 value \$0-smoothValue; #X obj 291 661 s \$0-calcNewSmoothValue; #X obj 649 296 r \$0-calcNewSmoothValue; #X obj 371 486 r \$0-activityThresh; #X text 370 193 if sleep and edge snap are enabled; #N canvas 312 312 473 381 updateErrorEMA 0; #X obj 94 43 inlet; #X obj 94 67 t f b; #X obj 149 100 value \$0-smoothValue; #X obj 94 126 -; #X obj 149 126 value \$0=errorEMA; #X obj 94 150 -; #X obj 94 223 value \$0-errorEMA; #X obj 94 174 * 0.4; #X obj 94 198 +; #X connect 0 0 1 0; #X connect 1 0 3 0; #X connect 1 1 2 0; #X connect 1 1 4 0; #X connect 2 0 3 1; #X connect 3 0 5 0; #X connect 4 0 5 1; #X connect 4 0 8 1; #X connect 5 0 7 0; #X connect 7 0 8 0; #X connect 8 0 6 0; #X restore 323 289 pd updateErrorEMA; #X obj 291 261 t f f; #X text 367 374 if sleep enabled; #X text 366 401 test if we should be sleeping; #X text 394 578 if sleeping & sleep enabled; #X obj 727 348 value \$0-smoothValue; #X obj 649 378 -; #X obj 649 444 abs; #X text 611 444 diff; #X obj 649 500 *; #X obj 667 474 r \$0-snapMultiplier; #N canvas 1153 187 412 303 calcSnapCurve 0; #X obj 107 33 inlet; #X obj 107 202 outlet; #X obj 107 57 + 1; #X obj 107 81 pow -1; #X obj 107 105 * -1; #X obj 107 129 + 1; #X obj 107 153 * 2; #X obj 107 177 clip 0 1; #X text 187 33 2 (1 - (1/(x + 1))); #X connect 0 0 2 0; #X connect 2 0 3 0; #X connect 3 0 4 0; #X connect 4 0 5 0; #X connect 5 0 6 0; #X connect 6 0 7 0; #X connect 7 0 1 0; #X restore 649 524 pd calcSnapCurve; #X obj 649 321 t f b; #X obj 649 411 t f f; #X obj 663 557 *; #X obj 663 633 t f f; #X obj 695 661 value \$0-smoothValue; #X obj 663 607 clip 0 1023; #X obj 737 581 - 1; #X text 50 21 c.f. ResponsiveAnalogRead::getResponsiveValue(int newValue) ; #X obj 737 557 r \$0-resolution; #X obj 372 58 r \$0-sleep; #X obj 389 83 r \$0-edgeSnap; #X obj 372 323 r \$0-sleep; #X obj 321 401 t f b; #X obj 351 606 bang; #X obj 663 582 +; #X obj 464 782 int; #X obj 464 806 outlet; #X connect 0 0 1 0; #X connect 1 0 5 0; #X connect 1 1 3 0; #X connect 2 0 21 0; #X connect 3 0 12 0; #X connect 4 0 11 0; #X connect 4 1 11 1; #X connect 5 0 47 0; #X connect 6 0 7 0; #X connect 7 0 16 0; #X connect 7 1 44 0; #X connect 8 0 9 0; #X connect 9 0 10 0; #X connect 10 0 13 1; #X connect 11 0 3 1; #X connect 12 0 21 0; #X connect 12 1 2 0; #X connect 13 0 14 0; #X connect 14 0 16 0; #X connect 14 1 45 0; #X connect 15 0 47 0; #X connect 17 0 32 0; #X connect 18 0 10 1; #X connect 21 0 6 0; #X connect 21 1 20 0; #X connect 25 0 26 1; #X connect 25 0 46 1; #X connect 26 0 33 0; #X connect 27 0 29 0; #X connect 29 0 31 0; #X connect 30 0 29 1; #X connect 31 0 34 0; #X connect 32 0 26 0; #X connect 32 1 25 0; #X connect 33 0 27 0; #X connect 33 1 34 1; #X connect 34 0 46 0; #X connect 35 0 47 0; #X connect 35 1 36 0; #X connect 37 0 35 0; #X connect 38 0 37 2; #X connect 40 0 38 0; #X connect 41 0 11 0; #X connect 42 0 4 0; #X connect 43 0 6 1; #X connect 44 0 13 0; #X connect 44 1 8 0; #X connect 45 0 15 0; #X connect 46 0 37 0; #X connect 47 0 48 0; #X restore 820 175 pd handleNewValue; #X obj 62 247 route bang; #X obj 129 275 route 0 1; #X msg 129 304 0; #X msg 162 304 1; #X obj 141 337 s \$0-sleep; #X obj 62 342 f; #X msg 62 366 sleep \$1; #X obj 232 247 route bang; #X obj 299 275 route 0 1; #X msg 299 304 0; #X msg 332 304 1; #X obj 232 342 f; #X obj 311 337 s \$0-edgeSnap; #X msg 232 366 edgeSnap \$1; #X obj 423 247 route bang; #X obj 423 342 f; #X obj 490 275 clip 0 1; #X obj 490 316 s \$0-snapMultiplier; #X msg 423 366 snapMultiplier \$1; #X obj 638 247 route bang; #X obj 638 342 f; #X obj 318 141 route sleep edgeSnap snapMultiplier activityThresh resolution , f 63; #X obj 705 316 s \$0-activityThresh; #X msg 638 366 activityThresh \$1; #X obj 820 199 s \$0-smoothOutlet; #X obj 177 486 r \$0-smoothOutlet; #X obj 177 510 outlet; #X obj 852 247 route bang; #X obj 852 342 f; #X obj 919 316 s \$0-resolution; #X msg 852 366 resolution \$1; #X obj 450 49 loadbang; #X msg 450 73 sleep 1 \, edgeSnap 1 \, snapMultiplier 0.01 \, activityThresh 4 \, resolution 1024; #X connect 0 0 25 0; #X connect 3 0 28 0; #X connect 4 0 9 0; #X connect 4 1 5 0; #X connect 5 0 6 0; #X connect 5 1 7 0; #X connect 6 0 8 0; #X connect 6 0 9 1; #X connect 7 0 8 0; #X connect 7 0 9 1; #X connect 9 0 10 0; #X connect 10 0 1 0; #X connect 11 0 15 0; #X connect 11 1 12 0; #X connect 12 0 13 0; #X connect 12 1 14 0; #X connect 13 0 15 1; #X connect 13 0 16 0; #X connect 14 0 15 1; #X connect 14 0 16 0; #X connect 15 0 17 0; #X connect 17 0 1 0; #X connect 18 0 19 0; #X connect 18 1 20 0; #X connect 19 0 22 0; #X connect 20 0 19 1; #X connect 20 0 21 0; #X connect 22 0 1 0; #X connect 23 0 24 0; #X connect 23 1 26 0; #X connect 24 0 27 0; #X connect 25 0 4 0; #X connect 25 1 11 0; #X connect 25 2 18 0; #X connect 25 3 23 0; #X connect 25 4 31 0; #X connect 25 5 3 0; #X connect 27 0 1 0; #X connect 29 0 30 0; #X connect 31 0 32 0; #X connect 31 1 33 0; #X connect 32 0 34 0; #X connect 34 0 1 0; #X connect 35 0 36 0; #X connect 36 0 25 0;