If you can actually modify the Q, then it’s just not a butterworth. Perhaps they errornously refer to a standard abstract/analog filter as “butterworth”.
DaveH’s system can make a “standard” (where standard usually is RBJ’s cookbook formulas) bandpass if you tune the filters just right. However, it is not straightforward and 2x times slower for both coefficient calculation and processing than a direct bandpass, with (possibly) worse signal quality.
Calculating a highpass from a lowpass should work for any filter implemented using BLT. But please,
IIRCoefficients::makeBandPass(double sampleRate, double frequency, double Q);
is exactly what you want. If you want to analyse the response, use this formula:
Where a0, a1, a2, b0, b1 is, respectively:
IIRCoefficients.coeffcients, IIRCoefficients.coeffcients … etc.
If you don’t like the JUCE implementation, you can use this one:
However, be aware that it doesn’t calculate shelving filters correctly (neglects Q) and that biquads in general are poor for modulation and low center frequencies. Note that juce’s IIRFilter is also a biquad. If this is a problem, find a suitable SVF filter (but that is a different conversion - welcome to the rabbit hole )