XSim free crossover designer

I'm announcing the public release of XSim, a "free-form" Windows-based passive crossover design and simulation program intended to be as intuitive and non-restrictive as possible. . The program is ***free*** for personal or commercial use. Any speaker builder with at least a basic understanding of what resistors, capacitors, and inductors do, and with decent response measurements (FRD and ZMA) of their drivers in their boxes, should be able to get useful results right away.

download from:

Experimenting with "ideal" driver data (the default for each driver) can also be fun and helpful in understanding the effects of various circuit types. Some built-in multi-part "Circuit Blocks" also provide for basic pre-configured circuits to be tuned per their overall parameters (Q, corner frequency, attenuation, etc). There are "Example" files inlcuded in the XSim download (currently less than 1.5MB) as well.

XSim allows you to see simultaneous multiple graphs of your choice, including impedances, voltages, power consumptions, group delay, and frequency, impulse, step, and square wave responses. You can watch the performance and/or stress on any part vary as you tune structure or component values in real-time. The circuit network is re-solved automatically with every change you make.

The "free-form" aspect of XSim is that crossover designs are unrestricted, no particular circuit structure need be used. Essentially any R-L-C passive network you can think of can be easily entered using graphical schematic entry, with results calculated as you design. A common "ground" node is provided, but its use isn't required.


Circuit designs (incuding all in included driver data sets) can be shared by email or forum post in XSim's ".dxo" format.* Graphic files can also be saved in standard picture file formats.

Stuff yet to come: [edit: the following aren't actually going to happen now, as it is too much work to herd vendors into getting this info together and hosting it on their sites!]
The release version of XSim featiures automatic downloading of part and driver information based on vendor and part number, making it easy to find and order what you need to turn your design into working hardware. However, no vendors are as yet signed up to provide XSim access to part or driver information. XSim will be able to download these lists itself, when available. XSim can also update its own program (with owner permission) so people who use it online can always be up-to-date. ...And so I can add or fix features without asking you to deal with downloading and installing each time.

XSim does not yet include geometric features (such as varying mic position, baffle or boundary-bounce effects) as in Jeff Bagby's very successful "PCD" and other programs derived from it. But that is in the works, with some assistance from Jeff. There are also as yet no box-design features, but this is also planned so that full designs can be worked with using the infinite baffle data provided by vendors. [these might still happen, when/if I get back into programming and study mode :) ]

edit: * as it turns out, this forum doesn't let you attach the .dxo files (or other files it doesn't know about). So you'll have to first zip the file and then post the ".zip" file containing the ".dxo" file. On downloads, do the opposite: unzip and then open the .dxo file into XSim. Maybe someday we can get diyaudio.com to let these files be attached? They are only text, no way for a virus to sneak onboard one of them!

Added Nov 2017: There is a procedure summary for collecting and adjusting driver FRD data for correct relative delays (which you need to accurately simulate crossovers) here -- XSim free crossover designer
Last edited:
  • Like
Reactions: 1 user
Hi Bill,

Thanks so much. This looks great.

What you plan to have in the future looks wonderful, as well. Just wondering if you have any plans to introduce an optimizer? That would bring this program, along with your future plans, in line with much commercial software out there.

Again, thanks, and I am not trying to look a gift horse in the mouth. Just providing what you are is very magnanimous of you.



An optimizer might happen sometime in the future. I think first, it's more important to get the geometric (baffle effects, reflections) simulation aspects in.

I've done some optimizers before in some other programs (an auto-EQ in OmniMic, a curve-fitter in Praxis), but haven't always gotten good results from them. Usually a human user can tweak and guide how things are going better, because of all the different goals and tradeoffs to be made -- impedance, power handling, suppression of breakups, directivity matching, avoiding too-expensive parts like 100mH inductors. In the time it takes to set up the optimum weightings for the various targets to feed to an optimizer, you could probably already have the values optimized yourself.
Thanks, Bill. Certainly, I don't disagree with your prioritization of the geometric functions. I have found the optimizer to be very helpful in Soundeasy though there are times when parameters must be strictly limited to assure a reasonable outcome.

Just another Moderator
Joined 2003
Paid Member
The "free-form" aspect of XSim is that crossover designs are unrestricted, no particular circuit structure need be used. Essentially any R-L-C passive network you can think of can be easily entered using graphical schematic entry, with results calculated as you design. A common "ground" node is provided, but its use isn't required.

Dave, I think the answer is yes! :)

I gave it a quick whiz, it does what it needs to to get nice results. It appears to add in smoothing though with no way to turn it off.

The only things missing from what it can currently do would be the ability to add in target curves, such as a 4th order LW low pass at 2000Hz, for example, on your mid bass. I know that it can do this if you want it to by importing a curve, but this is a hassle. It'd be nice if you could add in a little section to each driver where you have it's target curve associated with it. IE you right click on the driver and an additional option 'target curve' appears there, you select it and then you can define exactly what you want it to be, including setting the level of the target and adding in multiple curves. Like if you had a mid range driver and needed to set the target to have a high and low pass together.

You've already mentioned adding in the ability to set the mic distance and presumably entering in the software the relative positions of the drive units to the mic. Currently you've got offset in the Z plane, but no X and Y.

If you add in target curves, an optimiser would be the icing on the cake, where you tell it to iteratively adjust the values of certain components (ones you pick) in an attempt to make the filtered response match the target curve, but that might be a little bit too much for a freebe.

Still if you put that in it'd probably be the best free loudspeaker designing software out there. All you'd need to then add would be active xovers and possibly DSP coefficients and you'd have something awesome. For the DSP part though all you'd need to do is have function blocks, such as adding in a 2nd order IIR type filter, where you adjust the Q and centre frequency and pick say a 'low pass'. Even if it didn't calculate any coefficients, simply being able to see what the Q and centre frequency are would be plenty to enable you to enter the specifics into something like the DCX2496. Then you'd just need to add in a selection of filter types, notch filter, peaking filter, high shelf, low shelf, linkwitz transform, high pass, all pass, etc. Quite similar in fact to what you could do for active xovers.

This might all sound like too much work, but I'm just talking out loud about what you could add.
everyone, thanks for the kind comments.

5th element -
Default smoothing is 1/24th octave. But you can turn it off (or vary it) via bringing up the curve in the Curves menu of each graph, same place where you can change the color or choose whether to show phase.

The target curve thing might be a nice feature, though not something I'd personally ever find useful. The "named" filter shapes (Butterworth, LR, Bessel, etc) seem to be theory teaching things, not terribly relevant (to me at least) with real delay offsets in play, already existing acoustic rolloffs, and driver EQing to handle. When I do crossovers, I work in terms of number of poles and zeroes added and how the curves behave where they join each other. Just by adding or adjusting R,L,Cs to get responses and impedances that work out, not thinking about what names the curves might be. But that's just my personal approach, I know others work differently. (FWIW, I didn't even use to use simulators at all for basic crossovers. I'd just start with a pile of parts and some alligator clipleads and watch response while I added and changed parts. Not the best approach, though, since designs tended to get fixed on whatever inductor and capacitor values I happened to have).

Of course for an optimizer, target curves would be needed (not just FR, also minimum impedances and stopband attenuations).

Planet10 -
Yes, you can do series crossovers. But I don't have any circuit blocks in the XSim install to pre-calculate them, you'll have to build the structure and adjust the values. Maybe someone will want to take a crack at designing a circuit block for that? The editor/designer for CircuitBlocks is in XSim (see "File>ChangeMode"). A look at the designs of some of the blocks provided (load them in after you get into the circuit block editor) should show roughly how to make them up.
I gave it a quick whirl. Seems very intuitive to operate. :up:
Two quick comments:

1) Did you intend for the phase of the electrical response to change when you added a delay to a driver?
I figured that would have been acoustic delay only, whereas changing delay in the amplifier would change both electrical and acoustic phase.

2) An auto range button in the frequency response Scale dialog box would be handy to locate curves you have loaded that may have large disparity in SPL level.
For some reason, I cannot select any actual drivers or get to edit mode in the parameters - what am I missing?

Thank you in advance!

Put your mouse over a component, then right-click your mouse. A menu pops up. Pick the one labeled "tune".

As in most Windows applications, Right-Click means "what can I do with this?" or "Let-go", Left-Click means "Do this" or "Select this".