#N canvas 879 399 800 364 10; #X obj 16 22 inlet~; #X obj 124 22 inlet~; #X obj 246 46 clip 0 1; #X obj 21 313 outlet~; #X obj 186 312 outlet~; #X obj 16 48 throw~ \$0-left; #X obj 124 48 throw~ \$0-right; #X obj 20 197 catch~ \$0-left; #X obj 185 192 catch~ \$0-right; #X obj 376 46 clip 0 1; #X text 340 223 SATURATION~; #X text 336 285 Attribution CC 4 \, formuls \, 2017; #X text 336 257 Saturation effect with waveshaping based on Pd audio example E05.chebychev; #X text 495 114 <- changes the waveshape; #N canvas 49 463 382 563 shaping-function_wavetable 0; #X obj 76 190 f; #X obj 105 190 + 1; #X msg 94 165 0; #X obj 76 139 until; #X obj 76 34 loadbang; #X obj 76 507 tabwrite \$0-tran-func; #X obj 76 309 -; #X obj 136 331 pow 2; #X obj 76 355 * -1; #X obj 76 377 pow 2; #X obj 76 399 * -1; #X obj 76 76 f 1; #X obj 83 55 r \$0-saturation; #X obj 202 295 random 100; #X obj 76 218 t f f b; #X obj 269 271 i; #X obj 76 97 t b b f b f f; #X obj 289 293 * 0.5; #X obj 76 254 moses 512; #X msg 76 287 \$1 512; #X obj 136 287 - 512; #X obj 136 309 / 512; #X obj 76 332 / 512; #X obj 76 535 array define \$0-tran-func 1024; #X msg 76 119 1024; #X obj 76 480 clip -1 1; #X obj 76 454 +; #X obj 76 432 t f f; #X obj 269 228 abs; #X floatatom 201 362 5 0 0 0 - - -, f 5; #X obj 269 250 * 100; #X obj 202 317 - 50; #X obj 202 341 * 0.005; #X msg 275 331 1 \$1; #X obj 275 353 -; #X obj 275 375 * 0.01; #X obj 275 397 max 0.002; #X floatatom 275 419 5 0 0 0 - - -, f 5; #X connect 0 0 1 0; #X connect 0 0 14 0; #X connect 1 0 0 1; #X connect 2 0 0 1; #X connect 3 0 0 0; #X connect 4 0 11 0; #X connect 6 0 22 0; #X connect 7 0 27 0; #X connect 8 0 9 0; #X connect 9 0 10 0; #X connect 10 0 27 0; #X connect 11 0 16 0; #X connect 12 0 11 0; #X connect 13 0 31 0; #X connect 14 0 18 0; #X connect 14 1 5 1; #X connect 14 2 13 0; #X connect 15 0 13 1; #X connect 15 0 17 0; #X connect 16 0 24 0; #X connect 16 1 2 0; #X connect 16 3 3 1; #X connect 16 4 9 1; #X connect 16 4 7 1; #X connect 16 5 33 0; #X connect 17 0 31 1; #X connect 18 0 19 0; #X connect 18 1 20 0; #X connect 19 0 6 0; #X connect 20 0 21 0; #X connect 21 0 7 0; #X connect 22 0 8 0; #X connect 24 0 3 0; #X connect 25 0 5 0; #X connect 26 0 25 0; #X connect 27 0 26 0; #X connect 27 1 28 0; #X connect 28 0 30 0; #X connect 30 0 15 0; #X connect 31 0 32 0; #X connect 32 0 26 1; #X connect 32 0 29 0; #X connect 33 0 34 0; #X connect 34 0 35 0; #X connect 35 0 36 0; #X connect 36 0 37 0; #X connect 36 0 32 1; #X restore 20 134 pd shaping-function_wavetable; #N canvas 1 98 426 235 upsampling+saturation 0; #X obj 29 37 inlet~; #X obj 171 37 inlet~; #X obj 29 208 outlet~; #X obj 172 208 outlet~; #X obj 257 39 block~ 1024 1 16; #N canvas 1 83 477 436 stereo_butterworth 0; #X obj 57 230 *~ 0.125; #X obj 57 253 rzero~ -1; #X obj 57 276 rzero~ -1; #X obj 57 299 rzero~ -1; #X obj 57 373 outlet~; #X obj 56 127 rpole~ 0.87467; #X obj 56 104 *~ 0.12532; #X obj 56 150 *~ 0.01668; #X obj 56 173 cpole~ 0.9293 0.10812; #X obj 56 199 cpole~ 0.9293 -0.10812; #X obj 57 27 inlet~; #X obj 277 230 *~ 0.125; #X obj 277 253 rzero~ -1; #X obj 277 276 rzero~ -1; #X obj 277 299 rzero~ -1; #X obj 277 373 outlet~; #X obj 276 127 rpole~ 0.87467; #X obj 276 104 *~ 0.12532; #X obj 276 150 *~ 0.01668; #X obj 276 173 cpole~ 0.9293 0.10812; #X obj 276 199 cpole~ 0.9293 -0.10812; #X obj 277 27 inlet~; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 2 0 3 0; #X connect 3 0 4 0; #X connect 5 0 7 0; #X connect 6 0 5 0; #X connect 7 0 8 0; #X connect 8 0 9 0; #X connect 8 1 9 1; #X connect 9 0 0 0; #X connect 10 0 6 0; #X connect 11 0 12 0; #X connect 12 0 13 0; #X connect 13 0 14 0; #X connect 14 0 15 0; #X connect 16 0 18 0; #X connect 17 0 16 0; #X connect 18 0 19 0; #X connect 19 0 20 0; #X connect 19 1 20 1; #X connect 20 0 11 0; #X connect 21 0 17 0; #X restore 28 97 pd stereo_butterworth; #N canvas 1 98 518 478 saturation~ 0; #X obj 75 209 *~; #X obj 75 331 hip~ 5; #X obj 74 309 lop~ 20000; #X obj 250 209 *~; #X obj 250 331 hip~ 5; #X obj 249 309 lop~ 20000; #X msg 266 132 \$1 10; #X obj 76 376 *~ 0.112; #X obj 249 375 *~ 0.112; #X obj 76 428 outlet~; #X obj 249 427 outlet~; #X obj 267 181 *~; #X text 333 324 <- bandlimiting?; #X obj 266 154 vline~; #X obj 250 282 tabread4~ \$0-tran-func; #X obj 75 282 tabread4~ \$0-tran-func; #X obj 76 85 inlet~; #X obj 249 81 inlet~; #X text 85 30 Where the saturation/shaping function is applied; #X obj 266 111 r \$0-input-gain; #X obj 75 234 *~ 512; #X obj 250 234 *~ 512; #X obj 250 258 +~ 513; #X obj 75 258 +~ 513; #X connect 0 0 20 0; #X connect 1 0 7 0; #X connect 2 0 1 0; #X connect 3 0 21 0; #X connect 4 0 8 0; #X connect 5 0 4 0; #X connect 6 0 13 0; #X connect 7 0 9 0; #X connect 8 0 10 0; #X connect 11 0 3 1; #X connect 11 0 0 1; #X connect 13 0 11 1; #X connect 13 0 11 0; #X connect 14 0 5 0; #X connect 15 0 2 0; #X connect 16 0 0 0; #X connect 17 0 3 0; #X connect 19 0 6 0; #X connect 20 0 23 0; #X connect 21 0 22 0; #X connect 22 0 14 0; #X connect 23 0 15 0; #X restore 29 125 pd saturation~ ------; #N canvas 1 78 477 436 stereo_butterworth 0; #X obj 57 230 *~ 0.125; #X obj 57 253 rzero~ -1; #X obj 57 276 rzero~ -1; #X obj 57 299 rzero~ -1; #X obj 57 373 outlet~; #X obj 56 127 rpole~ 0.87467; #X obj 56 104 *~ 0.12532; #X obj 56 150 *~ 0.01668; #X obj 56 173 cpole~ 0.9293 0.10812; #X obj 56 199 cpole~ 0.9293 -0.10812; #X obj 57 27 inlet~; #X obj 277 230 *~ 0.125; #X obj 277 253 rzero~ -1; #X obj 277 276 rzero~ -1; #X obj 277 299 rzero~ -1; #X obj 277 373 outlet~; #X obj 276 127 rpole~ 0.87467; #X obj 276 104 *~ 0.12532; #X obj 276 150 *~ 0.01668; #X obj 276 173 cpole~ 0.9293 0.10812; #X obj 276 199 cpole~ 0.9293 -0.10812; #X obj 277 27 inlet~; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 2 0 3 0; #X connect 3 0 4 0; #X connect 5 0 7 0; #X connect 6 0 5 0; #X connect 7 0 8 0; #X connect 8 0 9 0; #X connect 8 1 9 1; #X connect 9 0 0 0; #X connect 10 0 6 0; #X connect 11 0 12 0; #X connect 12 0 13 0; #X connect 13 0 14 0; #X connect 14 0 15 0; #X connect 16 0 18 0; #X connect 17 0 16 0; #X connect 18 0 19 0; #X connect 19 0 20 0; #X connect 19 1 20 1; #X connect 20 0 11 0; #X connect 21 0 17 0; #X restore 28 151 pd stereo_butterworth; #X connect 0 0 5 0; #X connect 1 0 5 1; #X connect 5 0 6 0; #X connect 5 1 6 1; #X connect 6 0 7 0; #X connect 6 1 7 1; #X connect 7 0 2 0; #X connect 7 1 3 0; #X restore 21 231 pd upsampling+saturation; #X obj 376 20 inlet saturation; #X obj 246 68 s \$0-input-gain; #X obj 246 20 inlet input-gain; #X obj 376 113 s \$0-saturation; #X msg 376 68 1 \$1; #X obj 376 90 -; #X connect 0 0 5 0; #X connect 1 0 6 0; #X connect 2 0 17 0; #X connect 7 0 15 0; #X connect 8 0 15 1; #X connect 9 0 20 0; #X connect 15 0 3 0; #X connect 15 1 4 0; #X connect 16 0 9 0; #X connect 18 0 2 0; #X connect 20 0 21 0; #X connect 21 0 19 0;