#N canvas 417 69 677 443 10; #X obj 167 237 *~ 1; #X obj 167 289 dac~; #X floatatom 190 218 5 0 0 0 - centerring-gain -; #X msg 18 330 \; pd dsp \$1; #X obj 18 313 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 ; #X obj 17 207 hsl 128 15 0 1.5 0 0 centerring-gain empty output_gain -2 -6 0 8 -79789 -1 -1 447 1; #N canvas 0 22 523 358 messages 0; #X obj 132 286 outlet; #X text 302 155 turn on invert; #X msg 132 223 pad \$1; #X floatatom 132 112 5 0 0 0 - - -; #X text 227 108 is turned on; #X obj 281 156 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1; #X msg 281 178 invert \$1; #X text 227 94 pad affects the gain only when "invert"; #X obj 132 142 ampdb; #X obj 132 67 loadbang; #X msg 132 90 -32; #X floatatom 132 167 5 0 0 0 - - -; #X obj 257 256 fftease-system; #X connect 2 0 0 0; #X connect 3 0 8 0; #X connect 5 0 6 0; #X connect 6 0 0 0; #X connect 8 0 11 0; #X connect 9 0 10 0; #X connect 10 0 3 0; #X connect 11 0 2 0; #X connect 12 0 0 0; #X restore 448 167 pd messages; #X obj 18 240 hsl 128 15 0.15 1 0 0 cod-scaling-exponent empty scaling_exponent -2 -6 0 8 -88868 -1 -1 800 1; #X floatatom 236 121 5 0 0 0 - cod-inverse-threshold -; #X floatatom 236 163 5 0 0 0 - - -; #N canvas 990 218 508 397 playsound1 0; #X obj 31 194 soundfiler; #X obj 31 160 openpanel; #N canvas 0 22 450 300 graph1 0; #X array taint-sound1 17642 float 2; #X coords 0 1 17641 -1 200 140 1; #X restore 237 13 graph; #X msg 31 131 bang; #X obj 227 284 outlet~; #X msg 227 244 bang; #X obj 348 228 spigot; #X obj 385 205 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1; #X text 63 132 open the sound; #X text 133 244 then play it; #X text 304 190 loop if you like; #X text 316 205 comment; #X msg 31 177 read -resize \$1 taint-sound1; #X obj 227 268 tabplay~ taint-sound1; #X connect 1 0 12 0; #X connect 3 0 1 0; #X connect 5 0 13 0; #X connect 6 0 5 0; #X connect 7 0 6 1; #X connect 12 0 0 0; #X connect 13 0 4 0; #X connect 13 1 6 0; #X restore 167 22 pd playsound1; #N canvas 990 218 512 401 playsound2 0; #X obj 31 194 soundfiler; #X obj 31 160 openpanel; #X msg 31 131 bang; #X obj 227 284 outlet~; #X msg 227 244 bang; #X obj 348 228 spigot; #X obj 385 205 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1; #X text 63 132 open the sound; #X text 133 244 then play it; #X text 304 190 loop if you like; #X text 316 205 comment; #N canvas 0 22 450 300 graph2 0; #X array taint-sound2 133504 float 2; #X coords 0 1 133503 -1 200 140 1; #X restore 216 15 graph; #X msg 31 177 read -resize \$1 taint-sound2; #X obj 227 268 tabplay~ taint-sound2; #X connect 1 0 12 0; #X connect 2 0 1 0; #X connect 4 0 13 0; #X connect 5 0 4 0; #X connect 6 0 5 1; #X connect 12 0 0 0; #X connect 13 0 3 0; #X connect 13 1 5 0; #X restore 190 43 pd playsound2; #X floatatom 213 91 5 0.35 2 0 - cod-scaling-exponent -; #X obj 19 278 hsl 128 15 -90 0 0 0 cod-inverse-threshold empty inverse_threshold -2 -6 0 8 -88868 -1 -1 6100 1; #X text 280 136 but only when "invert" is turned on); #X text 213 73 scaling exponent (lower values increase distortion) ; #X text 294 31 <- load and loop two soundfiles to hear effect; #X msg 14 123 0.1 0.3 -36; #X obj 14 139 unpack f f f; #X obj 14 107 loadbang; #X text 275 120 inverse threshold (lower values intensify effect; #N canvas 376 316 478 328 taint-block 0; #X obj 163 185 outlet~; #X obj 163 38 inlet~; #X obj 269 107 inlet; #X obj 201 81 inlet; #X obj 221 98 inlet; #X obj 182 65 inlet~; #X obj 163 128 taint~; #X obj 233 219 block~ 512; #X connect 1 0 6 0; #X connect 2 0 6 0; #X connect 3 0 6 2; #X connect 4 0 6 3; #X connect 5 0 6 1; #X connect 6 0 0 0; #X restore 167 183 pd taint-block; #X obj 236 141 ampdb; #X text 221 262 taint~ multiplies the spectra of two input signals. Multiplication of spectra can cause significant drops in the amplitude of the output signal. The inverse option allows division of the input spectra. Division requires the use of a threshold to avert division by zero. Also \, signal division will cause massive amplitude gains. Be careful of your ears and equipment. Start the amplitude very low (-100dB) and slowly work up to an acceptable level. A pad is provided to balance gain between normal and invert options.; #X connect 0 0 1 0; #X connect 0 0 1 1; #X connect 2 0 0 1; #X connect 4 0 3 0; #X connect 6 0 21 4; #X connect 8 0 22 0; #X connect 9 0 21 3; #X connect 10 0 21 0; #X connect 11 0 21 1; #X connect 12 0 21 2; #X connect 17 0 18 0; #X connect 18 0 5 0; #X connect 18 1 7 0; #X connect 18 2 13 0; #X connect 19 0 17 0; #X connect 21 0 0 0; #X connect 22 0 9 0;