#N canvas 417 91 618 555 10; #X obj 47 113 inlet; #X text 374 491 written by Alexandros Drymonitis; #X obj 47 135 sel 10 13; #X obj 205 112 inlet delimiter; #X obj 389 369 outlet symbol; #X obj 70 514 outlet list; #N canvas 64 299 639 403 \$0-set_argument 0; #X obj 24 7 loadbang; #X obj 24 245 symbol \$1; #X obj 24 269 sel tab space comma any; #X obj 84 53 inlet; #X obj 372 46 symbol \$2; #X obj 24 29 t b b; #X obj 298 204 list append; #X msg 372 91 9; #X msg 415 91 32; #X obj 372 69 sel tab space comma; #X msg 458 91 44; #X msg 24 301 9; #X msg 63 301 32; #X msg 103 301 44; #X msg 142 301 9 32 44; #X msg 502 91 0; #X obj 250 120 t b s; #X obj 193 98 route bang; #X obj 193 120 t b b; #X text 189 138 if we provide one symbol only \, clear [list append] first; #X obj 298 273 outlet arg_list; #X obj 379 248 outlet num_args; #N canvas 675 248 516 378 drip_list 0; #X obj 69 60 until; #X obj 69 82 list; #X obj 69 104 list split 1; #X obj 69 14 inlet; #X obj 69 126 sel 0; #X obj 218 121 t b b; #X obj 101 149 t b f; #X obj 101 193 f; #X obj 131 193 + 1; #X obj 101 215 t f f; #X obj 218 212 f; #X obj 101 237 pack; #X obj 69 36 t b l b; #X msg 119 171 1; #X text 59 299 force a zero as the second argument if only one symbol is given via argument \, and exclude it from the list; #X obj 101 259 outlet arg_list; #X obj 218 234 outlet num_args; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 2 0 4 0; #X connect 2 1 1 1; #X connect 2 2 5 0; #X connect 3 0 12 0; #X connect 4 1 6 0; #X connect 5 0 10 0; #X connect 5 1 0 1; #X connect 6 0 7 0; #X connect 6 1 11 1; #X connect 7 0 8 0; #X connect 7 0 9 0; #X connect 8 0 7 1; #X connect 9 0 11 0; #X connect 9 1 10 1; #X connect 10 0 16 0; #X connect 11 0 15 0; #X connect 12 0 0 0; #X connect 12 1 1 1; #X connect 12 2 13 0; #X connect 13 0 7 1; #X restore 298 227 pd drip_list; #N canvas 444 92 736 575 split_symbols 0; #X obj 34 24 inlet; #X obj 126 108 until; #X obj 126 130 list; #X obj 126 152 list split 1; #X obj 126 214 sel 32; #X obj 251 231 list prepend; #X obj 251 253 t l l; #X obj 126 236 t b b; #X obj 230 276 list; #X obj 230 298 list tosymbol; #X obj 34 47 list fromsymbol; #X obj 230 371 f; #X obj 258 371 + 1; #X msg 245 350 0; #X obj 126 86 t b l b b; #X obj 230 427 pack f s; #X obj 230 326 t b s; #X obj 230 521 outlet; #X obj 312 505 outlet; #X obj 230 449 route 0 1; #X obj 230 499 symbol; #X obj 260 472 symbol; #X obj 207 173 t b b b; #X obj 312 472 spigot; #X obj 351 450 == 0; #X obj 230 393 t f f; #X obj 34 69 route bang; #X msg 34 91 97 110 121; #X text 153 46 if we receive an empty symbol \, we'll force the list of the symbol "any"; #X text 173 211 we use space to split the two symbols; #X text 340 232 every time we output one symbol \, clear this list ; #X text 359 472 if we provide one symbol only \, send a bang out this outet; #X text 263 151 if only one symbol is received (hence \, no space) \, bang the right outlet of this subpatch explicitly \, so the symbol can pass; #X connect 0 0 10 0; #X connect 1 0 2 0; #X connect 2 0 3 0; #X connect 3 0 4 0; #X connect 3 1 2 1; #X connect 3 2 22 0; #X connect 4 0 7 0; #X connect 4 1 5 0; #X connect 5 0 6 0; #X connect 6 0 8 1; #X connect 6 1 5 1; #X connect 7 0 8 0; #X connect 7 1 5 1; #X connect 8 0 9 0; #X connect 9 0 16 0; #X connect 10 0 26 0; #X connect 11 0 12 0; #X connect 11 0 25 0; #X connect 12 0 11 1; #X connect 13 0 11 1; #X connect 14 0 1 0; #X connect 14 1 2 1; #X connect 14 2 13 0; #X connect 14 3 5 1; #X connect 15 0 19 0; #X connect 16 0 11 0; #X connect 16 1 15 1; #X connect 19 0 20 0; #X connect 19 1 21 0; #X connect 20 0 17 0; #X connect 21 0 18 0; #X connect 22 0 23 0; #X connect 22 1 8 0; #X connect 22 2 1 1; #X connect 23 0 18 0; #X connect 24 0 23 1; #X connect 25 0 15 0; #X connect 25 1 24 0; #X connect 26 0 27 0; #X connect 26 1 14 0; #X connect 27 0 14 0; #X restore 84 76 pd split_symbols; #X connect 0 0 5 0; #X connect 1 0 2 0; #X connect 2 0 11 0; #X connect 2 1 12 0; #X connect 2 2 13 0; #X connect 2 3 14 0; #X connect 2 4 14 0; #X connect 3 0 23 0; #X connect 4 0 9 0; #X connect 5 0 1 0; #X connect 5 1 4 0; #X connect 6 0 22 0; #X connect 7 0 6 1; #X connect 8 0 6 1; #X connect 9 0 7 0; #X connect 9 1 8 0; #X connect 9 2 10 0; #X connect 9 3 15 0; #X connect 10 0 6 1; #X connect 11 0 6 0; #X connect 12 0 6 0; #X connect 13 0 6 0; #X connect 14 0 6 0; #X connect 15 0 6 1; #X connect 16 0 1 0; #X connect 16 1 4 0; #X connect 17 0 18 0; #X connect 17 1 16 0; #X connect 18 0 1 0; #X connect 18 1 6 1; #X connect 22 0 20 0; #X connect 22 1 21 0; #X connect 23 0 1 1; #X connect 23 1 17 0; #X restore 205 134 pd \$0-set_argument; #X text 40 20 to be used with [comport] for utilising Arduinos' Serial.print() and Serial.println() functions; #X obj 102 446 list; #N canvas 293 276 844 259 delimiter 0; #X obj 38 176 outlet bang; #X obj 38 32 inlet; #X obj 38 56 sel; #X obj 56 79 sel; #X obj 74 101 sel; #X obj 91 39 route 1 2 3; #X obj 305 34 swap 3; #X obj 305 56 -; #X obj 305 78 t f b; #X obj 305 100 until; #X obj 305 144 f; #X obj 335 144 - 1; #X msg 323 122 3; #X obj 305 166 pack f 256; #X text 361 61 set 256 to [sel]s that are not used (if we provide one or two arguments \, for example) \, cause this number will never go through [comport] (it's 8-bits plus 1); #X obj 129 118 outlet through; #X obj 91 17 inlet arg_list; #X obj 305 12 inlet num_args; #X connect 1 0 2 0; #X connect 2 0 0 0; #X connect 2 1 3 0; #X connect 3 0 0 0; #X connect 3 1 4 0; #X connect 4 0 0 0; #X connect 4 1 15 0; #X connect 5 0 2 1; #X connect 5 1 3 1; #X connect 5 2 4 1; #X connect 6 0 7 0; #X connect 6 1 7 1; #X connect 7 0 8 0; #X connect 8 0 9 0; #X connect 8 1 12 0; #X connect 9 0 10 0; #X connect 10 0 11 0; #X connect 10 0 13 0; #X connect 11 0 10 1; #X connect 12 0 10 1; #X connect 13 0 5 0; #X connect 16 0 5 0; #X connect 17 0 6 0; #X restore 165 159 pd delimiter; #N canvas 372 82 841 654 \$0-assemble_float 0; #X obj 103 366 t f b; #X obj 103 457 +; #X obj 135 393 f; #X obj 135 440 * 10; #X msg 153 233 0; #X obj 103 479 t f f; #X obj 21 496 f; #X obj 103 343 - 48; #X obj 21 194 inlet get; #X obj 201 63 inlet val; #X obj 21 584 outlet; #N canvas 155 167 262 222 bang_once 0; #X obj 64 91 inlet; #X obj 64 113 spigot; #X obj 64 135 t b b; #X msg 117 96 0; #X obj 64 157 outlet; #X obj 103 45 inlet reset; #X msg 103 67 1; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 2 0 4 0; #X connect 2 1 3 0; #X connect 3 0 1 1; #X connect 5 0 6 0; #X connect 6 0 1 1; #X restore 300 229 pd bang_once; #X msg 436 234 0; #X msg 300 299 1; #X obj 21 338 spigot; #X obj 21 216 t b b; #N canvas 386 453 292 235 set_decimal_place 0; #X obj 36 26 inlet; #X obj 66 104 + 1; #X obj 36 126 swap 10; #X obj 36 148 pow; #X obj 36 193 outlet; #X obj 36 104 f; #X obj 36 71 spigot; #X obj 122 32 inlet; #X obj 122 54 t f f; #X obj 75 46 inlet; #X obj 36 170 pow -1; #X connect 0 0 6 0; #X connect 1 0 5 1; #X connect 2 0 3 0; #X connect 2 1 3 1; #X connect 3 0 10 0; #X connect 5 0 1 0; #X connect 5 0 2 0; #X connect 6 0 5 0; #X connect 7 0 8 0; #X connect 8 0 6 1; #X connect 8 1 5 0; #X connect 9 0 6 1; #X connect 10 0 4 0; #X restore 277 372 pd set_decimal_place; #X obj 254 201 t f b b; #X msg 201 401 1; #X msg 160 418 10; #X obj 201 423 t f f; #X obj 300 321 t f f; #X obj 201 115 moses 48; #X obj 254 137 moses 58; #X obj 436 256 t f f; #X obj 291 51 r \$0-symbol; #X msg 291 73 0; #X obj 356 282 s \$0-digits; #X text 426 284 if digits start coming in \, close symbol's [spigot] ; #X text 326 74 if symbols start coming in \, close [spigot] so that the symbol can also contain digits; #X obj 483 251 t f f; #X msg 483 229 1; #X obj 396 190 r \$0-delimit; #X obj 323 480 f; #X obj 341 457 r \$0-hyphen; #X obj 300 265 t b b b; #X obj 201 162 sel 46; #X obj 323 502 sel 45; #X msg 323 544 -1; #X obj 396 212 t b b b b; #X obj 201 90 spigot 1; #X obj 21 561 * 1; #X obj 103 389 * 1; #X connect 0 0 42 0; #X connect 0 1 2 0; #X connect 1 0 5 0; #X connect 2 0 3 0; #X connect 3 0 1 1; #X connect 4 0 2 1; #X connect 5 0 6 1; #X connect 5 1 2 1; #X connect 6 0 41 0; #X connect 7 0 0 0; #X connect 8 0 15 0; #X connect 9 0 40 0; #X connect 11 0 35 0; #X connect 12 0 24 0; #X connect 13 0 21 0; #X connect 14 0 6 0; #X connect 15 0 14 0; #X connect 15 1 4 0; #X connect 16 0 42 1; #X connect 17 0 7 0; #X connect 17 1 16 0; #X connect 17 2 11 0; #X connect 18 0 20 0; #X connect 19 0 3 1; #X connect 20 0 3 1; #X connect 20 1 16 1; #X connect 21 0 14 1; #X connect 21 1 42 1; #X connect 22 0 36 0; #X connect 22 1 23 0; #X connect 23 0 17 0; #X connect 24 0 14 1; #X connect 24 1 16 2; #X connect 25 0 26 0; #X connect 26 0 40 1; #X connect 30 0 40 1; #X connect 30 1 33 1; #X connect 31 0 30 0; #X connect 32 0 39 0; #X connect 33 0 37 0; #X connect 34 0 33 1; #X connect 35 0 13 0; #X connect 35 1 33 0; #X connect 35 2 27 0; #X connect 36 0 18 0; #X connect 37 0 38 0; #X connect 37 1 41 1; #X connect 38 0 41 1; #X connect 39 0 11 1; #X connect 39 1 19 0; #X connect 39 2 12 0; #X connect 39 3 31 0; #X connect 40 0 22 0; #X connect 41 0 10 0; #X connect 42 0 1 0; #X restore 205 355 pd \$0-assemble_float; #N canvas 265 108 854 599 \$0-assemble_strings 0; #X obj 231 116 inlet; #X obj 131 412 list tosymbol; #X obj 231 313 t l l; #X obj 231 291 list prepend; #X obj 131 146 inlet bang; #X obj 163 520 outlet; #X text 28 13 upper and lower case letters \, plus underscore and hyphen symbols go through. if some delimiters are ommited \, they will go through too; #X obj 131 330 list; #X obj 23 323 inlet counter; #X obj 23 429 pack f s; #X obj 23 520 outlet; #X obj 23 451 route 1 0; #X obj 163 493 symbol; #N canvas 155 167 262 222 bang_once 0; #X obj 64 91 inlet; #X obj 64 113 spigot; #X obj 64 135 t b b; #X msg 117 96 0; #X obj 64 157 outlet; #X obj 103 45 inlet reset; #X msg 103 67 1; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 2 0 4 0; #X connect 2 1 3 0; #X connect 3 0 1 1; #X connect 5 0 6 0; #X connect 6 0 1 1; #X restore 434 282 pd bang_once; #X msg 558 309 0; #X obj 90 520 outlet; #X obj 231 169 moses 48; #X obj 304 186 moses 58; #X obj 299 77 r \$0-digits; #X msg 299 99 0; #X text 328 99 if numbers start coming in \, close [spigot]; #X obj 434 391 s \$0-symbol; #X text 433 412 if symbols start coming in \, close number's [spigot] ; #X obj 535 265 t b b b; #X obj 299 121 t f f; #X msg 600 282 1; #X obj 600 364 t f f; #X obj 535 243 r \$0-delimit; #X obj 336 326 f; #X obj 354 303 r \$0-hyphen; #X obj 336 348 sel 0; #X obj 231 265 t f b b; #X obj 304 247 t f b; #X obj 131 168 t b b; #X obj 23 479 route bang; #X obj 231 138 spigot 1; #X obj 23 381 spigot 1; #X connect 0 0 35 0; #X connect 1 0 9 1; #X connect 2 0 7 1; #X connect 2 1 3 1; #X connect 3 0 2 0; #X connect 4 0 33 0; #X connect 7 0 1 0; #X connect 8 0 36 0; #X connect 9 0 11 0; #X connect 11 0 34 0; #X connect 11 1 12 0; #X connect 12 0 5 0; #X connect 13 0 21 0; #X connect 14 0 28 1; #X connect 16 0 31 0; #X connect 16 1 17 0; #X connect 17 0 32 0; #X connect 17 1 31 0; #X connect 18 0 19 0; #X connect 19 0 24 0; #X connect 23 0 13 1; #X connect 23 1 14 0; #X connect 23 2 25 0; #X connect 24 0 35 1; #X connect 24 1 36 1; #X connect 25 0 26 0; #X connect 26 0 36 1; #X connect 26 1 35 1; #X connect 27 0 23 0; #X connect 28 0 30 0; #X connect 29 0 28 1; #X connect 30 1 3 0; #X connect 31 0 3 0; #X connect 31 1 28 0; #X connect 31 2 13 0; #X connect 32 0 3 0; #X connect 32 1 28 0; #X connect 33 0 7 0; #X connect 33 1 3 1; #X connect 34 0 10 0; #X connect 34 1 15 0; #X connect 35 0 16 0; #X connect 36 0 9 0; #X restore 185 329 pd \$0-assemble_strings; #N canvas 87 82 481 287 \$0-count 0; #X obj 45 145 f; #X obj 75 145 + 1; #X msg 63 122 0; #X obj 45 169 > 0; #X obj 45 74 inlet; #X obj 45 196 outlet; #X obj 63 99 r \$0-done; #X text 49 23 this is used in case a delimiter is followed by a symbol \, so the two (or more) symbols can be diffused properly; #X connect 0 0 1 0; #X connect 0 0 3 0; #X connect 1 0 0 1; #X connect 2 0 0 1; #X connect 3 0 5 0; #X connect 4 0 0 0; #X connect 6 0 2 0; #X restore 185 302 pd \$0-count; #X obj 165 252 t b b b b; #X obj 165 275 s \$0-delimit; #X obj 47 259 s \$0-done; #X obj 297 176 sel 45; #X msg 297 198 45; #X obj 297 220 s \$0-hyphen; #X obj 336 276 t f f; #X obj 47 235 t b b b; #X obj 357 346 t b s; #X obj 102 468 route bang; #X obj 205 407 list prepend; #X obj 205 429 t l l; #X obj 286 381 r \$0-done; #X obj 127 422 r \$0-done; #X obj 70 303 t b b; #N canvas 1 82 353 268 got_bang 0; #X obj 89 97 inlet; #X obj 89 119 spigot; #X obj 89 141 outlet; #X obj 204 80 inlet; #X msg 204 102 1; #X obj 128 49 r \$0-done; #X msg 128 71 0; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 3 0 4 0; #X connect 4 0 1 1; #X connect 5 0 6 0; #X connect 6 0 1 1; #X restore 70 346 pd got_bang; #X text 38 61 space \, comma \, and tab function as delimiters by default \, which can be set explicitly via arguments; #X connect 0 0 2 0; #X connect 2 0 20 0; #X connect 2 2 9 0; #X connect 3 0 6 0; #X connect 6 0 9 1; #X connect 6 1 9 2; #X connect 8 0 22 0; #X connect 9 0 13 0; #X connect 9 1 16 0; #X connect 10 0 23 0; #X connect 11 0 28 1; #X connect 11 1 23 0; #X connect 11 2 21 0; #X connect 12 0 11 0; #X connect 13 0 14 0; #X connect 13 1 12 0; #X connect 13 2 10 0; #X connect 13 3 11 1; #X connect 16 0 17 0; #X connect 16 1 19 0; #X connect 17 0 18 0; #X connect 19 0 11 2; #X connect 19 1 10 1; #X connect 20 0 15 0; #X connect 20 1 27 0; #X connect 20 2 13 0; #X connect 21 0 23 1; #X connect 21 1 4 0; #X connect 22 1 5 0; #X connect 23 0 24 0; #X connect 24 0 8 1; #X connect 24 1 23 1; #X connect 25 0 23 1; #X connect 26 0 8 1; #X connect 27 0 28 0; #X connect 27 1 8 0; #X connect 28 0 5 0;