808 Cowbell Bandpass Filter Frequency
You can find a lot of information about the 808 cowbell online with a lot of conflicting information about what cutoff frequency to use for the bandpass filter. Roland used a non standard configuration for the cowbell’s bandpass filter. You can’t use a commonly found formula to get the cutoff frequency.
However, back in 2014, the transfer function was worked out by: Kurt James Werner, Jonathan S. Abel, and Julius O. Smith, in their paper: "More Cowbell: a Physically-Informed, Circuit-Bendable, Digital Model of the TR-808 Cowbell.” This paper presents both a transfer function and a small Bode plot, but does not specify exact values. Based on their Bode plot, you can determine that the maximum magnitude is somewhere between 800 Hz and 900 Hz. Their plot has markings for 10^2 (100 Hz), 10^3 (1,000 Hz), and 10^4 (10,000 Hz), with each subdivided into 10. The peak of the curve occurs between the 8th and 9th subdivision below 10^3.
The Bode plot uses a logarithmic scale, because our perception of sound is not linear. Each power of 10 jump is called a decade. 10 Hz to 100 Hz is one decade. 10 Hz to 1,000 Hz is two decades. On the Bode plot each decade has equal spacing. The distance from 10 to 100 is the same width as 1,000 to 10,000.
I’ve attempted to use the information from the ‘More Cowbell’ paper to determine an approximate ideal cutoff frequency for the bandpass filter Roland used in the 808 cowbell. I’m a graphic designer, not an electrical engineer, so I’m happy to be corrected if any of the following is bullshit.
The transfer function from page 6 of “More Cowbell” is:
Hbp1(s) = (β3*s^3 + β2*s^2) / (α4*s^4 + α3*s^3 + α2*s^2 + α1*s + α0)
The 808 cowbell doesn’t have a mixer, instead, output from each oscillator goes into different inputs on the bandpass filter. Hbp1 represents the transfer function for the bandpass filter’s first input. According to “More Cowbell,” Hbp2 can be found by exchanging R26 with R27, and C30 with C31. However, R26 and R27 are both 10k, and C30 and C31 are both 2.2nF. Therefore, Hbp1 and Hbp2 should be the same, and it is only necessary to find the centre frequency of Hbp1.
The following coefficients are provided:
ß3 = -R24*R25*R27*C28*C30*C31
ß2 = -R24*R25*C28*C30
α4 = R24*R25*R26*R27*C28*C29*C30*C31
α3 = (R24*R25*R26*C28*C29*C30) + (R24*R25*R27*C28*C29*C31) + (R24*R26*R27*C28*C30*C31) + (R24*R26*R27*C29*C30*C31)
α2 = (R24*R25*C28*C29) + (R24*R26*C28*C30) + (R24*R26*C29*C30) + (R24*R26*C30*C31) + (R24*R27*C28*C31) + (R24*R27*C29*C31) + (R24*R27*C30*C31) + (R26*R27*C30*C31)
α1 = (R24*C28) + (R24*C29) + (R24*C30) + (R24*C31) + (R26*C30) + (R27*C31)
α0 = 1
You can get the component values of the various resistors and capacitors from page 13 of the 808 service manual.
R24 = 2.2 k = 2200
R25 = 470 k = 470000
R26 = 10 k = 10000
R27 = 10 k = 10000
C28 = 0.01 uF = 10 nF = 0.01e-6
C29 = 0.0033 uF = 3.3 nF = 0.0033e-6
C30 = 0.0022 uF = 2.2 nF = 0.0022e-6
C31 = 0.0022 uF = 2.2 nF = 0.0022e-6
Plugging these values into the coefficients you get:
β3 = -5.004559999999999e-13 = -0.0000000000005004559999999999
β2 = -2.2748e-08 = -0.000000022748
α4 = 1.6515048e-17 = 0.000000000000000016515048
α3 = 1.5155298400000001e-12 = 0.0000000000015155298400000001
α2 = 3.61064e-08 = 0.0000000361064
α1 = 8.294e-05 = 0.00008294
α0 = 1
So the numerator is:
(-5.004559999999999e-13 * s^3 + -2.2748e-08 * s^2)
Or in decimals:
(-0.0000000000005004559999999999 * s^3 + -0.000000022748 * s^2)
And the denominator is:
(-5.004559999999999e-13 * s^3 + -2.2748e-08 * s^2) / (1.6515048e-17 * s^4 + 1.5155298400000001e-12 * s^3 + 3.61064e-08 * s^2 + 8.294e-05 * s + 1)
Or in decimals:
(-0.0000000000005004559999999999 * s^3 + -0.000000022748 * s^2) / (0.000000000000000016515048 * s^4 + 0.0000000000015155298400000001 * s^3 + 0.0000000361064 * s^2 + 0.00008294 * s + 1)
With this information, I used the transfer function to calculate data points from 10 Hz to 100,000 Hz.
I used a resolution of 100 points per decade, which produces a smooth curve. Higher values didn’t appear to significantly increase the precision of the output values. Increasing the resolution to 1,000 points per decade only changes the output by a few cents. This gave me two arrays, an array of frequencies, and an array of corresponding magnitudes for each frequency. With this I could calculate the peak gain, centre frequency, higher and lower cutoff, and Q factor.
Centre Frequency:
There are two ways to calculate the centre frequency.
The easier approach is to find the frequency at the point with the peak gain. The peak gain is the point with the highest magnitude. This is 10.039632 dB. The frequency at this point is 870.963590 Hz (A5 minus 18 cents). This corresponds to the plot in “More Cowbell” showing the peak as somewhere between 800 and 900 Hz.
However, it’s not always true that the centre frequency is at the point with the highest magnitude. With very low Q values, the centre may drift from where the filter has maximum gain. Some filters also have multiple peaks.
An alternative formula to determine the centre frequency is:
f0 = √(fL*fH)
Where:
f0 = the centre frequency.
fL = the lower cutoff.
fH = the higher cutoff.
To find the higher and lower cutoff points you first need to determine the -3dB point. The lower and higher cutoff points are the points on the curve that intersect with the -3dB line. -3dB is the half power point where output is %50 of input. There are 2 ways to find -3dB, yielding different results but with the same final cutoff values.
Halving power is equivalent to dividing amplitude by the square root of 2. Therefore -3dB is equal to peak gain / √2. Calculated as: 10.039632 / √2 = 7.0990919 dB.
Alternatively, -3dB is also the peak gain - 3. -3dB is relative not absolute. It is calculated from peak gain. So, if your peak gain is 6db, then -3dB = 3dB; if your peak gain is 1db, then -3dB = -2dB; if your peak gain is -2db, then -3dB = -5dB. Therefore -3dB = peak gain - 3, which can be calculated as: 10.039632 - 3 = 7.039632 dB.
You can step through the magnitudes array until you find the index that is closest to 7.039632, then get the value from the frequency array at that same index:
The lower cutoff is: 794.328235 Hz.
The higher cutoff is 977.237221 Hz.
Plugging these values into the centre frequency formula results in:
f0 = √(794.328235 * 977.237221) = 881.048873 Hz (A5 plus 2 cents).
The two outcomes for the centre frequency are:
870.963590 Hz (A5 minus 18 cents)
881.048873 Hz (A5 plus 2 cents)
The frequencies array has data points for 870.9635899560806 and 891.2509381337459, with 881 Hz falling between them. Assuming the cutoff frequencies are correct, 881 Hz is the best value to go with. However, there’s only 16 cents difference. It’s unlikely the difference would be noticeable, and natural variance in component values would likely cause a greater difference from unit to unit over time.
Other Values:
The bandwidth (or passband) is the difference between the higher and lower cutoff frequencies. This represents the range of frequencies that pass through with minimal attenuation.
BW = fH - fL
BW = 977.237221 - 794.328235 = 182.908986 Hz
Quality factor (Q) is a measure of how wide or narrow the filter is. Low Q values create wider responses, while higher Q values create narrower responses. Higher Q values will accentuate the centre frequency with a tighter peak.
Q = f0 / (fH - fL), which is equivalent to f0 / BW
Q = 881.048873 / 182.908986 = 4.816870
Results:
Centre Frequency: 881.05 Hz (A5 plus 2 cents)
Higher Cutoff: 977.24 Hz (B5 minus 19 cents)
Lower Cutoff: 794.33 Hz (G5 plus 23 cents)
Peak Gain: 10.04 dB
Bandwidth: 182.91 Hz
Quality Factor: 4.82
Further Reading
Pg. 6 A brief description of the cowbell circuit.
Pg. 7 A block diagram.
Pg 13 A circuit schematic.
More Cowbell: a Physically-Informed, Circuit-Bendable, Digital Model of the TR-808 Cowbell
An analysis of the 808 cowbell.
Pg. 6 Transfer function for the bandpass filter.