[gst-devel] Help needed on changing frequencies of equalizer

Maarten Bosmans mkbosmans at gmail.com
Sat Jan 9 23:37:50 CET 2010


2010/1/8 Yogesh Marwaha <yogeshm.007 at gmail.com>:
> It is centerfrequency which is troubling me. Take, for example,
> upper frequency bands of winamp's equalizer (70, 180, 320,
> 600, 1k, 3k, 6k, 12k, 14k, 16k).

In most applications it makes the most sense to view frequencies on a
logarithmic scale.
Something like 35, 70, 140, 280, 560, 1k1, 2k2, 4k4, 9k, 18k, for
example. Note how the frequency is doubled every time.

> For the top-most band (16k),
> I would use a bandwidth of 2000, which means 15000 - 17000,
> then, what about those above 17000? To cover up all frequencies
> I will have to use a bandwidth of 8000 with centerfrequency of
> 16000 (12000 - 2000).

Couple of options:
 - You could  use a shelf filter instead of a bandpass for the outer
frequencies
   (not sure how to do that in GStreamer though)
 - Make sure that the bandwidth of the outer frequencies cover the
whole audible spectrum (~ 20-20k)
 - Accept the fact that you can't equalize frequencies above 17k,
which for some applications may be entirebly reasonably and for other
it isn't.

> I could not find any documentation about Q-factor of band. What
> is it? Any details about that?

http://en.wikipedia.org/wiki/Q_factor

If you have bands with constant-Q width, the crossover frequency is
the geometric mean of the centerfrequencies, not the arithmetic mean.
So in my one-octave bands example where the bands are doubled, the
bandwidth extends between 0.71 and 1.41 times the center frequency.

By reading the source (gstiirequalizer.c) though, it seems that the
algorithm used in GStreamer uses bandwidths defined in Hz from center.
So you'd have to convert from Q to Hz and probably shift the center
frequency also.

Maarten




More information about the gstreamer-devel mailing list