aboutsummaryrefslogtreecommitdiff
path: root/pd/doc/7.stuff/tools
diff options
context:
space:
mode:
Diffstat (limited to 'pd/doc/7.stuff/tools')
-rw-r--r--pd/doc/7.stuff/tools/latency.pd355
-rw-r--r--pd/doc/7.stuff/tools/testtone.pd4
-rw-r--r--pd/doc/7.stuff/tools/z.pd247
3 files changed, 509 insertions, 97 deletions
diff --git a/pd/doc/7.stuff/tools/latency.pd b/pd/doc/7.stuff/tools/latency.pd
index bedb0ea1..6e9febb5 100644
--- a/pd/doc/7.stuff/tools/latency.pd
+++ b/pd/doc/7.stuff/tools/latency.pd
@@ -1,99 +1,264 @@
-#N canvas 37 0 825 630 12;
-#X obj 132 166 metro 500;
-#X msg 91 217 0.5;
-#X obj 130 192 del 3;
-#X msg 130 217 0;
-#X obj 34 323 dac~;
-#X obj 286 216 adc~;
-#X obj 291 310 timer;
-#X obj 93 333 env~ 65536;
-#X floatatom 93 360 4 0 0 0 - - -;
-#X floatatom 339 170 4 0 0 0 - - -;
-#X obj 339 193 + 100;
-#X obj 339 218 dbtorms;
-#X obj 181 333 env~ 65536;
-#X floatatom 181 362 4 0 0 0 - - -;
-#X floatatom 291 347 4 0 0 0 - - -;
-#X obj 312 245 *~ 1;
-#X obj 348 278 threshold~ 0.1 5 0.05 5;
-#X obj 634 160 bonk~;
-#X obj 634 188 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+#N canvas 166 252 718 504 12;
+#X floatatom 239 98 4 0 0 0 - - adc-gain;
+#X text 317 17 latency measurement;
+#N canvas 31 48 928 842 guts 0;
+#X obj 292 35 adc~ 1 2 3 4 5 6 7 8;
+#X obj 318 102 == 1;
+#X obj 293 126 *~ 0;
+#X obj 355 128 *~ 0;
+#X obj 418 129 *~ 0;
+#X obj 480 131 *~ 0;
+#X obj 541 134 *~ 0;
+#X obj 603 136 *~ 0;
+#X obj 666 137 *~ 0;
+#X obj 728 139 *~ 0;
+#X obj 380 104 == 2;
+#X obj 443 105 == 3;
+#X obj 505 107 == 4;
+#X obj 566 110 == 5;
+#X obj 628 112 == 6;
+#X obj 691 113 == 7;
+#X obj 753 115 == 8;
+#X obj 46 34 loadbang;
+#X obj 59 153 r inchannel;
+#X msg 59 177 set \$1;
+#X obj 59 201 s inchannel-set;
+#N canvas 0 22 450 300 (subpatch) 0;
+#X array pulse 120 float 3;
+#A 0 0 0 0 0 0 0 0 0 0 0 -0 -6.19458e-05 -0.000494103 -0.00165937 -0.00390618
+-0.00756153 -0.0129244 -0.0202596 -0.0297923 -0.0417031 -0.0561239
+-0.0731343 -0.0927595 -0.114969 -0.139674 -0.166732 -0.195943 -0.227055
+-0.259767 -0.293732 -0.328561 -0.363831 -0.39909 -0.433862 -0.467657
+-0.499977 -0.530324 -0.558209 -0.583156 -0.604713 -0.622461 -0.636015
+-0.645036 -0.649234 -0.648374 -0.642282 -0.630843 -0.614012 -0.591808
+-0.564318 -0.531698 -0.494168 -0.452014 -0.405579 -0.355267 -0.301528
+-0.244862 -0.185805 -0.124926 -0.0628189 -9.26574e-05 0.0626345 0.124745
+0.185628 0.244691 0.301365 0.355113 0.405437 0.451883 0.494051 0.531595
+0.56423 0.591735 0.613955 0.630802 0.642256 0.648364 0.649239 0.645055
+0.636048 0.622507 0.604771 0.583224 0.558287 0.53041 0.500069 0.467754
+0.433963 0.399193 0.363935 0.328665 0.293834 0.259866 0.22715 0.196032
+0.166815 0.139751 0.115038 0.0928211 0.0731882 0.0561701 0.0417419
+0.0298239 0.0202844 0.012943 0.00757468 0.00391473 0.00166424 0.000496283
+6.24961e-05 0 0 0 0 0 0 0 0 0 0;
+#X coords 0 1 119 -1 200 140 1;
+#X restore 25 399 graph;
+#X obj 52 587 t b b;
+#X obj 123 648 f;
+#X obj 161 648 + 1;
+#X obj 52 616 until;
+#X obj 123 676 t f f;
+#X obj 46 780 tabwrite pulse;
+#X obj 50 563 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
-#X obj 508 188 osc~ 440;
-#X obj 530 214 *~ 0;
-#X obj 582 189 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+#X msg 143 570 \; pulse const 0;
+#X msg 140 620 0;
+#X obj 44 676 sel 100;
+#X obj 157 780 + 10;
+#X obj 67 712 * 0.06283;
+#X obj 615 264 metro 1000;
+#X obj 615 218 r metro-on;
+#X obj 614 243 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
1;
-#X obj 571 211 * 0.1;
-#X obj 79 25 vdl 15 1 0 3 empty empty empty 0 -6 0 8 -262144 -1 -1
-0;
-#X msg 17 138 \; pd dsp 1;
-#X obj 634 132 *~;
-#X obj 16 113 sel 0;
-#X text 100 20 off;
-#X obj 132 142 == 1;
-#X obj 80 78 t f;
-#X text 102 36 measure latency;
-#X text 100 53 test continuity;
-#X obj 582 97 == 2;
-#X text 90 379 level out;
-#X text 182 380 level in;
-#X obj 530 244 dac~;
-#X text 292 368 latency in;
-#X text 293 384 msec;
-#X text 656 188 this flashes when;
-#X text 656 207 a discontinuity is;
-#X text 657 226 detected;
-#X obj 642 105 adc~;
-#X text 328 131 you can;
-#X text 324 147 adjust gain here;
-#X text 538 66 --- continuity check ---;
-#X text 169 105 --- latency measurement ---;
-#X text 67 420 To use this patch \, connect your audio output back
-to the audio input (channel 1 should suffice.) The latency measurement
-assumes the feedback gain is at least about -14 dB - you can increase
-the input sensitivity if need be.;
-#X text 70 491 If you select "measure latency" a series of pulses are
-timed using the "threshold~" object - note that it has an uncertainty
-of 1.45 msec (at 44K1) \, so you might see the number jitter even if
-the latency is constant.;
-#X text 70 564 Select "test continuity' to see if there are interruptions
-in the sound \, either at the input or output stage. If there are \,
-the button will flash.;
-#X obj 94 243 vline~;
-#X obj 133 279 threshold~ 0.1 5 0.05 5;
-#X connect 0 0 1 0;
+#X obj 628 326 vline~;
+#X obj 627 357 tabread4~ pulse;
+#X obj 687 31 r inchannel;
+#X obj 291 186 hip~ 20;
+#X obj 411 516 *~ 1e+10;
+#X obj 411 543 clip~ 0 1;
+#X obj 411 567 *~ 1e+10;
+#X obj 412 603 lop~ 3;
+#X obj 413 627 clip~ 0 1;
+#X msg 355 574 clear;
+#X msg 629 295 0 \, 12000 10;
+#X obj 744 359 osc~ 220;
+#X obj 744 386 *~ 0.03;
+#X obj 649 526 +~;
+#X obj 650 581 dac~ 1 2 3 4 5 6 7 8;
+#X obj 431 268 bp~ 220 0.7;
+#X obj 693 622 env~ 65536;
+#X floatatom 693 649 4 0 0 0 - - -;
+#X floatatom 749 329 5 0 0 0 - - -;
+#X obj 704 414 +~;
+#X obj 430 292 rzero~ -1;
+#X obj 431 317 rzero~ -1;
+#X obj 431 343 *~ 0.15;
+#X obj 287 316 rzero~ 1;
+#X obj 288 341 rzero~ 1;
+#X obj 45 747 expr -0.5 * (1-cos($f1)) * sin($f1);
+#X obj 288 292 bp~ 2000 0.7;
+#X obj 413 465 *~ 20;
+#X obj 629 382 *~ 0.1;
+#X obj 332 220 + 100;
+#X obj 332 245 dbtorms;
+#X obj 290 246 *~ 1;
+#X obj 160 281 env~ 65536;
+#X floatatom 160 308 4 0 0 0 - - -;
+#X obj 431 370 bonk~;
+#X obj 431 395 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 412 489 -~ 0.1;
+#X obj 414 656 -~ 1;
+#X obj 414 683 *~ -1;
+#X obj 565 747 phasor~;
+#X msg 616 714 0;
+#X obj 664 703 del 800;
+#X obj 665 728 snapshot~;
+#X floatatom 665 779 6 0 0 0 - - -;
+#X obj 666 756 * 1000;
+#X obj 87 328 s adc-db;
+#X obj 733 646 s dac-db;
+#X obj 728 774 s latency;
+#X obj 354 196 r adc-gain;
+#X msg 47 61 \; inchannel 1 \; metro-on 1 \; pd dsp 1;
+#X obj 474 397 s discontinuity;
+#X obj 496 514 *~ 1e+10;
+#X obj 496 541 clip~ 0 1;
+#X obj 496 565 *~ 1e+10;
+#X obj 497 601 lop~ 3;
+#X obj 498 625 clip~ 0 1;
+#X obj 497 487 -~ 0.1;
+#X obj 497 463 *~ 20;
+#X obj 514 709 *~;
#X connect 0 0 2 0;
-#X connect 1 0 49 0;
-#X connect 2 0 3 0;
-#X connect 3 0 49 0;
-#X connect 5 0 15 0;
-#X connect 6 0 14 0;
-#X connect 7 0 8 0;
-#X connect 9 0 10 0;
-#X connect 10 0 11 0;
-#X connect 11 0 15 1;
-#X connect 12 0 13 0;
-#X connect 15 0 12 0;
-#X connect 15 0 16 0;
-#X connect 16 0 6 1;
-#X connect 17 0 18 0;
+#X connect 0 1 3 0;
+#X connect 0 2 4 0;
+#X connect 0 3 5 0;
+#X connect 0 4 6 0;
+#X connect 0 5 7 0;
+#X connect 0 6 8 0;
+#X connect 0 7 9 0;
+#X connect 1 0 2 1;
+#X connect 2 0 40 0;
+#X connect 3 0 40 0;
+#X connect 4 0 40 0;
+#X connect 5 0 40 0;
+#X connect 6 0 40 0;
+#X connect 7 0 40 0;
+#X connect 8 0 40 0;
+#X connect 9 0 40 0;
+#X connect 10 0 3 1;
+#X connect 11 0 4 1;
+#X connect 12 0 5 1;
+#X connect 13 0 6 1;
+#X connect 14 0 7 1;
+#X connect 15 0 8 1;
+#X connect 16 0 9 1;
+#X connect 17 0 86 0;
+#X connect 18 0 19 0;
#X connect 19 0 20 0;
-#X connect 20 0 35 0;
-#X connect 20 0 35 1;
-#X connect 21 0 22 0;
-#X connect 22 0 20 1;
-#X connect 23 0 29 0;
-#X connect 25 0 17 0;
-#X connect 26 1 24 0;
-#X connect 28 0 0 0;
-#X connect 29 0 26 0;
-#X connect 29 0 28 0;
-#X connect 29 0 32 0;
-#X connect 32 0 21 0;
-#X connect 32 0 25 1;
-#X connect 41 0 25 0;
-#X connect 49 0 7 0;
-#X connect 49 0 4 0;
-#X connect 49 0 4 1;
-#X connect 49 0 50 0;
-#X connect 50 0 6 0;
+#X connect 22 0 25 0;
+#X connect 22 1 30 0;
+#X connect 22 1 29 0;
+#X connect 23 0 24 0;
+#X connect 23 0 26 0;
+#X connect 23 0 31 0;
+#X connect 24 0 23 1;
+#X connect 25 0 23 0;
+#X connect 26 0 33 0;
+#X connect 26 1 32 0;
+#X connect 28 0 22 0;
+#X connect 30 0 23 1;
+#X connect 31 0 25 1;
+#X connect 32 0 27 1;
+#X connect 33 0 62 0;
+#X connect 34 0 47 0;
+#X connect 34 0 46 0;
+#X connect 34 0 77 0;
+#X connect 34 0 78 0;
+#X connect 35 0 36 0;
+#X connect 36 0 34 0;
+#X connect 37 0 38 0;
+#X connect 38 0 65 0;
+#X connect 39 0 1 0;
+#X connect 39 0 10 0;
+#X connect 39 0 11 0;
+#X connect 39 0 12 0;
+#X connect 39 0 13 0;
+#X connect 39 0 14 0;
+#X connect 39 0 15 0;
+#X connect 39 0 16 0;
+#X connect 40 0 68 0;
+#X connect 41 0 42 0;
+#X connect 42 0 43 0;
+#X connect 43 0 44 0;
+#X connect 44 0 45 0;
+#X connect 45 0 74 0;
+#X connect 46 0 44 0;
+#X connect 47 0 37 0;
+#X connect 48 0 49 0;
+#X connect 49 0 56 1;
+#X connect 50 0 51 0;
+#X connect 50 0 51 1;
+#X connect 50 0 51 2;
+#X connect 50 0 51 3;
+#X connect 50 0 51 4;
+#X connect 50 0 51 5;
+#X connect 50 0 51 6;
+#X connect 50 0 51 7;
+#X connect 50 0 53 0;
+#X connect 52 0 57 0;
+#X connect 53 0 54 0;
+#X connect 53 0 83 0;
+#X connect 55 0 48 0;
+#X connect 56 0 50 0;
+#X connect 57 0 58 0;
+#X connect 58 0 59 0;
+#X connect 59 0 71 0;
+#X connect 60 0 61 0;
+#X connect 61 0 64 0;
+#X connect 62 0 27 0;
+#X connect 63 0 60 0;
+#X connect 64 0 73 0;
+#X connect 65 0 56 0;
+#X connect 65 0 94 0;
+#X connect 66 0 67 0;
+#X connect 67 0 68 1;
+#X connect 68 0 69 0;
+#X connect 68 0 63 0;
+#X connect 68 0 52 0;
+#X connect 69 0 70 0;
+#X connect 69 0 82 0;
+#X connect 71 0 72 0;
+#X connect 71 0 87 0;
+#X connect 73 0 41 0;
+#X connect 74 0 75 0;
+#X connect 75 0 95 0;
+#X connect 76 0 79 0;
+#X connect 77 0 76 1;
+#X connect 78 0 79 0;
+#X connect 79 0 81 0;
+#X connect 81 0 80 0;
+#X connect 81 0 84 0;
+#X connect 85 0 66 0;
+#X connect 88 0 89 0;
+#X connect 89 0 90 0;
+#X connect 90 0 91 0;
+#X connect 91 0 92 0;
+#X connect 92 0 95 1;
+#X connect 93 0 88 0;
+#X connect 94 0 93 0;
+#X connect 95 0 76 0;
+#X restore 595 387 pd guts;
+#X floatatom 242 50 4 1 8 0 inchannel inchannel-set inchannel;
+#X floatatom 626 267 6 0 0 0 - latency -;
+#X text 108 96 adjust gain here:;
+#X text 457 267 latency in milliseconds;
+#X text 571 245 THE ANSWER IS:;
+#X floatatom 528 143 4 0 0 0 - adc-db -;
+#X floatatom 527 92 4 0 0 0 - dac-db -;
+#X text 562 145 RMS amplitude in;
+#X text 564 93 RMS amplitude out;
+#X text 106 142 so that RMS amplitude in is between 60 and 70;
+#X text 108 121 (typically between -20 and 20);
+#X text 497 466 updated for Pd version 0.43;
+#X obj 228 259 bng 25 250 50 0 empty discontinuity empty 17 7 0 10
+-262144 -1 -1;
+#X text 40 235 discontinuity: this flashes if there are audio errors
+;
+#X text 67 343 To use this patch \, connect your audio output back
+to the audio input (any input and output channel from 1 to 8 \, but
+the input channel should agree wih the "inchannel" control at top).
+Then adjust gain so that "RMS amplitude in" is about 65 (anywhere from
+60 to 70 will do.) The latency is measured once per second. If there
+are interruptions in the audio the button above should flash (whether
+or not the audio system reports the error).;
diff --git a/pd/doc/7.stuff/tools/testtone.pd b/pd/doc/7.stuff/tools/testtone.pd
index 45d60e24..5ee9b5e6 100644
--- a/pd/doc/7.stuff/tools/testtone.pd
+++ b/pd/doc/7.stuff/tools/testtone.pd
@@ -1,4 +1,4 @@
-#N canvas 337 61 494 364 12;
+#N canvas 163 337 492 362 12;
#X floatatom 72 273 3 0 0 0 - - -;
#X obj 27 221 notein;
#X obj 27 247 stripnote;
@@ -121,7 +121,7 @@
#X obj 84 90 vradio 15 1 0 2 tone-type tone-type-set empty 0 -6 0 8
-262144 -1 -1 1;
#X obj 22 91 vradio 15 1 0 3 tone-radio tone-radio-set empty 0 -6 0
-8 -262144 -1 -1 1;
+8 -262144 -1 -1 0;
#X floatatom 376 93 3 0 0 0 - tone-vu7 -;
#X floatatom 404 93 3 0 0 0 - tone-vu8 -;
#X obj 375 126 tgl 20 0 tone-ch7 tone-ch7 7 5 -8 0 12 -262144 -1 -1
diff --git a/pd/doc/7.stuff/tools/z.pd b/pd/doc/7.stuff/tools/z.pd
new file mode 100644
index 00000000..0e95bd41
--- /dev/null
+++ b/pd/doc/7.stuff/tools/z.pd
@@ -0,0 +1,247 @@
+#N canvas 392 172 718 504 12;
+#X floatatom 239 98 4 0 0 0 - - adc-gain;
+#X text 317 17 latency measurement;
+#N canvas 68 36 965 906 guts 0;
+#X obj 305 67 adc~ 1 2 3 4 5 6 7 8;
+#X obj 331 134 == 1;
+#X obj 306 158 *~ 0;
+#X obj 368 160 *~ 0;
+#X obj 431 161 *~ 0;
+#X obj 493 163 *~ 0;
+#X obj 554 166 *~ 0;
+#X obj 616 168 *~ 0;
+#X obj 679 169 *~ 0;
+#X obj 741 171 *~ 0;
+#X obj 393 136 == 2;
+#X obj 456 137 == 3;
+#X obj 518 139 == 4;
+#X obj 579 142 == 5;
+#X obj 641 144 == 6;
+#X obj 704 145 == 7;
+#X obj 766 147 == 8;
+#X obj 541 323 loadbang;
+#X obj 805 237 r inchannel;
+#X msg 805 261 set \$1;
+#X obj 805 285 s inchannel-set;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array pulse 120 float 3;
+#A 0 0 0 0 0 0 0 0 0 0 0 -0 -6.19458e-05 -0.000494103 -0.00165937 -0.00390618
+-0.00756153 -0.0129244 -0.0202596 -0.0297923 -0.0417031 -0.0561239
+-0.0731343 -0.0927595 -0.114969 -0.139674 -0.166732 -0.195943 -0.227055
+-0.259767 -0.293732 -0.328561 -0.363831 -0.39909 -0.433862 -0.467657
+-0.499977 -0.530324 -0.558209 -0.583156 -0.604713 -0.622461 -0.636015
+-0.645036 -0.649234 -0.648374 -0.642282 -0.630843 -0.614012 -0.591808
+-0.564318 -0.531698 -0.494168 -0.452014 -0.405579 -0.355267 -0.301528
+-0.244862 -0.185805 -0.124926 -0.0628189 -9.26574e-05 0.0626345 0.124745
+0.185628 0.244691 0.301365 0.355113 0.405437 0.451883 0.494051 0.531595
+0.56423 0.591735 0.613955 0.630802 0.642256 0.648364 0.649239 0.645055
+0.636048 0.622507 0.604771 0.583224 0.558287 0.53041 0.500069 0.467754
+0.433963 0.399193 0.363935 0.328665 0.293834 0.259866 0.22715 0.196032
+0.166815 0.139751 0.115038 0.0928211 0.0731882 0.0561701 0.0417419
+0.0298239 0.0202844 0.012943 0.00757468 0.00391473 0.00166424 0.000496283
+6.24961e-05 0 0 0 0 0 0 0 0 0 0;
+#X coords 0 1 119 -1 200 140 1;
+#X restore 39 448 graph;
+#X obj 337 538 t b b;
+#X obj 408 599 f;
+#X obj 446 599 + 1;
+#X obj 337 567 until;
+#X obj 408 627 t f f;
+#X obj 331 731 tabwrite pulse;
+#X obj 335 514 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X msg 428 521 \; pulse const 0;
+#X msg 425 571 0;
+#X obj 329 627 sel 100;
+#X obj 442 731 + 10;
+#X obj 352 663 * 0.06283;
+#X obj 697 338 metro 1000;
+#X obj 697 292 r metro-on;
+#X obj 696 317 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 710 400 vline~;
+#X obj 709 431 tabread4~ pulse;
+#X obj 700 63 r inchannel;
+#X obj 305 235 hip~ 20;
+#X obj 675 660 *~ 1e+10;
+#X obj 675 687 clip~ 0 1;
+#X obj 675 711 *~ 1e+10;
+#X obj 676 739 lop~ 3;
+#X obj 677 763 clip~ 0 1;
+#X msg 619 718 clear;
+#X msg 711 369 0 \, 12000 10;
+#X obj 852 451 osc~ 220;
+#X obj 852 478 *~ 0.03;
+#X obj 803 633 +~;
+#X obj 804 688 dac~ 1 2 3 4 5 6 7 8;
+#X obj 411 345 bp~ 220 0.7;
+#X obj 847 729 env~ 65536;
+#X floatatom 847 756 4 0 0 0 - - -;
+#X floatatom 857 421 5 0 0 0 - - -;
+#X obj 793 523 +~;
+#X obj 410 369 rzero~ -1;
+#X obj 411 394 rzero~ -1;
+#X obj 411 420 *~ 0.15;
+#X obj 301 365 rzero~ 1;
+#X obj 302 390 rzero~ 1;
+#X obj 330 698 expr -0.5 * (1-cos($f1)) * sin($f1);
+#X obj 302 341 bp~ 2000 0.7;
+#X obj 301 415 *~ 20;
+#X obj 711 456 *~ 0.1;
+#X obj 346 269 + 100;
+#X obj 346 294 dbtorms;
+#X obj 304 295 *~ 1;
+#X obj 174 330 env~ 65536;
+#X floatatom 174 357 4 0 0 0 - - -;
+#X obj 411 447 bonk~;
+#X obj 411 472 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 676 633 -~ 0.1;
+#X obj 678 792 -~ 1;
+#X obj 681 822 *~ -1;
+#X obj 719 854 phasor~;
+#X msg 751 813 0;
+#X obj 818 810 del 800;
+#X obj 819 835 snapshot~;
+#X floatatom 819 886 6 0 0 0 - - -;
+#X obj 820 863 * 1000;
+#X obj 101 377 s adc-db;
+#X obj 887 753 s dac-db;
+#X obj 882 881 s latency;
+#X obj 368 245 r adc-gain;
+#X msg 542 350 \; inchannel 1 \; metro-on 1 \; pd dsp 1;
+#X obj 454 474 s discontinuity;
+#X connect 0 0 2 0;
+#X connect 0 1 3 0;
+#X connect 0 2 4 0;
+#X connect 0 3 5 0;
+#X connect 0 4 6 0;
+#X connect 0 5 7 0;
+#X connect 0 6 8 0;
+#X connect 0 7 9 0;
+#X connect 1 0 2 1;
+#X connect 2 0 40 0;
+#X connect 3 0 40 0;
+#X connect 4 0 40 0;
+#X connect 5 0 40 0;
+#X connect 6 0 40 0;
+#X connect 7 0 40 0;
+#X connect 8 0 40 0;
+#X connect 9 0 40 0;
+#X connect 10 0 3 1;
+#X connect 11 0 4 1;
+#X connect 12 0 5 1;
+#X connect 13 0 6 1;
+#X connect 14 0 7 1;
+#X connect 15 0 8 1;
+#X connect 16 0 9 1;
+#X connect 17 0 86 0;
+#X connect 18 0 19 0;
+#X connect 19 0 20 0;
+#X connect 22 0 25 0;
+#X connect 22 1 30 0;
+#X connect 22 1 29 0;
+#X connect 23 0 24 0;
+#X connect 23 0 26 0;
+#X connect 23 0 31 0;
+#X connect 24 0 23 1;
+#X connect 25 0 23 0;
+#X connect 26 0 33 0;
+#X connect 26 1 32 0;
+#X connect 28 0 22 0;
+#X connect 30 0 23 1;
+#X connect 31 0 25 1;
+#X connect 32 0 27 1;
+#X connect 33 0 62 0;
+#X connect 34 0 47 0;
+#X connect 34 0 46 0;
+#X connect 34 0 77 0;
+#X connect 34 0 78 0;
+#X connect 35 0 36 0;
+#X connect 36 0 34 0;
+#X connect 37 0 38 0;
+#X connect 38 0 65 0;
+#X connect 39 0 1 0;
+#X connect 39 0 10 0;
+#X connect 39 0 11 0;
+#X connect 39 0 12 0;
+#X connect 39 0 13 0;
+#X connect 39 0 14 0;
+#X connect 39 0 15 0;
+#X connect 39 0 16 0;
+#X connect 40 0 68 0;
+#X connect 41 0 42 0;
+#X connect 42 0 43 0;
+#X connect 43 0 44 0;
+#X connect 44 0 45 0;
+#X connect 45 0 74 0;
+#X connect 46 0 44 0;
+#X connect 47 0 37 0;
+#X connect 48 0 49 0;
+#X connect 49 0 56 1;
+#X connect 50 0 51 0;
+#X connect 50 0 51 1;
+#X connect 50 0 51 2;
+#X connect 50 0 51 3;
+#X connect 50 0 51 4;
+#X connect 50 0 51 5;
+#X connect 50 0 51 6;
+#X connect 50 0 51 7;
+#X connect 50 0 53 0;
+#X connect 52 0 57 0;
+#X connect 53 0 54 0;
+#X connect 53 0 83 0;
+#X connect 55 0 48 0;
+#X connect 56 0 50 0;
+#X connect 57 0 58 0;
+#X connect 58 0 59 0;
+#X connect 59 0 71 0;
+#X connect 60 0 61 0;
+#X connect 61 0 64 0;
+#X connect 62 0 27 0;
+#X connect 63 0 60 0;
+#X connect 64 0 73 0;
+#X connect 65 0 56 0;
+#X connect 66 0 67 0;
+#X connect 67 0 68 1;
+#X connect 68 0 69 0;
+#X connect 68 0 63 0;
+#X connect 68 0 52 0;
+#X connect 69 0 70 0;
+#X connect 69 0 82 0;
+#X connect 71 0 72 0;
+#X connect 71 0 87 0;
+#X connect 73 0 41 0;
+#X connect 74 0 75 0;
+#X connect 75 0 76 0;
+#X connect 76 0 79 0;
+#X connect 77 0 76 1;
+#X connect 78 0 79 0;
+#X connect 79 0 81 0;
+#X connect 81 0 80 0;
+#X connect 81 0 84 0;
+#X connect 85 0 66 0;
+#X restore 595 387 pd guts;
+#X floatatom 242 50 4 1 8 0 inchannel inchannel-set inchannel;
+#X floatatom 626 267 6 0 0 0 - latency -;
+#X text 108 96 adjust gain here:;
+#X text 457 267 latency in milliseconds;
+#X text 571 245 THE ANSWER IS:;
+#X floatatom 528 143 4 0 0 0 - adc-db -;
+#X floatatom 527 92 4 0 0 0 - dac-db -;
+#X text 562 145 RMS amplitude in;
+#X text 564 93 RMS amplitude out;
+#X text 106 142 so that RMS amplitude in is between 60 and 70;
+#X text 108 121 (typically between -20 and 20);
+#X text 497 466 updated for Pd version 0.43;
+#X obj 228 259 bng 25 250 50 0 empty discontinuity empty 17 7 0 10
+-262144 -1 -1;
+#X text 40 235 discontinuity: this flashes if there are audio errors
+;
+#X text 67 343 To use this patch \, connect your audio output back
+to the audio input (any input and output channel from 1 to 8 \, but
+the input channel should agree wih the "inchannel" control at top).
+Then adjust gain so that "RMS amplitude in" is about 65 (anywhere from
+60 to 70 will do.) The latency is measured once per second. If there
+are interruptions in the audio the button above should flash (whether
+or not the audio system reports the error).;