#N canvas 2 52 584 580 12;
#X obj 336 490 t b;
#X obj 336 437 f;
#X obj 336 515 f;
#X msg 450 514 0;
#X obj 336 467 moses 1;
#X obj 450 486 t b f;
#X obj 416 447 moses 1;
#X obj 29 97 dbtorms;
#X obj 114 192 inlet~;
#X msg 444 236 \; pd dsp 1;
#X obj 28 202 line~;
#X obj 64 242 *~;
#X obj 64 272 dac~;
#X obj 29 127 pack 0 50;
#X text 121 146 audio in;
#X text 121 464 test if less than 1 -->;
#X text 87 491 if true convert to bang -->;
#X text 100 96 <-- convert from dB to linear units;
#X floatatom 323 219 3 0 100 0 dB - -, f 3;
#X obj 337 238 bng 15 250 50 0 empty empty mute -38 7 0 12 -262144
-1 -1;
#X text 118 126 <-- make a ramp to avoid clicks or zipper noise;
#X text 356 378 MUTE logic:;
#X obj 323 174 r \$0-master-lvl;
#X obj 336 541 s \$0-master-lvl;
#X obj 323 279 s \$0-master-out;
#X obj 29 71 r \$0-master-out;
#X obj 416 418 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 49 517 previous nonzero master-lvl -->;
#X text 121 421 recall previous;
#X text 121 439 value of master-lvl -->;
#X text 39 319 automatically start DSP -->;
#X obj 114 221 hip~ 3;
#X connect 0 0 2 0;
#X connect 1 0 4 0;
#X connect 2 0 23 0;
#X connect 3 0 23 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 32 0;
#X connect 10 0 11 0;
#X connect 11 0 12 0;
#X connect 11 0 12 1;
#X connect 13 0 10 0;
#X connect 18 0 9 0;
#X connect 18 0 24 0;
#X connect 19 0 1 0;
#X connect 22 0 18 0;
#X connect 25 0 7 0;
#X connect 26 0 1 1;
#X connect 26 0 6 0;
#X connect 32 0 11 1;
#X coords 0 0 1 1 55 55 1 300 200;
