Pitch jumps in high-resonance bandpass filter cause absurdly high volume peaks


#1

Here's an issue that's been plaguing one of my patches: When a voice jumps from high to low, it blows out the speakers. (OK I'm exaggerating, but it's still hilariously loud.) Obviously something is wrong with the filter.

Here's an audio recording: https://instaud.io/1mny
In it, I show that dragging up and down the keyboard has no effect, but jumping from high to low causes the peaks depending upon distance traveled.
I've also reduced the patch down to a mostly bare-bones reproduction of the issue: https://my.mixtape.moe/qjtecc.axp

Windows 10
Direct USB
Board 1.2, build 1.0.12-0-g80370d2
For the record, I'm using the headphone jack.


#2

That's due to bandpass implementation (biquad). Have you tried other bandpass types? (like svf, for instance)


#4

bp svf m doesn't exhibit the weird pitch dependency, but I can't push the resonance past 55 without the audio stream corrupting in some ugly way. My patch needs about 63 (Q = 32) resonance to accurately recreate the preset I'm trying to imitate.


#5

Maybe you can give a try to the community/tiar/filter/ ZDF SVF 1


#6

I saw that one, but the resonance doesn't go high enough. The ratio between filtered signal and original signal needs to be about 95%/5% and the ZDF filter only seems to go 50%/50%.


#7

How do you measure this ratio ?

You can also chain bandpass filters with the same settings and controls to get better selectivity.


#8

I just judge it by ear. Good idea with the chaining though, I'll try that next.


#9

With second order SVF filter, the slope when you are away from the resonance is -6dB/oct on each side, the Q only affects the selectivity near the peak.
Chaining filters helps on this point.


#10

I ended up using two "bp svf m"s in series, with their outputs multiplied by 0.047 to keep the signal from clipping. It seems to work well and as a bonus, the bass is a lot better.


#11

You can also try to chain a hp svf and a lp svf with the same cutoff freq