/usr/lib/pd/extra/testtools/unit-test-frame.pd is in pd-testtools 0.1-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 | #N canvas 66 59 710 662 10;
#X obj 620 302 bng 50 250 50 0 empty empty list 5 25 0 14 -203904 -262144
-1;
#X obj 315 301 bng 50 250 50 0 empty empty list 5 25 0 14 -203904 -262144
-1;
#X obj 100 300 bng 50 250 50 0 empty empty list 5 25 0 14 -203904 -262144
-1;
#X obj 621 239 bng 50 250 50 0 empty empty ? 15 25 0 30 -260097 -262144
-1;
#X obj 474 302 hsl 130 50 0 127 0 0 \$0-dummysend \$0-stddev-label
STDDEV-ZERO 4 35 0 10 -203904 -203904 -1 0 1;
#X floatatom 477 309 18 0 0 0 - #0-stddev -;
#X obj 256 301 bng 50 250 50 0 empty empty test 5 25 0 14 -260097 -262144
-1;
#X obj 40 300 bng 50 250 50 0 empty empty write 4 25 0 14 -260097 -262144
-1;
#X obj 43 239 hsl 195 50 0 112 0 0 \$0-dummysend \$0-dummyreceive empty
-2 -8 0 10 -203904 -203904 -203904 0 1;
#X symbolatom 45 247 25 0 0 0 - #0-refname #0-dummysend;
#X text 44 267 reference;
#N canvas 607 182 376 522 std.deviation 0;
#X obj 80 127 until;
#X obj 95 155 + 1;
#X obj 80 180 f;
#X obj 80 99 t f b;
#X msg 122 163 0;
#X obj 107 310 +;
#X floatatom 107 337 8 0 0 0 - - -;
#X obj 92 361 f;
#X text 153 163 clear sums;
#X obj 52 234 == 511;
#X obj 52 258 sel 1;
#X obj 80 203 t f f;
#X obj 107 261 t f f;
#X obj 107 286 *;
#X obj 92 386 / 512;
#X obj 92 410 sqrt;
#X obj 92 439 outlet;
#X text 137 441 stddev;
#X obj 186 439 s \$0-stddev;
#X obj 107 233 tabread \$0-difference;
#X obj 191 58 + 1;
#X obj 80 75 f 512;
#X floatatom 202 10 5 0 0 0 - - -;
#X obj 263 -16 r \$0-test-delay;
#X obj 263 30 + 10;
#X floatatom 272 8 5 0 0 0 - - -;
#X obj 80 47 delay 10;
#X obj 191 -16 r \$0-index;
#X obj 80 -16 r \$0-test-prepare;
#X connect 0 0 2 0;
#X connect 1 0 2 1;
#X connect 2 0 1 0;
#X connect 2 0 11 0;
#X connect 3 0 0 0;
#X connect 3 1 4 0;
#X connect 4 0 2 1;
#X connect 4 0 5 1;
#X connect 5 0 6 0;
#X connect 6 0 5 1;
#X connect 6 0 7 1;
#X connect 7 0 14 0;
#X connect 9 0 10 0;
#X connect 10 0 7 0;
#X connect 11 0 9 0;
#X connect 11 1 19 0;
#X connect 12 0 13 0;
#X connect 12 1 13 1;
#X connect 13 0 5 0;
#X connect 14 0 15 0;
#X connect 15 0 16 0;
#X connect 15 0 18 0;
#X connect 19 0 12 0;
#X connect 20 0 14 1;
#X connect 20 0 21 1;
#X connect 21 0 3 0;
#X connect 23 0 24 0;
#X connect 23 0 25 0;
#X connect 24 0 26 1;
#X connect 26 0 21 0;
#X connect 27 0 9 1;
#X connect 27 0 20 0;
#X connect 27 0 22 0;
#X connect 28 0 26 0;
#X restore 327 123 pd std.deviation;
#X obj 39 23 inlet;
#X obj 328 27 inlet;
#X obj 630 22 inlet;
#X obj 238 628 outlet;
#X obj 286 628 outlet;
#X obj 335 629 outlet;
#X obj 238 555 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X msg 288 508 const 0;
#X obj 288 531 s \$0-system-under-test;
#X obj 39 49 unpack s f;
#X obj 96 78 s \$0-test-delay;
#N canvas 568 53 379 248 table 0;
#X obj 45 199 tabwrite \$0-system-under-test;
#X obj 216 70 f;
#X obj 245 70 + 1;
#X obj 45 53 t f b;
#X msg 231 45 0;
#X obj 45 22 inlet;
#X obj 62 172 tabwrite \$0-difference;
#X obj 77 119 tabread \$0-reference;
#X obj 77 87 t f f;
#X obj 231 21 r \$0-test-prepare;
#X obj 237 135 s \$0-index;
#X obj 62 145 -;
#X obj 237 108 moses 512;
#X connect 1 0 2 0;
#X connect 1 0 8 0;
#X connect 1 0 0 1;
#X connect 1 0 12 0;
#X connect 2 0 1 1;
#X connect 3 0 0 0;
#X connect 3 0 11 0;
#X connect 3 1 1 0;
#X connect 4 0 1 1;
#X connect 5 0 3 0;
#X connect 7 0 11 1;
#X connect 8 0 7 0;
#X connect 8 1 6 1;
#X connect 9 0 4 0;
#X connect 11 0 6 0;
#X connect 12 0 10 0;
#X restore 328 85 pd table;
#X obj 238 509 t b b b;
#N canvas 0 22 256 269 view-system 0;
#X obj 39 39 inlet;
#X msg 39 75 arrayviewlistnew;
#X obj 39 174 s \$0-system-under-test;
#X obj 67 118 r \$0-test-prepare;
#X msg 67 144 arrayviewclose;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 3 0 4 0;
#X connect 4 0 2 0;
#X restore 351 507 pd view-system;
#N canvas 695 50 264 263 view-difference 0;
#X obj 39 39 inlet;
#X obj 39 180 s \$0-difference;
#X msg 39 75 arrayviewlistnew;
#X obj 57 108 r \$0-test-prepare;
#X msg 57 135 arrayviewclose;
#X connect 0 0 2 0;
#X connect 2 0 1 0;
#X connect 3 0 4 0;
#X connect 4 0 1 0;
#X restore 584 520 pd view-difference;
#N canvas 453 143 231 283 view-reference 0;
#X obj 27 31 inlet;
#X msg 27 59 arrayviewlistnew;
#X obj 27 144 s \$0-reference;
#X obj 42 88 r \$0-test-prepare;
#X msg 42 114 arrayviewclose;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 3 0 4 0;
#X connect 4 0 2 0;
#X restore 100 507 pd view-reference;
#N canvas 739 28 261 427 test-result-messages 0;
#X obj 32 23 inlet;
#X obj 59 310 stdout;
#X obj 32 84 sel 0;
#X obj 89 166 r \$0-refname;
#X obj 89 193 symbol;
#X obj 32 56 moses 1e-05;
#X obj 32 277 t b a;
#X msg 32 336 UNIT-TEST-DONE;
#X obj 32 373 stdout;
#X obj 32 221 pack s f s;
#X obj 112 309 print unit-test;
#X obj 85 373 print unit-test;
#X obj 32 249 list trim;
#X msg 59 113 STDDEV-SMALL \$1;
#X msg 32 141 STDDEV-ZERO 0;
#X msg 95 84 STDDEV-LARGE \$1;
#N canvas 49 312 252 304 stddev-label 0;
#X obj 40 29 inlet;
#X obj 40 92 sel 0;
#X obj 40 64 moses 1e-05;
#X msg 103 92 STDDEV-LARGE;
#X msg 67 121 STDDEV-SMALL;
#X msg 40 149 STDDEV-ZERO;
#X msg 40 221 label \$1;
#X obj 40 191 symbol;
#X obj 40 250 s \$0-stddev-label;
#X connect 0 0 2 0;
#X connect 1 0 5 0;
#X connect 1 1 4 0;
#X connect 2 0 1 0;
#X connect 2 1 3 0;
#X connect 3 0 7 0;
#X connect 4 0 7 0;
#X connect 5 0 7 0;
#X connect 6 0 8 0;
#X connect 7 0 6 0;
#X restore 126 50 pd stddev-label;
#X connect 0 0 5 0;
#X connect 0 0 16 0;
#X connect 2 0 14 0;
#X connect 2 1 13 0;
#X connect 3 0 4 0;
#X connect 4 0 9 2;
#X connect 5 0 2 0;
#X connect 5 1 15 0;
#X connect 6 0 7 0;
#X connect 6 1 1 0;
#X connect 6 1 10 0;
#X connect 7 0 8 0;
#X connect 7 0 11 0;
#X connect 9 0 12 0;
#X connect 12 0 6 0;
#X connect 13 0 9 0;
#X connect 14 0 9 0;
#X connect 15 0 9 0;
#X restore 327 164 pd test-result-messages;
#X floatatom 203 247 5 0 0 0 - #0-test-delay -;
#X text 201 269 delay;
#N canvas 628 152 504 542 list-drip 0;
#X obj 68 94 t a a;
#X obj 68 251 spigot;
#X obj 101 159 bang;
#X obj 101 185 1;
#X obj 207 160 route bang;
#X obj 170 160 bang;
#X obj 170 186 0;
#X obj 101 124 list split 2;
#X obj 134 348 list split;
#X obj 191 297 list length;
#X obj 191 319 >> 1;
#X obj 68 280 t a a a a;
#X obj 68 439 list split;
#X obj 125 391 list length;
#X obj 125 416 >> 1;
#X obj 41 29 inlet;
#X obj 264 186 outlet;
#X text 83 29 Copyright 2009 by Mathieu Bouchard;
#X obj 41 63 t b a;
#X obj 328 80 outlet;
#X text 383 82 signal end of list;
#X text 35 502 made compatible with [list-drip]: fbar 2009;
#X connect 0 0 1 0;
#X connect 0 1 7 0;
#X connect 1 0 11 0;
#X connect 2 0 3 0;
#X connect 3 0 1 1;
#X connect 4 1 16 0;
#X connect 5 0 6 0;
#X connect 6 0 1 1;
#X connect 7 0 2 0;
#X connect 7 2 4 0;
#X connect 7 2 5 0;
#X connect 8 0 0 0;
#X connect 9 0 10 0;
#X connect 10 0 8 1;
#X connect 11 0 12 0;
#X connect 11 1 13 0;
#X connect 11 2 8 0;
#X connect 11 3 9 0;
#X connect 12 1 0 0;
#X connect 13 0 14 0;
#X connect 14 0 12 1;
#X connect 15 0 18 0;
#X connect 18 0 19 0;
#X connect 18 1 0 0;
#X restore 328 52 pd list-drip;
#X obj 257 555 s \$0-test-prepare;
#X obj 256 208 r \$0-do-test;
#N canvas 716 407 203 281 index0-511 0;
#X obj 41 49 inlet;
#X obj 41 224 outlet;
#X obj 41 139 until;
#X msg 41 107 512;
#X obj 41 169 f;
#X obj 72 169 + 1;
#X obj 41 79 t b b;
#X msg 80 139 0;
#X connect 0 0 6 0;
#X connect 2 0 4 0;
#X connect 3 0 2 0;
#X connect 4 0 5 0;
#X connect 4 0 1 0;
#X connect 5 0 4 1;
#X connect 6 0 3 0;
#X connect 6 1 7 0;
#X connect 7 0 4 1;
#X restore 335 605 pd index0-511;
#X obj 43 371 hsl 195 100 0 127 0 0 empty empty empty -2 -8 0 10 -203904
-203904 -1 0 1;
#N canvas 0 22 450 300 (subpatch) 0;
#X array \$0-reference 512 float 0;
#X coords 0 1 511 -1 200 100 1;
#X restore 40 371 graph;
#X obj 473 371 hsl 195 100 0 127 0 0 empty empty empty -2 -8 0 10 -203904
-203904 -1 0 1;
#N canvas 0 22 450 300 (subpatch) 0;
#X array \$0-difference 512 float 0;
#X coords 0 1 511 -1 200 100 1;
#X restore 470 371 graph;
#X obj 258 371 hsl 195 100 0 127 0 0 empty empty empty -2 -8 0 10 -203904
-203904 -1 0 1;
#N canvas 0 22 450 300 (subpatch) 0;
#X array \$0-system-under-test 512 float 0;
#X coords 0 1 511 -1 200 100 1;
#X restore 255 371 graph;
#X obj 256 239 bng 50 250 50 0 \$0-dummysend \$0-dummyreceive empty
17 7 0 10 -203904 -204786 -203904;
#X obj 256 239 bng 50 1000 50 0 \$0-dummysend \$0-dummyreceive done
7 25 0 14 -203904 -1 -203904;
#X text 588 21 dummy;
#X text 73 23 reference name + delay;
#X text 367 25 floats & lists;
#X text 40 481 test-bang out;
#X text 589 481 test-bang out;
#X text 405 481 index 0 - 511 out;
#X obj 467 237 cnv 15 100 20 empty empty [unit-test-frame] 2 12 0 14
-262144 -66577 0;
#X msg 540 520 vis 1;
#X obj 540 548 s pd-info-unit-test\$0;
#N canvas 473 125 566 541 info-unit-test\$0 0;
#X text 144 474 STDDEV-ZERO 0;
#X text 144 516 STDDEV-LARGE <stddev>;
#X text 144 494 STDDEV-SMALL <stddev>;
#X text 296 495 when standard deviation < 1e-05;
#X text 296 516 when standard deviation >= 1e-05;
#X text 296 474 when standard deviation = 0;
#X text 129 46 ------------------------------------------------------------
;
#X text 127 378 ------------------------------------------------------------
;
#X text 126 538 ------------------------------------------------------------
;
#X text 131 808 Katja Vetter & Fred Jan Kraan \, October 2011;
#X text 127 556 The reference file must be in the same directory as
the test. If it is not found when the patch is loaded \, an error is
reported to the Pd window and stdout:;
#X text 122 821 ------------------------------------------------------------
;
#X text 129 67 1: Test arguments must be sent as a list into the first
inlet:;
#X text 149 606 REFERENCE-FILE-ERROR reference file not found: <reference>
;
#X text 128 398 The test is automatically executed when the patch is
loaded \, and can also be started with button 'test'. Difference between
signal under test and reference is graphed \, and standard deviation
is computed. A test result message is sent to the Pd window and stdout:
;
#X text 124 779 ------------------------------------------------------------
;
#X text 26 19 arguments;
#X obj 29 39 loadbang;
#X obj 32 407 bng 50 250 50 0 empty empty test 5 25 0 14 -260097 -262144
-1;
#X obj 33 555 bng 50 250 50 0 empty empty write 4 25 0 14 -260097 -262144
-1;
#X text 124 714 ------------------------------------------------------------
;
#X obj 29 94 loadbang;
#X text 130 98 - reference name \, matching the name of the test patch
;
#X text 130 22 how to use [unit-test-frame.pd] in unit test patches
;
#X msg 29 66 sqrt 0;
#X msg 29 121 pipe 100;
#X text 130 116 - delaytime between test trigger and test snapshot.
;
#X text 129 137 2: Messages from the object(s) under test must be sent
into the second inlet. Floats and lists are both accepted. When testing
an external object \, consider instantiating it with namespace \, like
[zexy/wrap].;
#X text 127 631 A reference file can be created from the content of
\$0-signal-under-test \, using a Pd which is known to work well (the
latest release). Use button 'write'. The file will have 512 samples
in 32 bit .wav format. Even though the test output is not a signal
\, this is a good format to write.;
#X text 130 203 Use a bang from one of [unit-test-frame.pd] outlets
to trigger the object(s) when the test starts. Or use the index 0 -
511 outlet to generate a series of output values.;
#X text 131 255 Normalization of the object output (within interval
0 to 1 or -1 to 1) is useful. It gives a good graph and a meaningful
stddev. Also note that large numbers are unprecise. Example: the difference
between 1e+12 in single precision and 1e+12 in double precision is
27968! Try this on:;
#X text 149 345 http://www.h-schmidt.net/FloatApplet/IEEE754.html;
#X text 124 733 Apart from [ggee/getdir] \, [unit-test-frame.pd] uses
only vanilla Pd classes. For testing external classes \, consider using
namespaces like in [zexy/wrap].;
#X connect 17 0 24 0;
#X connect 21 0 25 0;
#X restore 555 165 pd info-unit-test\$0;
#X obj 428 531 s \$0-difference;
#X obj 384 629 outlet;
#X obj 238 577 t b b b b;
#X text 209 481 test-bang out;
#X obj 39 183 s \$0-refname;
#X obj 39 74 symbol;
#N canvas 673 76 412 506 load-reference 0;
#X obj 36 27 inlet;
#X obj 36 203 soundfiler;
#X obj 81 112 f \$0;
#X obj 36 136 pack s f;
#X obj 36 94 t a b;
#X obj 36 461 s \$0-do-test;
#X obj 75 375 pack s s s s s s;
#X obj 168 297 r \$0-refname;
#X obj 75 432 stdout;
#X obj 36 235 sel 512;
#X obj 36 60 spigot 1;
#X msg 81 27 0;
#X text 119 29 at load \, try to read reference file and do test;
#X msg 75 271 REFERENCE-FILE-ERROR reference file not found:;
#X msg 168 324 \$1.wav;
#X obj 168 349 symbol;
#X obj 75 402 list trim;
#X obj 127 432 print unit-test;
#X msg 125 135 read ./\$1.wav \$2-reference;
#X msg 36 173 read \$1.wav \$2-reference;
#X connect 0 0 10 0;
#X connect 1 0 9 0;
#X connect 2 0 3 1;
#X connect 3 0 19 0;
#X connect 4 0 3 0;
#X connect 4 1 2 0;
#X connect 6 0 16 0;
#X connect 7 0 14 0;
#X connect 9 0 5 0;
#X connect 9 1 13 0;
#X connect 10 0 4 0;
#X connect 10 0 11 0;
#X connect 11 0 10 1;
#X connect 13 0 6 0;
#X connect 14 0 15 0;
#X connect 15 0 6 5;
#X connect 16 0 8 0;
#X connect 16 0 17 0;
#X connect 19 0 1 0;
#X restore 58 155 pd load-reference;
#N canvas 405 322 429 358 prepend-path 0;
#X obj 21 13 inlet;
#X obj 48 131 ggee/getdir 2;
#X obj 48 104 t b a;
#X obj 21 283 spigot 1;
#X msg 66 235 0;
#X obj 21 45 t a a;
#X obj 21 169 pack s s;
#X msg 21 200 \$1/\$2;
#X msg 102 235 1;
#X obj 102 266 pipe 100;
#X obj 21 314 outlet;
#X text 76 11 Try to prepend absolute path of the abstraction's parent.
If [ggee/getdir] is not present \, the path is relative to the abstraction.
;
#X msg 21 75 .;
#X connect 0 0 5 0;
#X connect 1 0 6 0;
#X connect 2 0 1 0;
#X connect 2 1 6 1;
#X connect 3 0 4 0;
#X connect 3 0 8 0;
#X connect 3 0 10 0;
#X connect 4 0 3 1;
#X connect 5 0 12 0;
#X connect 5 1 2 0;
#X connect 6 0 7 0;
#X connect 7 0 3 0;
#X connect 8 0 9 0;
#X connect 9 0 3 1;
#X connect 12 0 6 0;
#X restore 58 101 pd prepend-path;
#X obj 71 130 s \$0-refpath;
#N canvas 240 70 389 572 write-reference 1;
#X obj 51 436 soundfiler;
#X obj 51 379 list;
#X obj 50 16 inlet;
#X floatatom 82 470 5 0 0 0 - - -;
#X text 90 16 bang;
#X obj 51 124 r \$0-do-write-reference;
#X obj 143 152 r \$0-abort-write-reference;
#X obj 51 471 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X obj 51 532 s \$0-do-test;
#X obj 72 153 delay 500;
#X msg 257 46 \$1.wav;
#X obj 257 71 symbol;
#X obj 257 99 s \$0-ref-wav-name;
#N canvas 574 380 410 288 write-reference-popup\$0 0;
#X obj 97 197 bng 60 400 50 0 \$0-do-write-reference empty continue
2 28 0 12 -260097 -262144 -1;
#X obj 231 197 bng 60 300 50 0 \$0-abort-write-reference empty abort
8 28 0 12 -204786 -262144 -1;
#X obj 29 67 hsl 350 100 0 127 0 0 \$0-dummysend \$0-dummyreceive empty
-2 -8 0 10 -262144 -262144 -1 0 1;
#X symbolatom 33 85 30 0 0 0 - #0-refname #0-dummysend;
#X symbolatom 33 127 30 0 0 0 - #0-ref-wav-name #0-dummysend;
#X text 31 67 reference name:;
#X text 31 108 file name:;
#X text 24 11 This action will overwrite your reference .wav file with
the content of \$0-signal-under-test. The action can not be undone!
;
#X restore 51 95 pd write-reference-popup\$0;
#X obj 50 68 s pd-write-reference-popup\$0;
#X msg 50 43 vis 1;
#X obj 72 230 s pd-write-reference-popup\$0;
#X msg 72 205 vis 0;
#X obj 143 177 delay 200;
#X obj 72 264 r \$0-refpath;
#X obj 72 292 t a b;
#X obj 99 321 f \$0;
#X obj 72 350 pack s f;
#X msg 51 407 write -wave -bytes 4 \$1 \$2-system-under-test;
#X obj 257 20 r \$0-refname;
#N canvas 0 22 282 435 copy-to-reference 0;
#X obj 36 50 inlet;
#X msg 36 105 512;
#X obj 36 136 until;
#X obj 36 198 f;
#X obj 68 198 + 1;
#X obj 36 80 t b b;
#X msg 51 169 0;
#X obj 55 270 tabread \$0-system-under-test;
#X obj 55 307 tabwrite \$0-reference;
#X obj 36 332 == 511;
#X obj 36 236 t f f f;
#X obj 36 363 outlet;
#X connect 0 0 5 0;
#X connect 1 0 2 0;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 10 0;
#X connect 4 0 3 1;
#X connect 5 0 1 0;
#X connect 5 1 6 0;
#X connect 6 0 3 1;
#X connect 7 0 8 0;
#X connect 9 0 11 0;
#X connect 10 0 9 0;
#X connect 10 1 7 0;
#X connect 10 2 8 1;
#X restore 51 499 pd copy-to-reference;
#X connect 0 0 3 0;
#X connect 0 0 7 0;
#X connect 1 0 23 0;
#X connect 2 0 15 0;
#X connect 5 0 1 0;
#X connect 5 0 9 0;
#X connect 6 0 18 0;
#X connect 7 0 25 0;
#X connect 9 0 17 0;
#X connect 10 0 11 0;
#X connect 11 0 12 0;
#X connect 15 0 14 0;
#X connect 17 0 16 0;
#X connect 18 0 17 0;
#X connect 19 0 20 0;
#X connect 20 0 22 0;
#X connect 20 1 21 0;
#X connect 21 0 22 1;
#X connect 22 0 1 1;
#X connect 23 0 0 0;
#X connect 24 0 10 0;
#X connect 25 0 8 0;
#X restore 39 208 pd write-reference;
#X connect 0 0 26 0;
#X connect 1 0 25 0;
#X connect 2 0 27 0;
#X connect 3 0 50 0;
#X connect 6 0 24 0;
#X connect 7 0 62 0;
#X connect 11 0 28 0;
#X connect 11 0 42 0;
#X connect 12 0 21 0;
#X connect 13 0 31 0;
#X connect 18 0 55 0;
#X connect 19 0 20 0;
#X connect 19 0 53 0;
#X connect 21 0 58 0;
#X connect 21 1 22 0;
#X connect 24 0 18 0;
#X connect 24 1 32 0;
#X connect 24 2 19 0;
#X connect 31 0 23 0;
#X connect 33 0 6 0;
#X connect 34 0 17 0;
#X connect 50 0 51 0;
#X connect 55 0 15 0;
#X connect 55 1 16 0;
#X connect 55 2 34 0;
#X connect 55 3 54 0;
#X connect 58 0 57 0;
#X connect 58 0 60 0;
#X connect 60 0 59 0;
#X connect 60 0 61 0;
#X coords 0 -1 1 1 650 270 2 30 230;
|