#N canvas 469 23 545 605 12;
#X floatatom 202 412 7 0 0 0 - - - 0;
#X msg 252 308 set \$1;
#X obj 171 296 bng 18 250 50 0 empty empty empty 8 -8 0 10 #dfdfdf #000000 #000000;
#N canvas 771 89 559 433 old-behavior 0;
#X floatatom 134 318 5 0 0 0 - - - 0;
#X floatatom 112 387 5 0 0 0 - - - 0;
#X msg 88 193 \; pd compatibility 0.45;
#X msg 282 193 \; pd compatibility 0.46;
#X text 99 156 Old "compatible" behavior, f 16;
#X obj 115 343 hsl 128 18 0 127 0 0 empty empty empty 0 -9 0 10 #dfdfdf #000000 #000000 0 1;
#X text 278 163 New "correct" behavior;
#X floatatom 275 263 5 0 0 0 - - - 0;
#X msg 321 262 100;
#X msg 366 262 -100;
#X floatatom 321 377 5 0 0 0 - - - 0;
#X obj 324 333 hsl 128 18 0 127 0 0 empty empty empty 0 -9 0 10 #dfdfdf #000000 #000000 0 1;
#X obj 321 300 clip 0 127;
#X text 407 293 forcing clip before input, f 13;
#X msg 134 289 100;
#X msg 175 289 -100;
#X obj 74 255 bng 19 250 50 0 empty empty empty 17 7 0 10 #dfdfdf #000000 #000000;
#X msg 112 255 set -13.7;
#X text 48 19 Prior to Pd version 0.46 \, values sent to IEM GUIs were restricted to the control's own values before passing them through to the output. This behavior changed in 0.46 to allow values outside the range to pass through. You can toggle back and forth between the two behaviors using the messages boxes below. If you want to get this behavior in an up-to-date patch \, you can use a "clip" object to restrict the range of numbers. Note this also affects the 'set' message., f 67;
#X connect 0 0 5 0;
#X connect 5 0 1 0;
#X connect 7 0 12 0;
#X connect 8 0 12 0;
#X connect 9 0 12 0;
#X connect 11 0 10 0;
#X connect 12 0 11 0;
#X connect 14 0 0 0;
#X connect 15 0 0 0;
#X connect 16 0 5 0;
#X connect 17 0 5 0;
#X restore 239 531 pd old-behavior;
#X obj 202 451 print hsl;
#X floatatom 202 296 5 0 0 0 - - - 0;
#X floatatom 252 285 5 0 0 0 - - - 0;
#X obj 205 363 hsl 128 18 0 127 0 0 empty empty Slider 73 -11 0 14 #dcdcdc #000000 #ff0400 0 1;
#X obj 35 14 hsl 128 18 0 127 0 0 empty empty empty -2 -8 0 10 #fcfcfc #000000 #000000 0 1;
#X text 358 494 (c) musil@iem.kug.ac.at;
#X text 394 510 IEM KUG \, Graz \, Austria \, 2002, f 14;
#X text 19 577 see also:;
#X text 316 424 This object is part of the "iemguis" library \, natively included in Pd version 0.34., f 28;
#X text 63 498 COMPATIBILITY NOTE: The behavior changed in Pd 0.46! Check details and how to get it back:, f 33;
#N canvas 665 62 613 486 position 0;
#X floatatom 142 146 4 0 1000 0 - - - 0;
#X obj 191 173 t b f;
#X floatatom 191 146 5 0 500 0 - - - 0;
#X msg 142 243 pos \$1 \$2;
#X text 63 146 x-position;
#X text 235 145 y-position;
#X msg 264 183 delta 1 0;
#X text 337 182 increase x by 1;
#X msg 274 205 delta -1 0;
#X text 353 204 decrease x by 1;
#X msg 286 239 delta 0 1;
#X msg 292 261 delta 0 -1;
#X text 363 238 increase y by 1;
#X text 376 263 decrease y by 1;
#X msg 301 293 delta 1 1;
#X text 376 294 increase both by 1;
#X text 394 315 decrease both by -1;
#X msg 308 315 delta -1 -1;
#X obj 142 202 pack 265 350;
#X text 293 66 The 'delta' message changes the position of the object by a difference amount. It takes a list of x/y delta in pixels., f 40;
#X text 40 66 The 'pos' message takes a list of x/y coordinates in pixels and sets the objects's position., f 33;
#X text 159 19 You can also set and change the position of the object in the patch. Check below:, f 41;
#X obj 265 350 hsl 128 18 0 127 0 0 empty empty empty -2 -8 0 10 #dfdfdf #000000 #000000 0 1;
#X connect 0 0 18 0;
#X connect 1 0 18 0;
#X connect 1 1 18 1;
#X connect 2 0 1 0;
#X connect 3 0 22 0;
#X connect 6 0 22 0;
#X connect 8 0 22 0;
#X connect 10 0 22 0;
#X connect 11 0 22 0;
#X connect 14 0 22 0;
#X connect 17 0 22 0;
#X connect 18 0 3 0;
#X restore 425 334 pd position;
#N canvas 819 60 358 441 properties 0;
#N canvas 710 92 656 573 colors 0;
#X floatatom 72 244 3 0 29 0 - - - 0;
#X floatatom 108 244 3 0 29 0 - - - 0;
#X floatatom 177 249 3 0 29 0 - - - 0;
#X text 104 224 front;
#X text 170 224 label;
#X obj 108 273 t b f;
#X obj 177 275 t b f;
#X msg 72 343 color \$1 \$2 \$3;
#X obj 72 306 pack 0 22 22, f 20;
#X text 181 343 presets;
#X symbolatom 507 340 9 0 0 0 - - - 0;
#X symbolatom 421 339 9 0 0 0 - - - 0;
#X symbolatom 335 339 9 0 0 0 - - - 0;
#X obj 475 370 t b s;
#X obj 389 370 t b s;
#X obj 258 224 loadbang;
#X obj 335 408 pack symbol symbol symbol;
#X msg 335 437 color \$1 \$2 \$3;
#X msg 258 258 list #ffffff #000000 #000000, f 7;
#X text 21 224 background;
#X text 444 438 RGB in hexadecimal;
#X text 67 17 The 'color' message takes a list of three values to set background \, front and label colors \, respectively. Integers from 0 to 29 represent the 30 preset colors found in the properties window \, values above are wrapped., f 77;
#X text 68 68 Negative integers were used to encode RGB values (and that still works for backwards compatibility). But since Pd 0.47-0 \, you can set colors with hexadecimal RGB symbol values \, which are followed by "#"., f 77;
#X text 346 133 Set RGB values in the sliders;
#X obj 338 509 hsl 128 18 0 127 0 0 empty empty Label 33 -13 0 20 #ffffff #000000 #000000 0 1;
#N canvas 1044 268 390 482 label 0;
#X obj 102 80 vsl 15 128 0 255 0 0 empty empty empty 0 -9 0 10 #0800fc #fcfcfc #000000 0 1;
#X obj 109 225 t b f;
#X obj 81 80 vsl 15 128 0 255 0 0 empty empty empty 0 -9 0 10 #00fc00 #000000 #000000 0 1;
#X obj 80 341 pack s s s;
#X obj 61 80 vsl 15 128 0 255 0 0 empty empty empty 0 -9 0 10 #fc0000 #000000 #000000 0 1;
#X obj 81 250 t b f;
#X obj 147 257 makefilename %02x;
#X obj 113 284 makefilename %02x;
#X obj 74 311 makefilename %02x;
#X text 66 56 label;
#X obj 80 406 outlet;
#X msg 80 370 symbol #\$1\$2\$3;
#X obj 161 185 loadbang;
#X msg 161 217 0;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 1 1 6 0;
#X connect 2 0 5 0;
#X connect 3 0 11 0;
#X connect 4 0 8 0;
#X connect 5 0 4 0;
#X connect 5 1 7 0;
#X connect 6 0 3 2;
#X connect 7 0 3 1;
#X connect 8 0 3 0;
#X connect 11 0 10 0;
#X connect 12 0 13 0;
#X connect 13 0 6 0;
#X connect 13 0 7 0;
#X coords 0 -1 1 1 80 170 2 50 50;
#X restore 507 158 pd label;
#N canvas 965 279 390 482 label 0;
#X obj 102 80 vsl 15 128 0 255 0 0 empty empty empty 0 -9 0 10 #0800fc #fcfcfc #000000 0 1;
#X obj 109 225 t b f;
#X obj 81 80 vsl 15 128 0 255 0 0 empty empty empty 0 -9 0 10 #00fc00 #000000 #000000 0 1;
#X obj 74 341 pack s s s;
#X obj 61 80 vsl 15 128 0 255 0 0 empty empty empty 0 -9 0 10 #fc0000 #000000 #000000 0 1;
#X obj 81 250 t b f;
#X obj 146 257 makefilename %02x;
#X obj 112 284 makefilename %02x;
#X obj 74 311 makefilename %02x;
#X obj 74 406 outlet;
#X text 69 56 front;
#X msg 74 370 symbol #\$1\$2\$3;
#X obj 177 168 loadbang;
#X msg 177 200 0;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 1 1 6 0;
#X connect 2 0 5 0;
#X connect 3 0 11 0;
#X connect 4 0 8 0;
#X connect 5 0 4 0;
#X connect 5 1 7 0;
#X connect 6 0 3 2;
#X connect 7 0 3 1;
#X connect 8 0 3 0;
#X connect 11 0 9 0;
#X connect 12 0 13 0;
#X connect 13 0 6 0;
#X connect 13 0 7 0;
#X coords 0 -1 1 1 80 170 2 50 50;
#X restore 421 158 pd label;
#N canvas 894 296 390 482 label 0;
#X obj 102 80 vsl 15 128 0 255 0 0 empty empty empty 0 -9 0 10 #0800fc #fcfcfc #000000 0 1;
#X obj 109 225 t b f;
#X obj 81 80 vsl 15 128 0 255 0 0 empty empty empty 0 -9 0 10 #00fc00 #000000 #000000 0 1;
#X obj 61 80 vsl 15 128 0 255 0 0 empty empty empty 0 -9 0 10 #fc0000 #000000 #000000 0 1;
#X obj 81 250 t b f;
#X obj 221 257 makefilename %02x;
#X obj 141 284 makefilename %02x;
#X obj 61 321 makefilename %02x;
#X obj 61 416 outlet;
#X text 52 56 background;
#X msg 61 380 symbol #\$1\$2\$3;
#X obj 176 59 loadbang;
#X msg 176 91 set 255;
#X obj 176 176 route set;
#X obj 61 351 pack symbol symbol symbol;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 1 1 5 0;
#X connect 2 0 4 0;
#X connect 3 0 7 0;
#X connect 4 0 3 0;
#X connect 4 1 6 0;
#X connect 5 0 14 2;
#X connect 6 0 14 1;
#X connect 7 0 14 0;
#X connect 10 0 8 0;
#X connect 11 0 12 0;
#X connect 12 0 3 0;
#X connect 12 0 2 0;
#X connect 12 0 0 0;
#X connect 12 0 13 0;
#X connect 13 0 5 0;
#X connect 13 0 6 0;
#X connect 14 0 10 0;
#X coords 0 -1 1 1 80 170 2 50 50;
#X restore 335 158 pd label;
#N canvas 642 125 486 521 old_way 0;
#X obj 240 448 hsl 128 18 0 127 0 0 empty empty Label 33 -13 0 20 #ffffff #000000 #000000 0 1;
#N canvas 1136 244 402 495 label 0;
#X obj 102 80 vsl 15 128 0 255 0 0 empty empty empty 0 -9 0 10 #0800fc #fcfcfc #000000 0 1;
#X obj 81 80 vsl 15 128 0 255 0 0 empty empty empty 0 -9 0 10 #00fc00 #000000 #000000 0 1;
#X obj 61 80 vsl 15 128 0 255 0 0 empty empty empty 0 -9 0 10 #fc0000 #000000 #000000 0 1;
#X text 66 56 label;
#X obj 59 361 expr -($f1 * 65536 + $f2 * 256 + $f3 + 1);
#X obj 311 319 t b f;
#X obj 169 319 t b f;
#X obj 59 413 outlet;
#X connect 0 0 5 0;
#X connect 1 0 6 0;
#X connect 2 0 4 0;
#X connect 4 0 7 0;
#X connect 5 0 4 0;
#X connect 5 1 4 2;
#X connect 6 0 4 0;
#X connect 6 1 4 1;
#X coords 0 -1 1 1 80 170 2 50 50;
#X restore 349 144 pd label;
#X text 188 119 Set RGB values in the sliders;
#N canvas 955 131 392 476 label 0;
#X obj 102 80 vsl 15 128 0 255 0 0 empty empty empty 0 -9 0 10 #0800fc #fcfcfc #000000 0 1;
#X obj 81 80 vsl 15 128 0 255 0 0 empty empty empty 0 -9 0 10 #00fc00 #000000 #000000 0 1;
#X obj 61 80 vsl 15 128 0 255 0 0 empty empty empty 0 -9 0 10 #fc0000 #000000 #000000 0 1;
#X obj 61 361 expr -($f1 * 65536 + $f2 * 256 + $f3 + 1);
#X obj 313 269 t b f;
#X obj 171 269 t b f;
#X obj 61 413 outlet;
#X text 52 56 background;
#X obj 180 83 loadbang;
#X msg 202 134 set 255;
#X msg 181 195 255 255 255;
#X connect 0 0 4 0;
#X connect 1 0 5 0;
#X connect 2 0 3 0;
#X connect 3 0 6 0;
#X connect 4 0 3 0;
#X connect 4 1 3 2;
#X connect 5 0 3 0;
#X connect 5 1 3 1;
#X connect 8 0 9 0;
#X connect 8 0 10 0;
#X connect 9 0 0 0;
#X connect 9 0 1 0;
#X connect 9 0 2 0;
#X connect 10 0 3 0;
#X coords 0 -1 1 1 80 170 2 50 50;
#X restore 177 144 pd label;
#N canvas 1096 192 402 495 label 0;
#X obj 102 80 vsl 15 128 0 255 0 0 empty empty empty 0 -9 0 10 #0800fc #fcfcfc #000000 0 1;
#X obj 81 80 vsl 15 128 0 255 0 0 empty empty empty 0 -9 0 10 #00fc00 #000000 #000000 0 1;
#X obj 61 80 vsl 15 128 0 255 0 0 empty empty empty 0 -9 0 10 #fc0000 #000000 #000000 0 1;
#X obj 59 361 expr -($f1 * 65536 + $f2 * 256 + $f3 + 1);
#X obj 311 319 t b f;
#X obj 169 319 t b f;
#X obj 59 413 outlet;
#X text 66 56 front;
#X connect 0 0 4 0;
#X connect 1 0 5 0;
#X connect 2 0 3 0;
#X connect 3 0 6 0;
#X connect 4 0 3 0;
#X connect 4 1 3 2;
#X connect 5 0 3 0;
#X connect 5 1 3 1;
#X coords 0 -1 1 1 80 170 2 50 50;
#X restore 263 144 pd label;
#X text 25 173 Open subpatches for the conversion ====>, f 20;
#X msg 237 381 color -1.67772e+07 -1 -1;
#N canvas 574 194 328 335 pack 0;
#X obj 73 47 inlet;
#X obj 123 47 inlet;
#X obj 206 47 inlet;
#X msg 73 152 color \$1 \$2 \$3;
#X obj 206 85 t b f;
#X obj 123 85 t b f;
#X obj 73 123 pack float -1 -1, f 24;
#X obj 73 187 list prepend set;
#X obj 73 213 list trim;
#X obj 73 246 t b a;
#X obj 73 283 outlet;
#X connect 0 0 6 0;
#X connect 1 0 5 0;
#X connect 2 0 4 0;
#X connect 3 0 7 0;
#X connect 4 0 6 0;
#X connect 4 1 6 2;
#X connect 5 0 6 0;
#X connect 5 1 6 1;
#X connect 6 0 3 0;
#X connect 7 0 8 0;
#X connect 8 0 9 0;
#X connect 9 0 10 0;
#X connect 9 1 10 0;
#X restore 237 345 pd pack;
#X f 8;
#X text 98 29 The RGB color scheme can also be encoded \, for backwards compatibility \, as negative inetegers. For "R" (red) \, "G" (green) & "B" (blue) values from 0 to 255 \, the conversion formula is \; float = -(R * 65536 + G * 256 + B + 1)., f 47;
#X connect 1 0 7 2;
#X connect 3 0 7 0;
#X connect 4 0 7 1;
#X connect 6 0 0 0;
#X connect 7 0 6 0;
#X restore 74 508 pd old_way;
#X text 46 450 open subpatch below for the old way of encoding RGB values., f 20;
#X text 47 432 See also:;
#X text 61 157 Open subpatches for the conversion from RGB to hexadecimal ------------->, f 38;
#X connect 0 0 8 0;
#X connect 1 0 5 0;
#X connect 2 0 6 0;
#X connect 5 0 8 0;
#X connect 5 1 8 1;
#X connect 6 0 8 0;
#X connect 6 1 8 2;
#X connect 7 0 24 0;
#X connect 8 0 7 0;
#X connect 10 0 13 0;
#X connect 11 0 14 0;
#X connect 12 0 16 0;
#X connect 13 0 16 0;
#X connect 13 1 16 2;
#X connect 14 0 16 0;
#X connect 14 1 16 1;
#X connect 15 0 18 0;
#X connect 16 0 17 0;
#X connect 17 0 24 0;
#X connect 18 0 16 0;
#X connect 25 0 10 0;
#X connect 26 0 11 0;
#X connect 27 0 12 0;
#X coords 0 0 1 1 85 60 0;
#X restore 159 324 pd colors;
#N canvas 730 23 573 410 size 0;
#X floatatom 224 131 4 50 300 0 - - - 0;
#X obj 266 158 t b f;
#X floatatom 266 131 5 10 100 0 - - - 0;
#X msg 224 228 size \$1 \$2;
#X text 176 130 width;
#X text 310 130 height;
#X obj 224 187 pack 128 18;
#X text 171 63 The size message sets the object's size and takes width and height values in pixels., f 44;
#X floatatom 60 27 4 25 100 0 - - - 0;
#X obj 102 54 t b f;
#X floatatom 102 27 5 10 400 0 - - - 0;
#X msg 60 124 size \$1 \$2;
#X text 12 26 width;
#X text 146 26 height;
#X obj 60 83 pack 128 18;
#X obj 60 159 vsl 19 162 0 127 0 0 empty empty empty 0 -9 0 12 #dfdfdf #000000 #000000 0 1;
#X obj 227 263 hsl 162 19 0 127 0 0 empty empty empty -2 -10 0 12 #dfdfdf #000000 #000000 0 1;
#X connect 0 0 6 0;
#X connect 1 0 6 0;
#X connect 1 1 6 1;
#X connect 2 0 1 0;
#X connect 3 0 16 0;
#X connect 6 0 3 0;
#X connect 8 0 14 0;
#X connect 9 0 14 0;
#X connect 9 1 14 1;
#X connect 10 0 9 0;
#X connect 11 0 15 0;
#X connect 14 0 11 0;
#X restore 173 128 pd size;
#N canvas 774 174 551 450 label 0;
#X msg 79 283 label \$1;
#X floatatom 226 165 4 0 3 0 - - - 0;
#X obj 268 192 t b f;
#X floatatom 268 165 5 5 50 0 - - - 0;
#X msg 226 262 label_font \$1 \$2;
#X text 188 164 type;
#X text 312 163 size;
#X obj 226 92 vradio 19 1 0 3 empty empty empty 0 -8 0 10 #dfdfdf #000000 #000000 0;
#X text 247 91 DejaVu Sans Mono;
#X text 247 111 Helvetica;
#X text 247 131 Times;
#X msg 91 251 symbol empty;
#X floatatom 380 181 4 -150 200 0 - - - 0;
#X obj 422 208 t b f;
#X floatatom 422 181 5 -150 150 0 - - - 0;
#X msg 380 278 label_pos \$1 \$2;
#X text 362 180 x;
#X text 466 179 y;
#X text 375 157 label offset:;
#X msg 59 186 symbol label;
#X obj 229 372 hsl 128 18 0 127 0 1 empty empty label 135 10 0 20 #dfdfdf #000000 #000000 1700 1;
#X msg 79 214 symbol my\ label;
#X text 86 25 The 'label' message sets the label symbol \, setting it to "empty" clears it. The 'label_font' message sets font type and size and 'label_pos' sets the x/y coordinates., f 54;
#X obj 227 221 pack 0 20, f 11;
#X obj 380 237 pack 135 10;
#X connect 0 0 20 0;
#X connect 1 0 23 0;
#X connect 2 0 23 0;
#X connect 2 1 23 1;
#X connect 3 0 2 0;
#X connect 4 0 20 0;
#X connect 7 0 1 0;
#X connect 11 0 0 0;
#X connect 12 0 24 0;
#X connect 13 0 24 0;
#X connect 13 1 24 1;
#X connect 14 0 13 0;
#X connect 15 0 20 0;
#X connect 19 0 0 0;
#X connect 21 0 0 0;
#X connect 23 0 4 0;
#X connect 24 0 15 0;
#X restore 166 296 pd label;
#N canvas 890 195 433 307 init 0;
#X msg 144 164 init \$1;
#X obj 144 132 tgl 19 0 empty empty empty 17 7 0 10 #dfdfdf #000000 #000000 0 1;
#X obj 147 203 hsl 128 18 0 127 0 1 empty empty empty 0 -9 0 10 #dfdfdf #000000 #000000 1700 1;
#X text 167 132 init on/off;
#X obj 144 244 print hsl-init;
#X text 46 23 The 'init' message takes a float and sets to 'init mode' (if different than zero) or 'no init' (if equal to zero - the default value)., f 46;
#X text 46 74 If in 'init mode' \, when loading the patch \, the objects sends its holding value from when the patch was last saved., f 46;
#X connect 0 0 2 0;
#X connect 1 0 0 0;
#X connect 2 0 4 0;
#X restore 173 212 pd init;
#N canvas 522 103 817 380 send-receive 0;
#X msg 210 202 receive empty;
#X msg 241 266 send empty;
#X floatatom 61 179 5 0 0 0 - - - 0;
#X floatatom 61 299 5 0 0 0 - - - 0;
#X obj 213 314 hsl 128 18 0 127 0 1 empty empty empty 0 -9 0 10 #dfdfdf #000000 #000000 1700 1;
#X text 39 96 The 'send' and 'receive' messages take a symbol to set \, respectively \, the send and receive symbol. If you set these to "empty" \, the symbols are cleared., f 50;
#X text 39 20 The object can have a send and receive symbol \, in which cases the inlet/outlet are visually hidden (but still functional in the patch). This way \, the object can communicate to [send] and [receive] objects., f 50;
#X msg 194 177 receive \\\$0-hsl_rcv;
#X msg 232 242 send \\\$0-hsl_snd;
#X obj 61 213 s \$0-hsl_rcv;
#X obj 61 268 r \$0-hsl_snd;
#X text 439 36 Note how you need to escape dollar signs with backslashes to set something like "\$0-x". But the backslash is not needed if you set it directly via the properties window., f 50;
#X obj 541 308 r \$0-slider;
#X floatatom 541 332 5 0 0 0 - - - 0;
#X floatatom 544 196 5 0 127 0 - - - 0;
#X obj 544 222 s \$0-slider;
#X obj 521 261 hsl 128 18 0 127 0 1 \$0-slider \$0-slider empty 0 -9 0 10 #dfdfdf #000000 #000000 0 1;
#X text 439 110 Feedback protection: iemguis can have the same name for both the send and receive symbols. This works without 'stack overflow' errors because they have feedback protection. See example below., f 50;
#X connect 0 0 4 0;
#X connect 1 0 4 0;
#X connect 2 0 9 0;
#X connect 7 0 4 0;
#X connect 8 0 4 0;
#X connect 10 0 3 0;
#X connect 12 0 13 0;
#X connect 14 0 15 0;
#X restore 117 268 pd send-receive;
#N canvas 872 191 424 359 steady-on-click 0;
#X msg 113 204 steady \$1;
#X obj 113 173 tgl 19 0 empty empty empty 17 7 0 10 #dfdfdf #000000 #000000 0 1;
#X text 31 105 The 'steady' message takes a non zero value to set it to "steady on click" mode. A zero value sets it to "jump on click" mode., f 52;
#X msg 130 239 steady 1;
#X msg 141 266 steady 0;
#X text 210 266 jump on click;
#X text 199 240 steady on click (default);
#X obj 116 303 hsl 128 18 0 127 0 0 empty empty empty 0 -9 0 10 #dfdfdf #000000 #000000 0 1;
#X text 31 16 By default \, the slider is in "steady on click" mode \, where you click and drag from its current position (regardless where you click on). Alternatively \, in "jump on click" mode \, the value jumps to the position you clicked on the slider and drags from there., f 52;
#X connect 0 0 7 0;
#X connect 1 0 0 0;
#X connect 3 0 7 0;
#X connect 4 0 7 0;
#X restore 96 240 pd steady-on-click;
#N canvas 895 225 471 325 linear/log 0;
#X obj 154 208 hsl 128 18 1 1000 0 0 empty empty empty 0 -9 0 10 #dfdfdf #000000 #000000 0 1;
#X msg 151 137 lin;
#X msg 164 168 log;
#X text 182 139 linear;
#X text 198 168 logarithmic;
#X floatatom 151 245 8 0 0 0 - - - 0;
#X text 133 208 1;
#X text 288 208 1000;
#X text 56 22 The slider's behavior can be linear (default) or logarithmic and you can set this with the 'lin' or 'log' messages \, respectively. Check below the difference. In the logarithmic mode \, the range can never never touch or cross 0 (both minimum and maximum can be positive or negative)., f 48;
#X connect 0 0 5 0;
#X connect 1 0 0 0;
#X connect 2 0 0 0;
#X restore 131 184 pd linear/log;
#N canvas 893 185 398 379 range 0;
#X floatatom 169 106 4 -100 0 0 - - - 0;
#X obj 211 133 t b f;
#X floatatom 211 106 5 0 100 0 - - - 0;
#X obj 172 260 hsl 128 18 0 127 0 0 empty empty empty 0 -9 0 10 #dfdfdf #000000 #000000 0 1;
#X msg 169 204 range \$1 \$2;
#X obj 169 162 pack 0 127, f 11;
#X text 110 105 minimum;
#X text 255 104 maximum;
#X floatatom 169 301 5 0 0 0 - - - 0;
#X floatatom 97 206 5 0 0 0 - - - 0;
#X text 39 21 The 'range' message sets the object's range. Note that values sent to the GUI can be outside this range and the values are passed through., f 44;
#X connect 0 0 5 0;
#X connect 1 0 5 0;
#X connect 1 1 5 1;
#X connect 2 0 1 0;
#X connect 3 0 8 0;
#X connect 4 0 3 0;
#X connect 5 0 4 0;
#X connect 9 0 3 0;
#X restore 166 156 pd range;
#N canvas 892 162 450 312 loading-args 0;
#X text 59 127 For instance \, below \, we have \$0 used in the label field \, which gets expanded to the patch ID number. Using something like "\$1" is useful if you're using the object in an abstraction \, then you can load a value passed as an argument into a parameter., f 49;
#X obj 148 256 hsl 128 18 0 127 0 0 empty empty \$0-Label 43 -11 0 14 #dcdcdc #000000 #0400fc 0 1;
#X text 59 26 Note that all the parameters that you can set by inserting a number or symbol into a field in the properties window can also load dollar sign arguments (\$0 \, \$1 \, \$2 \, and so on). Namely \, these parameters are: width \, height \, lower and upper range \, send/receive symbols \, label \, label offset and font size., f 49;
#X restore 141 396 pd loading-args;
#X text 36 365 Loading arguments in properties:;
#X text 45 13 All the parameters from the properties window can be set via messages as well. See examples and more details on each parameter in the subpatches below:, f 39;
#N canvas 730 23 535 369 orientation 0;
#X obj 189 162 hsl 162 19 0 127 0 0 empty empty empty 0 -9 0 12 #dfdfdf #000000 #000000 0 1;
#X msg 186 126 orientation \$1;
#X obj 186 94 tgl 19 0 empty empty empty 0 -10 0 12 #dfdfdf #000000 #000000 0 1;
#X text 70 19 The 'orientation' message changes the object from vertical to horizontal and vice versa. A non zero sets to vertical and zero sets to horizontal.;
#X connect 1 0 0 0;
#X connect 2 0 1 0;
#X restore 123 98 pd orientation;
#X restore 411 306 pd properties;
#N canvas 781 223 444 403 example-discrete 0;
#X floatatom 81 206 8 0 0 0 - - - 0;
#X obj 81 351 print fixed-steps;
#X floatatom 81 318 6 0 0 0 - - - 0;
#N canvas 463 235 650 334 discrete 0;
#X obj 100 283 outlet;
#X obj 210 45 inlet;
#X obj 272 45 inlet;
#X text 387 109 The trick here is to use two sliders. The one in the front just acts as a display \, but we're in fact interacting to the one in the background., f 29;
#X text 276 21 steps;
#X text 209 21 value;
#X obj 100 251 change;
#X obj 100 214 expr int($f1 * $f2) / $f2;
#X obj 272 179 int;
#X obj 213 110 hsl 128 18 0 1 0 0 empty empty empty -2 -8 0 10 #fcfcfc #000000 #000000 0 1;
#X obj 213 110 hsl 128 18 0 1 0 0 empty empty empty -2 -8 0 10 #dcdcdc #000000 #000000 0 1;
#X msg 49 140 set \$1;
#X connect 1 0 9 0;
#X connect 2 0 8 0;
#X connect 6 0 0 0;
#X connect 6 0 11 0;
#X connect 7 0 6 0;
#X connect 8 0 7 1;
#X connect 9 0 7 0;
#X connect 11 0 10 0;
#X coords 0 -1 1 1 155 38 2 200 100;
#X restore 81 250 pd discrete;
#X floatatom 229 222 5 1 10 1 - - - 0;
#X obj 229 169 loadbang;
#X text 278 193 number of steps, f 8;
#X text 79 18 Here's an example (or a 'hack') on how to use the slider in a discrete way. This is for a range from 0 to 1 \, but you can rescale it if needed., f 34;
#X text 79 92 This example allows you to set the number of steps dynamically., f 34;
#X text 250 264 <= click and drag.;
#X text 270 283 Right click and open for more details., f 20;
#X msg 229 197 8;
#X text 274 221 (besides 0);
#X obj 84 172 hsl 128 18 0 1 0 0 empty empty empty -2 -8 0 10 #dfdfdf #000000 #000000 0 1;
#X connect 0 0 3 0;
#X connect 2 0 1 0;
#X connect 3 0 2 0;
#X connect 4 0 3 1;
#X connect 5 0 11 0;
#X connect 11 0 4 0;
#X connect 13 0 0 0;
#X restore 370 362 pd example-discrete;
#X obj 93 577 all_guis;
#N canvas 599 87 665 460 reference 0;
#X obj 8 52 cnv 5 640 5 empty empty INLET: 8 18 0 13 #202020 #000000 0;
#X text 118 203 label <symbol> - sets label symbol., f 72;
#X text 42 222 label_font <float \, float> -;
#X text 49 254 label_pos <float \, float> -;
#X text 237 253 sets label position., f 55;
#X obj 7 429 cnv 5 640 5 empty empty empty 8 18 0 13 #202020 #000000 0;
#X text 125 303 send <symbol> - sets send symbol., f 71;
#X text 97 322 receive <symbol> - sets receive symbol., f 75;
#X text 133 272 color <list> -;
#X text 237 271 first element sets background color and third sets font color (either floats or symbols in hexadecimal format).;
#X text 237 221 sets font type <0: DejaVu Sans Mono \, 1: Helvetica \, 2: Times> and font size., f 50;
#X text 90 341 pos <float \, float> - sets position in the patch canvas., f 76;
#X text 77 360 delta <float \, float> -;
#X text 237 359 changes the position by a x/y delta in pixels., f 55;
#X text 181 63 float - set and output number., f 63;
#X text 132 168 init <float> - non zero sets to init mode., f 70;
#X obj 7 388 cnv 5 640 5 empty empty OUTLET: 8 18 0 13 #202020 #000000 0;
#X obj 45 18 hsl 128 18 0 127 0 0 empty empty empty -2 -8 0 10 #fcfcfc #000000 #000000 0 1;
#X text 76 116 range <float \, float> - sets minimum and maximum range., f 78;
#X text 195 133 lin - sets mode to linear., f 61;
#X text 195 150 log - sets mode to logarithmic., f 61;
#X text 118 185 steady <float> - non zero sets to steady \, zero sets to jump on click., f 72;
#X text 181 401 float - slider value., f 63;
#X text 83 80 size <float \, float> - widht and height in pixels., f 77;
#X text 83 99 orientation <float> - non zero sets to vertical \, zero sets to horizontal., f 77;
#X text 185 17 - Sliders., f 44;
#X restore 361 15 pd reference;
#X text 452 15 <= click;
#X obj 7 49 cnv 1 525 1 empty empty empty 8 12 0 13 #000000 #000000 0;
#X obj 7 564 cnv 1 525 1 empty empty empty 8 12 0 13 #000000 #000000 0;
#X text 22 60 The slider GUI (Graphical User Interface) sends numbers via clicking and dragging. The values are evenly spread depending on the slider's range and size - use shift-click and drag for fine-tuning by a factor of a hundredth. Incoming floats set the slider's value and are passed through (even if outside the slider's range). The 'set' message only sets the slider value without output. A bang message sends the slider's value., f 70;
#X obj 32 282 vsl 18 140 0 127 0 0 empty empty empty 0 -9 0 12 #dfdfdf #000000 #000000 0 1;
#X text 171 14 - [vsl]/[hsl]: Sliders;
#X obj 32 460 print vsl;
#X text 323 576 updated for Pd version 0.53;
#X floatatom 32 434 5 0 0 0 - - - 0;
#X text 58 286 Vertical;
#X text 53 357 <--;
#X text 78 357 click & drag --> (shift-click for fine tuning). Right click for properties., f 16;
#X text 22 165 Insert it from the Put menu (named as "Vslider" or "Hslider") or its shortcuts for the Vertical and Horizontal versions respectively. Alternatively \, create it by typing "vslider" or "vsl" (for vertical) and "hslider" or "hsl" (for horizontal) into an object box. You can change the orienteation from vertical to horizontal and vice versa via a message of properties. Also right click for properties to set size \, colors \, labels and more., f 70;
#X text 255 384 Horizontal;
#X connect 0 0 4 0;
#X connect 1 0 7 0;
#X connect 2 0 7 0;
#X connect 5 0 7 0;
#X connect 6 0 1 0;
#X connect 7 0 0 0;
#X connect 23 0 27 0;
#X connect 27 0 25 0;
