Hey hey,
I am just experimenting with multiband stuff. I try to split a signal into three or four bands. The lowest band uses a lowpass filter and the highest a ighpass filter. In between there should be one or two bandpass filters. I have started work with Butterworth filters. I try to filter the signal so, that the outputs of the filters, taken together, (nearly) reconstruct the original signal. I am not set on the Butterworth filters and the crossing points
in the setup below, can be purely nominal. They don't actually have to
represent a frequency of one of the filters, if it makes all the
calculations easier.
So, I have some issues with half-power points. Here's my current setup, with a few hardcoded values.
iCross1 init 200 ; nominal lowpass frequency
iCross2 init 800 ; nominal highpass frequency
iCentre init (iCross1 + iCross2) / 2 ; the mid-point between the two
iBandwidth init (iCross2 - iCross1) * 2 ; The bandwidth
The output sounds not too bad. But there are issues. A bandwidth of 1200 with a centre of 500 would result in a negative frequency for the lower "edge" of teh bandpass filter.
I was working from the following, possibly wrong or misunderstood, example:
a second-order Butterworth Bandpass filter centred at 400Hz with a bandwidth of 400 has the half-power points at 300Hz and 500Hz. So I'd assume that it would have the half-power points at 200Hz and 600Hz with a bandwidth of 800.
Can anyone suggest a better approach or point out my wooly thinking, please?
It looks like your estimation of crossover frequencies are off (or at least different than what I think).
You write “a second-order Butterworth Bandpass filter centred at 400Hz with a bandwidth of 400 has the half-power points at 300Hz and 500Hz.”
With a bandwidth of 400, the difference between the lower and upper cutoff frequencies is 400, so if we think of it linearly (which is not correct, but simple and intuitive), the lower cutoff would be 200 and the upper cutoff 600. As we are working with logarithmic representation, I think the numbers would be more like approx 240 and 640.
Others here will know with better mathematical precision
Hey hey,
I am just experimenting with multiband stuff. I try to split a signal into
three or four bands. The lowest band uses a lowpass filter and the highest a
ighpass filter. In between there should be one or two bandpass filters. I have
started work with Butterworth filters. I try to filter the signal so, that the
outputs of the filters, taken together, (nearly) reconstruct the original
signal. I am not set on the Butterworth filters and the crossing points
in the setup below, can be purely nominal. They don’t actually have to
represent a frequency of one of the filters, if it makes all the
calculations easier.
So, I have some issues with half-power points. Here’s my current
setup, with a few hardcoded values.
iCross1 init 200 ; nominal lowpass frequency
iCross2 init 800 ; nominal highpass frequency
iCentre init (iCross1 + iCross2) / 2 ; the mid-point between the two
iBandwidth init (iCross2 - iCross1) * 2 ; The bandwidth
The output sounds not too bad. But there are issues. A bandwidth of 1200 with
a centre of 500 would result in a negative frequency for the lower “edge” of
teh bandpass filter.
I was working from the following, possibly wrong or misunderstood, example:
a second-order Butterworth Bandpass filter centred at 400Hz with a bandwidth
of 400 has the half-power points at 300Hz and 500Hz. So I’d assume that it
would have the half-power points at 200Hz and 600Hz with a bandwidth of 800.
Can anyone suggest a better approach or point out my wooly thinking, please?
You don’t need to know python to use it, you just need to install it. You do everything using GUI
Steps typically are that you specify the type of filter you want (LP, HP, BP …), choose implementation FIR or IIR (Butterworth among others), define filter order and wanted frequencies and the tool will then show you filter characteristics and calculate filter coefficients for you.