bass boost shelving filter equations
Feb 2, 2005 at 8:49 AM Thread Starter Post #1 of 64

morsel

1000+ Head-Fier
Joined
Mar 22, 2002
Posts
1,372
Likes
10
Calling all hardcore math/ee geeks! What are the true equations for gain and 3dB points of a bass boost shelving filter, as described below? The Audio EQ Cookbook may provide some clues, but math is not my forté.

The bass boost circuit is a 6dB/octave low pass shelving filter. Bass response increases from the cutoff frequency down to the shelving frequency and levels off below the shelving frequency. Increasing R4 decreases the cutoff frequency and increases amp gain. Increasing Rbb decreases the shelving frequency and increases bass boost gain. Increasing Cbb decreases both cutoff and shelving frequencies. The graph shows Rbb = (46.6k, 30k, 18.3k, 10k, 4.1k, 0 Ohms).

Ao = overall gain for any conditions (should match the MicroCap graph)
Av = gain with no bass boost; Rbb = 0 Ohms
Abb = gain of bass boost; Xcbb >> Rbb; does not include Av
fs = shelving frequency; 3dB below Abb
fc = corner frequency; 3dB above Av

Ao = ?
Av = 1+R4/R3
Abb = 1+Rbb/(R3+R4)
fs ≅ 1/(2πRbbCbb)
fc ≅ 1/(2π((R3+R4)-(R3+R4)^2/Rbb+.707(R3+R4)((R3+R4)/Rbb)^1.532)Cbb)

The equations are approximations derived from numerical analysis of MicroCap AC modeling graphs and lose accuracy as bass boost gain drops towards 6dB. Below 6dB they are useless as fc and fs overlap.

What are the true equations for Ao, fs, fc?

bcb89e72_bassboostsch.gif


f9d0d8e6_bassboost.gif

 
Feb 2, 2005 at 9:13 AM Post #2 of 64
One of my motivations (besides intellectual curiosity) is to put the real equations into this JavaScript bass boost calculator instead of using approximate equations:

Code:
 <html> <head> <title>Bass Boost Calculator</title> </head> <body> <h1>Bass Boost Calculator</h1> <form name="bbc" onsubmit="return calculate()"> R<sub>3</sub> = <input id="R3" size="2" value="1">k&Omega;, R<sub>4</sub> = <input id="R4" size="2" value="10">k&Omega;, R<sub>bb</sub> = <input id="Rbb" size="2" value="33">k&Omega;, C<sub>bb</sub> = <input id="Cbb" size="2" value=".22">&micro;F <input type="submit" value="Calculate"> </form> <div id="output"><font color="red">JavaScript is required.</font></div> <script type="text/javascript"><!-- function format(n) {return n.toFixed(1)-0} function calculate() {with(Math){ R3 = form.R3.value*1000 R4 = form.R4.value*1000 Rbb = form.Rbb.value*1000 Cbb = form.Cbb.value/1000000 R34 = R3+R4 if (Rbb < R34) // Abb must be at least 2 (6dB) { Rbb = R34 form.Rbb.value = R34/1000 } Av = 1+R4/R3 Abb = 1+Rbb/R34 fs = 1/(2*PI*Rbb*Cbb) fc = 1/(2*PI*(R34-R34*R34/Rbb+.707*R34*pow(R34/Rbb,1.532))*Cbb) div.innerHTML = "A<sub>v<\/sub> = "+format(Av)+ " ("+format(20*log(Av)/LN10)+"dB), "+ "A<sub>bb<\/sub> = "+format(Abb)+ " ("+format(20*log(Abb)/LN10)+"dB), "+ "&fnof;<sub>s<\/sub> = "+format(fs)+"Hz, "+ "&fnof;<sub>c<\/sub> = "+format(fc)+"Hz" return false // force failure of form submission }} form = document.bbc div = document.getElementById("output") calculate() // --></script> </body> </html>
 
Feb 3, 2005 at 12:48 AM Post #3 of 64
Any advice would be appreciated. There seems to be a dearth of available information on this subject. I don't care how scary the equation is, since computers will do the grunt work.
 
Feb 3, 2005 at 5:40 AM Post #4 of 64
Ao is (Rbb||Cbb + R4)/R3 +1. It's frequency dependent, so you get:

Ao = ([Rbb/(j*2pi*f*Cbb)/{Rbb+1/(j*2pi*f*Cbb)}+R4]/R3)+1

j = sqrt(-1) and f=frequency. Sorry about the creative parentheses - I needed to be sure that they were in the right spots!

Your equation for fs is right on. I don't remember how to calculate the corner frequency and all of my signal analysis texts are at work
frown.gif


-Drew
 
Feb 3, 2005 at 7:07 AM Post #5 of 64
Hi Drew, thanks for your reply. I tried what you suggested about a month ago and plotted it, but the graph is a regular low pass filter, no shelving. I think there should be multiple exponentiated terms.

This is how I reduced the equation:

Ao = (Rbb||Cbb+R4)/R3+1
Ao = ((Rbb/(2πfCbb)/(Rbb+1/(2πfCbb))+R4)/R3)+1
Ao = 1+(Rbb/(2πfCbbRbb+1)+R4)/R3

Tossing j is legitimate in this case, right?
 
Feb 3, 2005 at 10:08 PM Post #6 of 64
I scribbled some work down and finally got around to posting this. One equation is in the s-domain for which I have yet to do the inverse Laplace. The other uses simple capacitive reactance in conjunction with the other components to provide a response equation. Both equations take into account the voltage division that takes place at the v+ terminal of the filter due to R1 and R2. Oh, these equations are both solutions for "Ao."

Somebody check and see if these work. If I get a chance, and my algebra skills are up to it, I'll try to solve the s-domain equation later tonight.

EDIT: I corrected the "simple" f-domain equation and removed the s-domain equation seeing that it is really not needed.

Later,
 
Feb 3, 2005 at 10:43 PM Post #7 of 64
Hi Todd,

I used the voltage divider R1 & R2 to counteract the output gain of 2, so the MicroCap graph would have a unity baseline. We don't really want to include them in the equations, so pretend they don't exist. Do you have any references to s-domain math? It's been over 20 years since I slept through it in college.
 
Feb 4, 2005 at 12:12 AM Post #8 of 64
Quote:

Originally Posted by stadams
I scribbled some work down and finally got around to posting this. One equation is in the s-domain for which I have yet to do the inverse Laplace.


The Laplace inverse is not too hard, if I have understood your expression correctly. It can be put in the form

f(s) = a + b/(s+c)

for which f(t) = a*Delta(t) + b*exp(-c*t)

where Delta is the Dirac delta function (an impulse function).

I'm not sure how much this helps morsel...
 
Feb 4, 2005 at 1:55 AM Post #9 of 64
I wouldn't think that you need to use Laplace transformation for this since you're analysing a steady state periodic signal - instead of a general, aperiodic signal. you should be able to use normal complex number analysis.
 
Feb 4, 2005 at 2:38 AM Post #10 of 64
Quote:

Originally Posted by aos
I wouldn't think that you need to use Laplace transformation for this since you're analysing a steady state periodic signal - instead of a general, aperiodic signal. you should be able to use normal complex number analysis.


Yeah, I just got carried away. I started thinking about transfer functions, and the first thing that came to my mind was Laplace. I removed the s-domain equation from the post, and I think that the last equation that I posted is correct, at least it is giving me the same type of response that morsel posted from Microcap. Just a reminder, the frequency is in rad/sec.

Later,
 
Feb 4, 2005 at 2:57 AM Post #11 of 64
Thanks everyone, and especially Todd, for looking at this. I will try out your equation when I get back from dinner. Would you care to explain how you came up with it?
rolleyes.gif
I'm interested in learning how this works.
 
Feb 4, 2005 at 4:53 AM Post #12 of 64
Quote:

Originally Posted by stadams
I think that the last equation that I posted is correct, at least it is giving me the same type of response that morsel posted from Microcap.


I am unable to reproduce your results. Here is your equation:

d6c80edd_fdomain_LP_shelving_filter1.bmp


This is how I entered it, 2 different ways:

((2πf) + (2πfR4/R3) + (1/(R3Cbb)) + (R4/(R3RbbCbb)) + (1/(RbbCbb))) / (2πf + (1/(RbbCbb)))

(1 + (R4/R3) + (1/(2πfR3Cbb)) + (R4/(2πfR3RbbCbb)) + (1/(2πfRbbCbb))) / (1 + (1/(2πfRbbCbb)))

This results in a curve that goes up as frequency drops, but does not level out, i.e. there is no shelving. Am I doing something wrong?
 
Feb 4, 2005 at 5:08 AM Post #14 of 64
If you wish, I can send you the Excel worksheet with which I checked the equation response. Just let me know where.

Later, and good night,
 
Feb 4, 2005 at 6:22 AM Post #15 of 64
Quote:

Are you looking at the results on an x-axis log scale?


Yes, just like the bass boost MicroCap graph. In any case, the gain should level out below fs, which it is not doing. Sure, send me the Excel worksheet, I can be emailed via my profile.
 

Users who are viewing this thread

Back
Top