Dave's Speaker Pages

Windows Passive Crossover Designer (WinPCD)

A Windows application for designing passive crossovers originally based on the UI format of the Passive Crossover Designer spreadsheet by Jeff Bagby.

WinPCD Forum at Meniscus Audio
Background and History
Version Details
Download and Installation Instructions
Speakerdesign Home Page

10 Mar 2017 - Version 1.510 Released

This began as a simple bug fix based on a report from a user. When checking the code I saw a couple of other things that I didn't like related to the off-axis response results. It ended up as an update and improvement to the predicted off-axis response with a few other small changes to the UI. To accomplish all of this the spatialization code had to be re-factored. See the Version Details page for more.

Details of the polar reponse/spatialization are in a Help window as it relates to WinPCD. It is duplicated at the link below if you are interested, but do not want to download the program at this time.

Polar(Off-Axis) Response

9 Jul 2016 - Version 1.501 Released

Driver filter UI changes, added Bessel filter variants and other user requested UI changes.

26 Aug 2015 - Version 1.500 Released

Added new window with calculations and graph for Listening Window (Polar) Response. Please read the full description on the versions page.

22 May 2015 - Version 1.410 Released

Added new tab for Relative Acoustic Offset. Graph of driver equalized response phase now inverts if driver connection is inverted.Added new tab for Relative Acoustic Offset. Graph of driver equalized response phase now inverts if driver connection is inverted.

4 January 2015 - Version 1.403 Released

Added the fundamental automatic calculations. Made crossover reinitialization changes to thoroughy reset all associated circuits.

8 November 2014 - Version 1.402 Released

BUG FIX - 3-Way with third or fourth order electrical lowpass on the midrange had a bug with the third element. This is fixed.

12 October 2014 - Version 1.400 Released

Two primary changes/additions are in this. The GUI has been cleaned up and changes to the polar section provides -90 to +90 degree coverage at constant radius with surface plots available off-axis 2D plots.

15 May 2014 - Version 1.301 Released

Asymmetric targets are now functioning for the midrange plus a couple of minor bug fixes related to targets are included.

9 May 2014 - Version 1.300 Released

Two requested changes hvae been added, plus a few minor bug fixes (see Version Details)

10 Nov 2013 - Version 1.200 Released

This release has one major improvement and several small changes.

31 Aug 2013 - Updated to Version 1.106 (bug fixes, see Version Details)

24 Aug 2013 - Updated to Version 1.105 (see Version Details)

WinPCD is periodically updated. 1.1xx versions are minor updgrades/fixes. This version has two small additions and one minor bug fix.

18 Apr 2013 - Version 1.1 Released

WinPCD was originally designed to have a similar interface to PCD v7. AS soon as v1 was released, requests were made for some changes. One was to have the system graph "detachable". I had this in mind for later down the road, but found that it was rather easy to do. It is an optional window (as are all others) and can be re-sized to any dimensions desired.

There are a few other changes and one addition. The non-design tabs have all been moved to separate windows. These are instructions, schematic layouts and generic circuits. These can all be re-sized. The user can also increase/decrease the instructions window fonts using the standard Windows option, the "ctrl mousewheel" combination.

The addition is one that I have wanted, the ability to print a schematic with the component values. A new window can be opened that has the schematics of the current design with component value overlays. These are updated in real-time when the user makes changes in the main window. The design actions all have to come from the main screen, however. Changing the values on the overlay has no effect on the design. This will likely not change because of the many other design actions that involve more than just the component values. The user has the option of printing this window. Whichever tab is active is printed. If the screen has been re-sized, it is printed as displayed, it is not a fixed printout. The method required was an area capture to enable capturing and printing both the schematic image and the overlaid component values.

Two bug fixes are included. The first one has to do with the electrical crossover selection. If the user had an electrical crossover selection made (1-4), then changed to "No xxxx Pass Selected", the last selection was not removed. Thas has to do with the main crossover section, separate from items such as traps. I think I missed this because I don't usually eliminate a crossover once I'm designing. I may go down to a single electrical crossover section, but not remove it entirely. In any case, this has been fixed.

The second bug had to do with multiple woofers. The user has the option to either load a new measurement for the second woofer or copy those of the first woofer, in essence duplicating it. For For a WTW or WMTMW, this is likely to be the case, but for other arrangements a user may want unique measurments used. There was an error in the "copy" command section. The impedance was correct, but the SPL was not due to a typo in the copy section. Version 1 will not produce correct results for this specific case. Loading a second file or loading the same file manually for the second woofer will still be correct.

23 Mar 2013 - New Forum Announcement

Meniscus Audio has provided a sub-forum at their web site that is dedicated to WinPCD. This will likely become the go-to place for help/information/ideas. A forum here at my site was out of the question. The WordPress blog here was to serve that purpose, but the problems that I've read about spamming those that are fully open meant that it would be restricted to those with supplied access. Anyone could, but that meant actively managing account creation and that would be cumbersome. Meniscus Audio has done me a great favor and those who decide to try out and/or use WinPCD. If you decide to use it, please consider contributing your experience at the forum. The link will is at the top of this page. While you're there, peruse the rest of the Meniscus site. Jeff Bagby has some designs posted there as well.

23 Mar 2013 - Bug Workaround for v1.000

The lack of a number of beta testers has reared its ugly head! A bug has been found, but there is a workaround for it. I've been using reload of saved sessions for so long that I did not discover an error that was created with a change I had made elsewhere. It's triggered after the last file is loaded for a set of files to use if the crossover type has not yet been selected.

The workaround: Before importing files the first time, go to "Select Design Type and Wiring Configuration" and select either Parallel 2-Way or Parallel 3-Way (the others aren't yet ready). That should avoid the problem. Once this is selected or if you load a previously saved session file, the error should not occur.

19 Feb 2013 - Release of v1.000

While waiting for some feedback from beta testers, I continued work and testing as well. One bit of added functionality includes being able to import a measurement for every driver. That is, if a second midrange or woofer is enabled, the user has the option to import a measurement for that driver, separate from the first one. This allows use of measurements that include differing driver response due to driver, angle and diffration effects.

When I made this decision, I knew I'd be making more work. First, I overlooked some of the details and just finished adding them. Second, I didnt' realize just how much extra work this would entail! It's now complete, at least as far as my current level of testing reveals. It really needs to be put through the paces. But as I write this it occurs to me that I may not be saving these filenames with the project file. But since this may be a seldom used option, the current version will be released so that I can get a much broader range of testers for feedback.

Download and installation instructions can be found at the link below.

WinPCD Installation Information and Download links

Update - 26 Jan 2013

Another item I wanted to add at some point turned out to be easier to do than I had expected. The individual driver SPL and impedance file names are saved with the session data. An additional feature that seemed logical was to automatically load the files for the drivers when the session file is loaded. That is now complete. It's nice to load a 3-way session file and have all driver files loaded automatically. If the file is not found, it is ignored. For a 3-way system that could have two midranges and two woofers with separate files for each, this requires loading ten files. It will work properly even if all files are separate directories.

Update - 23 Jan 2013

Things are really coming together now. I've found and fixed a couple more small bugs having to do with the woofer (2nd and 3rd) traps that came about when adding the new inductor resistance elements. There was also a problem with printing the basic circuit images when the package was installed on another PC. That should be now resolved.

Last week I was working on my first design update using WinPCD when I encountered an issue that provided the impetus for the latest addition. After working on the design update of a previous circuit for my Chameleon 2-way, I decided that I wanted to view the summed response with the previous woofer circuit. This meant having to manually edit all elements that may have changed. I wanted to be able to import a file with the data.

It took a few days, but that functionality is now complete and working. The user can export all crossover element values for any section, woofer, midrange or tweeter, to file for later re-use. The files are explicity generic with the same extension used for all. Nothing that identifies the details are in them other than WinPCD version number and driver type. The details are left to the user to include in the filename and/or directory in which they save them. Attempts to import the wrong file type, say a woofer file using the tweeter dialog, will be rejected.

Another minor, but useful improvement has also been added. Each time I stopped and restarted the program, I had to navigate to my test folder for each file. This became a bit tedious, since I test all along the way of making and verifying changes. I wanted a way to make a default directory location entry.

That took another day or so, largely due to what I would call quirks in the way one has to do this within Visual Studio. It would have been an hour or two in most of the older software that I have used. With that venting off my chest, there is now an option for the user to specify a default directory (folder in Microsoft parlance) for each project (session) file. If a valid directory is in that field, then it will be uesd as the default for any file IO. When the user enters data into it, on exit (moving to another field) or hitting the "Enter" key, it will be evaluated for existence. If it's valid, the control becomes green. If not, it's red. This control value is saved with the project file. It really is a useful convenience.

Change summary:

Update - 7 Jan 2013

The midrange section is complete as is the full 3-way functionality. New screen captures are included at the end of the page here.

Update - 26 Dec 2012

All graph right-click context menu options for save-to-file have been implemented. The buttons have been eliminated. This provides more real estate for possible later use. Some re-arrangement has already been made. Screen captures are not yet available to upload, the changes are rather small.

There is another new tab that shows the basic equivalent circuits of a raw driver and for the low frequency box analysis (Thiele-Small). These were pulled from the page at my web site.

Update - 5 Dec 2012

I realized I had not provided the circuit layout drawings for the various circuits to be used to make it easier to build a design. The goal is to eventually output a circuit populated with the actual values, but for now the output will be the generic circuits provided in the original PCD that show the circuits with Jeff's original numbering. I do not display the element numbers, but the match ought to be obvious given the physical location in the circuits. These are provided in a separate window, opened on request (a new button) and tabbed for each circuit, so it's possible do display the circuits anywhere while working.

Printing the circuits will be simple, just click on the circuit drawing from this second window.

The save-curve-to-file buttons associated with graphs seemed like unnecessary usage of real estate. Turns out that zedgraph, the open source graphing tool I'm using, has an option to add context menu items. The save option(s) will be at the end of the list. A right click on a graph brings up the context menu list. I've got the first one added and working. I may expand the list of curves that can be saved, since it will be duplication and the list can be increased with no change in layout. I was also able to remove an option in the list that wasn't of good use.

Change summary:

Update - 28 Nov 2012

Several more changes and some bug fixes are complete. Jeff reported issues with file import. I had already found a unique problem related to my saved files. In trying to make the import more flexible and allow for various comment line styles, it didn't handle Jeff's PCD export. The other problem occurred with Jeff's and my exported files due to the interpolation routine. Both problems are fixed, unless testing finds something additional.

I've added more functionality, completing most all of the 2-way options. A spur-of-the-moment addition provides an easy way to copy the woofer1 files to woofer2.

Here's a summary of the recent changes.

Update - 19 Nov 2012

The file read methods should now properly handle measurement files that use scientific notation.

Update - 16 Nov 2012

Another short update. I've added some multi-threading to the calculations. It's not a drastic change, but a thread is created for each driver's calculations, rather than being consecutive. It doesn't make a big change, but does speed it up a bit. It will be more useful with 3-way designs as there will be a thread for each driver so that the total time will be no more than the time for a single driver plus the overhead of creating the threads. I can't say how much that is at the moment and may not try to find out, there are other more important things to do, such as getting the 3-way version working.

Update - 12 Nov 2012

Another quick update. The beta is ready to send out to be tested. I was using it to work on a design when I decided that I would add the DCR controls for the parallel traps that are in series in the crossover. This was always planned, but I did it now rather than wait for another update. This required a bit more rearrangement, but in the end it's better, at least I think so. The latest screen captures don't show the phase, that's just because of how I was using it at the time. They also show how the circuit elements not in use are hidden, making it a bit easier to see what you're doing at a glance. The data remains in them, they are simply unused and hidden.

Update - 8 Nov 2012

The first beta (2-Way only) is essentially done. It only lacks driver directionality and system impedance compensation calculations. The "output file" controls also have not been implemented. The latter should be easy, the former I don't yet know. I haven't looked into the calculations yet. I may try to dig that out of Jeff's Excel file or I may try to figure out the basics myself, there is a basic equation in Martin Collom's book "High Peformance Loudspeakers" (after Beranek). I suspect that Jeff may be using a more elaborate calculation. The latter would be better since you never know if some refinement would be useful. Two otherwise identical drivers may not radiate the same way, such as convex vs. concave domes/cones.

The thumbnails at the bottom are the latest and will open a new tab/window of a full screen shot each. These are close to the final version for what I'll call Release 1.0 when it comes out. I've made more changes than I expected since the last update. Noteworthy changes are listed below.

Update - 3 Oct 2012

The program now has more functionality, a few bug fixes, some improved ergonimics in the controls and some layout changes. The 2-way part is essentially complete or all but the 3-D spatial aspect required to be able to use minimum-phase driver responses.

As mentioned, the last remaining work for having the 2-way design complete is to add the 3-D spatial calculations. When that is done, it will work for all conditions, minimum-phase and excess-phase measurements. I'm not sure when I will complete that, I hope it won't take long. Once that is done, adding the 3-way calculations should be straight forward. This will complete the basic 2-way/3-way sections. The rest of it (2.5-way, active, etc.) will take quite a bit longer. The idea was to get the basic, most used functions working first.

A few items in the to-do list (outside of the big items mentioned above) for 2-way/3-way:

Update - 18 Aug 2012

Now working for a basic 2-way system, driver phase inversion to be added soon, so it only works for in-phase systems for now. I'm not sure what will come after phase inversion, probably the 3-D space settings for non-coincident (minimum-phase) measurements. Right now it works for direct measurements to the measurement point if excess-phase is left in the measurement.

The midrange page shows what the original screen looks like before entering any data for a driver. If you compare this version of the midrange page to the woofer or tweeter page, you'll see that the circuit elements that are unused disappear. This should make it a bit easier to see what you've set up. Data in other elements are not lost if you make a change to remove them, they just no longer appear and are removed from the circuit calculations.

I'm considering moving the system impedance graph down to the lower right so that the system SPL and impedance curves will both be visible from any tabbed page rather than just the SPL. This will still leave print/save command buttons only on the system page, but that shouldn't be a problem. To do this I'll have to squeeze the midrange page up a bit. The system page will have room left by the move of the impedance graph. This will likely not happen until much later, getting the basic functionality working is of primary importance.

I've also added some additional buttons for graph curve control. The Legend button has been there along with those that match the original PCD. There was room for more and they are fairly easily added, so I've expanded them.

And I will be updating the section on comments/questions, I just noticed that it still references the original PCD version and lists only Jeff for contact.

First display - 22 May 2012

These are some preliminary screen captures of the new Windows application to be called WinPCD. It is designed after the Excel spreadsheet created by Jeff Bagby. It's a complete re-write in C#/.NET using Visual Studio 2010.

The target import/calculation curves are also implemented at this point.

Top of the Page
WinPCD Index
Speakerdesign Home Page