diff --git a/scripts/external-tests.pd b/scripts/external-tests.pd new file mode 100644 index 0000000000000000000000000000000000000000..db9d2d323576b2cd2e82c81477bc34e5934e4834 --- /dev/null +++ b/scripts/external-tests.pd @@ -0,0 +1,777 @@ +#N canvas 154 25 751 635 12; +#X msg 513 70 bang; +#N canvas 273 114 533 496 get_extensions 0; +#X obj 17 44 inlet; +#X obj 17 70 bang; +#X msg 17 105 platform; +#X obj 17 131 pdinfo; +#X obj 49 289 pdinfo; +#X msg 49 261 arch; +#X msg 17 205 .pd_linux; +#X obj 17 156 select linux freebsd darwin win32; +#X msg 355 205 .so; +#X obj 399 205 print warning: unknown platform; +#X obj 17 231 t a b; +#X obj 49 315 sel ia32 x64 arm; +#X msg 49 352 .l_i386; +#X msg 119 352 .l_ia64; +#X msg 195 352 .l_arm; +#X obj 17 397 list; +#X msg 106 205 .pd_darwin .d_fat; +#X obj 299 397 list; +#X msg 246 205 .dll .m_i386; +#X obj 17 460 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 3 0 7 0; +#X connect 4 0 11 0; +#X connect 5 0 4 0; +#X connect 6 0 10 0; +#X connect 7 0 6 0; +#X connect 7 1 6 0; +#X connect 7 2 16 0; +#X connect 7 3 18 0; +#X connect 7 4 8 0; +#X connect 7 4 9 0; +#X connect 8 0 17 0; +#X connect 10 0 15 0; +#X connect 10 1 5 0; +#X connect 11 0 12 0; +#X connect 11 1 13 0; +#X connect 11 2 14 0; +#X connect 12 0 15 1; +#X connect 13 0 15 1; +#X connect 14 0 15 1; +#X connect 15 0 19 0; +#X connect 16 0 17 0; +#X connect 17 0 19 0; +#X connect 18 0 17 0; +#X restore 97 345 pd get_extensions; +#N canvas 453 108 450 323 get_libdir 0; +#X obj 119 58 inlet; +#X obj 119 135 pdinfo; +#X obj 119 84 b; +#X msg 119 110 libdir; +#X obj 119 161 outlet; +#X connect 0 0 2 0; +#X connect 1 0 4 0; +#X connect 2 0 3 0; +#X connect 3 0 1 0; +#X restore 513 95 pd get_libdir; +#N canvas 107 123 756 233 load_hcs/folder_list 0; +#X obj 306 40 inlet; +#X obj 306 133 s pd-\$0-hcs/folder_list; +#N canvas 0 0 450 300 \$0-hcs/folder_list 0; +#X obj 5 5 receive 1003-fl-in; +#X obj 5 30 /usr/lib/pd-l2ork/extra/hcs/folder_list; +#X obj 5 55 send 1003-fl-out; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X restore 37 97 pd \$0-hcs/folder_list; +#X obj 37 40 inlet; +#X obj 37 65 s \$0-fl-in; +#X obj 37 128 r \$0-fl-out; +#X obj 37 154 outlet; +#X msg 306 77 clear \, obj 5 5 receive \$0-fl-in \, obj 5 30 \$1/extra/hcs/folder_list +\, obj 5 55 send \$0-fl-out \, connect 0 0 1 0 \, connect 1 0 2 0; +#X connect 0 0 7 0; +#X connect 3 0 4 0; +#X connect 5 0 6 0; +#X connect 7 0 1 0; +#X restore 97 569 pd load_hcs/folder_list; +#N canvas 0 0 450 300 add_.pd 0; +#X obj 66 29 inlet; +#X obj 66 55 list append .pd; +#X obj 66 80 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X restore 97 371 pd add_.pd; +#X obj 97 425 t a a; +#X obj 97 487 pack s s s; +#X obj 37 19 loadbang; +#X obj 130 453 s \$0-ext; +#X obj 332 596 r \$0-reset; +#X obj 150 317 s \$0-reset; +#X msg 150 285 bang; +#N canvas 0 0 450 300 remove_ext 0; +#X obj 28 30 inlet; +#X obj 78 150 r \$0-ext; +#X obj 78 205 list length; +#X obj 28 55 list fromsymbol; +#X obj 28 260 list split; +#X obj 28 80 t a a; +#X obj 60 115 list length; +#X obj 60 230 -; +#X obj 28 285 list tosymbol; +#X obj 28 310 outlet; +#X obj 78 175 list fromsymbol; +#X connect 0 0 3 0; +#X connect 1 0 10 0; +#X connect 2 0 7 1; +#X connect 3 0 5 0; +#X connect 4 0 8 0; +#X connect 5 0 4 0; +#X connect 5 1 6 0; +#X connect 6 0 7 0; +#X connect 7 0 4 1; +#X connect 8 0 9 0; +#X connect 10 0 2 0; +#X restore 97 624 pd remove_ext; +#N canvas 314 37 450 472 remove_help 0; +#X obj 40 14 inlet; +#X obj 126 18 r \$0-ext; +#X obj 126 43 sel .pd; +#X msg 126 98 1; +#X msg 169 98 0; +#X obj 169 71 b; +#X obj 40 136 list prepend; +#X obj 40 161 route 0 1; +#X obj 122 251 list fromsymbol; +#X obj 122 276 t a a; +#X obj 154 304 list length; +#X obj 154 329 - 8; +#X obj 122 363 list split; +#X obj 155 394 list tosymbol; +#X obj 155 419 sel -help.pd; +#X msg 155 444 0; +#X obj 116 485 spigot; +#X obj 90 189 t a a b; +#X msg 353 448 1; +#X obj 40 526 symbol; +#X obj 40 551 outlet; +#X obj 117 218 symbol; +#X connect 0 0 6 0; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 1 5 0; +#X connect 3 0 6 1; +#X connect 4 0 6 1; +#X connect 5 0 4 0; +#X connect 6 0 7 0; +#X connect 7 0 19 0; +#X connect 7 1 17 0; +#X connect 8 0 9 0; +#X connect 9 0 12 0; +#X connect 9 1 10 0; +#X connect 10 0 11 0; +#X connect 11 0 12 1; +#X connect 12 1 13 0; +#X connect 13 0 14 0; +#X connect 14 0 15 0; +#X connect 15 0 16 1; +#X connect 16 0 19 0; +#X connect 17 0 16 0; +#X connect 17 1 21 0; +#X connect 17 2 18 0; +#X connect 18 0 16 1; +#X connect 19 0 20 0; +#X connect 21 0 8 0; +#X restore 97 594 pd remove_help; +#X obj 513 120 s \$0-libdir; +#X text 293 407 \$0-ext - library extension (platform specific); +#X text 293 427 \$0-libdir - directory containing doc and extra; +#X text 293 447 \$0-reset - reset state for each libdir; +#X obj 197 453 r \$0-libdir; +#X obj 77 285 t a b a b; +#N canvas 443 86 450 557 get-creator-names 0; +#X obj 41 22 inlet; +#X obj 51 316 outlet; +#X obj 141 54 r \$0-last-objectmaker-methodspace-length; +#X obj 100 167 -; +#X obj 41 107 classinfo objectmaker; +#X msg 41 82 methods; +#X obj 51 208 until; +#X obj 51 249 f; +#X obj 94 249 + 1; +#X obj 51 284 classinfo objectmaker; +#X obj 151 181 t a; +#X obj 41 47 bang; +#X connect 0 0 11 0; +#X connect 2 0 3 1; +#X connect 2 0 10 0; +#X connect 3 0 6 0; +#X connect 4 0 3 0; +#X connect 5 0 4 0; +#X connect 6 0 7 0; +#X connect 7 0 8 0; +#X connect 7 0 9 0; +#X connect 8 0 7 1; +#X connect 9 0 1 0; +#X connect 10 0 7 1; +#X connect 11 0 5 0; +#X restore 77 686 pd get-creator-names; +#N canvas 227 231 450 346 test-object 0; +#X obj 86 36 inlet; +#X text 132 34 creator_name argtype1 argtype2 etc.; +#N canvas 150 78 649 452 right_outlet_for_aliases 0; +#X obj 70 25 inlet; +#X obj 70 50 t a a; +#X obj 102 78 list split 1; +#X obj 102 103 t b a; +#X msg 102 128 0; +#X obj 102 183 b; +#X msg 102 208 0; +#X msg 162 208 1; +#X obj 70 248 list prepend; +#X obj 70 273 route 0 1; +#X obj 70 358 outlet; +#X obj 121 358 outlet; +#X obj 102 158 classinfo; +#X text 196 23 Check if we're a lone creator name with no corresponding +class name. If so \, we are an alias and should skip the next class-based +test(s) by going to the right outlet.; +#X obj 70 298 list; +#X obj 107 298 list; +#X connect 0 0 1 0; +#X connect 1 0 8 0; +#X connect 1 1 2 0; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 3 1 12 1; +#X connect 4 0 12 0; +#X connect 5 0 6 0; +#X connect 6 0 8 1; +#X connect 7 0 8 1; +#X connect 8 0 9 0; +#X connect 9 0 14 0; +#X connect 9 1 15 0; +#X connect 12 0 5 0; +#X connect 12 1 7 0; +#X connect 14 0 10 0; +#X connect 15 0 11 0; +#X restore 86 61 pd right_outlet_for_aliases; +#N canvas 181 94 522 576 namespace_collisions 0; +#X obj 40 15 inlet; +#X obj 60 98 list split 1; +#X obj 60 123 t b a; +#X msg 60 148 externdir; +#X obj 310 63 r \$0-current-libdir-name; +#X obj 219 63 r \$0-libdir; +#X obj 180 108 symbol; +#X obj 246 107 symbol; +#X msg 180 168 symbol \$1/extra/\$2; +#X obj 60 174 classinfo; +#X obj 60 232 select; +#X obj 40 40 t a a b b; +#X msg 60 257 0; +#X obj 98 256 b; +#X msg 98 281 1; +#X obj 40 321 list prepend; +#X obj 40 346 route 0 1; +#X obj 40 521 outlet; +#X obj 70 457 s \$0-fail; +#X obj 70 403 pack s s s; +#X obj 70 377 list split 1; +#X obj 60 199 trigger anything anything; +#X msg 70 431 \$1: externdir mismatch: expected \$2 but got \$3; +#X obj 180 143 pack s s; +#X obj 40 489 list; +#X connect 0 0 11 0; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 1 9 1; +#X connect 3 0 9 0; +#X connect 4 0 7 1; +#X connect 5 0 6 1; +#X connect 6 0 23 0; +#X connect 7 0 23 1; +#X connect 8 0 10 1; +#X connect 8 0 19 1; +#X connect 9 0 21 0; +#X connect 10 0 12 0; +#X connect 10 1 13 0; +#X connect 11 0 15 0; +#X connect 11 1 1 0; +#X connect 11 2 6 0; +#X connect 11 3 7 0; +#X connect 12 0 15 1; +#X connect 13 0 14 0; +#X connect 14 0 15 1; +#X connect 15 0 16 0; +#X connect 16 0 24 0; +#X connect 16 1 20 0; +#X connect 19 0 22 0; +#X connect 20 0 19 0; +#X connect 21 0 10 0; +#X connect 21 1 19 2; +#X connect 22 0 18 0; +#X connect 23 0 8 0; +#X connect 24 0 17 0; +#X restore 86 101 pd namespace_collisions; +#N canvas 104 25 740 671 load_the_object 0; +#X obj 22 13 inlet; +#X obj 86 115 list split 1; +#N canvas 238 121 613 490 set_args 0; +#X obj 36 20 inlet; +#N canvas 245 192 382 392 drip 0; +#X obj 67 30 inlet; +#X obj 102 83 list length; +#X obj 102 108 until; +#X obj 102 163 f; +#X obj 102 188 + 1; +#X msg 274 263 set; +#X msg 66 307 \$1 \,; +#X obj 66 263 list; +#X msg 102 263 adddollar \$1 \, addcomma; +#X msg 150 126 0; +#X obj 66 332 symbol; +#X obj 66 357 outlet; +#X obj 67 55 trigger anything anything bang; +#X obj 144 224 b; +#X connect 0 0 12 0; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 4 0 3 1; +#X connect 4 0 8 0; +#X connect 5 0 6 0; +#X connect 6 0 10 0; +#X connect 7 0 6 0; +#X connect 8 0 6 0; +#X connect 9 0 3 1; +#X connect 10 0 11 0; +#X connect 12 0 7 0; +#X connect 12 1 1 0; +#X connect 12 2 5 0; +#X connect 12 2 9 0; +#X connect 12 2 13 0; +#X connect 13 0 7 1; +#X restore 139 78 pd drip; +#X msg 239 157 add2 \$0-test-array; +#X msg 139 158 add2 1e+06; +#X msg 518 157 set; +#X msg 139 203; +#X obj 36 45 trigger bang anything anything; +#X obj 139 248 outlet; +#X text 359 226 With A_GIMME we have no way to figure out the proper +args \, so we just stay blank here and hope the external author made +sane defaults that at least allow the object to create with no arguments +given., f 22; +#X obj 139 103 select A_FLOAT A_SYMBOL A_GIMME A_DEFSYM A_DEFFLOAT +; +#X text 358 400 Same with A_DEFSYM and A_DEFFLOAT; +#X text 31 307 Unforunately some externals don't have sane defaults-- +they require arguments just to instantiate. Here we fill in some dummy +arguments in order to continue the tests, f 45; +#X msg 388 157 add2; +#X obj 518 104 t b b; +#X obj 550 248 outlet; +#X connect 0 0 6 0; +#X connect 1 0 9 0; +#X connect 2 0 5 0; +#X connect 3 0 5 0; +#X connect 4 0 5 0; +#X connect 5 0 7 0; +#X connect 6 0 5 0; +#X connect 6 1 1 0; +#X connect 6 2 13 0; +#X connect 9 0 3 0; +#X connect 9 1 2 0; +#X connect 9 2 12 0; +#X connect 9 3 12 0; +#X connect 9 4 12 0; +#X connect 12 0 5 0; +#X connect 13 0 4 0; +#X connect 13 1 14 0; +#X restore 193 168 pd set_args; +#X obj 126 140 route bang; +#X obj 86 213 list; +#X obj 86 351 s pd-\$0-load_the_object_subpatch; +#X obj 86 238 t a b; +#X msg 118 264 clear; +#X text 216 107 Try to instantiate the object and connect up the primary +inlet and outlet; +#X msg 54 400 find \$1; +#X msg 86 291 obj 5 30 \$@ \, obj 5 100 r \$0-load_canvasinfo_input +\, obj 5 130 canvasinfo \, obj 5 160 s \$0-load_canvasinfo_output \, +connect 1 0 2 0 \, connect 2 0 3 0; +#X obj 54 425 s \$0-load_canvasinfo_input; +#X obj 54 450 r \$0-load_canvasinfo_output; +#X obj 54 475 list split 1; +#X text 261 399 <-- find the object by box text-- it was the first +one on the canvas to get created so it will get returned first if there +are any duplicate matches; +#X text 149 475 <-- filter out any duplicate matches from our "helper" +object chain; +#X obj 54 500 t b a; +#X msg 54 525 class; +#X obj 54 550 objectinfo; +#X obj 54 575 select text; +#X text 140 574 <-- the "text" class is an internal class that essentially +represents an object box that currently holds no object. So if we query +our object and get "text" here \, it means Pd couldn't load the object. +; +#X obj 54 376 trigger anything anything; +#N canvas 365 98 450 323 fail 0; +#X obj 41 34 inlet; +#X obj 112 34 inlet; +#X text 153 34 creator name; +#X obj 41 98 symbol; +#X obj 41 175 s \$0-fail; +#X obj 112 59 list split 1; +#X msg 41 150 couldn't create object '\$1'; +#X connect 0 0 3 0; +#X connect 1 0 5 0; +#X connect 3 0 6 0; +#X connect 5 0 3 1; +#X connect 6 0 4 0; +#X restore 54 600 pd fail; +#X obj 22 625 outlet; +#N canvas 436 87 569 401 plain_then_with_libdir_prefix 0; +#X obj 35 26 inlet; +#X text 128 26 try both the lone creator name and the libdir prefix: +e.g. \, foo and libdir/foo; +#X text 128 156 we could probably add an absolute path here as well +if we want to test that \, too.; +#X text 128 66 This extra test was added because it appears miXed/cyclone +is doing strange things with the libdir prefixes. For example-- maxtrix~ +requires two float args while cyclone/matrix~ just segfaults. There +may be other oddities in external libs with regard to libdir prefixes. +; +#X obj 88 246 r \$0-current-libdir-name; +#X obj 35 281 pack s s; +#X obj 35 391 outlet; +#X msg 35 306 symbol \$1 \, symbol \$2/\$1; +#X obj 35 201 list split 1; +#X obj 330 246 t a; +#X obj 35 358 list append; +#X connect 0 0 8 0; +#X connect 4 0 5 1; +#X connect 5 0 7 0; +#X connect 7 0 10 0; +#X connect 8 0 5 0; +#X connect 8 1 9 0; +#X connect 9 0 10 1; +#X connect 10 0 6 0; +#X restore 128 57 pd plain_then_with_libdir_prefix; +#X obj 22 38 t a a; +#X obj 54 89 t a a; +#X connect 0 0 25 0; +#X connect 1 0 4 0; +#X connect 1 1 3 0; +#X connect 2 0 4 1; +#X connect 2 1 4 1; +#X connect 3 0 4 1; +#X connect 3 1 2 0; +#X connect 4 0 6 0; +#X connect 6 0 10 0; +#X connect 6 1 7 0; +#X connect 7 0 5 0; +#X connect 9 0 11 0; +#X connect 10 0 5 0; +#X connect 12 0 13 0; +#X connect 13 0 16 0; +#X connect 16 0 17 0; +#X connect 16 1 18 1; +#X connect 17 0 18 0; +#X connect 18 0 19 0; +#X connect 19 0 22 0; +#X connect 21 0 9 0; +#X connect 21 1 22 1; +#X connect 25 0 23 0; +#X connect 25 1 24 0; +#X connect 25 1 26 0; +#X connect 26 0 21 0; +#X connect 26 1 1 0; +#X restore 86 156 pd load_the_object; +#X obj 272 101 t a; +#N canvas 268 243 450 346 \$0-load_the_object_subpatch 0; +#X restore 231 157 pd \$0-load_the_object_subpatch; +#X msg 86 241 clear; +#X obj 86 266 s pd-\$0-load_the_object_subpatch; +#X connect 0 0 2 0; +#X connect 2 0 3 0; +#X connect 2 1 5 0; +#X connect 3 0 4 0; +#X connect 4 0 7 0; +#X connect 5 0 4 0; +#X connect 7 0 8 0; +#X restore 77 716 pd test-object; +#X obj 249 340 classinfo objectmaker; +#X msg 249 315 methods; +#X text 293 467 \$0-last-objectmaker-methodspace-length; +#X obj 249 370 s \$0-last-objectmaker-methodspace-length; +#X text 293 487 \$0-current-libdir-name; +#X text 293 507 \$0-fail; +#N canvas 245 192 382 392 drip 0; +#X obj 67 30 inlet; +#X obj 102 83 list length; +#X obj 102 108 until; +#X obj 102 163 f; +#X obj 102 188 + 1; +#X msg 274 263 set; +#X msg 66 307 \$1 \, \$2 \, \$3 \, \$4 \, \$5 \, \$6 \, \$7 \, \$8 +\, \$9 \, \$10 \, \$11 \, \$12 \, \$13 \, \$14 \, \$15 \, \$16 \, \$17 +\, \$18 \, \$19 \, \$20 \, \$21 \, \$22 \, \$23 \, \$24 \, \$25 \, +\$26 \, \$27 \, \$28 \, \$29 \, \$30 \, \$31 \, \$32 \, \$33 \,; +#X obj 66 263 list; +#X msg 102 263 adddollar \$1 \, addcomma; +#X msg 150 126 0; +#X obj 66 332 symbol; +#X obj 66 357 outlet; +#X obj 67 55 trigger anything anything bang; +#X obj 144 224 b; +#X connect 0 0 12 0; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 4 0 3 1; +#X connect 4 0 8 0; +#X connect 5 0 6 0; +#X connect 6 0 10 0; +#X connect 7 0 6 0; +#X connect 8 0 6 0; +#X connect 9 0 3 1; +#X connect 10 0 11 0; +#X connect 12 0 7 0; +#X connect 12 1 1 0; +#X connect 12 2 5 0; +#X connect 12 2 9 0; +#X connect 12 2 13 0; +#X connect 13 0 7 1; +#X restore 77 198 pd drip; +#N canvas 245 192 382 392 drip 0; +#X obj 67 30 inlet; +#X obj 102 83 list length; +#X obj 102 108 until; +#X obj 102 163 f; +#X obj 102 188 + 1; +#X msg 274 263 set; +#X msg 66 307 \$1 \, \$2 \, \$3 \,; +#X obj 66 263 list; +#X msg 102 263 adddollar \$1 \, addcomma; +#X msg 150 126 0; +#X obj 66 332 symbol; +#X obj 66 357 outlet; +#X obj 67 55 trigger anything anything bang; +#X obj 144 224 b; +#X connect 0 0 12 0; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 4 0 3 1; +#X connect 4 0 8 0; +#X connect 5 0 6 0; +#X connect 6 0 10 0; +#X connect 7 0 6 0; +#X connect 8 0 6 0; +#X connect 9 0 3 1; +#X connect 10 0 11 0; +#X connect 12 0 7 0; +#X connect 12 1 1 0; +#X connect 12 2 5 0; +#X connect 12 2 9 0; +#X connect 12 2 13 0; +#X connect 13 0 7 1; +#X restore 97 398 pd drip; +#X msg 97 542 list \$3/extra/\$2/*\$1; +#N canvas 500 53 450 404 test_path 0; +#X obj 41 33 inlet; +#X obj 41 138 outlet; +#X obj 94 33 r \$0-libdir; +#X obj 41 63 pack s s; +#X msg 41 113 symbol \$2/extra/\$1; +#X connect 0 0 3 0; +#X connect 2 0 3 1; +#X connect 3 0 4 0; +#X connect 4 0 1 0; +#X restore 269 569 pd test_path; +#X obj 269 594 t a b; +#N canvas 384 25 589 486 test_load_and_path_with_declare 0; +#X obj 64 21 inlet; +#N canvas 0 0 450 300 \$0-load_declare 0; +#X restore 647 149 pd \$0-load_declare; +#X obj 153 161 f; +#X obj 183 161 + 1; +#X obj 153 186 * 30; +#X obj 153 216 pack f s; +#X obj 153 291 s pd-\$0-load_declare; +#X obj 596 22 inlet; +#X obj 596 77 t b b; +#X msg 171 132 0; +#X msg 628 246 clear; +#X msg 153 246 obj 5 \$1 declare -lib \$2; +#X obj 64 56 trigger bang bang anything; +#X msg 64 246 clear; +#X text 59 324 Load each object by dynamically instantiating a [declare +-lib libname]. We must clear the subpatch afterward as well to make +sure we don't accidentally start with some loaded libs after editing +this patch. Since Pd doesn't have any way to unload a library this +works.; +#X obj 334 21 inlet; +#X obj 423 161 f; +#X obj 453 161 + 1; +#X obj 423 186 * 30; +#X obj 423 216 pack f s; +#X msg 441 132 0; +#X obj 334 56 trigger bang bang anything; +#X msg 334 246 clear; +#X msg 423 246 obj 5 \$1 declare -path \$2; +#X text 111 21 load a lib; +#X text 380 22 set a path; +#X connect 0 0 12 0; +#X connect 2 0 3 0; +#X connect 2 0 4 0; +#X connect 3 0 2 1; +#X connect 4 0 5 0; +#X connect 5 0 11 0; +#X connect 7 0 8 0; +#X connect 8 0 9 0; +#X connect 8 0 20 0; +#X connect 8 1 10 0; +#X connect 9 0 2 1; +#X connect 10 0 6 0; +#X connect 11 0 6 0; +#X connect 12 0 13 0; +#X connect 12 1 2 0; +#X connect 12 2 5 1; +#X connect 13 0 6 0; +#X connect 15 0 21 0; +#X connect 16 0 17 0; +#X connect 16 0 18 0; +#X connect 17 0 16 1; +#X connect 18 0 19 0; +#X connect 19 0 23 0; +#X connect 20 0 16 1; +#X connect 21 0 22 0; +#X connect 21 1 16 0; +#X connect 21 2 19 1; +#X connect 22 0 6 0; +#X connect 23 0 6 0; +#X restore 97 654 pd test_load_and_path_with_declare; +#N canvas 259 121 571 514 results 0; +#X obj 62 25 inlet; +#X obj 235 33 r \$0-current-libdir-name; +#X obj 146 33 r \$0-fail; +#X obj 146 86 list prepend; +#X msg 235 58 \$1:; +#X obj 146 187 print error; +#X text 251 141 add counter; +#X obj 156 214 b; +#X obj 156 239 f; +#X obj 196 239 + 1; +#X floatatom 196 276 5 0 0 0 failures - -, f 5; +#X obj 62 258 f; +#X msg 94 327 gui; +#X obj 94 352 pdinfo; +#X obj 62 384 list prepend; +#X msg 180 389 all tests succeeded!; +#X obj 180 414 print info; +#X obj 180 324 sel 0 1; +#X msg 343 389 1 test failed; +#X msg 356 359 \$1 tests failed; +#X obj 62 410 route 0; +#X obj 62 435 != 0; +#X obj 62 485 s pd; +#X msg 62 460 quit \$1; +#X obj 343 414 print error; +#X obj 146 112 list prepend add; +#X obj 146 137 list trim; +#X obj 146 162 textfile; +#X obj 62 283 t a b a b; +#X obj 79 60 t b b; +#X msg 22 123 rewind; +#X obj 22 83 until; +#X connect 0 0 11 0; +#X connect 1 0 4 0; +#X connect 2 0 3 0; +#X connect 2 0 7 0; +#X connect 3 0 25 0; +#X connect 4 0 3 1; +#X connect 7 0 8 0; +#X connect 8 0 9 0; +#X connect 9 0 8 1; +#X connect 9 0 10 0; +#X connect 9 0 11 1; +#X connect 11 0 28 0; +#X connect 12 0 13 0; +#X connect 13 0 14 1; +#X connect 14 0 20 0; +#X connect 15 0 16 0; +#X connect 17 0 15 0; +#X connect 17 1 18 0; +#X connect 17 2 19 0; +#X connect 18 0 24 0; +#X connect 19 0 24 0; +#X connect 20 0 21 0; +#X connect 21 0 23 0; +#X connect 23 0 22 0; +#X connect 25 0 26 0; +#X connect 26 0 27 0; +#X connect 27 0 5 0; +#X connect 27 1 31 1; +#X connect 28 0 14 0; +#X connect 28 1 12 0; +#X connect 28 2 17 0; +#X connect 28 3 29 0; +#X connect 29 0 31 0; +#X connect 29 1 30 0; +#X connect 30 0 27 0; +#X connect 31 0 27 0; +#X restore 37 756 pd results; +#X obj 249 284 s \$0-current-libdir-name; +#X obj 77 223 trigger anything anything; +#X obj 674 284 t a; +#X obj 674 504 t a; +#X msg 77 72 libdir cyclone zexy creb cxc iemlib list-abs mapping markex +maxlib memento mjlib motex osx pddp pdogg pixeltango pmpd rradical +sigpack smlib unauthorized vbap pan freeverb~ hcs jmmmp ext13 ggee +iem_anything ekext hexloader disis lyonpotpourri; +#X obj 37 44 t b b b b; +#N canvas 340 199 450 300 libs_not_loaded_by_default 1; +#X obj 10 11 inlet; +#X obj 10 231 outlet; +#X msg 10 36 adaptive arraysize autotune~ bassemu~ bob~ boids bonk~ +bsaylor choice comport controctopus fluid~ hid iem16 iem_adaptfilt +iem_ambi iem_bin_ambi iem_delay iemgui iemmatrix iem_roomsim iem_spec2 +iem_tab iemxmlrpc jasch_lib K12 la-kitchen loop~ lrshift~ memento-p +mjlib moocow moonlib motex mrpeach nsend pan pd~ pdcontainer pd-wavelet +pique plugin~ pmpd purepd rjlib rradical rtc sfruit sigmund~ stdout +timestretch tof windowing; +#X text 110 172 ratchet up as we go; +#X obj 10 173 list split 12; +#X connect 0 0 2 0; +#X connect 2 0 4 0; +#X connect 4 0 1 0; +#X restore 57 164 pd libs_not_loaded_by_default; +#X connect 0 0 2 0; +#X connect 1 0 4 0; +#X connect 2 0 14 0; +#X connect 3 0 13 0; +#X connect 4 0 29 0; +#X connect 5 0 6 0; +#X connect 5 1 8 0; +#X connect 6 0 30 0; +#X connect 7 0 40 0; +#X connect 9 0 33 2; +#X connect 11 0 10 0; +#X connect 12 0 33 0; +#X connect 13 0 12 0; +#X connect 18 0 6 2; +#X connect 18 0 3 1; +#X connect 19 0 20 0; +#X connect 19 1 1 0; +#X connect 19 2 6 1; +#X connect 19 3 10 0; +#X connect 19 3 23 0; +#X connect 20 0 21 0; +#X connect 22 0 25 0; +#X connect 23 0 22 0; +#X connect 28 0 36 0; +#X connect 29 0 5 0; +#X connect 30 0 3 0; +#X connect 31 0 32 0; +#X connect 32 0 33 1; +#X connect 32 1 33 2; +#X connect 36 0 19 0; +#X connect 36 1 35 0; +#X connect 36 1 37 0; +#X connect 37 0 38 0; +#X connect 38 0 31 0; +#X connect 39 0 28 0; +#X connect 40 0 34 0; +#X connect 40 1 41 0; +#X connect 40 2 39 0; +#X connect 40 3 0 0; +#X connect 41 0 28 0;