This page discusses methods of interfacing passive
crossover circuits and real drivers for the
To accurately predict the system response to a
particular set of passive crossover circuits,
of the drivers must be included. There are two
basic requirements for this. First, the complex
input impedance of the driver must be measured,
so that you know how the crossover circuit is
terminated. And secondly, the driver impulse response
must be measured, in order to determine what the
driver output will be for a particular crossover
circuit. The Virtual Crossover can be used to carry
out both these measurements.
Figure 1 illustrates
the overall method of coupling the crossover
circuit and the driver, and of predicting the
Figure 1: General method of coupling passive crossover
circuit model and driver.
In the figure,
input voltage to the crossover circuit and
is the current entering the circuit.
is the complex input impedance of
the driver; since it is given in the frequency
domain, it is most convenient to solve this
circuit in the frequency domain. This can
be done with the IMPRSPZ.C program, if
is specified as the terminating impedance. The
way IMPRSPZ.C works is as follows. At each frequency,
it is initially assumed that
current into the driver, is unity. Then the initial
voltage across the driver is just
sets these conditions and solves the circuit back to
the Vin terminals. But Vin is known both
in the time and frequency domain, it might be for example the
equal-ripple lowpass filter discussed on the page about
issues in numerical modeling
of circuits for the Virtual Crossover.
So IMPRSPZ.C compares
what it calculates at the Vin terminals to the
that it knows is the right answer.
Of course in general the values will not be the same,
but if the circuit is linear, the
value can just be scaled so that we obtain the correct
In this manner, by going through all
the discrete frequencies and scaling to obtain the
we finally end up with
at the driver input terminals.
is known, it can be
convolved with the measured driver impulse response
to obtain the predicted driver output, as indicated
by the lower two boxes in Fig.(1).
As an example, I will present the results of
this method for two Dynaudio D76-af midranges
in series that I used in one of my speaker
systems. Figure 2 shows a
portion of the measured impedance magnitude,
out to 10kHz, for the drivers:
Figure 2: Input impedance magnitude of two
Dynaudio D76-af drivers in series, out to
Since we require
complex impedance to characterize the drivers,
this impedance also has an associated phase
response, which is shown in Figure 3:
Figure 2: Impedance phase angle of two
Dynaudio D76-af drivers in series, out to
drivers do not present anything close to a
constant resistance to the crossover circuit,
and it is necessary to take into account the
driver impedance in order to accurately
predict the crossover response.
be done in different ways, however. One way
is to directly terminate the crossover circuit
of Figs.(1) and (2),
and to use IMPRSPZ.C
at the driver
terminals. This method is fine if you just want
to observe the basic response of the drivers to
a crossover circuit. However, the Virtual Crossover
also allows you to load
filter for the drivers and play music, essentially
simulating the passive crossover circuit in
real time; in that
case, the low-level noise that comes about by
can be a problem.
To get around this noise issue, we can first
design an impedance compensation network so
that the impedance presented by the drivers
is nearly a constant resistance. Then, to a
very good approximation, we can assume that
in Fig.(1) can be represented by just a
resistor. Then we can carry out either a
time-domain or frequency-domain calculation
of the crossover filter
without incurring any of the noise brought
about by the impedance measurement process.
For example, the following impedance compensation
circuit (RZ and CZ) causes the D76-af midrange
drivers to present nearly a constant resistance
for frequencies above the driver resonance:
Figure 3: Impedance compensation network for two
D76-af midranges in series.
I offer a utility called ZOBEL.C which reads in
a measured complex driver impedance
as well as an impedance compensation circuit
(RZ and CZ in this case), and outputs the
impedance as transformed by the compensation
network. If I run ZOBEL.C, read in the
of Figs.(2) and (3), and the RZ, CZ values
of Fig.(3), the following transformed impedance
Figure 4: D76-af impedance magnitude after compensation
by the network in Fig.(3).
As can be seen in Fig.(4), the impedance compensation
network is effective above about 1kHz, however it does
not remove the impedance peak at the driver resonant
frequency. This peak at driver resonance can be handled
in different ways. First, we could expand the
impedance compensation network of Fig.(3) to include
an R-L-C branch in parallel with RZ and CZ, which
would flatten the impedance peak at resonance. However,
there may be situations where either the impedance
peak does not have much of an effect on the crossover
performance and therefore is not worth eliminating,
or in some cases the peak may even be desirable, for
example if it helps to flatten the combined woofer+midrange
response. If it is decided to retain this impedance peak
at driver resonance, it can be included as a parallel
RLC network in the crossover circuit itself.
To clarify these ideas, here is a actual midrange
crossover circuit that I used to obtain a filter
for use in the Virtual Crossover, for the two
D76-af midranges in series:
Figure 5: Crossover circuit used to obtain Virtual
Crossover filter for two D76-af midranges in series.
In Fig.(5), L1 and C1 perform the basic bandpass
function for a first-order midrange crossover.
R1 serves to set the midrange level (R1 also
includes the series resistance of coil L1).
RT represents the constant resistance presented
by the midrange drivers above resonance, derived
from the flat portion of the curve in Fig.(4).
And the RP-LP-CP network puts in the
impedance peak at the driver resonant frequency;
RP introduces an additional
at 322 Hz, and LP,CP are chosen to reproduce
the proper width of the resonance.
Note that the output from Fig.(5), Vout,
is taken before the RP-LP-CP
network; this is because the impedance
peak at resonance is actually a part
of the driver, not of the crossover
circuit. In my crossover I decided not
to eliminate the impedance peak at
resonance, because it seemed to compensate
for a dip in the combined response of
all the drivers.
Using either IMPRSP.C to carry out a
time-domain simulation of the circuit
in Fig.(5), or using IMPRSPZ.C
and specifying a file with constant
terminating impedance, here is the result
for the waveform at the Vout terminals
where a 30kHz equal-ripple low-pass
filter was impressed at the input:
Figure 6: Portion of the time-domain response
at the Vout terminals of Fig.(5), with a
30kHz equal-ripple lowpass-filter at the
Fig.(6) is the waveform (or a judiciously
chosen portion of it) that would be loaded
into the Virtual Crossover as the midrange
Taking the FFT of the time-domain waveform
of Fig.(6), we obtain the following frequency
response for the midrange crossover filter:
Figure 7: Frequency response magnitude of the midrange
crossover filter of Fig.(6) out to 8kHz.
This is the type of bandpass characteristic that you
would expect for a midrange that is to be
crossed over both
to a woofer on the low end and a tweeter on the
high end. The effect of the driver impedance peak
can be seen as a slight bump in the curve around
The waveform in Fig.(7) is fine as far as telling us
what the response of the midrange crossover circuit is.
However, it doesn't tell us what the response of the
midrange drivers will be, when they are fed by this
crossover filter. Referring back to Fig.(1), what we
have so far determined is
in that figure. To determine the actual response
of the midrange drivers, we could pursue one of
two routes at this point: we could either load
the filter of Fig.(6) into the Virtual Crossover
and carry out a measurement of the driver response
through the crossover filter; or, if we have previously
measured the impulse response of the midrange drivers,
we could convolve the crossover filter response of
Figs.(6) and (7) with the measured driver impulse
response. Here I will show an example of the
latter procedure. Let's say we have used the
Virtual Crossover to obtain the impulse response
of the D76-af midrange drivers mounted in the
speaker enclosure; in my case the following
result is obtained:
Figure 8: Portion of
impulse response of D76-af midrange drivers
mounted in the final speaker enclosure
as measured by the Virtual Crossover.
Fig.(8) was obtained using an MLS sequence as the
measurement source. Normally when you carry out
a driver impulse response measurement, unless you
happen to have access to an anechoic chamber, you
will want to carry out a "quasi-anechoic"
measurement, which means that you truncate the
resulting waveform at some point in time,
hopefully thereby separating the room reflections
from the primary speaker response. Sometimes it
is clear how to truncate the waveform, but other
times, especially for woofers, it is not clear
at all. The vertical line in Fig.(8) is my best
guess as to where this demarcation should be.
If all the data to the right of the vertical line
in Fig.(8) is treated as zero, the following is
obtained for the frequency response magnitude of
the midrange drivers mounted in the speaker
Figure 9: Magnitude of the frequency response of
D76-af midrange drivers mounted in speaker enclosure
out to 8kHz,
based on the measured data of Fig.(8).
The main feature of this response is the pronounced
dip around 2.5kHz, which I am guessing is due to
the interaction of the midrange drivers with the
speaker cabinet, since isolated D76-af drivers do
not exhibit such a dip.
The final step in obtaining the midrange drivers'
response from the crossover of Fig.(5) is to
convolve the driver impulse response of Figs.(8) and (9)
with the crossover circuit response of Figs.(6) and (7).
I wrote a program called XOVR.C which reads in both a
crossover filter response and a driver impulse response,
and carries out the convolution (it is convolution in
the time domain, but multiplication in the frequency
domain) to determine the overall driver response to
the crossover. In fact the XOVR.C program can go one
step further, it can read such responses for all the
crossover filters and drivers in the system, calculate
all the individual responses, and combine them all
vectorially with specified gains and time delays,
to determine the complete speaker system response
for a given crossover. For now I will just show
the result for the midrange drivers by themselves.
If I run XOVR.C and specify the driver impulse response
of Fig.(8) as well as the crossover circuit response of
Fig.(6), I obtain the following result in the time
Figure 10: Result of convolving the midrange crossover
circuit response of Fig.(6) and the midrange driver
impulse response of Fig.(8), using the XOVR.C program.
Truncating Fig.(10) at the vertical line and taking the
resulting FFT yields the frequency response magnitude
of the midrange drivers as follows:
Figure 11: Overall frequency response magnitude of
the D76-af midrange drivers using the crossover
circuit of Fig.(5).
If similar results are obtained for the other
drivers in the system, they can all be combined
with the XOVR.C program to obtain the overall
response of the speaker system.