├── README.md ├── misc ├── fltr.g.-1.pd ├── fltr.g.plus.pd ├── fltr.g.z-1.pd ├── fltr.description.pd ├── fltr.difference.pd ├── fltr.to.pi.pd ├── fltr.loop.for.pd ├── fltr.to.coeff.pd ├── fltr.response.phase.pd ├── fltr.output~.pd ├── fltr.response.amplitude.pd └── fltr.spectrogram~.pd ├── onepole ├── fltr.onepole.difference.eq.pd ├── fltr.onepole.amplitude.eq.pd ├── fltr.onepole.phase.eq.pd ├── fltr.onepole~.pd ├── fltr.onepole.difference.pd ├── fltr.onepole~-help.pd ├── fltr.onepole.amplitude.pd └── fltr.onepole.phase.pd ├── onezero ├── fltr.onezero.difference.eq.pd ├── fltr.onezero.amplitude.eq.pd ├── fltr.onezero.phase.eq.pd ├── fltr.onezero~.pd ├── fltr.onezero.difference.pd ├── fltr.onezero~-help.pd ├── fltr.onezero.phase.pd └── fltr.onezero.amplitude.pd ├── biquad ├── fltr.twopole.phase.eq.pd ├── fltr.twopole.amplitude.eq.pd ├── fltr.biquad.difference.eq.pd ├── fltr.biquad.difference.pd ├── fltr.twopole.phase.pd ├── fltr.biquad~-help.pd ├── fltr.twopole.amplitude.pd └── fltr.biquad~.pd ├── twopole ├── fltr.twopole.phase.eq.pd ├── fltr.twopole.amplitude.eq.pd ├── fltr.twopole.difference.eq.pd ├── fltr.twopole.difference.pd ├── fltr.twopole~.pd ├── fltr.twopole~-help.pd ├── fltr.twopole.phase.pd └── fltr.twopole.amplitude.pd ├── twozero ├── fltr.twozero.phase.eq.pd ├── fltr.twozero.amplitude.eq.pd ├── fltr.twozero.difference.eq.pd ├── fltr.twozero~.pd ├── fltr.twozero.difference.pd ├── fltr.twozero~-help.pd ├── fltr.twozero.phase.pd └── fltr.twozero.amplitude.pd ├── ftr.dephase~-help.pd └── ftr.scope~.pd /README.md: -------------------------------------------------------------------------------- 1 | # Fltr 2 | A set of tutorials and abstractions about filtering in Pure Data 3 | -------------------------------------------------------------------------------- /misc/fltr.g.-1.pd: -------------------------------------------------------------------------------- 1 | #N canvas 419 313 1007 375 10; 2 | #X text 119 102 -1; 3 | #X coords 0 -1 1 1 34 34 2 100 100; 4 | -------------------------------------------------------------------------------- /misc/fltr.g.plus.pd: -------------------------------------------------------------------------------- 1 | #N canvas 106 312 1007 375 16; 2 | #X text 111 104 +; 3 | #X coords 0 -1 1 1 34 34 2 100 100; 4 | -------------------------------------------------------------------------------- /misc/fltr.g.z-1.pd: -------------------------------------------------------------------------------- 1 | #N canvas 106 312 1007 375 16; 2 | #X text 109 106 Ζ; 3 | #X obj 100 100 fltr.g.-1; 4 | #X coords 0 -1 1 1 34 34 2 100 100; 5 | -------------------------------------------------------------------------------- /onepole/fltr.onepole.difference.eq.pd: -------------------------------------------------------------------------------- 1 | #N canvas 359 226 747 523 10; 2 | #X text 107 13 b0 * x(n) - a1 * y(n-1); 3 | #X coords 0 -1 1 1 346 40 2 0 0; 4 | -------------------------------------------------------------------------------- /onezero/fltr.onezero.difference.eq.pd: -------------------------------------------------------------------------------- 1 | #N canvas 359 226 747 523 10; 2 | #X text 107 13 b0 * x(n) + b1 * x(n-1); 3 | #X coords 0 -1 1 1 346 40 2 0 0; 4 | -------------------------------------------------------------------------------- /onepole/fltr.onepole.amplitude.eq.pd: -------------------------------------------------------------------------------- 1 | #N canvas 359 226 747 523 10; 2 | #X text 54 13 |b0| / √(1 + a1^2 + 2 * a1 * cos(ωτ)); 3 | #X coords 0 -1 1 1 346 40 2 0 0; 4 | -------------------------------------------------------------------------------- /onezero/fltr.onezero.amplitude.eq.pd: -------------------------------------------------------------------------------- 1 | #N canvas 359 226 747 523 10; 2 | #X text 54 13 √(b0^2 + b1^2 + 2 * b0 * b1 * cos(ωτ)); 3 | #X coords 0 -1 1 1 346 40 2 0 0; 4 | -------------------------------------------------------------------------------- /onezero/fltr.onezero.phase.eq.pd: -------------------------------------------------------------------------------- 1 | #N canvas 359 226 747 523 10; 2 | #X text 42 11 atan((-b1 * sin(ωτ)) / (b0 + b1 * cos(ωτ)); 3 | #X coords 0 -1 1 1 346 40 2 0 0; 4 | -------------------------------------------------------------------------------- /misc/fltr.description.pd: -------------------------------------------------------------------------------- 1 | #N canvas 295 227 731 553 10; 2 | #N canvas 0 22 450 300 (subpatch) 0; 3 | #X restore 100 122 pd; 4 | #X text 233 103 Description; 5 | #X coords 0 -1 1 1 346 260 2 100 100; 6 | -------------------------------------------------------------------------------- /biquad/fltr.twopole.phase.eq.pd: -------------------------------------------------------------------------------- 1 | #N canvas 264 477 747 523 10; 2 | #X text 65 6 atan((-b1 * sin(ωτ) - b2 * sin(2ωτ)) / (b0 + b1 * 3 | cos(ωτ) + b2 * cos(2ωτ)), f 37; 4 | #X coords 0 -1 1 1 346 40 2 0 0; 5 | -------------------------------------------------------------------------------- /onepole/fltr.onepole.phase.eq.pd: -------------------------------------------------------------------------------- 1 | #N canvas 359 226 747 523 10; 2 | #X text 65 6 atan((-b1 * sin(ωτ) - b2 * sin(2ωτ)) / (1 + b1 * cos(ωτ) 3 | + b2 * cos(2ωτ)), f 36; 4 | #X coords 0 -1 1 1 346 40 2 0 0; 5 | -------------------------------------------------------------------------------- /twopole/fltr.twopole.phase.eq.pd: -------------------------------------------------------------------------------- 1 | #N canvas 264 477 747 523 10; 2 | #X text 65 6 atan((-b1 * sin(ωτ) - b2 * sin(2ωτ)) / (b0 + b1 * 3 | cos(ωτ) + b2 * cos(2ωτ)), f 37; 4 | #X coords 0 -1 1 1 346 40 2 0 0; 5 | -------------------------------------------------------------------------------- /twozero/fltr.twozero.phase.eq.pd: -------------------------------------------------------------------------------- 1 | #N canvas 264 477 747 523 10; 2 | #X text 65 6 atan((-b1 * sin(ωτ) - b2 * sin(2ωτ)) / (b0 + b1 * 3 | cos(ωτ) + b2 * cos(2ωτ)), f 37; 4 | #X coords 0 -1 1 1 346 40 2 0 0; 5 | -------------------------------------------------------------------------------- /biquad/fltr.twopole.amplitude.eq.pd: -------------------------------------------------------------------------------- 1 | #N canvas 281 452 747 523 10; 2 | #X text 42 5 b0 / √((1 + a1 * cos(ωτ) + a2 * cos(2ωτ))^2 + (-a1 3 | * sin(ωτ) - a2 * sin(2ωτ))^2), f 44; 4 | #X coords 0 -1 1 1 346 40 2 0 0; 5 | -------------------------------------------------------------------------------- /twopole/fltr.twopole.amplitude.eq.pd: -------------------------------------------------------------------------------- 1 | #N canvas 281 452 747 523 10; 2 | #X text 42 5 b0 / √((1 + a1 * cos(ωτ) + a2 * cos(2ωτ))^2 + (-a1 3 | * sin(ωτ) - a2 * sin(2ωτ))^2), f 44; 4 | #X coords 0 -1 1 1 346 40 2 0 0; 5 | -------------------------------------------------------------------------------- /twozero/fltr.twozero.amplitude.eq.pd: -------------------------------------------------------------------------------- 1 | #N canvas 281 452 747 523 10; 2 | #X text 54 5 √((b0^2 + b1 * cos(ωτ) + b2 * cos(2ωτ))^2 + (-b1 3 | * sin(ωτ) - b2 * sin(2ωτ))^2), f 41; 4 | #X coords 0 -1 1 1 346 40 2 0 0; 5 | -------------------------------------------------------------------------------- /misc/fltr.difference.pd: -------------------------------------------------------------------------------- 1 | #N canvas 295 227 731 553 10; 2 | #X obj 100 162 fltr.\$1.difference; 3 | #X obj 100 122 fltr.\$1.difference.eq; 4 | #X text 196 103 Difference Equation Y(n); 5 | #X coords 0 -1 1 1 346 260 2 100 100; 6 | -------------------------------------------------------------------------------- /twopole/fltr.twopole.difference.eq.pd: -------------------------------------------------------------------------------- 1 | #N canvas 359 226 747 523 10; 2 | #X text 301 497 Difference equation : y(n) = b0 * x(n) + b1 * x(n-1) 3 | + b2 * x(n-2), f 66; 4 | #X text 67 13 b0 * x(n) - a1 * y(n-1) - a2 * x(y-2); 5 | #X coords 0 -1 1 1 346 40 2 0 0; 6 | -------------------------------------------------------------------------------- /twozero/fltr.twozero.difference.eq.pd: -------------------------------------------------------------------------------- 1 | #N canvas 359 226 747 523 10; 2 | #X text 301 497 Difference equation : y(n) = b0 * x(n) + b1 * x(n-1) 3 | + b2 * x(n-2), f 66; 4 | #X text 67 13 b0 * x(n) + b1 * x(n-1) + b2 * x(n-2); 5 | #X coords 0 -1 1 1 346 40 2 0 0; 6 | -------------------------------------------------------------------------------- /misc/fltr.to.pi.pd: -------------------------------------------------------------------------------- 1 | #N canvas 0 22 450 300 12; 2 | #X obj 125 28 inlet; 3 | #X obj 125 53 + 1; 4 | #X obj 125 78 / \$1; 5 | #X obj 125 103 * 3.14159; 6 | #X obj 125 128 outlet; 7 | #X connect 0 0 1 0; 8 | #X connect 1 0 2 0; 9 | #X connect 2 0 3 0; 10 | #X connect 3 0 4 0; 11 | -------------------------------------------------------------------------------- /biquad/fltr.biquad.difference.eq.pd: -------------------------------------------------------------------------------- 1 | #N canvas 700 254 747 523 10; 2 | #X text 301 497 Difference equation : y(n) = b0 * x(n) + b1 * x(n-1) 3 | + b2 * x(n-2), f 66; 4 | #X text 58 7 b0 * x(n) + b1 * x(n-1) + b2 * x(n-2) - a1 * y(n-1) - 5 | a2 * x(y-2), f 38; 6 | #X coords 0 -1 1 1 346 40 2 0 0; 7 | -------------------------------------------------------------------------------- /onezero/fltr.onezero~.pd: -------------------------------------------------------------------------------- 1 | #N canvas 0 22 450 300 12; 2 | #X obj 97 50 inlet~; 3 | #X obj 97 170 outlet~; 4 | #X obj 222 50 inlet~; 5 | #X obj 222 75 *~ -1; 6 | #X obj 97 145 rzero~, f 16; 7 | #X obj 158 50 inlet~; 8 | #X obj 97 105 *~, f 8; 9 | #X connect 0 0 6 0; 10 | #X connect 2 0 3 0; 11 | #X connect 3 0 4 1; 12 | #X connect 4 0 1 0; 13 | #X connect 5 0 6 1; 14 | #X connect 6 0 4 0; 15 | -------------------------------------------------------------------------------- /onepole/fltr.onepole~.pd: -------------------------------------------------------------------------------- 1 | #N canvas 437 63 450 300 12; 2 | #X obj 97 50 inlet~; 3 | #X obj 97 170 outlet~; 4 | #X obj 222 50 inlet~; 5 | #X obj 222 75 *~ -1; 6 | #X obj 158 50 inlet~; 7 | #X obj 97 105 *~, f 8; 8 | #X obj 97 145 rpole~, f 16; 9 | #X connect 0 0 5 0; 10 | #X connect 2 0 3 0; 11 | #X connect 3 0 6 1; 12 | #X connect 4 0 5 1; 13 | #X connect 5 0 6 0; 14 | #X connect 6 0 1 0; 15 | -------------------------------------------------------------------------------- /onezero/fltr.onezero.difference.pd: -------------------------------------------------------------------------------- 1 | #N canvas 697 435 367 217 12; 2 | #X text 238 74 ↓; 3 | #X text 172 39 b0; 4 | #X text 144 101 ––––⊗–––→; 5 | #X text 238 63 |; 6 | #X text 82 95 |; 7 | #X text 82 84 |; 8 | #X text 82 73 |; 9 | #X text 87 55 –––––––––––⊗––––––– 10 | ; 11 | #X text 82 62 |; 12 | #X text 172 119 b1; 13 | #X text 260 101 –→ y(n); 14 | #X text 22 101 x(n)–––––→; 15 | #X obj 110 94 ../misc/fltr.g.z-1; 16 | #X obj 226 94 ./misc/fltr.g.plus; 17 | #X coords 0 -1 1 1 346 198 2 2 2; 18 | -------------------------------------------------------------------------------- /onepole/fltr.onepole.difference.pd: -------------------------------------------------------------------------------- 1 | #N canvas 689 191 370 219 12; 2 | #X text 213 80 ↓; 3 | #X text 213 130 |; 4 | #X text 155 84 ↑; 5 | #X text 97 46 b0; 6 | #X text 154 120 ⊗; 7 | #X text 155 110 |; 8 | #X text 127 120 -a1; 9 | #X text 155 131 |; 10 | #X text 45 61 x(n)–––⊗––→; 11 | #X text 177 61 ––––––––––→ y(n); 12 | #X text 213 69 |; 13 | #X text 160 136 –––––––; 14 | #X text 155 98 |; 15 | #X obj 142 54 ../misc/fltr.g.plus; 16 | #X obj 201 98 ../misc/fltr.g.z-1; 17 | #X coords 0 -1 1 1 346 198 2 2 2; 18 | -------------------------------------------------------------------------------- /misc/fltr.loop.for.pd: -------------------------------------------------------------------------------- 1 | #N canvas 403 271 450 300 12; 2 | #X obj 94 177 f \$1, f 7; 3 | #X obj 147 149 f \$1; 4 | #X obj 94 98 f \$2; 5 | #X obj 94 149 until; 6 | #X obj 164 177 + \$3; 7 | #X obj 94 123 - \$1; 8 | #X obj 94 45 inlet; 9 | #X obj 94 70 t b b, f 7; 10 | #X obj 94 202 outlet; 11 | #X connect 0 0 4 0; 12 | #X connect 0 0 8 0; 13 | #X connect 1 0 0 1; 14 | #X connect 2 0 5 0; 15 | #X connect 3 0 0 0; 16 | #X connect 4 0 0 1; 17 | #X connect 5 0 3 0; 18 | #X connect 6 0 7 0; 19 | #X connect 7 0 2 0; 20 | #X connect 7 1 1 0; 21 | -------------------------------------------------------------------------------- /twozero/fltr.twozero~.pd: -------------------------------------------------------------------------------- 1 | #N canvas 725 179 479 402 12; 2 | #X obj 97 50 inlet~; 3 | #X obj 227 50 inlet~; 4 | #X obj 158 50 inlet~; 5 | #X obj 97 105 *~, f 8; 6 | #X obj 292 50 inlet~; 7 | #X obj 97 325 outlet~; 8 | #X obj 126 142 rzero_rev~ 0; 9 | #X obj 126 170 *~, f 13; 10 | #X obj 292 95 *~ 1; 11 | #X obj 143 203 rzero_rev~ 0; 12 | #X obj 143 231 *~, f 19; 13 | #X obj 227 75 *~ 1; 14 | #X obj 97 285 +~, f 4; 15 | #X connect 0 0 3 0; 16 | #X connect 1 0 11 0; 17 | #X connect 2 0 3 1; 18 | #X connect 3 0 6 0; 19 | #X connect 3 0 12 0; 20 | #X connect 4 0 8 0; 21 | #X connect 6 0 7 0; 22 | #X connect 6 0 9 0; 23 | #X connect 7 0 12 1; 24 | #X connect 8 0 10 1; 25 | #X connect 9 0 10 0; 26 | #X connect 10 0 12 1; 27 | #X connect 11 0 7 1; 28 | #X connect 12 0 5 0; 29 | -------------------------------------------------------------------------------- /twopole/fltr.twopole.difference.pd: -------------------------------------------------------------------------------- 1 | #N canvas 283 339 460 215 12; 2 | #X text 73 32 b0; 3 | #X text 246 32 ↓; 4 | #X text 246 21 |; 5 | #X text 246 116 ↓; 6 | #X text 246 93 |; 7 | #X text 246 82 |; 8 | #X text 246 105 |; 9 | #X text 246 166 |; 10 | #X text 246 177 |; 11 | #X text 132 37 ↑; 12 | #X text 132 61 |; 13 | #X text 132 50 |; 14 | #X text 132 72 |; 15 | #X text 132 121 ↑; 16 | #X text 132 145 |; 17 | #X text 132 134 |; 18 | #X text 132 156 |; 19 | #X text 132 167 |; 20 | #X text 132 178 |; 21 | #X text 154 13 ––––––––––––––––→ 22 | y(n); 23 | #X text 22 13 x(n)–––⊗––→; 24 | #X text 182 80 -a1; 25 | #X text 178 165 -a2; 26 | #X text 152 98 ←–––⊗––––––; 27 | #X text 136 182 ––––––⊗–––––––; 28 | #X obj 120 6 ./misc/fltr.g.plus; 29 | #X obj 119 89 ./misc/fltr.g.plus; 30 | #X obj 241 134 ../misc/fltr.g.z-1; 31 | #X obj 236 50 ../misc/fltr.g.z-1; 32 | #X coords 0 -1 1 1 346 198 2 2 2; 33 | -------------------------------------------------------------------------------- /twozero/fltr.twozero.difference.pd: -------------------------------------------------------------------------------- 1 | #N canvas 283 339 367 217 12; 2 | #X text 260 13 –→ y(n); 3 | #X text 171 84 b1; 4 | #X text 172 31 b0; 5 | #X text 115 32 ↓; 6 | #X text 115 21 |; 7 | #X text 22 13 x(n)–––––––––––––––⊗–––→ 8 | ; 9 | #X text 115 116 ↓; 10 | #X text 115 93 |; 11 | #X text 115 82 |; 12 | #X text 115 105 |; 13 | #X text 118 98 –––––––⊗–––→; 14 | #X text 115 166 |; 15 | #X text 115 177 |; 16 | #X text 238 37 ↑; 17 | #X text 238 61 |; 18 | #X text 238 50 |; 19 | #X text 238 72 |; 20 | #X text 238 121 ↑; 21 | #X text 238 145 |; 22 | #X text 238 134 |; 23 | #X text 238 156 |; 24 | #X text 238 167 |; 25 | #X text 238 178 |; 26 | #X text 118 182 –––––––⊗–––––––; 27 | #X text 171 168 b2; 28 | #X obj 225 6 ./misc/fltr.g.plus; 29 | #X obj 105 50 ../misc/fltr.g.z-1; 30 | #X obj 225 89 ./misc/fltr.g.plus; 31 | #X obj 110 134 ../misc/fltr.g.z-1; 32 | #X coords 0 -1 1 1 346 198 2 2 2; 33 | -------------------------------------------------------------------------------- /onepole/fltr.onepole~-help.pd: -------------------------------------------------------------------------------- 1 | #N canvas 401 27 741 778 10; 2 | #X declare -path ../misc -path ../onepole; 3 | #X obj 153 80 pack f 20; 4 | #X obj 153 105 line~; 5 | #X obj 82 80 pack f 20; 6 | #X obj 82 105 line~; 7 | #X obj 12 80 noise~; 8 | #X obj 82 61 nbx 5 14 0 1e+37 0 0 \$0-b0 \$0-b0i b0 0 -8 0 10 -262144 9 | -1 -1 1 256; 10 | #X obj 153 61 nbx 5 14 -1 1 0 0 \$0-a1 \$0-a1i a1 0 -8 0 10 -262144 11 | -1 -1 0.95 256; 12 | #N canvas 0 22 450 300 init 0; 13 | #X obj 33 97 s \$0-b0i; 14 | #X msg 33 69 1; 15 | #X obj 32 37 loadbang; 16 | #X obj 105 96 s \$0-a1i; 17 | #X msg 103 70 0.95; 18 | #X connect 1 0 0 0; 19 | #X connect 2 0 1 0; 20 | #X connect 2 0 4 0; 21 | #X connect 4 0 3 0; 22 | #X restore 293 11 pd init; 23 | #X text 9 12 The One-Pole filter; 24 | #X msg 268 104 \; pd dsp 0; 25 | #X msg 268 71 \; pd dsp 1; 26 | #X obj 12 134 fltr.onepole~, f 24; 27 | #X obj 378 499 fltr.response.phase \$0 onepole; 28 | #X obj 12 499 fltr.response.amplitude \$0 onepole 0 10; 29 | #X obj 12 219 fltr.spectrogram~; 30 | #X obj 17 158 fltr.output~; 31 | #X obj 378 219 fltr.difference onepole; 32 | #X obj 455 4 declare -path ../misc -path ../onepole; 33 | #X connect 0 0 1 0; 34 | #X connect 1 0 11 2; 35 | #X connect 2 0 3 0; 36 | #X connect 3 0 11 1; 37 | #X connect 4 0 11 0; 38 | #X connect 5 0 2 0; 39 | #X connect 6 0 0 0; 40 | #X connect 11 0 14 0; 41 | #X connect 11 0 15 0; 42 | -------------------------------------------------------------------------------- /onezero/fltr.onezero~-help.pd: -------------------------------------------------------------------------------- 1 | #N canvas 534 23 846 778 10; 2 | #X declare -path ../misc -path ../onezero; 3 | #X text 12 13 The One-Zero filter; 4 | #X obj 147 80 pack f 20; 5 | #X obj 147 105 line~; 6 | #X obj 79 80 pack f 20; 7 | #X obj 79 105 line~; 8 | #X obj 12 80 noise~; 9 | #X obj 12 134 fltr.onezero~, f 23; 10 | #N canvas 0 22 450 300 init 0; 11 | #X obj 33 97 s \$0-b0i; 12 | #X msg 33 69 1; 13 | #X obj 32 37 loadbang; 14 | #X msg 103 70 0.95; 15 | #X obj 105 96 s \$0-b1i; 16 | #X connect 1 0 0 0; 17 | #X connect 2 0 1 0; 18 | #X connect 2 0 3 0; 19 | #X connect 3 0 4 0; 20 | #X restore 290 12 pd init; 21 | #X obj 79 61 nbx 5 14 0 1e+37 0 0 \$0-b0 \$0-b0i b0 0 -8 0 10 -262144 22 | -1 -1 1 256; 23 | #X obj 147 61 nbx 5 14 -1 1 0 0 \$0-b1 \$0-b1i b1 0 -8 0 10 -262144 24 | -1 -1 0.95 256; 25 | #X obj 12 499 fltr.response.amplitude \$0 onezero 0 2; 26 | #X obj 378 499 fltr.response.phase \$0 onezero; 27 | #X msg 278 144 \; pd dsp 0; 28 | #X msg 278 111 \; pd dsp 1; 29 | #X obj 17 158 fltr.output~; 30 | #X obj 378 219 fltr.difference onezero; 31 | #X obj 12 219 fltr.spectrogram~; 32 | #X obj 356 12 declare -path ../misc -path ../onezero; 33 | #X connect 1 0 2 0; 34 | #X connect 2 0 6 2; 35 | #X connect 3 0 4 0; 36 | #X connect 4 0 6 1; 37 | #X connect 5 0 6 0; 38 | #X connect 6 0 14 0; 39 | #X connect 6 0 16 0; 40 | #X connect 8 0 3 0; 41 | #X connect 9 0 1 0; 42 | -------------------------------------------------------------------------------- /misc/fltr.to.coeff.pd: -------------------------------------------------------------------------------- 1 | #N canvas 138 232 551 417 12; 2 | #X obj 115 163 cos; 3 | #X obj 152 188 t b f; 4 | #X obj 115 288 outlet; 5 | #X obj 115 263 / 1, f 7; 6 | #X obj 115 238 * 0, f 5; 7 | #X obj 168 238 r \$1-b0; 8 | #X obj 255 163 t f f; 9 | #X obj 255 188 *, f 5; 10 | #X obj 255 213 / 1, f 7; 11 | #X obj 308 188 r \$1-b0; 12 | #X obj 261 57 nbx 5 14 0 1 0 0 empty empty empty 0 -8 0 10 -262144 13 | -1 -1 0.9 256; 14 | #X obj 261 89 nbx 5 14 0 3.14159 0 0 empty empty empty 0 -8 0 10 -262144 15 | -1 -1 0 256; 16 | #X obj 128 57 hsl 128 15 0 1 0 0 empty \$1-ri R -2 -8 0 10 -262144 17 | -1 -1 11430 1; 18 | #X obj 128 89 hsl 128 15 0 3.14159 0 0 empty \$1-θi Θ -2 -8 0 10 19 | -262144 -1 -1 0 1; 20 | #X obj 255 288 outlet; 21 | #X obj 152 163 * -2; 22 | #X msg 261 108 set \$1; 23 | #X msg 261 28 set \$1; 24 | #X connect 0 0 4 0; 25 | #X connect 1 0 4 0; 26 | #X connect 1 1 4 1; 27 | #X connect 3 0 2 0; 28 | #X connect 4 0 3 0; 29 | #X connect 5 0 3 1; 30 | #X connect 6 0 7 0; 31 | #X connect 6 1 7 1; 32 | #X connect 7 0 8 0; 33 | #X connect 8 0 14 0; 34 | #X connect 9 0 8 1; 35 | #X connect 10 0 17 0; 36 | #X connect 10 0 6 0; 37 | #X connect 10 0 15 0; 38 | #X connect 11 0 16 0; 39 | #X connect 11 0 0 0; 40 | #X connect 12 0 10 0; 41 | #X connect 13 0 11 0; 42 | #X connect 15 0 1 0; 43 | #X connect 16 0 13 0; 44 | #X connect 17 0 12 0; 45 | #X coords 0 -1 1 1 200 70 2 120 40; 46 | -------------------------------------------------------------------------------- /ftr.dephase~-help.pd: -------------------------------------------------------------------------------- 1 | #N canvas 210 62 756 756 12; 2 | #X obj 142 125 c.dsp~ @size 49 49 @fontname "Helvetica" @fontweight 3 | "normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" 4 | @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 0.5 1 @logocolor 0 0.6 0 5 | 0.8; 6 | #X text 9 11 The dephasing of an oscillator; 7 | #X obj 379 27 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 8 | -262144 -1 -1 0.5 256; 9 | #X obj 243 146 cos~; 10 | #X obj 293 146 cos~; 11 | #X obj 293 117 +~; 12 | #X obj 378 97 line~; 13 | #X obj 379 62 pack f 5000; 14 | #X obj 436 140 c.number~ @size 53 17 @fontname "Helvetica" @fontweight 15 | "normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" 16 | @interval 50 @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.5 0.5 17 | 0.5 1 @textcolor 0 0 0 1; 18 | #X msg 452 29 0; 19 | #X msg 493 31 -0.5; 20 | #X obj 453 187 osc~ 0.06; 21 | #X obj 453 212 *~; 22 | #X obj 243 71 phasor~ 86.2; 23 | #X obj 352 309 ftr.scope~; 24 | #X obj 12 196 ftr.scope~; 25 | #X obj 12 419 ftr.scope~; 26 | #X connect 2 0 7 0; 27 | #X connect 3 0 14 0; 28 | #X connect 3 0 15 0; 29 | #X connect 4 0 14 0; 30 | #X connect 4 0 16 0; 31 | #X connect 5 0 4 0; 32 | #X connect 6 0 5 1; 33 | #X connect 6 0 8 0; 34 | #X connect 7 0 6 0; 35 | #X connect 9 0 7 0; 36 | #X connect 10 0 7 0; 37 | #X connect 11 0 12 0; 38 | #X connect 11 0 12 1; 39 | #X connect 13 0 3 0; 40 | #X connect 13 0 5 0; 41 | -------------------------------------------------------------------------------- /onezero/fltr.onezero.phase.pd: -------------------------------------------------------------------------------- 1 | #N canvas 281 102 747 523 10; 2 | #X obj 29 100 inlet; 3 | #X obj 180 100 inlet; 4 | #X obj 29 194 t f f, f 17; 5 | #X obj 29 304 * 1, f 6; 6 | #X obj 29 280 sin; 7 | #X obj 62 278 * -1; 8 | #X obj 98 278 cos; 9 | #X obj 29 253 t f f, f 12; 10 | #X obj 29 353 /, f 12; 11 | #X obj 98 302 * 1, f 8; 12 | #X obj 29 427 atan; 13 | #X obj 98 327 + 1; 14 | #X obj 29 452 outlet; 15 | #X obj 128 452 outlet; 16 | #X obj 29 170 fltr.loop.for 0 \$1 1; 17 | #X obj 29 219 fltr.to.pi \$1; 18 | #X text 29 77 b0; 19 | #X text 79 77 b1; 20 | #X text 129 77 b2; 21 | #X text 179 77 a1; 22 | #X text 229 77 a2; 23 | #X obj 79 100 inlet; 24 | #X obj 129 100 inlet; 25 | #X obj 230 100 inlet; 26 | #X obj 29 131 t b f, f 8; 27 | #X obj 110 131 t b f, f 6; 28 | #X text 19 29 Θ(ω) = atan((-b1 * sin(ωτ)) / (b0 + b1 * cos(ωτ)) 29 | , f 61; 30 | #X connect 0 0 24 0; 31 | #X connect 2 0 15 0; 32 | #X connect 2 1 13 0; 33 | #X connect 3 0 8 0; 34 | #X connect 4 0 3 0; 35 | #X connect 5 0 3 1; 36 | #X connect 6 0 9 0; 37 | #X connect 7 0 4 0; 38 | #X connect 7 1 6 0; 39 | #X connect 8 0 10 0; 40 | #X connect 9 0 11 0; 41 | #X connect 10 0 12 0; 42 | #X connect 11 0 8 1; 43 | #X connect 14 0 2 0; 44 | #X connect 15 0 7 0; 45 | #X connect 21 0 25 0; 46 | #X connect 24 0 14 0; 47 | #X connect 24 1 11 1; 48 | #X connect 25 0 14 0; 49 | #X connect 25 1 5 0; 50 | #X connect 25 1 9 1; 51 | #X coords 0 523 1 522 366 40 0; 52 | -------------------------------------------------------------------------------- /biquad/fltr.biquad.difference.pd: -------------------------------------------------------------------------------- 1 | #N canvas 283 339 571 267 12; 2 | #X text 288 32 ↓; 3 | #X text 288 21 |; 4 | #X text 288 116 ↓; 5 | #X text 288 93 |; 6 | #X text 288 82 |; 7 | #X text 288 105 |; 8 | #X text 288 166 |; 9 | #X text 288 177 |; 10 | #X text 204 37 ↑; 11 | #X text 204 61 |; 12 | #X text 204 50 |; 13 | #X text 204 72 |; 14 | #X text 204 121 ↑; 15 | #X text 204 145 |; 16 | #X text 204 134 |; 17 | #X text 204 156 |; 18 | #X text 204 167 |; 19 | #X text 204 178 |; 20 | #X text 242 80 -a1; 21 | #X text 236 165 -a2; 22 | #X obj 192 6 ./misc/fltr.g.plus; 23 | #X obj 278 50 ../misc/fltr.g.z-1; 24 | #X obj 191 89 ./misc/fltr.g.plus; 25 | #X obj 283 134 ../misc/fltr.g.z-1; 26 | #X text 92 84 b1; 27 | #X text 50 32 ↓; 28 | #X text 50 116 ↓; 29 | #X text 50 93 |; 30 | #X text 50 82 |; 31 | #X text 50 105 |; 32 | #X text 50 166 |; 33 | #X text 50 177 |; 34 | #X text 147 37 ↑; 35 | #X text 147 61 |; 36 | #X text 147 50 |; 37 | #X text 147 72 |; 38 | #X text 147 121 ↑; 39 | #X text 147 145 |; 40 | #X text 147 134 |; 41 | #X text 147 156 |; 42 | #X text 147 167 |; 43 | #X text 147 178 |; 44 | #X text 90 168 b2; 45 | #X obj 134 6 ./misc/fltr.g.plus; 46 | #X obj 40 50 ../misc/fltr.g.z-1; 47 | #X obj 134 89 ./misc/fltr.g.plus; 48 | #X obj 45 134 ../misc/fltr.g.z-1; 49 | #X text 50 22 |; 50 | #X text 10 13 x(n)––––––⊗––→; 51 | #X text 168 13 –→; 52 | #X text 226 13 ––––––––→ y(n); 53 | #X text 224 98 ←––⊗–––; 54 | #X text 208 182 –––––⊗––––; 55 | #X text 53 98 ––––⊗–––→; 56 | #X text 53 182 ––––⊗–––––––; 57 | #X text 87 31 b0; 58 | #X coords 0 -1 1 1 346 198 2 2 2; 59 | -------------------------------------------------------------------------------- /twopole/fltr.twopole~.pd: -------------------------------------------------------------------------------- 1 | #N canvas 504 83 547 528 12; 2 | #X obj 97 50 inlet~; 3 | #X obj 222 50 inlet~; 4 | #X obj 158 50 inlet~; 5 | #X obj 97 105 *~, f 8; 6 | #X obj 307 50 inlet~; 7 | #X obj 97 485 outlet~; 8 | #X obj 97 375 cpole~, f 7; 9 | #X obj 97 415 cpole~, f 20; 10 | #X obj 222 87 *~; 11 | #X obj 307 87 *~; 12 | #X obj 307 112 sqrt~; 13 | #X text 366 114 r; 14 | #X obj 254 244 sig~ 1; 15 | #X obj 254 269 -~; 16 | #X obj 307 137 *~ -2; 17 | #X obj 275 216 *~; 18 | #X obj 254 294 sqrt~; 19 | #X obj 254 319 *~, f 7; 20 | #X obj 254 344 *~ -1; 21 | #X obj 201 168 /~; 22 | #X obj 201 217 *~; 23 | #X text 139 170 cos(θ); 24 | #X text 337 320 |sin(θ)|; 25 | #X text 49 9 Here a small trick completely useless to use b1 and b2 26 | \, instead of directely cos(θ) and sin(θ) and r; 27 | #X text 279 371 Because we must use complex pole filters, f 21; 28 | #X connect 0 0 3 0; 29 | #X connect 1 0 8 0; 30 | #X connect 2 0 3 1; 31 | #X connect 2 0 8 1; 32 | #X connect 2 0 9 1; 33 | #X connect 3 0 6 0; 34 | #X connect 4 0 9 0; 35 | #X connect 6 0 7 0; 36 | #X connect 6 1 7 1; 37 | #X connect 7 0 5 0; 38 | #X connect 8 0 19 0; 39 | #X connect 9 0 10 0; 40 | #X connect 10 0 14 0; 41 | #X connect 10 0 17 1; 42 | #X connect 10 0 20 1; 43 | #X connect 12 0 13 0; 44 | #X connect 13 0 16 0; 45 | #X connect 14 0 19 1; 46 | #X connect 15 0 13 1; 47 | #X connect 16 0 17 0; 48 | #X connect 17 0 6 3; 49 | #X connect 17 0 18 0; 50 | #X connect 18 0 7 3; 51 | #X connect 19 0 20 0; 52 | #X connect 19 0 15 0; 53 | #X connect 19 0 15 1; 54 | #X connect 20 0 6 2; 55 | #X connect 20 0 7 2; 56 | -------------------------------------------------------------------------------- /onepole/fltr.onepole.amplitude.pd: -------------------------------------------------------------------------------- 1 | #N canvas 824 143 747 523 10; 2 | #X obj 29 100 inlet; 3 | #X obj 180 100 inlet; 4 | #X obj 29 194 t f f, f 17; 5 | #X obj 29 452 outlet; 6 | #X obj 128 452 outlet; 7 | #X text 29 77 b0; 8 | #X text 79 77 b1; 9 | #X text 129 77 b2; 10 | #X text 179 77 a1; 11 | #X text 229 77 a2; 12 | #X obj 79 100 inlet; 13 | #X obj 129 100 inlet; 14 | #X obj 230 100 inlet; 15 | #X obj 29 131 t b f, f 8; 16 | #X obj 110 131 t b f, f 6; 17 | #X obj 29 284 * 2; 18 | #X obj 29 264 * 1, f 4; 19 | #X obj 29 324 + 1; 20 | #X obj 62 278 *, f 5; 21 | #X obj 62 253 t f f; 22 | #X obj 29 304 + 0, f 6; 23 | #X obj 29 406 /, f 5; 24 | #X obj 29 365 t b f; 25 | #X obj 29 386 f; 26 | #X obj 29 429 clip 0 10; 27 | #X text 19 29 G(ω) = |b0| / √(1 + a1^2 + 2 * a1 * cos(ωτ)), f 28 | 61; 29 | #X obj 29 244 cos; 30 | #X obj 29 344 sqrt; 31 | #X obj 29 170 fltr.loop.for 0 \$1 1; 32 | #X obj 29 219 fltr.to.pi \$1; 33 | #X connect 0 0 13 0; 34 | #X connect 1 0 14 0; 35 | #X connect 2 0 29 0; 36 | #X connect 2 1 4 0; 37 | #X connect 13 0 28 0; 38 | #X connect 13 1 23 1; 39 | #X connect 14 0 28 0; 40 | #X connect 14 1 16 1; 41 | #X connect 14 1 19 0; 42 | #X connect 15 0 20 0; 43 | #X connect 16 0 15 0; 44 | #X connect 17 0 27 0; 45 | #X connect 18 0 20 1; 46 | #X connect 19 0 18 0; 47 | #X connect 19 1 18 1; 48 | #X connect 20 0 17 0; 49 | #X connect 21 0 24 0; 50 | #X connect 22 0 23 0; 51 | #X connect 22 1 21 1; 52 | #X connect 23 0 21 0; 53 | #X connect 24 0 3 0; 54 | #X connect 26 0 16 0; 55 | #X connect 27 0 22 0; 56 | #X connect 28 0 2 0; 57 | #X connect 29 0 26 0; 58 | #X coords 0 523 1 522 366 40 0; 59 | -------------------------------------------------------------------------------- /onezero/fltr.onezero.amplitude.pd: -------------------------------------------------------------------------------- 1 | #N canvas 407 223 747 523 10; 2 | #X obj 29 100 inlet; 3 | #X obj 180 100 inlet; 4 | #X obj 29 194 t f f, f 17; 5 | #X obj 29 452 outlet; 6 | #X obj 128 452 outlet; 7 | #X text 29 77 b0; 8 | #X text 79 77 b1; 9 | #X text 129 77 b2; 10 | #X text 179 77 a1; 11 | #X text 229 77 a2; 12 | #X obj 79 100 inlet; 13 | #X obj 129 100 inlet; 14 | #X obj 230 100 inlet; 15 | #X obj 29 131 t b f, f 8; 16 | #X obj 110 131 t b f, f 6; 17 | #X obj 29 264 * 1, f 4; 18 | #X obj 62 371 *, f 5; 19 | #X obj 62 346 t f f; 20 | #X obj 29 393 + 0, f 6; 21 | #X obj 29 244 cos; 22 | #X obj 29 170 fltr.loop.for 0 \$1 1; 23 | #X obj 29 219 fltr.to.pi \$1; 24 | #X obj 29 413 sqrt, f 5; 25 | #X obj 29 284 * 1, f 4; 26 | #X obj 29 323 + 1, f 6; 27 | #X obj 62 302 *, f 5; 28 | #X obj 62 277 t f f; 29 | #X obj 29 433 clip 0 2; 30 | #X obj 29 303 * 2; 31 | #X text 19 29 G(ω) = √(b0^2 + b1^2 + 2 * b0 * b1 * cos(ωτ)), 32 | f 61; 33 | #X connect 0 0 13 0; 34 | #X connect 2 0 21 0; 35 | #X connect 2 1 4 0; 36 | #X connect 10 0 14 0; 37 | #X connect 13 0 20 0; 38 | #X connect 13 1 15 1; 39 | #X connect 13 1 26 0; 40 | #X connect 14 0 20 0; 41 | #X connect 14 1 17 0; 42 | #X connect 14 1 23 1; 43 | #X connect 15 0 23 0; 44 | #X connect 16 0 18 1; 45 | #X connect 17 0 16 0; 46 | #X connect 17 1 16 1; 47 | #X connect 18 0 22 0; 48 | #X connect 19 0 15 0; 49 | #X connect 20 0 2 0; 50 | #X connect 21 0 19 0; 51 | #X connect 22 0 27 0; 52 | #X connect 23 0 28 0; 53 | #X connect 24 0 18 0; 54 | #X connect 25 0 24 1; 55 | #X connect 26 0 25 0; 56 | #X connect 26 1 25 1; 57 | #X connect 27 0 3 0; 58 | #X connect 28 0 24 0; 59 | #X coords 0 523 1 522 366 40 0; 60 | -------------------------------------------------------------------------------- /onepole/fltr.onepole.phase.pd: -------------------------------------------------------------------------------- 1 | #N canvas 281 102 747 523 10; 2 | #X obj 29 100 inlet; 3 | #X obj 180 100 inlet; 4 | #X obj 29 194 t f f, f 17; 5 | #X obj 29 328 * 1, f 6; 6 | #X obj 29 304 sin; 7 | #X obj 62 302 * -1; 8 | #X obj 98 278 cos; 9 | #X obj 29 253 t f f, f 12; 10 | #X obj 29 353 /, f 12; 11 | #X obj 98 302 * 1, f 8; 12 | #X obj 29 377 atan; 13 | #X obj 98 327 + 1; 14 | #X obj 29 402 * -1; 15 | #X obj 29 427 +, f 8; 16 | #X obj 74 401 * 3.14159; 17 | #X obj 74 377 < 0; 18 | #X obj 29 452 outlet; 19 | #X obj 128 452 outlet; 20 | #X text 52 49 = -atan((-a1 * sin(ωτ)) / (1 + a1 * cos(ωτ)) + π 21 | \, b0 < 0; 22 | #X text 19 29 Θ(ω) = -atan((-a1 * sin(ωτ)) / (1 + a1 * cos(ωτ)) 23 | \, b0 > 0, f 61; 24 | #X obj 29 170 fltr.loop.for 0 \$1 1; 25 | #X obj 29 219 fltr.to.pi \$1; 26 | #X text 29 77 b0; 27 | #X text 79 77 b1; 28 | #X text 129 77 b2; 29 | #X text 179 77 a1; 30 | #X text 229 77 a2; 31 | #X obj 79 100 inlet; 32 | #X obj 129 100 inlet; 33 | #X obj 230 100 inlet; 34 | #X obj 29 131 t b f, f 8; 35 | #X obj 110 131 t b f, f 6; 36 | #X connect 0 0 30 0; 37 | #X connect 1 0 31 0; 38 | #X connect 2 0 21 0; 39 | #X connect 2 1 17 0; 40 | #X connect 3 0 8 0; 41 | #X connect 4 0 3 0; 42 | #X connect 5 0 3 1; 43 | #X connect 6 0 9 0; 44 | #X connect 7 0 4 0; 45 | #X connect 7 1 6 0; 46 | #X connect 8 0 10 0; 47 | #X connect 9 0 11 0; 48 | #X connect 10 0 12 0; 49 | #X connect 11 0 8 1; 50 | #X connect 12 0 13 0; 51 | #X connect 13 0 16 0; 52 | #X connect 14 0 13 1; 53 | #X connect 15 0 14 0; 54 | #X connect 20 0 2 0; 55 | #X connect 21 0 7 0; 56 | #X connect 30 0 20 0; 57 | #X connect 30 1 15 0; 58 | #X connect 31 0 20 0; 59 | #X connect 31 1 5 0; 60 | #X connect 31 1 9 1; 61 | #X coords 0 523 1 522 366 40 0; 62 | -------------------------------------------------------------------------------- /misc/fltr.response.phase.pd: -------------------------------------------------------------------------------- 1 | #N canvas 295 227 731 553 10; 2 | #X obj 112 484 tabwrite \$0-phase, f 32; 3 | #X obj 489 390 s \$0-phase; 4 | #X obj 489 274 loadbang; 5 | #X msg 529 347 yticks 0 0.78539 2; 6 | #X msg 489 317 xticks 0 512 2; 7 | #N canvas 0 22 450 278 (subpatch) 0; 8 | #X array \$0-phase 2048 float 4; 9 | #X coords 0 1.57079 2047 -1.57079 300 140 2 0 0; 10 | #X restore 127 174 graph; 11 | #X obj 101 153 cnv 15 344 20 empty empty empty 20 12 0 14 -262144 -66577 12 | 0; 13 | #X text 111 235 0; 14 | #X text 121 321 0; 15 | #X text 214 103 Phase Response Θ(ω); 16 | #X text 197 313 π; 17 | #X text 197 320 –; 18 | #X text 272 313 π; 19 | #X text 272 320 –; 20 | #X text 272 329 4; 21 | #X text 421 313 π; 22 | #X text 421 320 –; 23 | #X text 421 329 2; 24 | #X text 197 329 8; 25 | #X text 347 320 –; 26 | #X text 347 329 8; 27 | #X text 344 313 3π; 28 | #X text 111 299 π; 29 | #X text 111 315 2; 30 | #X text 105 306 -–; 31 | #X text 111 195 π; 32 | #X text 111 202 –; 33 | #X text 111 211 4; 34 | #X text 111 263 π; 35 | #X text 111 279 4; 36 | #X text 105 270 -–; 37 | #X text 111 160 π; 38 | #X text 111 167 –; 39 | #X text 111 176 2; 40 | #X text 100 344 Phase Shift θ (rad) / Normalized Frequency ω (rad/sample) 41 | ; 42 | #X obj 112 375 r \$1-b0; 43 | #X obj 159 375 r \$1-b1; 44 | #X obj 206 375 r \$1-b2; 45 | #X obj 253 375 r \$1-a1; 46 | #X obj 301 375 r \$1-a2; 47 | #X obj 100 122 fltr.\$2.phase.eq, f 32; 48 | #X obj 112 449 fltr.\$2.phase 2048, f 32; 49 | #X connect 2 0 4 0; 50 | #X connect 2 0 3 0; 51 | #X connect 3 0 1 0; 52 | #X connect 4 0 1 0; 53 | #X connect 35 0 41 0; 54 | #X connect 36 0 41 1; 55 | #X connect 37 0 41 2; 56 | #X connect 38 0 41 3; 57 | #X connect 39 0 41 4; 58 | #X connect 41 0 0 0; 59 | #X connect 41 1 0 1; 60 | #X coords 0 -1 1 1 346 260 2 100 100; 61 | -------------------------------------------------------------------------------- /twozero/fltr.twozero~-help.pd: -------------------------------------------------------------------------------- 1 | #N canvas 534 23 846 778 10; 2 | #X declare -path ../misc -path ../twozero; 3 | #X text 12 13 The Two-Zero filter; 4 | #X obj 146 80 pack f 20; 5 | #X obj 146 105 line~; 6 | #X obj 79 80 pack f 20; 7 | #X obj 79 105 line~; 8 | #X obj 12 80 noise~; 9 | #N canvas 0 23 450 300 init 0; 10 | #X obj 33 97 s \$0-b0i; 11 | #X msg 33 69 1; 12 | #X obj 32 37 loadbang; 13 | #X obj 105 96 s \$0-ri; 14 | #X msg 103 70 0.9; 15 | #X obj 165 96 s \$0-θi; 16 | #X msg 163 70 1.59; 17 | #X connect 1 0 0 0; 18 | #X connect 2 0 1 0; 19 | #X connect 2 0 4 0; 20 | #X connect 2 0 6 0; 21 | #X connect 4 0 3 0; 22 | #X connect 6 0 5 0; 23 | #X restore 290 12 pd init; 24 | #X obj 79 61 nbx 5 14 0 1e+37 0 0 \$0-b0 \$0-b0i b0 0 -8 0 10 -262144 25 | -1 -1 1 256; 26 | #X obj 146 61 nbx 5 14 -1e+08 1e+08 0 0 \$0-b1 \$0-b1i b1 0 -8 0 10 27 | -262144 -1 -1 0 256; 28 | #X obj 12 499 fltr.response.amplitude \$0 twozero 0 4; 29 | #X msg 278 144 \; pd dsp 0; 30 | #X msg 278 111 \; pd dsp 1; 31 | #X obj 17 158 fltr.output~; 32 | #X obj 12 219 fltr.spectrogram~; 33 | #X obj 12 134 fltr.twozero~, f 34; 34 | #X obj 378 219 fltr.difference twozero; 35 | #X obj 378 499 fltr.response.phase \$0 twozero; 36 | #X obj 213 80 pack f 20; 37 | #X obj 213 105 line~; 38 | #X obj 213 61 nbx 5 14 -999999 999999 0 0 \$0-b2 \$0-b2i b2 0 -8 0 39 | 10 -262144 -1 -1 0 256; 40 | #X obj 376 56 fltr.to.coeff \$0, f 17; 41 | #X obj 376 131 s \$0-b1i; 42 | #X obj 569 131 s \$0-b2i; 43 | #X obj 356 12 declare -path ../misc -path ../twozero; 44 | #X connect 1 0 2 0; 45 | #X connect 2 0 14 2; 46 | #X connect 3 0 4 0; 47 | #X connect 4 0 14 1; 48 | #X connect 5 0 14 0; 49 | #X connect 7 0 3 0; 50 | #X connect 8 0 1 0; 51 | #X connect 14 0 12 0; 52 | #X connect 14 0 13 0; 53 | #X connect 17 0 18 0; 54 | #X connect 18 0 14 3; 55 | #X connect 19 0 17 0; 56 | #X connect 20 0 21 0; 57 | #X connect 20 1 22 0; 58 | -------------------------------------------------------------------------------- /twopole/fltr.twopole~-help.pd: -------------------------------------------------------------------------------- 1 | #N canvas 336 23 846 778 10; 2 | #X declare -path ../misc -path ../twopole; 3 | #X obj 146 80 pack f 20; 4 | #X obj 146 105 line~; 5 | #X obj 79 80 pack f 20; 6 | #X obj 79 105 line~; 7 | #X obj 12 80 noise~; 8 | #N canvas 0 23 450 300 init 0; 9 | #X obj 33 97 s \$0-b0i; 10 | #X msg 33 69 1; 11 | #X obj 32 37 loadbang; 12 | #X obj 165 96 s \$0-θi; 13 | #X obj 105 96 s \$0-ri; 14 | #X msg 103 70 0.9; 15 | #X msg 163 70 1.59; 16 | #X connect 1 0 0 0; 17 | #X connect 2 0 1 0; 18 | #X connect 2 0 5 0; 19 | #X connect 2 0 6 0; 20 | #X connect 5 0 4 0; 21 | #X connect 6 0 3 0; 22 | #X restore 290 12 pd init; 23 | #X obj 79 61 nbx 5 14 0 1e+37 0 0 \$0-b0 \$0-b0i b0 0 -8 0 10 -262144 24 | -1 -1 1 256; 25 | #X obj 146 61 nbx 5 14 -1e+08 1e+08 0 0 \$0-a1 \$0-a1i a1 0 -8 0 10 26 | -262144 -1 -1 0.0345645 256; 27 | #X obj 12 499 fltr.response.amplitude \$0 twopole 0 15; 28 | #X msg 278 144 \; pd dsp 0; 29 | #X msg 278 111 \; pd dsp 1; 30 | #X obj 17 158 fltr.output~; 31 | #X obj 12 219 fltr.spectrogram~; 32 | #X obj 12 134 fltr.twopole~, f 34; 33 | #X obj 378 219 fltr.difference twopole; 34 | #X obj 378 499 fltr.response.phase \$0 twopole; 35 | #X obj 213 80 pack f 20; 36 | #X obj 213 105 line~; 37 | #X obj 213 61 nbx 5 14 -999999 999999 0 0 \$0-a2 \$0-a2i a2 0 -8 0 38 | 10 -262144 -1 -1 0.81 256; 39 | #X text 12 13 The Two-Pole filter; 40 | #X obj 376 56 fltr.to.coeff \$0, f 17; 41 | #X obj 376 131 s \$0-a1i; 42 | #X obj 569 131 s \$0-a2i; 43 | #X obj 356 12 declare -path ../misc -path ../twopole; 44 | #X connect 0 0 1 0; 45 | #X connect 1 0 13 2; 46 | #X connect 2 0 3 0; 47 | #X connect 3 0 13 1; 48 | #X connect 4 0 13 0; 49 | #X connect 6 0 2 0; 50 | #X connect 7 0 0 0; 51 | #X connect 13 0 11 0; 52 | #X connect 13 0 12 0; 53 | #X connect 16 0 17 0; 54 | #X connect 17 0 13 3; 55 | #X connect 18 0 16 0; 56 | #X connect 20 0 21 0; 57 | #X connect 20 1 22 0; 58 | -------------------------------------------------------------------------------- /biquad/fltr.twopole.phase.pd: -------------------------------------------------------------------------------- 1 | #N canvas 219 180 747 523 10; 2 | #X obj 29 100 inlet; 3 | #X obj 180 100 inlet; 4 | #X obj 29 194 t f f, f 17; 5 | #X obj 29 304 * 1, f 6; 6 | #X obj 29 280 sin; 7 | #X obj 62 278 * -1; 8 | #X obj 29 393 /, f 12; 9 | #X obj 29 427 atan; 10 | #X obj 29 452 outlet; 11 | #X obj 128 452 outlet; 12 | #X obj 29 170 fltr.loop.for 0 \$1 1; 13 | #X obj 29 219 fltr.to.pi \$1; 14 | #X text 29 77 b0; 15 | #X text 79 77 b1; 16 | #X text 129 77 b2; 17 | #X text 179 77 a1; 18 | #X text 229 77 a2; 19 | #X obj 79 100 inlet; 20 | #X obj 129 100 inlet; 21 | #X obj 230 100 inlet; 22 | #X obj 29 131 t b f, f 8; 23 | #X obj 83 131 t b f, f 6; 24 | #X obj 29 253 t f f f f, f 41; 25 | #X obj 110 278 * 2; 26 | #X obj 29 366 -; 27 | #X obj 110 324 * 1, f 6; 28 | #X obj 110 300 sin; 29 | #X obj 130 131 t b f, f 6; 30 | #X obj 191 280 cos; 31 | #X obj 191 302 *; 32 | #X obj 272 278 * 2; 33 | #X obj 272 324 * 1, f 6; 34 | #X obj 272 300 cos; 35 | #X obj 191 364 *; 36 | #X obj 191 386 + 1; 37 | #X text 19 29 Θ(ω) = atan((-b1 * sin(ωτ) - b2 * sin(2ωτ)) / (1 38 | + b1 * cos(ωτ) + b2 * cos(2ωτ)), f 61; 39 | #X connect 0 0 20 0; 40 | #X connect 1 0 21 0; 41 | #X connect 2 0 11 0; 42 | #X connect 2 1 9 0; 43 | #X connect 3 0 24 0; 44 | #X connect 4 0 3 0; 45 | #X connect 5 0 3 1; 46 | #X connect 6 0 7 0; 47 | #X connect 7 0 8 0; 48 | #X connect 10 0 2 0; 49 | #X connect 11 0 22 0; 50 | #X connect 19 0 27 0; 51 | #X connect 20 0 10 0; 52 | #X connect 21 0 10 0; 53 | #X connect 21 1 5 0; 54 | #X connect 21 1 29 1; 55 | #X connect 22 0 4 0; 56 | #X connect 22 1 23 0; 57 | #X connect 22 2 28 0; 58 | #X connect 22 3 30 0; 59 | #X connect 23 0 26 0; 60 | #X connect 24 0 6 0; 61 | #X connect 25 0 24 1; 62 | #X connect 26 0 25 0; 63 | #X connect 27 0 10 0; 64 | #X connect 27 1 25 1; 65 | #X connect 27 1 31 1; 66 | #X connect 28 0 29 0; 67 | #X connect 29 0 33 0; 68 | #X connect 30 0 32 0; 69 | #X connect 31 0 33 1; 70 | #X connect 32 0 31 0; 71 | #X connect 33 0 34 0; 72 | #X connect 34 0 6 1; 73 | #X coords 0 523 1 522 366 40 0; 74 | -------------------------------------------------------------------------------- /twopole/fltr.twopole.phase.pd: -------------------------------------------------------------------------------- 1 | #N canvas 219 180 747 523 10; 2 | #X obj 29 100 inlet; 3 | #X obj 180 100 inlet; 4 | #X obj 29 194 t f f, f 17; 5 | #X obj 29 304 * 1, f 6; 6 | #X obj 29 280 sin; 7 | #X obj 62 278 * -1; 8 | #X obj 29 393 /, f 12; 9 | #X obj 29 427 atan; 10 | #X obj 29 452 outlet; 11 | #X obj 128 452 outlet; 12 | #X obj 29 170 fltr.loop.for 0 \$1 1; 13 | #X obj 29 219 fltr.to.pi \$1; 14 | #X text 29 77 b0; 15 | #X text 79 77 b1; 16 | #X text 129 77 b2; 17 | #X text 179 77 a1; 18 | #X text 229 77 a2; 19 | #X obj 79 100 inlet; 20 | #X obj 129 100 inlet; 21 | #X obj 230 100 inlet; 22 | #X obj 29 131 t b f, f 8; 23 | #X obj 83 131 t b f, f 6; 24 | #X obj 29 253 t f f f f, f 41; 25 | #X obj 110 278 * 2; 26 | #X obj 29 366 -; 27 | #X obj 110 324 * 1, f 6; 28 | #X obj 110 300 sin; 29 | #X obj 130 131 t b f, f 6; 30 | #X obj 191 280 cos; 31 | #X obj 191 302 *; 32 | #X obj 272 278 * 2; 33 | #X obj 272 324 * 1, f 6; 34 | #X obj 272 300 cos; 35 | #X obj 191 364 *; 36 | #X obj 191 386 + 1; 37 | #X text 19 29 Θ(ω) = atan((-b1 * sin(ωτ) - b2 * sin(2ωτ)) / (1 38 | + b1 * cos(ωτ) + b2 * cos(2ωτ)), f 61; 39 | #X connect 0 0 20 0; 40 | #X connect 1 0 21 0; 41 | #X connect 2 0 11 0; 42 | #X connect 2 1 9 0; 43 | #X connect 3 0 24 0; 44 | #X connect 4 0 3 0; 45 | #X connect 5 0 3 1; 46 | #X connect 6 0 7 0; 47 | #X connect 7 0 8 0; 48 | #X connect 10 0 2 0; 49 | #X connect 11 0 22 0; 50 | #X connect 19 0 27 0; 51 | #X connect 20 0 10 0; 52 | #X connect 21 0 10 0; 53 | #X connect 21 1 5 0; 54 | #X connect 21 1 29 1; 55 | #X connect 22 0 4 0; 56 | #X connect 22 1 23 0; 57 | #X connect 22 2 28 0; 58 | #X connect 22 3 30 0; 59 | #X connect 23 0 26 0; 60 | #X connect 24 0 6 0; 61 | #X connect 25 0 24 1; 62 | #X connect 26 0 25 0; 63 | #X connect 27 0 10 0; 64 | #X connect 27 1 25 1; 65 | #X connect 27 1 31 1; 66 | #X connect 28 0 29 0; 67 | #X connect 29 0 33 0; 68 | #X connect 30 0 32 0; 69 | #X connect 31 0 33 1; 70 | #X connect 32 0 31 0; 71 | #X connect 33 0 34 0; 72 | #X connect 34 0 6 1; 73 | #X coords 0 523 1 522 366 40 0; 74 | -------------------------------------------------------------------------------- /twozero/fltr.twozero.phase.pd: -------------------------------------------------------------------------------- 1 | #N canvas 628 157 747 523 10; 2 | #X obj 29 100 inlet; 3 | #X obj 180 100 inlet; 4 | #X obj 29 194 t f f, f 17; 5 | #X obj 29 304 * 1, f 6; 6 | #X obj 29 280 sin; 7 | #X obj 62 278 * -1; 8 | #X obj 29 393 /, f 12; 9 | #X obj 29 427 atan; 10 | #X obj 29 452 outlet; 11 | #X obj 128 452 outlet; 12 | #X obj 29 170 fltr.loop.for 0 \$1 1; 13 | #X obj 29 219 fltr.to.pi \$1; 14 | #X text 29 77 b0; 15 | #X text 79 77 b1; 16 | #X text 129 77 b2; 17 | #X text 179 77 a1; 18 | #X text 229 77 a2; 19 | #X obj 79 100 inlet; 20 | #X obj 129 100 inlet; 21 | #X obj 230 100 inlet; 22 | #X obj 29 131 t b f, f 8; 23 | #X obj 83 131 t b f, f 6; 24 | #X text 19 29 Θ(ω) = atan((-b1 * sin(ωτ) - b2 * sin(2ωτ)) / (b0 25 | + b1 * cos(ωτ) + b2 * cos(2ωτ)), f 61; 26 | #X obj 29 253 t f f f f, f 41; 27 | #X obj 110 278 * 2; 28 | #X obj 29 366 -; 29 | #X obj 110 324 * 1, f 6; 30 | #X obj 110 300 sin; 31 | #X obj 130 131 t b f, f 6; 32 | #X obj 191 280 cos; 33 | #X obj 191 302 *; 34 | #X obj 272 278 * 2; 35 | #X obj 272 324 * 1, f 6; 36 | #X obj 272 300 cos; 37 | #X obj 191 364 *; 38 | #X obj 191 386 +; 39 | #X connect 0 0 20 0; 40 | #X connect 2 0 11 0; 41 | #X connect 2 1 9 0; 42 | #X connect 3 0 25 0; 43 | #X connect 4 0 3 0; 44 | #X connect 5 0 3 1; 45 | #X connect 6 0 7 0; 46 | #X connect 7 0 8 0; 47 | #X connect 10 0 2 0; 48 | #X connect 11 0 23 0; 49 | #X connect 17 0 21 0; 50 | #X connect 18 0 28 0; 51 | #X connect 20 0 10 0; 52 | #X connect 20 1 35 1; 53 | #X connect 21 0 10 0; 54 | #X connect 21 1 5 0; 55 | #X connect 21 1 30 1; 56 | #X connect 23 0 4 0; 57 | #X connect 23 1 24 0; 58 | #X connect 23 2 29 0; 59 | #X connect 23 3 31 0; 60 | #X connect 24 0 27 0; 61 | #X connect 25 0 6 0; 62 | #X connect 26 0 25 1; 63 | #X connect 27 0 26 0; 64 | #X connect 28 0 10 0; 65 | #X connect 28 1 26 1; 66 | #X connect 28 1 32 1; 67 | #X connect 29 0 30 0; 68 | #X connect 30 0 34 0; 69 | #X connect 31 0 33 0; 70 | #X connect 32 0 34 1; 71 | #X connect 33 0 32 0; 72 | #X connect 34 0 35 0; 73 | #X connect 35 0 6 1; 74 | #X coords 0 523 1 522 366 40 0; 75 | -------------------------------------------------------------------------------- /misc/fltr.output~.pd: -------------------------------------------------------------------------------- 1 | #N canvas 604 248 546 295 10; 2 | #X obj 259 69 tgl 15 0 empty empty empty 17 7 0 10 -33289 -33289 -262144 3 | 62 1; 4 | #X obj 73 151 dbtorms; 5 | #X obj 34 36 inlet~; 6 | #X obj 73 196 line~; 7 | #X obj 34 218 *~, f 7; 8 | #X obj 34 248 dac~; 9 | #X obj 73 173 pack 0 50; 10 | #X obj 73 130 r \$0-master-out; 11 | #X floatatom 220 69 4 0 100 0 dB - -, f 4; 12 | #X text 204 51 Output; 13 | #X obj 336 128 r \$0-master-out; 14 | #X obj 294 177 f; 15 | #X obj 294 151 sel 1; 16 | #N canvas 0 22 450 300 sender 0; 17 | #X msg 76 124 \; pd dsp 1; 18 | #X obj 154 62 inlet; 19 | #X obj 156 114 s \$0-master-out; 20 | #X obj 178 209 s fltr-master-out; 21 | #X obj 178 187 f \$0; 22 | #X obj 179 136 != 0; 23 | #X obj 179 158 sel 1; 24 | #X connect 1 0 0 0; 25 | #X connect 1 0 2 0; 26 | #X connect 1 0 5 0; 27 | #X connect 4 0 3 0; 28 | #X connect 5 0 6 0; 29 | #X connect 6 0 4 0; 30 | #X restore 220 221 pd sender; 31 | #X obj 336 150 sel 0; 32 | #N canvas 0 22 450 300 colorb 0; 33 | #X msg 289 80 color 0 0 0; 34 | #X msg 316 99 color 72 72 0; 35 | #X obj 289 59 sel 0; 36 | #X obj 289 34 inlet; 37 | #X obj 289 134 outlet; 38 | #X connect 0 0 4 0; 39 | #X connect 1 0 4 0; 40 | #X connect 2 0 0 0; 41 | #X connect 2 1 1 0; 42 | #X connect 3 0 2 0; 43 | #X restore 284 61 pd colorb; 44 | #X obj 220 10 loadbang; 45 | #X obj 220 32 f 0; 46 | #X obj 357 19 r fltr-master-out; 47 | #X obj 357 41 != \$0; 48 | #X obj 357 85 sel 1; 49 | #X obj 357 107 f 0; 50 | #X msg 265 40 set \$1; 51 | #X obj 357 63 change; 52 | #X connect 0 0 12 0; 53 | #X connect 0 0 15 0; 54 | #X connect 1 0 6 0; 55 | #X connect 2 0 4 0; 56 | #X connect 3 0 4 1; 57 | #X connect 4 0 5 0; 58 | #X connect 4 0 5 1; 59 | #X connect 6 0 3 0; 60 | #X connect 7 0 1 0; 61 | #X connect 8 0 13 0; 62 | #X connect 8 0 22 0; 63 | #X connect 8 0 15 0; 64 | #X connect 10 0 14 0; 65 | #X connect 11 0 8 0; 66 | #X connect 12 0 11 0; 67 | #X connect 12 1 8 0; 68 | #X connect 14 1 11 1; 69 | #X connect 15 0 0 0; 70 | #X connect 16 0 17 0; 71 | #X connect 17 0 8 0; 72 | #X connect 18 0 19 0; 73 | #X connect 19 0 23 0; 74 | #X connect 20 0 21 0; 75 | #X connect 21 0 0 0; 76 | #X connect 22 0 0 0; 77 | #X connect 23 0 20 0; 78 | #X coords 0 -1 1 1 85 40 2 200 50; 79 | -------------------------------------------------------------------------------- /twozero/fltr.twozero.amplitude.pd: -------------------------------------------------------------------------------- 1 | #N canvas 350 113 747 523 10; 2 | #X obj 29 100 inlet; 3 | #X obj 180 100 inlet; 4 | #X obj 29 194 t f f, f 17; 5 | #X obj 29 492 outlet; 6 | #X obj 128 452 outlet; 7 | #X text 29 77 b0; 8 | #X text 79 77 b1; 9 | #X text 129 77 b2; 10 | #X text 179 77 a1; 11 | #X text 229 77 a2; 12 | #X obj 79 100 inlet; 13 | #X obj 129 100 inlet; 14 | #X obj 230 100 inlet; 15 | #X obj 29 131 t b f, f 8; 16 | #X obj 84 131 t b f, f 6; 17 | #X obj 29 170 fltr.loop.for 0 \$1 1; 18 | #X obj 29 219 fltr.to.pi \$1; 19 | #X obj 29 453 sqrt, f 5; 20 | #X obj 29 473 clip 0 4; 21 | #X obj 29 241 t f f f f, f 27; 22 | #X obj 29 263 cos; 23 | #X obj 29 285 *; 24 | #X obj 129 131 t b f, f 6; 25 | #X obj 82 307 *; 26 | #X obj 82 263 * 2; 27 | #X obj 82 285 cos; 28 | #X obj 29 337 +; 29 | #X obj 29 359 +; 30 | #X obj 74 330 t f f; 31 | #X obj 74 352 *, f 5; 32 | #X obj 29 381 t f f; 33 | #X obj 29 403 *, f 5; 34 | #X obj 29 425 +; 35 | #X obj 135 285 *; 36 | #X obj 135 263 sin; 37 | #X obj 160 263 * -1; 38 | #X text 19 29 G(ω) = √((b0^2 + b1 * cos(ωτ) + b2 * cos(2ωτ))^2 39 | + (-b1 * sin(ωτ) - b2 * sin(2ωτ))^2), f 61; 40 | #X obj 192 307 *; 41 | #X obj 192 263 * 2; 42 | #X obj 192 285 sin; 43 | #X obj 135 337 -; 44 | #X obj 135 361 t f f; 45 | #X obj 135 383 *, f 5; 46 | #X connect 0 0 13 0; 47 | #X connect 2 0 16 0; 48 | #X connect 2 1 4 0; 49 | #X connect 10 0 14 0; 50 | #X connect 11 0 22 0; 51 | #X connect 13 0 15 0; 52 | #X connect 13 1 28 0; 53 | #X connect 14 0 15 0; 54 | #X connect 14 1 21 1; 55 | #X connect 14 1 35 0; 56 | #X connect 15 0 2 0; 57 | #X connect 16 0 19 0; 58 | #X connect 17 0 18 0; 59 | #X connect 18 0 3 0; 60 | #X connect 19 0 20 0; 61 | #X connect 19 1 24 0; 62 | #X connect 19 2 34 0; 63 | #X connect 19 3 38 0; 64 | #X connect 20 0 21 0; 65 | #X connect 21 0 26 0; 66 | #X connect 22 0 15 0; 67 | #X connect 22 1 23 1; 68 | #X connect 22 1 37 1; 69 | #X connect 23 0 26 1; 70 | #X connect 24 0 25 0; 71 | #X connect 25 0 23 0; 72 | #X connect 26 0 27 0; 73 | #X connect 27 0 30 0; 74 | #X connect 28 0 29 0; 75 | #X connect 28 1 29 1; 76 | #X connect 29 0 27 1; 77 | #X connect 30 0 31 0; 78 | #X connect 30 1 31 1; 79 | #X connect 31 0 32 0; 80 | #X connect 32 0 17 0; 81 | #X connect 33 0 40 0; 82 | #X connect 34 0 33 0; 83 | #X connect 35 0 33 1; 84 | #X connect 37 0 40 1; 85 | #X connect 38 0 39 0; 86 | #X connect 39 0 37 0; 87 | #X connect 40 0 41 0; 88 | #X connect 41 0 42 0; 89 | #X connect 41 1 42 1; 90 | #X connect 42 0 32 1; 91 | #X coords 0 523 1 522 366 40 0; 92 | -------------------------------------------------------------------------------- /biquad/fltr.biquad~-help.pd: -------------------------------------------------------------------------------- 1 | #N canvas 714 35 846 778 10; 2 | #X declare -path ../misc -path ../biquad; 3 | #X obj 145 80 pack f 20; 4 | #X obj 145 105 line~; 5 | #X obj 78 80 pack f 20; 6 | #X obj 78 105 line~; 7 | #X obj 12 80 noise~; 8 | #N canvas 0 23 450 300 init 0; 9 | #X obj 33 97 s \$0-b0i; 10 | #X msg 33 69 1; 11 | #X obj 32 37 loadbang; 12 | #X obj 165 96 s \$0-θi; 13 | #X obj 105 96 s \$0-ri; 14 | #X msg 103 70 0.9; 15 | #X msg 163 70 1.59; 16 | #X connect 1 0 0 0; 17 | #X connect 2 0 1 0; 18 | #X connect 2 0 5 0; 19 | #X connect 2 0 6 0; 20 | #X connect 5 0 4 0; 21 | #X connect 6 0 3 0; 22 | #X restore 290 12 pd init; 23 | #X obj 78 61 nbx 5 14 0 1e+37 0 0 \$0-b0 \$0-b0i b0 0 -8 0 10 -262144 24 | -1 -1 1 256; 25 | #X obj 145 61 nbx 5 14 -1e+08 1e+08 0 0 \$0-b1 \$0-b1i b1 0 -8 0 10 26 | -262144 -1 -1 0.0345645 256; 27 | #X obj 12 499 fltr.response.amplitude \$0 biquad 0 15; 28 | #X msg 667 97 \; pd dsp 0; 29 | #X msg 667 64 \; pd dsp 1; 30 | #X obj 17 158 fltr.output~; 31 | #X obj 12 219 fltr.spectrogram~; 32 | #X obj 378 219 fltr.difference biquad; 33 | #X obj 378 499 fltr.response.phase \$0 biquad; 34 | #X obj 211 80 pack f 20; 35 | #X obj 211 105 line~; 36 | #X obj 211 61 nbx 5 14 -999999 999999 0 0 \$0-b2 \$0-b2i b2 0 -8 0 37 | 10 -262144 -1 -1 0.81 256; 38 | #X obj 406 36 fltr.to.coeff \$0, f 17; 39 | #X obj 406 111 s \$0-a1i; 40 | #X obj 599 111 s \$0-a2i; 41 | #X obj 356 12 declare -path ../misc -path ../biquad; 42 | #X obj 12 134 fltr.biquad~, f 56; 43 | #X obj 278 80 pack f 20; 44 | #X obj 278 105 line~; 45 | #X obj 278 61 nbx 5 14 -1e+08 1e+08 0 0 \$0-a1 \$0-a1i a1 0 -8 0 10 46 | -262144 -1 -1 0.0345645 256; 47 | #X obj 345 80 pack f 20; 48 | #X obj 345 105 line~; 49 | #X obj 345 61 nbx 5 14 -999999 999999 0 0 \$0-a2 \$0-a2i a2 0 -8 0 50 | 10 -262144 -1 -1 0.81 256; 51 | #X obj 406 136 fltr.to.coeff \$0, f 17; 52 | #X obj 406 211 s \$0-b1i; 53 | #X obj 599 211 s \$0-b2i; 54 | #X text 12 13 The Biquad filter; 55 | #X connect 0 0 1 0; 56 | #X connect 1 0 22 2; 57 | #X connect 2 0 3 0; 58 | #X connect 3 0 22 1; 59 | #X connect 4 0 22 0; 60 | #X connect 6 0 2 0; 61 | #X connect 7 0 0 0; 62 | #X connect 15 0 16 0; 63 | #X connect 16 0 22 3; 64 | #X connect 17 0 15 0; 65 | #X connect 18 0 19 0; 66 | #X connect 18 1 20 0; 67 | #X connect 22 0 11 0; 68 | #X connect 22 0 12 0; 69 | #X connect 23 0 24 0; 70 | #X connect 24 0 22 4; 71 | #X connect 25 0 23 0; 72 | #X connect 26 0 27 0; 73 | #X connect 27 0 22 5; 74 | #X connect 28 0 26 0; 75 | #X connect 29 0 30 0; 76 | #X connect 29 1 31 0; 77 | -------------------------------------------------------------------------------- /biquad/fltr.twopole.amplitude.pd: -------------------------------------------------------------------------------- 1 | #N canvas 350 113 765 649 10; 2 | #X obj 23 88 inlet; 3 | #X obj 174 88 inlet; 4 | #X obj 23 182 t f f, f 17; 5 | #X obj 23 550 outlet; 6 | #X obj 122 440 outlet; 7 | #X text 23 65 b0; 8 | #X text 73 65 b1; 9 | #X text 123 65 b2; 10 | #X text 173 65 a1; 11 | #X text 223 65 a2; 12 | #X obj 73 88 inlet; 13 | #X obj 123 88 inlet; 14 | #X obj 224 88 inlet; 15 | #X obj 23 119 t b f, f 8; 16 | #X obj 78 119 t b f, f 6; 17 | #X obj 23 158 fltr.loop.for 0 \$1 1; 18 | #X obj 23 207 fltr.to.pi \$1; 19 | #X obj 23 441 sqrt, f 5; 20 | #X obj 23 229 t f f f f, f 27; 21 | #X obj 23 251 cos; 22 | #X obj 23 273 *; 23 | #X obj 123 119 t b f, f 6; 24 | #X obj 76 295 *; 25 | #X obj 76 251 * 2; 26 | #X obj 76 273 cos; 27 | #X obj 23 325 +; 28 | #X obj 23 369 t f f; 29 | #X obj 23 391 *, f 5; 30 | #X obj 23 413 +; 31 | #X obj 129 273 *; 32 | #X obj 129 251 sin; 33 | #X obj 154 251 * -1; 34 | #X obj 186 295 *; 35 | #X obj 186 251 * 2; 36 | #X obj 186 273 sin; 37 | #X obj 129 325 -; 38 | #X obj 129 349 t f f; 39 | #X obj 129 371 *, f 5; 40 | #X text 13 17 G(ω) = b0 / √((1 + a1 * cos(ωτ) + a2 * cos(2ωτ))^2 41 | + (-a1 * sin(ωτ) - a2 * sin(2ωτ))^2), f 61; 42 | #X obj 23 463 t b f; 43 | #X obj 23 485 f; 44 | #X obj 23 507 /; 45 | #X obj 23 347 + 1; 46 | #X obj 23 531 clip 0 15; 47 | #X connect 0 0 13 0; 48 | #X connect 1 0 14 0; 49 | #X connect 2 0 16 0; 50 | #X connect 2 1 4 0; 51 | #X connect 12 0 21 0; 52 | #X connect 13 0 15 0; 53 | #X connect 13 1 40 1; 54 | #X connect 14 0 15 0; 55 | #X connect 14 1 20 1; 56 | #X connect 14 1 31 0; 57 | #X connect 15 0 2 0; 58 | #X connect 16 0 18 0; 59 | #X connect 17 0 39 0; 60 | #X connect 18 0 19 0; 61 | #X connect 18 1 23 0; 62 | #X connect 18 2 30 0; 63 | #X connect 18 3 33 0; 64 | #X connect 19 0 20 0; 65 | #X connect 20 0 25 0; 66 | #X connect 21 0 15 0; 67 | #X connect 21 1 22 1; 68 | #X connect 21 1 32 1; 69 | #X connect 22 0 25 1; 70 | #X connect 23 0 24 0; 71 | #X connect 24 0 22 0; 72 | #X connect 25 0 42 0; 73 | #X connect 26 0 27 0; 74 | #X connect 26 1 27 1; 75 | #X connect 27 0 28 0; 76 | #X connect 28 0 17 0; 77 | #X connect 29 0 35 0; 78 | #X connect 30 0 29 0; 79 | #X connect 31 0 29 1; 80 | #X connect 32 0 35 1; 81 | #X connect 33 0 34 0; 82 | #X connect 34 0 32 0; 83 | #X connect 35 0 36 0; 84 | #X connect 36 0 37 0; 85 | #X connect 36 1 37 1; 86 | #X connect 37 0 28 1; 87 | #X connect 39 0 40 0; 88 | #X connect 39 1 41 1; 89 | #X connect 40 0 41 0; 90 | #X connect 41 0 43 0; 91 | #X connect 42 0 26 0; 92 | #X connect 43 0 3 0; 93 | #X coords 0 649 1 648 366 40 0; 94 | -------------------------------------------------------------------------------- /twopole/fltr.twopole.amplitude.pd: -------------------------------------------------------------------------------- 1 | #N canvas 350 113 765 649 10; 2 | #X obj 23 88 inlet; 3 | #X obj 174 88 inlet; 4 | #X obj 23 182 t f f, f 17; 5 | #X obj 23 550 outlet; 6 | #X obj 122 440 outlet; 7 | #X text 23 65 b0; 8 | #X text 73 65 b1; 9 | #X text 123 65 b2; 10 | #X text 173 65 a1; 11 | #X text 223 65 a2; 12 | #X obj 73 88 inlet; 13 | #X obj 123 88 inlet; 14 | #X obj 224 88 inlet; 15 | #X obj 23 119 t b f, f 8; 16 | #X obj 78 119 t b f, f 6; 17 | #X obj 23 158 fltr.loop.for 0 \$1 1; 18 | #X obj 23 207 fltr.to.pi \$1; 19 | #X obj 23 441 sqrt, f 5; 20 | #X obj 23 229 t f f f f, f 27; 21 | #X obj 23 251 cos; 22 | #X obj 23 273 *; 23 | #X obj 123 119 t b f, f 6; 24 | #X obj 76 295 *; 25 | #X obj 76 251 * 2; 26 | #X obj 76 273 cos; 27 | #X obj 23 325 +; 28 | #X obj 23 369 t f f; 29 | #X obj 23 391 *, f 5; 30 | #X obj 23 413 +; 31 | #X obj 129 273 *; 32 | #X obj 129 251 sin; 33 | #X obj 154 251 * -1; 34 | #X obj 186 295 *; 35 | #X obj 186 251 * 2; 36 | #X obj 186 273 sin; 37 | #X obj 129 325 -; 38 | #X obj 129 349 t f f; 39 | #X obj 129 371 *, f 5; 40 | #X text 13 17 G(ω) = b0 / √((1 + a1 * cos(ωτ) + a2 * cos(2ωτ))^2 41 | + (-a1 * sin(ωτ) - a2 * sin(2ωτ))^2), f 61; 42 | #X obj 23 463 t b f; 43 | #X obj 23 485 f; 44 | #X obj 23 507 /; 45 | #X obj 23 347 + 1; 46 | #X obj 23 531 clip 0 15; 47 | #X connect 0 0 13 0; 48 | #X connect 1 0 14 0; 49 | #X connect 2 0 16 0; 50 | #X connect 2 1 4 0; 51 | #X connect 12 0 21 0; 52 | #X connect 13 0 15 0; 53 | #X connect 13 1 40 1; 54 | #X connect 14 0 15 0; 55 | #X connect 14 1 20 1; 56 | #X connect 14 1 31 0; 57 | #X connect 15 0 2 0; 58 | #X connect 16 0 18 0; 59 | #X connect 17 0 39 0; 60 | #X connect 18 0 19 0; 61 | #X connect 18 1 23 0; 62 | #X connect 18 2 30 0; 63 | #X connect 18 3 33 0; 64 | #X connect 19 0 20 0; 65 | #X connect 20 0 25 0; 66 | #X connect 21 0 15 0; 67 | #X connect 21 1 22 1; 68 | #X connect 21 1 32 1; 69 | #X connect 22 0 25 1; 70 | #X connect 23 0 24 0; 71 | #X connect 24 0 22 0; 72 | #X connect 25 0 42 0; 73 | #X connect 26 0 27 0; 74 | #X connect 26 1 27 1; 75 | #X connect 27 0 28 0; 76 | #X connect 28 0 17 0; 77 | #X connect 29 0 35 0; 78 | #X connect 30 0 29 0; 79 | #X connect 31 0 29 1; 80 | #X connect 32 0 35 1; 81 | #X connect 33 0 34 0; 82 | #X connect 34 0 32 0; 83 | #X connect 35 0 36 0; 84 | #X connect 36 0 37 0; 85 | #X connect 36 1 37 1; 86 | #X connect 37 0 28 1; 87 | #X connect 39 0 40 0; 88 | #X connect 39 1 41 1; 89 | #X connect 40 0 41 0; 90 | #X connect 41 0 43 0; 91 | #X connect 42 0 26 0; 92 | #X connect 43 0 3 0; 93 | #X coords 0 649 1 648 366 40 0; 94 | -------------------------------------------------------------------------------- /misc/fltr.response.amplitude.pd: -------------------------------------------------------------------------------- 1 | #N canvas 517 140 878 526 10; 2 | #X obj 493 17 loadbang; 3 | #X msg 493 110 xticks 0 512 2; 4 | #N canvas 0 22 450 278 (subpatch) 0; 5 | #X array \$0-amp 2048 float 4; 6 | #X coords 0 2 2047 0 300 140 2 0 0; 7 | #X restore 127 174 graph; 8 | #X text 121 321 0; 9 | #X text 197 313 π; 10 | #X text 197 320 –; 11 | #X text 272 313 π; 12 | #X text 272 320 –; 13 | #X text 272 329 4; 14 | #X text 421 313 π; 15 | #X text 421 320 –; 16 | #X text 421 329 2; 17 | #X text 197 329 8; 18 | #X text 347 320 –; 19 | #X text 347 329 8; 20 | #X text 344 313 3π; 21 | #X text 214 103 Amplitude Response G(ω); 22 | #X text 146 344 Gain g / Normalized Frequency ω (rad/sample); 23 | #X obj 112 375 r \$1-b0; 24 | #X obj 159 375 r \$1-b1; 25 | #X obj 206 376 r \$1-b2; 26 | #X obj 253 375 r \$1-a1; 27 | #X obj 301 375 r \$1-a2; 28 | #X obj 121 153 cnv 15 300 20 empty empty empty 20 12 0 14 -262144 -66577 29 | 0; 30 | #X obj 112 484 tabwrite \$0-amp, f 32; 31 | #X obj 493 403 s \$0-amp; 32 | #X obj 100 122 fltr.\$2.amplitude.eq, f 32; 33 | #X obj 112 449 fltr.\$2.amplitude 2048, f 32; 34 | #X obj 687 177 / 4; 35 | #X obj 687 133 f \$4; 36 | #X obj 687 155 - \$3; 37 | #X obj 640 133 f \$3; 38 | #X obj 640 199 pack f f; 39 | #X msg 640 221 yticks \$1 \$2 1; 40 | #X obj 593 155 until; 41 | #X obj 593 134 f 5; 42 | #X obj 593 287 list; 43 | #X obj 624 177 + 0; 44 | #X obj 593 309 list trim; 45 | #X obj 593 177 f \$3; 46 | #X obj 593 265 list prepend ylabel -40; 47 | #X obj 593 199 * 10; 48 | #X obj 593 221 int; 49 | #X obj 593 243 / 10; 50 | #X obj 593 111 t b b b b, f 24; 51 | #X obj 734 138 pack \$3 \$4; 52 | #X msg 734 176 bounds 0 \$2 2047 \$1; 53 | #X connect 0 0 1 0; 54 | #X connect 0 0 44 0; 55 | #X connect 1 0 25 0; 56 | #X connect 18 0 27 0; 57 | #X connect 19 0 27 1; 58 | #X connect 20 0 27 2; 59 | #X connect 21 0 27 3; 60 | #X connect 22 0 27 4; 61 | #X connect 27 0 24 0; 62 | #X connect 27 1 24 1; 63 | #X connect 28 0 32 1; 64 | #X connect 28 0 37 1; 65 | #X connect 29 0 30 0; 66 | #X connect 30 0 28 0; 67 | #X connect 31 0 32 0; 68 | #X connect 32 0 33 0; 69 | #X connect 33 0 25 0; 70 | #X connect 34 0 39 0; 71 | #X connect 35 0 34 0; 72 | #X connect 36 0 38 0; 73 | #X connect 36 0 40 1; 74 | #X connect 37 0 39 1; 75 | #X connect 38 0 25 0; 76 | #X connect 39 0 37 0; 77 | #X connect 39 0 41 0; 78 | #X connect 40 0 36 0; 79 | #X connect 41 0 42 0; 80 | #X connect 42 0 43 0; 81 | #X connect 43 0 40 0; 82 | #X connect 44 0 35 0; 83 | #X connect 44 1 31 0; 84 | #X connect 44 2 29 0; 85 | #X connect 44 3 45 0; 86 | #X connect 45 0 46 0; 87 | #X connect 46 0 25 0; 88 | #X coords 0 -1 1 1 346 260 2 100 100; 89 | -------------------------------------------------------------------------------- /ftr.scope~.pd: -------------------------------------------------------------------------------- 1 | #N canvas 332 87 1076 712 12; 2 | #X obj 241 9 inlet~; 3 | #X obj 62 63 metro 20; 4 | #X obj 601 201 cnv 15 274 218 empty empty empty 20 12 0 14 -195568 5 | -66577 0; 6 | #X obj 242 122 tabwrite~ \$0-gain; 7 | #X obj 179 664 send \$0-gain; 8 | #X msg 179 594 resize \$1; 9 | #X obj 753 231 c.menu @size 91 20 @fontname "DejaVu" @fontweight "normal" 10 | @fontslant "roman" @fontsize 12 @receive "(null)" @send "(null)" @presetname 11 | "(null)" @hover 0 @items "256" "512" "1024" "2048" "4096" "8192" @states 12 | 0 0 0 0 0 0 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.0316186 0.00790465 13 | 0.0316186 1 @textcolor 0 0 0 1; 14 | #X obj 605 553 s \$0-scale-mode; 15 | #X obj 851 137 loadbang; 16 | #X obj 753 544 pow, f 5; 17 | #X obj 753 519 f 2; 18 | #X obj 753 494 t b f; 19 | #X obj 851 162 f 1; 20 | #X obj 851 231 c.toggle @size 20 20 @fontname "Helvetica" @fontweight 21 | "normal" @fontslant "roman" @fontsize 11 @receive "(null)" @send "(null)" 22 | @presetname "(null)" @bgcolor 0.75 0.75 0.75 1 @bdcolor 0.0316186 0.00790465 23 | 0.0276663 1 @crcolor 0.0434756 0.011857 0.0395233 1; 24 | #X text 604 206 Amplitude Scale :; 25 | #X obj 852 541 s \$0-onoff; 26 | #X obj 62 14 r \$0-onoff; 27 | #X msg 28 599 xticks \$1 \$1 1; 28 | #X obj 456 562 loadbang; 29 | #N canvas 0 23 450 278 (subpatch) 0; 30 | #X array \$0-gain 1024 float 2; 31 | #X coords 0 2 1024 -2 268 140 1 0 0; 32 | #X restore 604 255 graph; 33 | #X obj 373 58 block~ 1024 1; 34 | #X text 752 206 Block Size :; 35 | #X obj 753 571 s \$0-block-size; 36 | #X obj 179 505 r \$0-block-size; 37 | #X msg 373 32 set \$1 1; 38 | #X obj 373 7 r \$0-block-size; 39 | #X obj 605 231 c.number @size 72 20 @fontname "DejaVu" @fontweight 40 | "normal" @fontslant "roman" @fontsize 12 @receive "(null)" @send "(null)" 41 | @presetname "(null)" @min "(null)" @max "(null)" @minmax "(null)" "(null)" 42 | @decimal 6 @bgcolor 0.75 0.75 0.75 1 @bdcolor 0 0 0 1 @textcolor 0 43 | 0 0 1; 44 | #X obj 755 137 loadbang; 45 | #X obj 753 468 + 8; 46 | #X obj 305 503 r \$0-scale-mode; 47 | #X obj 605 137 loadbang; 48 | #X obj 605 162 f 2; 49 | #X msg 295 608 bounds 0 \$1 \$2 \$3; 50 | #X obj 296 578 pack 1 2048 -1; 51 | #X obj 305 528 t f f; 52 | #X obj 362 552 * -1; 53 | #X obj 229 532 t b f; 54 | #X obj 28 571 * 0.25; 55 | #X msg 457 595 yticks 0 0.2 5; 56 | #X obj 755 162 f 2; 57 | #X connect 0 0 3 0; 58 | #X connect 1 0 3 0; 59 | #X connect 5 0 4 0; 60 | #X connect 6 0 28 0; 61 | #X connect 8 0 12 0; 62 | #X connect 9 0 22 0; 63 | #X connect 10 0 9 0; 64 | #X connect 11 0 10 0; 65 | #X connect 11 1 9 1; 66 | #X connect 12 0 13 0; 67 | #X connect 13 0 15 0; 68 | #X connect 16 0 1 0; 69 | #X connect 17 0 4 0; 70 | #X connect 18 0 38 0; 71 | #X connect 23 0 5 0; 72 | #X connect 23 0 36 0; 73 | #X connect 23 0 37 0; 74 | #X connect 24 0 20 0; 75 | #X connect 25 0 24 0; 76 | #X connect 26 0 7 0; 77 | #X connect 27 0 39 0; 78 | #X connect 28 0 11 0; 79 | #X connect 29 0 34 0; 80 | #X connect 30 0 31 0; 81 | #X connect 31 0 26 0; 82 | #X connect 32 0 4 0; 83 | #X connect 33 0 32 0; 84 | #X connect 34 0 33 0; 85 | #X connect 34 1 35 0; 86 | #X connect 35 0 33 2; 87 | #X connect 36 0 33 0; 88 | #X connect 36 1 33 1; 89 | #X connect 37 0 17 0; 90 | #X connect 38 0 4 0; 91 | #X connect 39 0 6 0; 92 | #X coords 0 -1 1 1 276 220 2 600 200; 93 | -------------------------------------------------------------------------------- /biquad/fltr.biquad~.pd: -------------------------------------------------------------------------------- 1 | #N canvas 504 83 547 528 12; 2 | #X obj 97 50 inlet~; 3 | #X obj 222 50 inlet~; 4 | #X obj 158 50 inlet~; 5 | #X obj 97 105 *~, f 8; 6 | #X obj 307 50 inlet~; 7 | #X obj 97 485 outlet~; 8 | #X obj 97 375 cpole~, f 7; 9 | #X obj 97 415 cpole~, f 20; 10 | #X obj 372 50 inlet~; 11 | #X obj 457 50 inlet~; 12 | #N canvas 0 22 622 473 to.complex 0; 13 | #X obj 222 87 *~; 14 | #X obj 307 87 *~; 15 | #X obj 307 112 sqrt~; 16 | #X obj 254 244 sig~ 1; 17 | #X obj 254 269 -~; 18 | #X obj 307 137 *~ -2; 19 | #X obj 275 216 *~; 20 | #X obj 254 294 sqrt~; 21 | #X obj 254 319 *~, f 7; 22 | #X obj 254 344 *~ -1; 23 | #X obj 201 168 /~; 24 | #X obj 201 217 *~; 25 | #X obj 201 393 outlet~; 26 | #X obj 271 393 outlet~; 27 | #X obj 341 393 outlet~; 28 | #X obj 411 393 outlet~; 29 | #X obj 210 29 inlet~; 30 | #X obj 280 29 inlet~; 31 | #X obj 350 29 inlet~; 32 | #X connect 0 0 10 0; 33 | #X connect 1 0 2 0; 34 | #X connect 2 0 5 0; 35 | #X connect 2 0 8 1; 36 | #X connect 2 0 11 1; 37 | #X connect 3 0 4 0; 38 | #X connect 4 0 7 0; 39 | #X connect 5 0 10 1; 40 | #X connect 6 0 4 1; 41 | #X connect 7 0 8 0; 42 | #X connect 8 0 9 0; 43 | #X connect 8 0 13 0; 44 | #X connect 9 0 15 0; 45 | #X connect 10 0 11 0; 46 | #X connect 10 0 6 0; 47 | #X connect 10 0 6 1; 48 | #X connect 11 0 12 0; 49 | #X connect 11 0 14 0; 50 | #X connect 16 0 0 1; 51 | #X connect 16 0 1 1; 52 | #X connect 17 0 0 0; 53 | #X connect 18 0 1 0; 54 | #X restore 311 225 pd to.complex; 55 | #N canvas 0 22 622 473 to.complex 0; 56 | #X obj 222 87 *~; 57 | #X obj 307 87 *~; 58 | #X obj 307 112 sqrt~; 59 | #X obj 254 244 sig~ 1; 60 | #X obj 254 269 -~; 61 | #X obj 307 137 *~ -2; 62 | #X obj 275 216 *~; 63 | #X obj 254 294 sqrt~; 64 | #X obj 254 319 *~, f 7; 65 | #X obj 254 344 *~ -1; 66 | #X obj 201 168 /~; 67 | #X obj 201 217 *~; 68 | #X obj 201 393 outlet~; 69 | #X obj 271 393 outlet~; 70 | #X obj 341 393 outlet~; 71 | #X obj 411 393 outlet~; 72 | #X obj 210 29 inlet~; 73 | #X obj 280 29 inlet~; 74 | #X obj 350 29 inlet~; 75 | #X connect 0 0 10 0; 76 | #X connect 1 0 2 0; 77 | #X connect 2 0 5 0; 78 | #X connect 2 0 8 1; 79 | #X connect 2 0 11 1; 80 | #X connect 3 0 4 0; 81 | #X connect 4 0 7 0; 82 | #X connect 5 0 10 1; 83 | #X connect 6 0 4 1; 84 | #X connect 7 0 8 0; 85 | #X connect 8 0 9 0; 86 | #X connect 8 0 13 0; 87 | #X connect 9 0 15 0; 88 | #X connect 10 0 11 0; 89 | #X connect 10 0 6 0; 90 | #X connect 10 0 6 1; 91 | #X connect 11 0 12 0; 92 | #X connect 11 0 14 0; 93 | #X connect 16 0 0 1; 94 | #X connect 16 0 1 1; 95 | #X connect 17 0 0 0; 96 | #X connect 18 0 1 0; 97 | #X restore 191 195 pd to.complex; 98 | #X obj 97 275 czero~, f 7; 99 | #X obj 97 315 czero~, f 7; 100 | #X connect 0 0 3 0; 101 | #X connect 1 0 11 1; 102 | #X connect 2 0 3 1; 103 | #X connect 2 0 10 0; 104 | #X connect 2 0 11 0; 105 | #X connect 3 0 12 0; 106 | #X connect 4 0 11 2; 107 | #X connect 6 0 7 0; 108 | #X connect 6 1 7 1; 109 | #X connect 7 0 5 0; 110 | #X connect 8 0 10 1; 111 | #X connect 9 0 10 2; 112 | #X connect 10 0 6 2; 113 | #X connect 10 1 6 3; 114 | #X connect 10 2 7 2; 115 | #X connect 10 3 7 3; 116 | #X connect 11 0 12 2; 117 | #X connect 11 1 12 3; 118 | #X connect 11 2 13 2; 119 | #X connect 11 3 13 3; 120 | #X connect 12 0 13 0; 121 | #X connect 12 1 13 1; 122 | #X connect 13 0 6 0; 123 | #X connect 13 1 6 1; 124 | -------------------------------------------------------------------------------- /misc/fltr.spectrogram~.pd: -------------------------------------------------------------------------------- 1 | #N canvas 458 32 1076 712 10; 2 | #X obj 651 9 inlet~; 3 | #X obj 651 69 *~; 4 | #X obj 688 69 *~; 5 | #X obj 651 94 sqrt~; 6 | #X obj 771 275 rmstodb~; 7 | #X obj 461 352 metro 20; 8 | #X obj 771 302 dbtopow~; 9 | #X obj 651 44 rfft~; 10 | #X obj 541 240 *~ 0; 11 | #X obj 570 216 == 0; 12 | #X obj 680 216 == 1; 13 | #X obj 800 216 == 2; 14 | #X obj 680 179 r \$0-scale-mode; 15 | #X obj 651 275 rmstodb~; 16 | #X obj 651 240 *~ 0; 17 | #X obj 771 240 *~ 0; 18 | #X obj 651 327 clip~ 0 100; 19 | #X obj 255 485 r \$0-fft-size; 20 | #X obj 783 7 r \$0-fft-size; 21 | #X obj 279 550 * 0.5; 22 | #X msg 279 594 resize \$1; 23 | #X obj 651 118 /~ 2047; 24 | #X obj 731 85 - 1; 25 | #X obj 128 571 * 0.125; 26 | #X msg 783 32 set \$1 2; 27 | #X obj 461 303 r \$0-onoff; 28 | #X msg 128 599 xticks \$1 \$1 1; 29 | #N canvas 0 22 450 278 (subpatch) 0; 30 | #X array \$0-spectrum 1024 float 4; 31 | #X coords 0 0.1 1024 0 300 140 2 0 0; 32 | #X restore 136 174 graph; 33 | #X text 130 321 0; 34 | #X text 206 313 π; 35 | #X text 206 320 –; 36 | #X text 281 313 π; 37 | #X text 281 320 –; 38 | #X text 281 329 4; 39 | #X text 429 313 π; 40 | #X text 429 320 –; 41 | #X text 429 329 2; 42 | #X text 206 329 8; 43 | #X text 355 320 –; 44 | #X text 355 329 8; 45 | #X text 352 313 3π; 46 | #X obj 783 58 switch~ 2048 2; 47 | #X obj 873 7 r \$0-onoff; 48 | #X text 149 344 Gain g / Normalized Frequency ω (rad/sample); 49 | #X obj 651 459 tabwrite~ \$0-spectrum; 50 | #X obj 279 664 send \$0-spectrum; 51 | #X text 240 102 Spectrogram; 52 | #X obj 395 594 pack 1 1024; 53 | #X msg 395 624 bounds 0 \$1 \$2 0; 54 | #X obj 121 153 cnv 15 300 20 empty empty empty 20 12 0 14 -262144 -66577 55 | 0; 56 | #N canvas 42 270 450 300 cadre 0; 57 | #X obj 244 161 s \$0-scale-mode; 58 | #X obj 127 182 s \$0-onoff; 59 | #X text 115 102 State; 60 | #X text 162 102 FFT Size; 61 | #X text 242 102 Amplitude Scale; 62 | #X obj 165 118 nbx 5 14 2 1e+37 0 0 empty empty empty 0 -8 0 10 -262144 63 | -1 -1 2048 256; 64 | #X msg 145 77 set \$1; 65 | #N canvas 0 22 450 300 toPowerOf2 0; 66 | #X obj 230 98 log; 67 | #X obj 230 120 /; 68 | #X obj 230 47 t f b; 69 | #X obj 260 100 log; 70 | #X obj 260 76 f 2; 71 | #X obj 230 142 int; 72 | #X obj 230 164 max 1; 73 | #X obj 229 233 pow, f 5; 74 | #X obj 229 189 t b f; 75 | #X obj 229 211 f 2; 76 | #X obj 230 23 inlet; 77 | #X obj 229 255 outlet; 78 | #X connect 0 0 1 0; 79 | #X connect 1 0 5 0; 80 | #X connect 2 0 0 0; 81 | #X connect 2 1 4 0; 82 | #X connect 3 0 1 1; 83 | #X connect 4 0 3 0; 84 | #X connect 5 0 6 0; 85 | #X connect 6 0 8 0; 86 | #X connect 7 0 11 0; 87 | #X connect 8 0 9 0; 88 | #X connect 8 1 7 1; 89 | #X connect 9 0 7 0; 90 | #X connect 10 0 2 0; 91 | #X restore 145 145 pd toPowerOf2; 92 | #X obj 165 169 s \$0-fft-size; 93 | #X obj 127 118 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 94 | 1; 95 | #N canvas 0 22 450 300 toScale 0; 96 | #X obj 116 162 sel 0 1 2; 97 | #X obj 116 184 symbol Rms; 98 | #X obj 133 204 symbol Decibel; 99 | #X obj 151 224 symbol Power; 100 | #X obj 64 14 sel Rms Decibel Power; 101 | #X msg 116 246 set \$1; 102 | #X obj 91 45 f 0; 103 | #X obj 122 45 f 1; 104 | #X obj 152 45 f 2; 105 | #X obj 168 96 inlet; 106 | #X obj 165 139 outlet; 107 | #X obj 228 96 inlet; 108 | #X obj 225 139 outlet; 109 | #X obj 187 46 bang; 110 | #X connect 0 0 1 0; 111 | #X connect 0 1 2 0; 112 | #X connect 0 2 3 0; 113 | #X connect 1 0 5 0; 114 | #X connect 2 0 5 0; 115 | #X connect 3 0 5 0; 116 | #X connect 4 0 6 0; 117 | #X connect 4 1 7 0; 118 | #X connect 4 2 8 0; 119 | #X connect 4 3 13 0; 120 | #X connect 5 0 12 0; 121 | #X connect 6 0 10 0; 122 | #X connect 7 0 10 0; 123 | #X connect 8 0 10 0; 124 | #X connect 9 0 0 0; 125 | #X connect 11 0 4 0; 126 | #X connect 13 0 10 0; 127 | #X restore 259 141 pd toScale; 128 | #X obj 244 118 hradio 15 1 0 3 empty empty empty 0 -8 0 10 -262144 129 | -1 -1 2; 130 | #X symbolatom 293 119 10 0 0 0 - - -, f 10; 131 | #X obj 244 46 loadbang; 132 | #X obj 244 68 f 0; 133 | #X obj 127 46 loadbang; 134 | #X obj 127 68 f 1; 135 | #X obj 180 20 loadbang; 136 | #X obj 180 42 f 2048; 137 | #X connect 5 0 7 0; 138 | #X connect 5 0 8 0; 139 | #X connect 6 0 5 0; 140 | #X connect 7 0 6 0; 141 | #X connect 9 0 1 0; 142 | #X connect 10 0 11 0; 143 | #X connect 10 1 12 0; 144 | #X connect 11 0 10 0; 145 | #X connect 11 0 0 0; 146 | #X connect 12 0 10 1; 147 | #X connect 13 0 14 0; 148 | #X connect 14 0 11 0; 149 | #X connect 15 0 16 0; 150 | #X connect 16 0 9 0; 151 | #X connect 17 0 18 0; 152 | #X connect 18 0 5 0; 153 | #X coords 0 -1 1 1 346 40 2 100 100; 154 | #X restore 100 122 pd cadre; 155 | #X obj 255 522 t f b f f, f 11; 156 | #X obj 430 441 r \$0-scale-mode; 157 | #N canvas 134 277 552 378 mapscale 0; 158 | #X obj 275 130 t b b; 159 | #X obj 275 109 sel 0 1 2, f 26; 160 | #X obj 275 51 inlet; 161 | #X msg 128 159 yticks 0 20 1; 162 | #X obj 326 130 t b b; 163 | #X obj 326 152 f 100; 164 | #X obj 376 130 t b b; 165 | #X obj 306 255 outlet; 166 | #X obj 236 275 outlet; 167 | #X obj 275 152 f 0.5; 168 | #X msg 128 129 yticks 0 0.5 1; 169 | #X obj 376 152 f 0.1; 170 | #X msg 127 193 yticks 0 0.02 1; 171 | #X obj 118 64 f 30; 172 | #X obj 118 86 / 2048; 173 | #X obj 90 18 inlet; 174 | #X obj 118 108 * -1; 175 | #X obj 90 135 *; 176 | #X obj 19 208 f; 177 | #X msg 18 229 ylabel \$1 0 0.1 0.2 0.3 0.4 0.5; 178 | #X obj 19 258 f; 179 | #X msg 19 278 ylabel \$1 0 20 40 60 80 100; 180 | #X obj 90 165 * 0.5; 181 | #X obj 19 307 f; 182 | #X msg 19 333 ylabel \$1 0 0.02 0.04 0.06 0.08 0.1; 183 | #X obj 90 40 t b f b; 184 | #X obj 275 73 f 0; 185 | #X connect 0 0 10 0; 186 | #X connect 0 0 18 0; 187 | #X connect 0 1 9 0; 188 | #X connect 1 0 0 0; 189 | #X connect 1 1 4 0; 190 | #X connect 1 2 6 0; 191 | #X connect 2 0 26 0; 192 | #X connect 3 0 8 0; 193 | #X connect 4 0 5 0; 194 | #X connect 4 1 3 0; 195 | #X connect 4 1 20 0; 196 | #X connect 5 0 7 0; 197 | #X connect 6 0 12 0; 198 | #X connect 6 0 23 0; 199 | #X connect 6 1 11 0; 200 | #X connect 9 0 7 0; 201 | #X connect 10 0 8 0; 202 | #X connect 11 0 7 0; 203 | #X connect 12 0 8 0; 204 | #X connect 13 0 14 0; 205 | #X connect 14 0 16 0; 206 | #X connect 15 0 25 0; 207 | #X connect 16 0 17 1; 208 | #X connect 17 0 22 0; 209 | #X connect 17 0 18 1; 210 | #X connect 17 0 20 1; 211 | #X connect 18 0 19 0; 212 | #X connect 19 0 8 0; 213 | #X connect 20 0 21 0; 214 | #X connect 21 0 8 0; 215 | #X connect 22 0 23 1; 216 | #X connect 23 0 24 0; 217 | #X connect 24 0 8 0; 218 | #X connect 25 0 26 0; 219 | #X connect 25 1 17 0; 220 | #X connect 25 2 13 0; 221 | #X connect 26 0 1 0; 222 | #X restore 430 517 pd mapscale; 223 | #X obj 319 550 * 0.5; 224 | #X obj 541 327 clip~ 0 0.5; 225 | #X obj 771 327 clip~ 0 0.1; 226 | #X obj 731 56 / 4; 227 | #X connect 0 0 7 0; 228 | #X connect 1 0 3 0; 229 | #X connect 2 0 3 0; 230 | #X connect 3 0 21 0; 231 | #X connect 4 0 6 0; 232 | #X connect 5 0 44 0; 233 | #X connect 6 0 56 0; 234 | #X connect 7 0 1 0; 235 | #X connect 7 0 1 1; 236 | #X connect 7 1 2 0; 237 | #X connect 7 1 2 1; 238 | #X connect 8 0 55 0; 239 | #X connect 9 0 8 1; 240 | #X connect 10 0 14 1; 241 | #X connect 11 0 15 1; 242 | #X connect 12 0 11 0; 243 | #X connect 12 0 10 0; 244 | #X connect 12 0 9 0; 245 | #X connect 13 0 16 0; 246 | #X connect 14 0 13 0; 247 | #X connect 15 0 4 0; 248 | #X connect 16 0 44 0; 249 | #X connect 17 0 51 0; 250 | #X connect 17 0 53 0; 251 | #X connect 18 0 24 0; 252 | #X connect 18 0 57 0; 253 | #X connect 19 0 20 0; 254 | #X connect 20 0 45 0; 255 | #X connect 21 0 8 0; 256 | #X connect 21 0 14 0; 257 | #X connect 21 0 15 0; 258 | #X connect 22 0 21 1; 259 | #X connect 23 0 26 0; 260 | #X connect 24 0 41 0; 261 | #X connect 25 0 5 0; 262 | #X connect 26 0 45 0; 263 | #X connect 42 0 41 0; 264 | #X connect 47 0 48 0; 265 | #X connect 48 0 45 0; 266 | #X connect 51 0 23 0; 267 | #X connect 51 1 47 0; 268 | #X connect 51 2 54 0; 269 | #X connect 51 3 19 0; 270 | #X connect 52 0 53 1; 271 | #X connect 53 0 45 0; 272 | #X connect 53 1 47 0; 273 | #X connect 54 0 47 1; 274 | #X connect 55 0 44 0; 275 | #X connect 56 0 44 0; 276 | #X connect 57 0 22 0; 277 | #X coords 0 -1 1 1 346 260 2 100 100; 278 | --------------------------------------------------------------------------------