On 22/04/13 12:00, Jeppi Jeppi wrote:
> Hi again,
> I am looking for a suitable filter or combination of filters such that with a 
> single control the user can morph somehow between very 
> lowpass-lowpass-flat-highpass-very highpass response... 

You can use cpole~ czero~ and build your desired transfer function -
attached is a little example (totally unscientific, the response curve
is really rough) - the cpole2~ and czero2~ abstractions wrap the vanilla
objects to calculate the amplitude/frequency response[1] - the peak is
normalized to 1 to avoid ear explosions (but with a 1-block delay due to
the snapshot~ -> sig~ stuff, maybe this could be latched with fexpr~ to
avoid glitches).

[1]
https://ccrma.stanford.edu/~jos/filters/Graphical_Amplitude_Response.html

> What pd filters would you find suitable for that?


Claude
-- 
http://mathr.co.uk
#N canvas 787 412 450 300 10;
#X obj 25 22 inlet~;
#X obj 24 47 cpole~;
#X obj 23 65 cpole~;
#X obj 25 85 outlet~;
#X obj 73 23 inlet~;
#X obj 83 86 outlet~;
#X obj 84 67 *~ -1;
#X obj 330 24 inlet~;
#X obj 376 25 inlet~;
#X obj 131 19 inlet~;
#X obj 183 19 inlet~;
#X obj 329 65 -~;
#X obj 330 86 *~;
#X obj 360 66 -~;
#X obj 361 88 *~;
#X obj 387 66 +~;
#X obj 387 87 *~;
#X obj 131 92 outlet~;
#X obj 181 93 outlet~;
#X obj 244 20 inlet~;
#X obj 241 75 /~;
#X obj 241 96 outlet~;
#X obj 330 172 *~;
#X obj 330 128 +~;
#X obj 364 131 +~;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 1 1 2 1;
#X connect 2 0 3 0;
#X connect 2 1 5 0;
#X connect 4 0 1 1;
#X connect 6 0 2 3;
#X connect 7 0 2 2;
#X connect 7 0 1 2;
#X connect 7 0 11 1;
#X connect 8 0 6 0;
#X connect 8 0 13 1;
#X connect 8 0 15 1;
#X connect 8 0 1 3;
#X connect 9 0 11 0;
#X connect 9 0 17 0;
#X connect 10 0 13 0;
#X connect 10 0 18 0;
#X connect 10 0 15 0;
#X connect 11 0 12 0;
#X connect 11 0 12 1;
#X connect 12 0 23 0;
#X connect 12 0 24 0;
#X connect 13 0 14 0;
#X connect 13 0 14 1;
#X connect 14 0 23 1;
#X connect 15 0 16 0;
#X connect 15 0 16 1;
#X connect 16 0 24 1;
#X connect 19 0 20 0;
#X connect 20 0 21 0;
#X connect 22 0 20 1;
#X connect 23 0 22 0;
#X connect 24 0 22 1;
#N canvas 787 412 450 300 10;
#X obj 25 22 inlet~;
#X obj 25 85 outlet~;
#X obj 73 23 inlet~;
#X obj 83 86 outlet~;
#X obj 84 67 *~ -1;
#X obj 330 24 inlet~;
#X obj 376 25 inlet~;
#X obj 131 19 inlet~;
#X obj 183 19 inlet~;
#X obj 329 65 -~;
#X obj 330 86 *~;
#X obj 360 66 -~;
#X obj 360 87 *~;
#X obj 387 66 +~;
#X obj 387 87 *~;
#X obj 131 92 outlet~;
#X obj 181 93 outlet~;
#X obj 244 20 inlet~;
#X obj 241 96 outlet~;
#X obj 25 43 czero~;
#X obj 25 64 czero~;
#X obj 241 75 *~;
#X obj 330 128 *~;
#X obj 330 107 +~;
#X obj 360 108 +~;
#X connect 0 0 19 0;
#X connect 2 0 19 1;
#X connect 4 0 20 3;
#X connect 5 0 9 1;
#X connect 5 0 19 2;
#X connect 5 0 20 2;
#X connect 6 0 4 0;
#X connect 6 0 11 1;
#X connect 6 0 13 1;
#X connect 6 0 19 3;
#X connect 7 0 9 0;
#X connect 7 0 15 0;
#X connect 8 0 11 0;
#X connect 8 0 16 0;
#X connect 8 0 13 0;
#X connect 9 0 10 0;
#X connect 9 0 10 1;
#X connect 10 0 23 0;
#X connect 10 0 24 0;
#X connect 11 0 12 0;
#X connect 11 0 12 1;
#X connect 12 0 23 1;
#X connect 13 0 14 0;
#X connect 13 0 14 1;
#X connect 14 0 24 1;
#X connect 17 0 21 0;
#X connect 19 0 20 0;
#X connect 19 1 20 1;
#X connect 20 0 1 0;
#X connect 20 1 3 0;
#X connect 21 0 18 0;
#X connect 22 0 21 1;
#X connect 23 0 22 0;
#X connect 24 0 22 1;
#N canvas 849 379 942 610 10;
#X obj 286 296 noise~;
#X obj 281 437 dac~;
#X obj 122 31 hsl 128 15 0 127 0 0 empty empty mid-freq -2 -8 0 10
-262144 -1 -1 5900 1;
#X obj 228 227 samplerate~;
#X obj 228 204 bang~;
#X floatatom 82 32 5 0 0 0 - - -;
#X obj 127 60 hsl 128 15 0 127 0 0 empty empty slope -2 -8 0 10 -262144
-1 -1 9200 1;
#X obj 117 267 /;
#X obj 136 135 t b f;
#X obj 147 267 /;
#X obj 112 308 * 3.14159;
#X obj 178 308 * 3.14159;
#X obj 111 327 cos;
#X obj 142 330 sin;
#X obj 180 329 cos;
#X obj 210 329 sin;
#X obj 111 348 *;
#X obj 142 351 *;
#X obj 180 350 *;
#X obj 210 350 *;
#X obj 124 91 hsl 128 15 0 127 0 0 empty empty strength -2 -8 0 10
-262144 -1 -1 11500 1;
#X obj 182 116 / 128;
#X floatatom 84 85 5 0 0 0 - - -;
#X obj 136 118 - 64;
#X obj 119 241 mtof;
#X obj 145 241 mtof;
#X obj 119 220 -;
#X obj 145 220 +;
#N canvas 0 0 450 300 (subpatch) 0;
#X array \$0-response 64 float 0;
#X coords 0 1 63 0 200 140 1;
#X restore 366 51 graph;
#X obj 117 156 pack f f f;
#X obj 181 134 t b f;
#X msg 119 200 \$1 \$2;
#X obj 117 177 t a a a;
#X msg 188 202 \$3;
#X obj 338 235 tabreceive~ \$0-cos;
#X obj 364 255 tabreceive~ \$0-sin;
#X obj 285 356 cpole2~ -------------------;
#X obj 285 326 czero2~ -------------------;
#X obj 286 392 /~;
#X obj 392 301 sig~ 1;
#X obj 564 337 bang~;
#X obj 508 401 snapshot~;
#X obj 508 465 sig~;
#X obj 676 194 loadbang;
#X msg 677 215 64;
#X obj 677 278 until;
#X obj 677 301 f 0;
#X obj 677 386 mtof;
#X obj 732 272 samplerate~;
#X obj 676 235 t f b;
#X obj 675 413 /;
#X obj 713 300 + 1;
#X obj 674 434 * 3.14159;
#X obj 674 455 t f f;
#X obj 674 476 cos;
#X obj 702 476 sin;
#X obj 677 322 t f f;
#X obj 677 343 * 2;
#X obj 677 364 + 12;
#X obj 675 499 tabwrite \$0-cos;
#X obj 707 523 tabwrite \$0-sin;
#X obj 678 148 table \$0-cos 64;
#X obj 678 169 table \$0-sin 64;
#X floatatom 569 468 8 0 0 0 - - -;
#X obj 483 568 tabsend~ \$0-response;
#X msg 530 358 clear \, set 0;
#X msg 697 260 0;
#X obj 484 494 /~;
#X obj 484 541 /~ 100;
#X obj 484 520 rmstodb~;
#X obj 483 347 sqrt~;
#X obj 508 379 fexpr~ max($x \, $y);
#X obj 114 287 clip 0 1;
#X obj 179 288 clip 0 1;
#X text 339 218 angular frequency for plot;
#X text 372 284 accumulated gain^2;
#X text 501 306 calculate peak gain \; plot amplitude response;
#X text 654 126 calculate angular frequency input;
#X floatatom 83 65 5 0 0 0 - - -;
#X text 53 491 z-plane filter adjustable high/low shelving \; Claude
Heiland-Allen 2013-04-22 <[email protected]>;
#X text 65 418 calculate pole/zero locations;
#X connect 0 0 37 0;
#X connect 2 0 5 0;
#X connect 2 0 29 0;
#X connect 3 0 7 1;
#X connect 3 0 9 1;
#X connect 4 0 3 0;
#X connect 6 0 23 0;
#X connect 7 0 72 0;
#X connect 8 0 29 0;
#X connect 8 1 29 1;
#X connect 9 0 73 0;
#X connect 10 0 12 0;
#X connect 10 0 13 0;
#X connect 11 0 14 0;
#X connect 11 0 15 0;
#X connect 12 0 16 0;
#X connect 13 0 17 0;
#X connect 14 0 18 0;
#X connect 15 0 19 0;
#X connect 16 0 37 5;
#X connect 17 0 37 6;
#X connect 18 0 36 5;
#X connect 19 0 36 6;
#X connect 20 0 21 0;
#X connect 21 0 22 0;
#X connect 21 0 30 0;
#X connect 23 0 8 0;
#X connect 23 0 78 0;
#X connect 24 0 7 0;
#X connect 25 0 9 0;
#X connect 26 0 24 0;
#X connect 27 0 25 0;
#X connect 29 0 32 0;
#X connect 30 0 29 0;
#X connect 30 1 29 2;
#X connect 31 0 26 0;
#X connect 31 0 27 0;
#X connect 32 1 31 0;
#X connect 32 2 33 0;
#X connect 33 0 19 1;
#X connect 33 0 18 1;
#X connect 33 0 17 1;
#X connect 33 0 16 1;
#X connect 34 0 37 2;
#X connect 35 0 37 3;
#X connect 36 0 38 0;
#X connect 36 4 70 0;
#X connect 37 0 36 0;
#X connect 37 1 36 1;
#X connect 37 2 36 2;
#X connect 37 3 36 3;
#X connect 37 4 36 4;
#X connect 38 0 1 1;
#X connect 38 0 1 0;
#X connect 39 0 37 4;
#X connect 40 0 65 0;
#X connect 40 0 41 0;
#X connect 41 0 42 0;
#X connect 41 0 63 0;
#X connect 42 0 38 1;
#X connect 42 0 67 1;
#X connect 43 0 44 0;
#X connect 44 0 49 0;
#X connect 45 0 46 0;
#X connect 46 0 51 0;
#X connect 46 0 56 0;
#X connect 47 0 50 0;
#X connect 48 0 50 1;
#X connect 49 0 45 0;
#X connect 49 1 48 0;
#X connect 49 1 66 0;
#X connect 50 0 52 0;
#X connect 51 0 46 1;
#X connect 52 0 53 0;
#X connect 53 0 54 0;
#X connect 53 1 55 0;
#X connect 54 0 59 0;
#X connect 55 0 60 0;
#X connect 56 0 57 0;
#X connect 56 1 59 1;
#X connect 56 1 60 1;
#X connect 57 0 58 0;
#X connect 58 0 47 0;
#X connect 65 0 71 0;
#X connect 66 0 46 1;
#X connect 67 0 69 0;
#X connect 68 0 64 0;
#X connect 69 0 68 0;
#X connect 70 0 67 0;
#X connect 70 0 71 0;
#X connect 71 0 41 0;
#X connect 72 0 10 0;
#X connect 73 0 11 0;
_______________________________________________
[email protected] mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list

Reply via email to