3

I'm dealing with computer-based sound treatments (building "guitar-pedals" with computer). Most of it is fine, but I want to include various EQ possibilities. So far I can create LowPassFilter, HighPassFilter and BandPassFilter, so I have all the bricks to create equalization or graphical equalization.

My question is how to compute the relevant parameters for a given N-band equalizer? I need to choose frequency and Q value for each filter. My guess is that it depends on the target instrument (i.e. bass/guitar/voice), and that there is no "absolute" answer.

Thanks.

  • static1.1.sqspcdn.com/static/f/308931/4998939/1260244832493/…: does such graphic a decent start to adapt ranges to different instruments? – hexasoft Dec 21 '18 at 12:24
  • Thanks - yes, that is now definitely answerable. Your graphic in the last comment is useful - broadly, but I'll touch on why it isn't as helpful as you'd think. – Doktor Mayhem Dec 21 '18 at 13:01
  • @DoktorMayhem doesn't this question belong in Signal Processing Stack Exchange? – coconochao Dec 21 '18 at 16:51
  • It could also fit there, yes, but we don't migrate because something is on-topic elsewhere, only when it is off topic here – Doktor Mayhem Dec 21 '18 at 17:50
2

For this question I'll stay away from parametric equalisers that allow you to alter f and Q, which can be very useful for electric guitars, as you may want these in different places when you change the effects/distortion used, and stick to the "classic" graphic equaliser used to just use a high pass filter at the lowest frequency you want to control, a low pass filter at your top frequency, and a range of bandpass filters usually logarithmically spaced between those two extremes. And this works reasonably well for a large range of use cases.

There are some straightforward equations that give you your 3dB bandwidth frequencies, and Q factor, and this page is an excellent resource, but before you get to that you need to be aware there is no right answer to how much overlap each band should have, so it is worth looking at examples.

From your building blocks, you will be able to alter your frequency and Q factor. The 3dB bandwidth from a particular Q factor is outlined in this table from the page I linked to:

enter image description here

But that won't tell you whether you should choose 3 octaves or 1 octave. That is very much down to what you prefer. Looking further down that page, you will see a Yamaha Parametric EQ example. I tend to err on the side of slightly more overlap to avoid unwanted notches if I use this type of EQ, but I prefer the greater control and tweakability of a full parametric EQ.

The sengpielaudio.com site actually has all the equations you would need to work this out yourself, and most importantly, has one of the two simple cutoff frequency calculators I have used when needed. If you can I would build a set and experiment with a range of inputs, both single instruments, and entire orchestras and everything in between to see what works in different situations.

  • Thanks! I still has a fully usable effects-chain program with graphical interface, that can work on guitar or micro, or directly from an audio file. So I will play around with various settings to listen the results. – hexasoft Dec 21 '18 at 13:53
  • BTW, if I want to build a EQ dedicated to voice channel, does it makes sense to use something like 100Hz-17kHz for bounds (I read somewhere that it's voice bounds, including harmonics)? Or is it totaly useless and a generic 20-20k (with enough bands of course) is fine? – hexasoft Dec 21 '18 at 14:00
  • For voice I'd typically drop off from 150Hz, and at the top end yeah 17k will be fine – Doktor Mayhem Dec 21 '18 at 17:51
  • For those who are interested, here a way to compute num frequencies between f0 and f1: rf0=log2(f0); rf1=log2(f1); sp=(fr1-fr0)/num; for(i=0; i<=num; i++) { x = exp2(fr0+i*sp); }. It gives results very similar than existing stuff. It divides the range in equal parts in the logarithm space. – hexasoft Dec 22 '18 at 15:28
0

I post an answer (even if the selected answer is fine) for readability about a way to compute frequencies. It may help future readers. Code is in pseudo-code.

f0 and f1 are frequency bounds, and num the number of frequencies to compute
rf0 = log2(f0)
rf1 = log2(f1)
sp = (rf1-rf0) / num
for(i=0; i<=num; i++) {
  fres[i] = exp2(rf0 + i*sp)
}

where log2 is the logarithm in base 2, and exp2 is the exponential in base 2.

This algorithm gives frequencies equally distributed in the log space. Results are very similar with existing examples (see example, but I tested it also for other values of num, such as 16, 32…). For num=11, f0=16, f1=16000 algorithm gives:

16 31.92 63.69 127.09 253.58 505.96 1.009k 2.014k 4.019k 8.018k 16k

and what I found from existing stuff is:

16 32 63 125 250 500 1k 2k 4k 8k 16k

Hope it can help someone.

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.