Here the low-pass filter for the Audax HM210Z0 is revisited. The filter is designed to allow perfectly in-phase acoustic summation between each of the drivers in a 3-way speaker. The amplitude target is 36dB/octave at 1kHz. It is designed as the combination of the following two sections:
* Minimum phase section: This has two 12dB/octave breakpoints, each one having Q = 0.5. The first is at 1kHz which is the intended crossover for the midrange driver. The second is at 5kHz which is the intended crossover for the tweeter crossover. It is necessary to have two breakpoints so that the phase response will match the phase shift of the midrange driver's bandpass response.
* Linear phase section: This has a 24dB/octave slope starting at 1kHz. Its amplitude target is that of a second order (12dB/octave) filter with Q=1.0 multiplied by itself to create a 24dB/octave slope.
When the two above filters are combined, they result in a filter that is -6dB at the crossover frequency as shown by the blue curve in the figure below. Response contouring has not been added yet, but should be included in the minimum-phase section target response.

The frequency response specification for the minimum-phase filter section was created by dividing the target response by the measured response of the driver. This was done for 1025 points between 0Hz and 22,050Hz inclusive. For the design shown here, this was done with SPL values expressed in a linear scale of sound pressure rather than in decibels. Because it was not desired to equalise the response of the driver at low frequencies, the filter response specification was edited so that it is completely flat from 0Hz to around 200Hz.
The frequency response specification values between 21.5Hz and 22050Hz were then reflected into the range of negative frequency, so that an 'Inverse DFT' (discrete Fourier transform) could be taken to get a 2048 point time domain sequence with the required spectrum. This sequence was then windowed with a 2047 point Hanning window function and zero-padded to get 4096 points of time domain data. The algorithm used to convert this sequence into a minimum phase impulse response is known as 'Minimum phase reconstruction' or Homomorphic filtering. This can be implemented in Matlab very simply using the rceps() function.
The frequency response of the minimum phase filter are shown below. To generate this response curve, the filter was simulated as a 367 point FIR filter.

The design of the linear-phase filter section is a simple as it gets. The linear-phase target function was processed using a DFT to get the impulse response of the required filter. This was kept as a 2048 point sequence so that it can be covolved to get the best accuracy as mixed-phase FIR filter.
The coefficient arrays for 'Minimum phase' and 'Linear phase' filter were convolved together to get the combined response. Windowing could be applied to this coefficient array after convolution, but I found it not necessary as the stop band attenuation is already better than 100dB as a FIR filter truncated to 663 coefficients. The frequency domain reults of this filter are shown below.

The coefficients of the final combined filter are plotted as the blue curve below.
