How do I create my own EQ?

DSP, Plugin and Host development discussion.
Post Reply New Topic
RELATED
PRODUCTS

Post

I want to create a parametric EQ VST that mimics of a piece of hardware I own. Specifically, a limited number of bands, discrete predetermined values rather than continuous, 50Hz min frequency, 10kHz max. Is it possible to do this fast as a complete novice?

Post

markanini wrote:I want to create a parametric EQ VST that mimics of a piece of hardware I own. Specifically, a limited number of bands, discrete predetermined values rather than continuous, 50Hz min frequency, 10kHz max. Is it possible to do this fast as a complete novice?
The easiest way I know is with a set of series peaking filters. RBJ cookbook filters have a Peaking filter variant. Or you could adopt some other peaking filter code. Peaking filter has parms for center frequency, boost/cut amount, and width. They are "unity gain" far away from the center frequency, both above and below the center frequency.

If you want to limit the choice of frequencies, widths, or boost/cut amounts of each band, just program your user interface to only accept the settings you intend to allow. For instance if the low band is a rotary switch which can only be set to 40, 63, 80, 120 Hz or whatever, then set up the user interface so that those are the only values the user can choose. If the control is at 63 Hz and the user drags the control "up" then it jumps to 80 Hz, skipping any intermediate value between 63 and 80.

It is convenient to implement the peaking filters as objects, so if it is a four band parm EQ, you just instantiate four peaking filter objects.

Because the peaking filters tend toward unity gain away from the center frequency, set up the filters in series. For instance for four peaking filter objects--

Input -> PkFilt_1 -> PkFilt_2 -> PkFilt_3 -> PkFilt_4 -> [optional gain adjustment] -> Output

For instance if PkFilt_1 is set to 63 Hz +3 dB and PkFilt_2 is set to 500 Hz 0 dB and PkFilt_3 is set to 2 kHz -3 dB--

In the low bass PkFilt_1 is "near unity gain", has a 3 dB boost centered on 63 Hz and is "near unity gain" up at 2 kHz. If the PkFilt_1 width is wide then there will be a little more deviation from unity gain in low bass or high frequencies. If PkFilt_1 width is narrow then the low bass or high freqs will be closer to unity gain. Same thing for the PkFilt_3 cut at 2 kHz-- It mostly affects in the ballpark of 2 kHz depending on filter width setting, and is "near unity gain" down at 63 Hz where PkFilt_1 is working.

So the different bands interact a little bit, but that is just how most IIR or analog EQ's work. They always interact a little bit between bands. If you work real hard to eliminate the minor interactions then the EQs will tend to sound "unexpected weird" .

Post

There are many N-band EQ designs with different frequency layouts, slopes and Q behavior. There are vari-Q and fixed-Q designs. You'll find 3 bands, 5, 7, 10, 12, 20 and others. You have 12 dB bands, 18, 24 and so on.

You need to understand how the transfer functions are combined from such filters and why these different parameters are used in different situations.

If you just want to play with some filters you should probably look at some of the JS EQ effects available for Reaper. These are "open-source" so you can look at them directly and create your own variations. You can download Reaper and get started in a few minutes entirely for free, so that's probably the very most easy way to get started from scratch.

Once you know what you're looking for you can look at other options like compiled plug-ins which require 1000x the investment of time and effort.
Free plug-ins for Windows, MacOS and Linux. Xhip Synthesizer v8.0 and Xhip Effects Bundle v6.7.
The coder's credo: We believe our work is neither clever nor difficult; it is done because we thought it would be easy.
Work less; get more done.

Post Reply

Return to “DSP and Plugin Development”