Reply by Philippe Strauss September 9, 20112011-09-09
On 5 sep, 20:13, robert bristow-johnson <r...@audioimagination.com>
wrote:
> On 9/5/11 10:09 AM, Robert Adams wrote: > > > Do a google scholar search on Sanjit Mitre. He wrote a paper on > > equalization filters with independent parameters for boost/cut, q and > > frequency. They are not log-symmetric but with a little hacking you > > can make them so >
... snip
> > S. K. Mitra, K. Hirano, and S. Nishimura, &#4294967295;Design of Digital > Bandpass/Bandstop Filters with Independent Tuning Characteristics&#4294967295;, > Frequenz, Vol. 44, pp. 117-121, 1990. > > P. A. Regalia and S. K. Mitra, &#4294967295;Tunable Digital Frequency Response > Equalization Filters,&#4294967295; IEEE Trans. Acoust., Speech, Signal Process., > vol. ASSP-35 (1987 Jan.).
also : Parametric Digital Filter Structures Udo Z&#4294967295;lzer, Thomas Boltze, an AES preprint of 1995, goes a bit farther about parameter independance (for the cut case) from Regalia/Mitra work. I'm currently implementing it, will see how good it is (matlab rough experiments are according to the theory).
Reply by robert bristow-johnson September 5, 20112011-09-05
On 9/5/11 10:09 AM, Robert Adams wrote:
> > Do a google scholar search on Sanjit Mitre. He wrote a paper on > equalization filters with independent parameters for boost/cut, q and > frequency. They are not log-symmetric but with a little hacking you > can make them so
Bob, was Mitra the first to do this? (using an APF?) i know that Hal Chamberlin's "State Variable Filter" is supposed to do the same (separate Q and resonant frequency). anyway two papers with Mitra's name in it that i remember seeing are: S. K. Mitra, K. Hirano, and S. Nishimura, &#4294967295;Design of Digital Bandpass/Bandstop Filters with Independent Tuning Characteristics&#4294967295;, Frequenz, Vol. 44, pp. 117-121, 1990. P. A. Regalia and S. K. Mitra, &#4294967295;Tunable Digital Frequency Response Equalization Filters,&#4294967295; IEEE Trans. Acoust., Speech, Signal Process., vol. ASSP-35 (1987 Jan.). and Dana Massie picked this up for an AES paper he did. also, fred harris (of the windowing fame, caps are his) did this paper: f. j. harris and E. Brooking, &#4294967295;A Versatile Parametric Filter using an Imbedded All-Pass Sub-Filter to Independently Adjust Bandwidth, Center Frequency, and Boost or Cut,&#4294967295; presented at the 95th Convention of the AES (1993 Oct.), preprint 3757. anyway, i suspect that using an APF with a lattice (the Regalia and Mitra paper introduced normalized ladder APF instead of lattice) to have separate control for Q and f0, existed before Mitra's papers, but i cannot say for sure of any *published* account. without naming names, i know of this as an unpublished, old technique (ca. 1980s) for time-variant, sweepable filters used in music processing and music synthesis apps. i don't think anyone will be able to patent the idea because of prior art. -- r b-j rbj@audioimagination.com "Imagination is more important than knowledge."
Reply by Robert Adams September 5, 20112011-09-05
On Sep 5, 6:54&#4294967295;am, "niarn" <niaren9@n_o_s_p_a_m.gmail.com> wrote:
> The textbook example illustrating that in general you can't connect two > filters in parallel and expect that the response of the parallel connection > is equal to (or close to) the sum of the individual responses is that you > can create a very nice low-pass filter by a parallel connection of two > all-pass filters. > > For shelving filters there are Matlab examples here:http://www.mathworks.com/matlabcentral/fileexchange/16568-bass-treble... > > There is a book by Udo Zolzer that in detail describes peaking and shelving > filters. For low-frequency shelving or peaking you might want to look into > other structures that the direct forms. For this, the Zolzer book is also a > good reference. > Cheers.
Do a google scholar search on Sanjit Mitre. He wrote a paper on equalization filters with independent parameters for boost/cut, q and frequency. They are not log-symmetric but with a little hacking you can make them so
Reply by niarn September 5, 20112011-09-05
The textbook example illustrating that in general you can't connect two
filters in parallel and expect that the response of the parallel connection
is equal to (or close to) the sum of the individual responses is that you
can create a very nice low-pass filter by a parallel connection of two
all-pass filters.

For shelving filters there are Matlab examples here:
http://www.mathworks.com/matlabcentral/fileexchange/16568-bass-treble-shelving-filter/content/shelving.m

There is a book by Udo Zolzer that in detail describes peaking and shelving
filters. For low-frequency shelving or peaking you might want to look into
other structures that the direct forms. For this, the Zolzer book is also a
good reference.
Cheers.
Reply by Vladimir Vassilevsky September 4, 20112011-09-04

jungledmnc wrote:

> Thanks RBJ. The idea is to keep the filter coefficients constant with > varying gain to save CPU power, because the gain is changed literally every > sample. Also the dynamic engine would accept the filtered data as input, so > it would be a really big save. > > Anyway I though about a simple solution for the shelf filters - just use > allpass to get the same phase response. Then I would be summing signals in > phase. I checked and the shelf filters look quite different than normal > shelves, they have lower slope and they don't have the "resonant dip" (when > amplifying). That may be good or bad, not sure yet. Anyway the constant > phase could be advantageous I think. > > But the trouble is again that the amplification shape is different than > attenuation shape. It's because the addition is not logarithmic, I guess. > Any ideas, how to make the attenuation shape ok as well? > > Thanks, > jungledmnc > > To Vladimir Vassilevsky: Stop acting like a spoiled kid...
Reply by jungledmnc September 4, 20112011-09-04
Thanks RBJ. The idea is to keep the filter coefficients constant with
varying gain to save CPU power, because the gain is changed literally every
sample. Also the dynamic engine would accept the filtered data as input, so
it would be a really big save.

Anyway I though about a simple solution for the shelf filters - just use
allpass to get the same phase response. Then I would be summing signals in
phase. I checked and the shelf filters look quite different than normal
shelves, they have lower slope and they don't have the "resonant dip" (when
amplifying). That may be good or bad, not sure yet. Anyway the constant
phase could be advantageous I think.

But the trouble is again that the amplification shape is different than
attenuation shape. It's because the addition is not logarithmic, I guess.
Any ideas, how to make the attenuation shape ok as well?

Thanks, 
jungledmnc

To Vladimir Vassilevsky: Stop acting like a spoiled kid...
Reply by Vladimir Vassilevsky September 3, 20112011-09-03

jungledmnc wrote:

> Hi, > > I'm using biquads from rbj's cookbook and trying to create a low-shelf > filter by combining dry signal with lowpassed signal for a purpose of a > dynamic equalizer. Similar thing with the high-shelf via high-pass and peak > via band-pass. > > It works quite well for amplification with peak filters: > H_PEAK(z) = 1 + H_BANDPASS(z) * (g - 1) > where g = 10^(gain_in_db/20) > but I need to use 4x higher Q for the bandpass. Why is that? > > Now there are 2 problems: > 1) With peak filter it works well with amplification, but not with > attenuation. How to make the peak filter work with negative gains? > > 2) With shelf filters it doesn't work well at all. The resulting filters > just have a very bad shape, primarily they are not steep at all. What am I > doing wrong? > > Thanks in advance. > Jungledmnc
Reply by robert bristow-johnson September 3, 20112011-09-03
On 9/3/11 3:20 PM, jungledmnc wrote:
> Hi, > > I'm using biquads from rbj's cookbook and trying to create a low-shelf > filter by combining dry signal with lowpassed signal for a purpose of a > dynamic equalizer. Similar thing with the high-shelf via high-pass and peak > via band-pass. > > It works quite well for amplification with peak filters: > H_PEAK(z) = 1 + H_BANDPASS(z) * (g - 1) > where g = 10^(gain_in_db/20) > but I need to use 4x higher Q for the bandpass. Why is that?
i dunno. the meaning of Q is fudged a little for the peaking EQ in the cookbook. it is fudged such that, with a fixed f0 and Q, a boost of N dB is exactly canceled by a cut of N dB (with the same f0 and Q). the result is a wire. if you define Q of the peaking EQ to be the BPF Q (which is mixed with a wire), the cut will not be symmetrical with the boost.
> Now there are 2 problems: > 1) With peak filter it works well with amplification, but not with > attenuation. How to make the peak filter work with negative gains? > > 2) With shelf filters it doesn't work well at all. The resulting filters > just have a very bad shape, primarily they are not steep at all. What am I > doing wrong?
uh, not using the shelving EQ filters as described in the cookbook? you *can* get a shelving filter by just mixing a 2nd-order HPF or LPF with a wire, but there is a phase-canceling issue that occurs on the slope of the HPF or LPF. as your frequency moves farther down the slope into the stopband of the filter, its phase is shifted beyond 90 degrees and approaches 180 degrees phase shift. when that is mixed with the output of the wire, you get destructive interference because the two signals are of nearly opposite polarity. -- r b-j rbj@audioimagination.com "Imagination is more important than knowledge."
Reply by jungledmnc September 3, 20112011-09-03
Hi,

I'm using biquads from rbj's cookbook and trying to create a low-shelf
filter by combining dry signal with lowpassed signal for a purpose of a
dynamic equalizer. Similar thing with the high-shelf via high-pass and peak
via band-pass.

It works quite well for amplification with peak filters:
H_PEAK(z) = 1 + H_BANDPASS(z) * (g - 1)
where g = 10^(gain_in_db/20)
but I need to use 4x higher Q for the bandpass. Why is that?

Now there are 2 problems:
1) With peak filter it works well with amplification, but not with
attenuation. How to make the peak filter work with negative gains?

2) With shelf filters it doesn't work well at all. The resulting filters
just have a very bad shape, primarily they are not steep at all. What am I
doing wrong?

Thanks in advance.
Jungledmnc