Dear list,
I've been trying to make a classic 3 band "DJ EQ" with a slope steep and attentuation sufficint enough to kill all frequencies in the selected bandwidth range if needed (a "kill switch"). The filter should also have as little possible resonance at the crossover frequencies to avoid coloring the sound that goes through it.
I simply lack the math knowledge to program [biquad~] by myself, so I'm playing around with the filter helpers from the GGEE library. The [lowpass], [bandpass] and [highpass] objects seem simple enough, and I've gotten pretty close to what I need from there. But there's still the issue of the crossover frequencies. The slope isn't steep enough.
So I checked out [highshelf], [lowshelf] and [hlshelf], but these are very confusing, espc the "gain" parameter. It seems I have to scale the output gain by the same ratio as the biquad frequency gain to maintain the original sound going through? This works at high frequencies, but not at low ones. So what would be the proper ratio to scale the output of the filter by in this case?
The [hml_shelf~] abstraction from IEMlib is similarly not too helpful, as the output also needs scaling (by an unknown ratio) to get the desired frequency range back up to normal levels.
I also checked out the LADSPA "DJ_EQ" plugin, but either the attentuation isn't sufficient or the cutoff not steep enough because I still get a lot of unwanted sound from the other bands. The JackEQ JACK client doesn't work properly on my machine [Gentoo PPC], so I can't tell if that would work better or not.
So besides going back to my flunked algebra and trigonometry classes to cook up a proper biquad, can anyone give me some clues on how to realize this seemingly simple filter properly?
thx, d.
Just in case anyone's curious, here's what I have so far for a DJ-style, 3-band EQ with kill switch capability, but not so flat frequency crossovers. The [lowpass]/[bandpass]/[highpass] objects are from the GGEE lib, and their equivalent in [biquad~] specs are posted afterwards for those who don't have that lib installed.
BASS: [lowpass 370 310] --> 3 x [biquad~] in series = 3 x [biquad~ 1.86972 -0.872325 0.000650245 0.00130049 0.000650245] in series
MIDS: [bandpass 1175 490] --> 3 x [biquad~] in series = 3 x [biquad~ 1.36591 -0.385279 0.307361 0 -0.307361] in series
HIGHS: [highpass 2350 130] --> 2 x [biquad~] in series = 2 x [biquad~ 1.63386 -0.729864 0.840931 -1.68186 0.840931] in series
There are still noticable notches in the lower and upper mids, however. But they work in the "musical" sense, at least for the tracks I tested them with, to isolate the bass, melody and hi-end percussion. Developed rather unscientifically using [pink~] and also some crappy German techno. Oompah-oompah and 4-to-the-floor, baby!
Suggestions and improvements deeply appreciated, d.