#N canvas 0 0 757 616 12; #X obj 516 522 t b; #X obj 516 469 f; #X obj 516 547 f; #X msg 630 546 0; #X obj 516 499 moses 1; #X obj 630 518 t b f; #X obj 596 479 moses 1; #X obj 30 117 dbtorms; #X obj 86 207 inlet~; #X msg 341 285 \; pd dsp 1; #X obj 30 207 line~; #X obj 64 241 *~; #X obj 64 271 dac~; #X obj 30 147 pack 0 50; #X text 113 183 audio in; #X text 301 496 test if less than 1 -->; #X text 267 523 if true convert to bang -->; #X text 101 116 <-- convert from dB to linear units; #X floatatom 341 221 3 0 100 0 dB - -; #X obj 516 449 bng 15 250 50 0 empty empty mute -38 7 0 12 -262144 -1 -1; #X text 119 146 <-- make a ramp to avoid clicks or zipper noise; #X obj 175 208 inlet~; #X obj 154 240 *~; #X text 502 399 MUTE logic:; #X obj 341 193 r \$0-master-lvl; #X obj 516 573 s \$0-master-lvl; #X obj 356 248 s \$0-master-out; #X obj 30 91 r \$0-master-out; #X obj 596 450 r \$0-master-out; #X text 60 10 Level control abstraction \, used in many of the Pd example patches. The "level" and "mute" controls show up on the parent \, calling patch.; #X text 229 549 previous nonzero master-lvl -->; #X text 301 453 recall previous; #X text 301 471 value of master-lvl -->; #X text 79 295 automatically start DSP -->; #X connect 0 0 2 0; #X connect 1 0 4 0; #X connect 2 0 25 0; #X connect 3 0 25 0; #X connect 4 0 0 0; #X connect 4 1 5 0; #X connect 5 0 3 0; #X connect 6 1 2 1; #X connect 7 0 13 0; #X connect 8 0 11 1; #X connect 10 0 22 0; #X connect 10 0 11 0; #X connect 11 0 12 0; #X connect 13 0 10 0; #X connect 18 0 9 0; #X connect 18 0 26 0; #X connect 19 0 1 0; #X connect 21 0 22 1; #X connect 22 0 12 1; #X connect 24 0 18 0; #X connect 27 0 7 0; #X connect 28 0 1 1; #X connect 28 0 6 0; #X coords 0 0 1 1 65 55 1;