#N canvas 286 32 505 662 10; #X obj 12 11 inlet; #X obj 108 585 outlet; #X obj 108 538 list; #X obj 132 318 expr_scale 0 1 \$3 \$4; #X obj 289 318 expr_scale 0 1 \$3 \$4; #X obj 176 371 hotpack f f; #X obj 45 437 demultiplex; #X obj 108 459 round; #X obj 45 370 expr_scale 0 1 \$3 \$4; #X obj 156 11 inlet; #X obj 286 11 inlet; #X text 63 610 Use to constrain input to a smaller subset of the full range. Input as relative to 0-1. Reports back what the result will be when scaled fully; #X obj 156 59 s \$0boundLowFull; #X obj 286 59 s \$0boundHighFull; #X obj 162 252 r \$0boundLowFull; #X obj 329 252 r \$0boundHighFull; #X obj 132 229 r \$0constrainLow; #X obj 289 230 r \$0constrainHigh; #X obj 329 277 t b a; #X obj 162 279 t b a; #X obj 108 415 r \$0round?; #X obj 45 459 t a; #X text 6 128 Read \$1-OSC (== \$0-OSC) \, filter by argument \$2; #X obj 45 145 r \$1-RRADICAL-OSC; #X obj 12 42 prepent \$2; #X obj 12 69 s \$1-RRADICAL-MEMENTO; #X obj 108 513 route \$2; #X obj 108 489 r \$1-in; #N canvas 0 22 221 199 handleArgs 0; #X obj 26 26 loadbang; #X msg 26 127 1; #X obj 26 102 sel round hide; #X obj 26 149 s \$0round?; #X obj 26 78 list-drip; #X obj 95 149 s \$0hide?; #X obj 26 53 list append \$5 \$6; #X connect 0 0 6 0; #X connect 1 0 3 0; #X connect 2 0 1 0; #X connect 2 1 5 0; #X connect 4 0 2 0; #X connect 6 0 4 0; #X restore 317 108 pd handleArgs; #N canvas 0 22 390 211 listParams 0; #X obj 31 79 spigot 1; #X msg 161 62 0; #X obj 161 39 r \$0hide?; #X obj 31 49 r \$1/listParams; #X obj 31 136 s \$1/returnParams; #X text 16 161 listParams is used by Controctopus \, so we return a special address for 0-1 data input only; #X obj 31 106 list append \$2; #X connect 0 0 6 0; #X connect 1 0 0 1; #X connect 2 0 1 0; #X connect 3 0 0 0; #X connect 6 0 4 0; #X restore 317 133 pd listParams; #N canvas 0 22 352 303 receiveConstraints 0; #X obj 80 156 unpack f f; #X obj 80 200 s \$0constrainLow; #X obj 137 178 s \$0constrainHigh; #X obj 16 50 loadbang; #X msg 16 75 0 1; #X obj 80 115 list; #X obj 131 115 t a a; #X obj 80 87 route get; #X text 62 264 Used to recall the 0-1 ranged constraint; #X obj 80 20 r \$1-RRADICAL-OSC; #X obj 64 245 s \$1-COMMUN-RESPONSE; #X obj 80 43 deeprouteOSC \$2-constrain; #X obj 64 224 prepent \$2-constrained-to-0-1; #X text 145 68 Save the constraints; #X obj 147 87 commun \$2-constraints \$1; #X connect 0 0 1 0; #X connect 0 1 2 0; #X connect 3 0 4 0; #X connect 4 0 0 0; #X connect 4 0 5 1; #X connect 5 0 0 0; #X connect 5 0 12 0; #X connect 6 0 0 0; #X connect 6 1 5 1; #X connect 7 0 5 0; #X connect 7 1 6 0; #X connect 7 1 14 0; #X connect 9 0 11 0; #X connect 11 0 7 0; #X connect 12 0 10 0; #X connect 14 0 6 0; #X restore 317 157 pd receiveConstraints; #N canvas 323 119 442 277 constraintsFeedback 0; #X obj 19 35 inlet; #X obj 19 63 t a a b; #X msg 58 85 1; #X obj 19 128 spigot; #X obj 38 107 s \$1\$2/constraint/lookup/call; #X obj 67 129 r \$1\$2/constraint/lookup/response; #X obj 67 151 t a b; #X msg 94 173 0; #X obj 19 234 s \$1-COMMUN-RESPONSE; #X obj 19 213 prepent \$2-constrained-to; #X text 126 164 Only allow one or the other; #X text 79 31 Allows one to replace the "scaled output" response with something prettier (e.g. \, if it actually corresponds to a waveform selector \, you can return the names); #X connect 0 0 1 0; #X connect 1 0 3 0; #X connect 1 1 4 0; #X connect 1 2 2 0; #X connect 2 0 3 1; #X connect 3 0 9 0; #X connect 5 0 6 0; #X connect 6 0 9 0; #X connect 6 1 7 0; #X connect 7 0 3 1; #X connect 9 0 8 0; #X restore 176 396 pd constraintsFeedback; #N canvas 488 62 303 238 receiveMultiplier 1; #X obj 133 63 commun \$2-multiplier \$1; #X obj 72 15 r \$1-RRADICAL-OSC; #X obj 72 38 deeprouteOSC \$2-multiplier; #X obj 72 63 route get; #X obj 72 98 f; #X obj 38 171 prepent \$2-multiplier-is; #X obj 38 194 s \$1-COMMUN-RESPONSE; #X obj 72 134 s \$0multiplier; #X obj 123 98 t a a; #X obj 7 17 loadbang; #X msg 7 42 1; #X connect 0 0 8 0; #X connect 1 0 2 0; #X connect 2 0 3 0; #X connect 3 0 4 0; #X connect 3 1 0 0; #X connect 3 1 8 0; #X connect 4 0 7 0; #X connect 4 0 5 0; #X connect 5 0 6 0; #X connect 8 0 7 0; #X connect 8 1 4 1; #X connect 9 0 10 0; #X connect 10 0 7 0; #X restore 317 181 pd receiveMultiplier; #X obj 81 391 r \$0multiplier; #X obj 45 408 *; #X obj 108 562 route bang; #X obj 45 168 deeprouteOSC \$2; #X obj 45 190 route float; #X obj 118 190 s \$0bypass; #X obj 166 516 r \$0bypass; #X text 43 85 RRADICAL-MEMENTO is also in originator; #X connect 0 0 24 0; #X connect 2 0 35 0; #X connect 3 0 5 0; #X connect 3 0 8 3; #X connect 4 0 5 1; #X connect 4 0 8 4; #X connect 5 0 31 0; #X connect 6 0 21 0; #X connect 6 1 7 0; #X connect 7 0 21 0; #X connect 8 0 34 0; #X connect 9 0 12 0; #X connect 10 0 13 0; #X connect 14 0 19 0; #X connect 15 0 18 0; #X connect 16 0 3 0; #X connect 17 0 4 0; #X connect 18 0 4 0; #X connect 18 1 4 4; #X connect 18 1 3 4; #X connect 19 0 3 0; #X connect 19 1 4 3; #X connect 19 1 3 3; #X connect 20 0 6 1; #X connect 21 0 2 0; #X connect 23 0 36 0; #X connect 24 0 25 0; #X connect 26 0 2 0; #X connect 27 0 26 0; #X connect 33 0 34 1; #X connect 34 0 6 0; #X connect 35 1 1 0; #X connect 36 0 37 0; #X connect 37 0 8 0; #X connect 37 1 38 0; #X connect 39 0 2 0;