Forums > MaxMSP

Recreating a Maihak W49 Filter

January 14, 2008 | 5:20 pm

Hi
I am trying to make a patch that recreates the Maihak W49 Filter used in Stockhausen’s "Mikrophonie I"

It is a bandpass filter with a frequency range of 30Hz to 10kHz and a steep cutoff.

Right now I’m using the filtergraph~ object with the biquad~ object, I have one as a highpass and that is going into one that is a lowpass filter
this then goes through a signal fader then to dac~

The trouble I am having is that the cutoff isn’t very steep, and also there is a delay that happens sometimes (but not always), there is anywhere between one long delay, or 3 or 4 shorter delays.

I haven’t been able to find much information on bandpass filters in Max/MSP and this is the only way I’ve figured how to do it… any help would be greatly appreciated..
thank you,
Michael Sperone



kjg
January 15, 2008 | 12:28 am

how about something like this as a starting point?

max v2;
#N vpatcher 15 51 921 826;
#P window setfont "Sans Serif" 9.;
#P window linecount 7;
#P message 158 614 384 196617 0.997517 -1.995033 0.997517 -1.995024 0.995042 0.997517 -1.995033 0.997517 -1.995024 0.995042 0.997517 -1.995033 0.997517 -1.995024 0.995042 0.997517 -1.995033 0.997517 -1.995024 0.995042 0.997517 -1.995033 0.997517 -1.995024 0.995042 0.997517 -1.995033 0.997517 -1.995024 0.995042 0.267695 0.53539 0.267695 -0.182355 0.253135 0.267695 0.53539 0.267695 -0.182355 0.253135 0.267695 0.53539 0.267695 -0.182355 0.253135 0.267695 0.53539 0.267695 -0.182355 0.253135;
#P window linecount 1;
#P newex 319 650 51 196617 cascade~;
#B color 15;
#P newex 158 588 62 196617 prepend set;
#P outlet 60 583 15 0;
#P inlet 60 40 15 0;
#P newex 60 394 48 196617 cascade~;
#B color 15;
#P comment 199 377 155 196617 join the two lists of coefficients;
#P comment 553 168 127 196617 these coefficients 6 times;
#P comment 603 256 120 196617 12 dB/oct LPF @ 10 kHz;
#P message 106 131 45 196617 highpass;
#P newex 106 91 45 196617 loadbang;
#P message 106 112 51 196617 logfreq 1;
#P newex 106 421 45 196617 loadbang;
#P message 106 442 51 196617 logfreq 1;
#P newex 170 346 27 196617 t b l;
#P newex 158 376 39 196617 zl join;
#B color 15;
#P message 106 276 41 196617 lowpass;
#P newex 106 236 45 196617 loadbang;
#P message 106 257 51 196617 logfreq 1;
#P newex 585 195 75 196617 loadmess 0.83;
#P newex 463 195 84 196617 loadmess 10000;
#P flonum 585 217 47 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P flonum 463 217 47 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 158 313 270 196617 pack 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.;
#P window setfont "Sans Serif" 0.;
#P user filtergraph~ 158 236 440 70 3 0 0. 22050. 0.088388 2.828427 1 1 1 0 0 1 0;
#X frgb 170 170 170;
#X brgb 210 210 210;
#X rgb2 0 0 0;
#X rgb3 130 130 130;
#X rgb4 0 0 0;
#X rgb5 118 121 166;
#X rgb6 210 74 54;
#X rgb7 255 22 22;
#X linmarkers 5512.5 11025. 16537.5;
#X logmarkers 50. 500. 5000.;
#X nfilters 1;
#X setfilter 0 1 0 0 0 10000. 1. 0.83 0.0001 22050. 0.0001 2. 0.5 25.;
#X done;
#P window setfont "Sans Serif" 9.;
#P window linecount 2;
#P comment 603 462 113 196617 72 dB/oct HPF @ 30 + 48 dB/oct LPF @ 10kHz;
#P window linecount 1;
#P comment 603 112 123 196617 12 dB/oct HPF @ 30 Hz;
#P newex 585 50 75 196617 loadmess 0.86;
#P newex 463 50 66 196617 loadmess 30;
#P flonum 585 72 47 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P flonum 463 72 47 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P window setfont "Sans Serif" 0.;
#P user filtergraph~ 158 421 440 140 3 0 0. 22050. 0.088388 2. 0 1 1 0 0 1 1;
#X frgb 170 170 170;
#X brgb 210 210 210;
#X rgb2 0 0 0;
#X rgb3 130 130 130;
#X rgb4 0 0 0;
#X rgb5 118 121 166;
#X rgb6 210 74 54;
#X rgb7 255 22 22;
#X linmarkers 5512.5 11025. 16537.5;
#X logmarkers 50. 500. 5000.;
#X nfilters 10;
#X setfilter 9 0 1 0 0 1537.734375 1. 2.5 0. 0. 0. 0. 0. 0.;
#X setfilter 8 0 1 0 0 1025.15625 1. 2.5 0. 0. 0. 0. 0. 0.;
#X setfilter 7 0 1 0 0 683.4375 1. 2.5 0. 0. 0. 0. 0. 0.;
#X setfilter 6 0 1 0 0 455.625 1. 2.5 0. 0. 0. 0. 0. 0.;
#X setfilter 5 0 1 0 0 281.25 1. 1.3 30. 19845. 0.0625 16. 0.5 25.;
#X setfilter 4 0 1 0 0 562.5 1. 1.3 30. 19845. 0.0625 16. 0.5 25.;
#X setfilter 3 0 1 0 0 1125. 1. 1.3 30. 19845. 0.0625 16. 0.5 25.;
#X setfilter 2 0 1 0 0 2250. 1. 1.3 30. 19845. 0.0625 16. 0.5 25.;
#X setfilter 1 0 1 0 0 4500. 1. 1.3 30. 19845. 0.0625 16. 0.5 25.;
#X setfilter 0 0 0 0 0 1000. 1. 1. 0. 22050. 0.0001 2. 0.5 25.;
#X done;
#P window setfont "Sans Serif" 9.;
#P newex 158 399 81 196617 prepend cascade;
#P newex 158 168 391 196617 pack 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.;
#P window setfont "Sans Serif" 0.;
#P user filtergraph~ 158 91 440 70 3 0 0. 22050. 0.088388 2.828427 1 1 1 0 0 1 0;
#X frgb 170 170 170;
#X brgb 210 210 210;
#X rgb2 0 0 0;
#X rgb3 130 130 130;
#X rgb4 0 0 0;
#X rgb5 118 121 166;
#X rgb6 210 74 54;
#X rgb7 255 22 22;
#X linmarkers 5512.5 11025. 16537.5;
#X logmarkers 50. 500. 5000.;
#X nfilters 1;
#X setfilter 0 2 0 0 0 30. 1. 0.86 0. 22050. 0.0001 2. 0.5 25.;
#X done;
#P window setfont "Sans Serif" 9.;
#P comment 432 313 127 196617 these coefficients 4 times;
#P window linecount 2;
#P comment 548 616 333 196617 when you are done tweaking your filter you could clean up the patch by just taking this list of coefficients and loadbanging them into a cascade~;
#P connect 32 0 31 0;
#P connect 31 0 33 0;
#P connect 21 0 31 1;
#P connect 26 0 25 0;
#P connect 26 0 27 0;
#P connect 19 0 18 0;
#P connect 19 0 20 0;
#P connect 24 0 23 0;
#P connect 27 0 2 0;
#P connect 2 0 3 0;
#P connect 18 0 12 0;
#P connect 20 0 12 0;
#P connect 12 0 13 0;
#P connect 3 0 21 0;
#P connect 22 0 21 0;
#P connect 21 0 4 0;
#P connect 4 0 5 0;
#P connect 23 0 5 0;
#P connect 21 0 34 0;
#P connect 34 0 36 0;
#P connect 13 0 22 0;
#P connect 22 1 21 1;
#P fasten 2 0 3 5 163 164 228 164;
#P fasten 12 0 13 5 163 309 228 309;
#P fasten 2 0 3 10 163 164 293 164;
#P fasten 12 0 13 10 163 309 293 309;
#P fasten 2 0 3 15 163 164 358 164;
#P fasten 12 0 13 15 163 309 358 309;
#P fasten 2 0 3 20 163 164 423 164;
#P connect 8 0 6 0;
#P connect 6 0 2 5;
#P connect 16 0 14 0;
#P connect 14 0 12 5;
#P fasten 2 0 3 25 163 164 488 164;
#P connect 9 0 7 0;
#P connect 7 0 2 7;
#P connect 17 0 15 0;
#P connect 15 0 12 7;
#P pop;


January 15, 2008 | 4:14 pm

wow, thank you this is what I’m looking for! I was just trying to figure out how to use the cascade for this!

I think I get what’s going on in this patch… I’ll be back if I’ve got more questions

thank you so much!

Michael


February 18, 2013 | 10:54 pm

this is great! does anyone have an updated version of the patch for Max 6? or is there a way to translate this into Max 6?



kjg
February 20, 2013 | 9:44 pm

This Max5 compressed text format should open fine in Max6.

– Pasted Max Patch, click to expand. –

Viewing 5 posts - 1 through 5 (of 5 total)