All-pass filters to remedy group delay I would like to sum a filterbank made of bandpass butterworth filters to reconstruct an audio signal. Given group delays for each channel shown in the following plot . . . 



How would I go about designing complementaty allpass filters to flatten this out somewhat? It doesn't have to be completely flat, just a bit flatter than it is. Sampling the impulse responses to make linear phase filters is not an option at the moment.

The Matlab code used to generate this is shown below. Note: I have multiplied the group delays by a factor of 2 as the signal is passed through the bank twice.

sr = 22050;

%Make octave wide filters
cfs = [125 250 500 1000 2000 4000];
bw = 1; %octaves

nBins = 2^12;
gd = zeros(nBins,numel(cfs));

for nn = 1:numel(cfs)
    cf = cfs(nn);
    loEdge = cf*(2^-bw/2);
    hiEdge = cf*(2^+bw/2);
    [b, a] = butter(2, [loEdge hiEdge]/(sr/2), 'bandpass');
    [gd(:,nn),f] = grpdelay(b,a,nBins,sr);
end

figure; semilogx(f,2*gd); xlim([10 8000])
legend(num2str(cfs')); xlabel ('F [Hz]'); ylabel('Group delay [samples]')
Maybe you'd be better off using Bessel-Thompson filters. Maybe one could find an all-pass that approximately corrects a Butterworth filter, but it looks rather hard.