#N canvas 73 190 702 512 12; #X obj 64 65 osc~ 440; #X obj 64 283 dac~; #X text 145 66 <-- 440 Hz. sine wave at full blast; #X msg 431 7 \; pd dsp 1; #X msg 514 7 \; pd dsp 0; #X text 456 45 ON; #X text 534 43 OFF; #X text 164 18 CONTROLLING AMPLITUDE; #X text 35 327 Amplitudes of audio signals can have any reasonable range \, but when you output a signal via the dac~ object \, the samples should range between -1 and +1. Values out of that range will be "clipped." ; #X obj 64 202 *~ 0; #X floatatom 107 165 0 0 0 0 - - -; #X obj 95 132 dbtorms; #X floatatom 95 100 0 0 80 0 - - -; #X text 141 100 <-- set amplitude here in dB; #X text 211 133 <-- this converts dB to linear units; #X text 210 164 <-- this shows the linear gain; #X text 116 204 <-- multiply the sine wave by the gain \, reducing its amplitude. You can also use the "*~" object to multiply two signals. The "0" argument here instructs it that we'll just send it messages to set the multiplier.; #X text 35 396 Here we calculate a gain for the multiplier (*~) using a "dbtorms" object (acronym for "dB to RMS"). 100 dB is normalized to one \, and zero dB artificially outputs a true 0; #X text 34 452 Pd assumes you have a two channel audio system unless you tell it otherwise.; #X text 440 486 updated for Pd version 0.33; #X text 114 282 <-- and out. We're sending to both channels now.; #X connect 0 0 9 0; #X connect 9 0 1 0; #X connect 9 0 1 1; #X connect 11 0 9 1; #X connect 11 0 10 0; #X connect 12 0 11 0;