Need Testers/Developers for open-source Excel based Crossover Design Tools

Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.
Over the past 6 months I have been developing and testing an Excel-based active loudspeaker crossover design tool. I am at the point that I would like to open up testing and development to other DIYers and create an open source development group. When the tools look like they are ready to go, I will open it up to everyone.

I am looking for a few people with the following:
  • experience measuring driver frequency responses (and current capability for doing measurements)
  • general knowledge of active crossovers
  • DIY loudspeaker design experience
  • access to a MiniDSP, Behringer DCX2496, or other configurable crossover/delay unit
  • general knowledge of transfer functions (in s and z^-1) for various types of audio filters is helpful but not absolutely necessary

If you are interested in participating in the development effort, or just want to know more, please read on:

I have attempted to create a set of flexible tools for describing and designing multi-way loudspeaker crossovers given user-supplied frequency response measurements in the FRD format. The tools use linked Excel spreadsheets. I have avoided the use of macros or VBA code in the hopes that the tools will also run without modification in OpenOffice Calc (this is one of the things that needs to be checked out). I'd like to keep the tools completely open source, so there will not be any hidden worksheets or cells. The tools can be expanded to include any number of drivers, e.g. if you want to design a line array, no problem.

Designing the crossover
The tools permit the user to apply various filters to the measured driver data, and then to combine (sum) the responses from all the drivers in the system to obtain the "system response". The filters that can currently be described include:
  • gain block
  • first order: high pass, low pass, all-pass, and shelving filters
  • second order: high pass, low pass, all-pass, notch, and biquadratic filters
  • EQ: parametric EQ bands
Each driver response can have up to 8 filters and four EQ bands applied to it. The system input can also have 4 filters and 4 EQ bands applied to it. Plots in the system response design spreadsheet show the response for each driver, the summed system response, and a "reference" response that the user can supply. Plots in the driver response spreadsheet show the raw and filtered driver responses, and the magnitude and phase response of the filters. All input files should use the FRD format. Driver and filter responses are calculated using Excel's complex number operators in order to properly keep track of phase and amplitude. Phase is unwrapped to avoid glitches during interpolation and calculation, and when adding in driver acoustic delay.

The tools comprise "system response" and "driver response" spreadsheets. For each loudspeaker system there is one system response spreadsheet, and for each driver there is one driver response spreadsheet. All measurements are taken at the same point in space (e.g. on the listening axis) and the system response is calculated for that point in space only. The tools are flexible in the sense that they can be expanded to accommodate any number of drivers, and advanced users with knowledge of Excel can customize any aspect of the spreadsheets. This could be adding functionality, adding or removing series from plots, etc. I would like to start the open-source development group to explore various uses of the tools and check functionality, and I can host a forum on my web site for this purpose.

Implementing the crossover
Once the crossover has been designed and the user is satisfied with the result, it's time to implement the crossover. For this purpose, I have provided info for designing:
  • Analog active crossovers
  • Digital active crossovers
For designing analog active crossovers, the filters are described both in terms of corner frequency and Q, and as transfer function coefficients in s and in z^-1. I have a full set of circuit designs for analog circuits that I would like to make available for people who want to build up their own op-amp based crossovers. Digital crossovers can be implemented similarly to analog crossovers - using a digital crossover unit like a Behringer DCX2496, or with the more flexible MiniDSP crossovers. I have been testing out the tools using a pair of MiniDSP-in-a-box 2x4 units and the advanced crossover module. In order to take full advantage of the advanced biquad programming capabilities of the MiniDSP units, the tools calculate the biquad coefficients that are required to be programmed in to the MiniDSP units. I have compared all the first and second order filters against the analog functions to make sure that they are equivalent.

I'd like for developers to have the ability to run through the entire process from start to finish. This would include measuring driver responses in-box, designing the crossover, implementing the crossover, and then re-measuring the speaker's response. For this reason I would prefer if people have access to some kind of advanced crossover unit such as the MiniDSP, but the Behringer DCX or dbx Driverack units could work too.

With the popularity of Jeff Bagby's Excel based passive crossover design tool (PCD), it seemed that a free design tool for designing DIY active crossovers was needed. Jeff has struggled with problems getting his tool (which uses macros and VBA code) to work for various versions of Excel, and it is limited by what is available in the interface because it is not open source. I'm hoping that an open source active crossover design tool will not create too many obstacles for users, and will allow for complete customization or extension when needed.



If you are someone who is interested in helping with the testing and development of these tools, please send me a PM.

-Charlie

.
 
Last edited:
Porgramming/Debug Excel/VBA

Just as an example of what I have done with these tools to date, while I have been developing them, please check out this thread on the PE TechTalk forum. I show plots of the crossovers for a couple of 2-way speakers:

MiniDSP crossover development - Techtalk Speaker Building, Audio, Video, and Electronics Customer Discussion Forum From Parts-Express.com

I'm still looking for testers/developers!

-Charlie

Hi CL,

I will be glad to help with the math and programming only. The time I have free to do this is limited; so, I cannot do the labor intensive lab work you require. My wife's accounting business will be consuming most of my time during the first half of 2012 due to the increased client workload we have during that period.

Regards,

WHG
 
Hi CL,

I will be glad to help with the math and programming only. The time I have free to do this is limited; so, I cannot do the labor intensive lab work you require. My wife's accounting business will be consuming most of my time during the first half of 2012 due to the increased client workload we have during that period.

Regards,

WHG

The tools are fully developed and working. At this point, I am looking for people who can test them. If problems are discovered then maybe there will be some small bug fixes. Additional development would be later, only when warranted or to address some aspect that is not covered.

-Charlie
 
The tools are fully developed and working. At this point, I am looking for people who can test them. If problems are discovered then maybe there will be some small bug fixes. Additional development would be later, only when warranted or to address some aspect that is not covered.

-Charlie
Charlie,

Don't know how much this will affect what you are trying to implement, but DSP is not created equal:

DSP Tower of Babel

Well, THAT's Not Gonna ******* Work!!

In the latter thread, it is found that polarity is reversed on the high band in the DriverackPA+, and on all three bands (from input to output) on the Driverack PA.

The lack of concurrency in filter Q and even polarity across different DSP platforms might result in "bugs" that have nothing to do with your programming.

Art Welter
 
Charlie,

Don't know how much this will affect what you are trying to implement, but DSP is not created equal:

DSP Tower of Babel

Well, THAT's Not Gonna ******* Work!!

In the latter thread, it is found that polarity is reversed on the high band in the DriverackPA+, and on all three bands (from input to output) on the Driverack PA.

The lack of concurrency in filter Q and even polarity across different DSP platforms might result in "bugs" that have nothing to do with your programming.

Art Welter

I don't see how the reversed phase in the Driverack is a problem per se... you can just set the phase for "reversed" when you know you will be using that unit, or reverse the phase on the DriveRack. If the Driverack has such poor implementation of filters, then maybe people should avoid using it. Thanks for bringing that up.

I really intend for people to use the MiniDSP, but thought if they could live with less flexibility they could also use a DCX2496 or similar.

-Charlie
 
Originally Posted by weltersys
Charlie,

Don't know how much this will affect what you are trying to implement, but DSP is not created equal:

DSP Tower of Babel

Well, THAT's Not Gonna ******* Work!!

In the latter thread, it is found that polarity is reversed on the high band in the DriverackPA+, and on all three bands (from input to output) on the Driverack PA.

The lack of concurrency in filter Q and even polarity across different DSP platforms might result in "bugs" that have nothing to do with your programming.


Art Welter
I don't see how the reversed phase in the Driverack is a problem per se... you can just set the phase for "reversed" when you know you will be using that unit, or reverse the phase on the DriveRack. If the Driverack has such poor implementation of filters, then maybe people should avoid using it. Thanks for bringing that up.

I really intend for people to use the MiniDSP, but thought if they could live with less flexibility they could also use a DCX2496 or similar.

-Charlie
DRPA and DRPA+ have no polarity reverse settings, you have to pay more for that feature.

In the case of the DRPA, where all outputs are polarity reversed from the input, not a problem, unless combining another system that does not have that "feature".

In the case of the DRPA+, having the HF polarity inverted from the LF and MF is simply hosed.

As far as the other filter Q differences between different DSP, some even from the same company, the problem is a crossover designed for one platform will unfortunately not be correct for another.

As the midway hawker says "close, but no cigar" :mad:.

Art Welter
 
Its a go in OO Calc

I finally had the time to download the latest version of OpenOffice and tried out the tools in Calc. Apart from a couple of minor glitches, everything seems to be working exactly like in Excel. I'd even go as far as to say that the OO Calc recalculation speed is faster than in Excel!

This is really great news. These tools can be used under Linux, which really widens the potential user base.

Now to write some documentation...

-Charlie
 
Dear Charlie,

Your thread attracts my interest. I have very extensice experience with Calsod 3.1 and LSP cad Pro 5.6. Both have the most powerful tool, being the so called Optimizer.

Highly simplified: Load a measured driver file, assemble a textbook filter for starters, load the desired filtered acoustic output. Simply click Optimize Filter. The software wil calculate the exact, optimized filter component values.

The same can of course be done for DSP programming. As a matter of fact SE and the UE work this way.

In my humble opinion, any filter design program without an optimizing function is like a car with a flat tire; it moves, but will only get you there in a slow time-consuming and tiresome fashion.

So pleazzzee include an Optimizer.....

Kind Regards,

Eelco de Bode
 
Q1 : Do you intend producing an all-in-one Crossover Wizard, spreadsheet-based, encompassing the gain and phase measurement of all drivers, in-axis and off-axis ?

Q2 : Is the FRD standard taking the phase curve into account ?

A1: No. The model is really only valid at the point in space where measurements are made. You can extrapolate away from that manually by playing with the acoustic offset for each drivers, but at this point it is not really included.

A2: Yes. You can't properly design a crossover for a loudspeaker without incorporating the phase response and acoustic offsets for each driver.

-Charlie
 
Dear Charlie,

Your thread attracts my interest. I have very extensice experience with Calsod 3.1 and LSP cad Pro 5.6. Both have the most powerful tool, being the so called Optimizer.

Highly simplified: Load a measured driver file, assemble a textbook filter for starters, load the desired filtered acoustic output. Simply click Optimize Filter. The software wil calculate the exact, optimized filter component values.

The same can of course be done for DSP programming. As a matter of fact SE and the UE work this way.

In my humble opinion, any filter design program without an optimizing function is like a car with a flat tire; it moves, but will only get you there in a slow time-consuming and tiresome fashion.

So pleazzzee include an Optimizer.....

Kind Regards,

Eelco de Bode

This are basic spreadsheet based tools, not comparable with Calsod or the LSP CAD Pro! There is currently no "optimizer" but it's something that a development group could work on. I want to limit the tools to worksheet functions only - no VBA or macros. This will allow it to be used in OO Calc.

-Charlie
 
Last edited:
This are basic spreadsheet based tools, not comparable with Calsod or the LSP CAD Pro! There is currently no "optimizer" but it's something that a development group could work on. I want to limit the tools to worksheet functions only - no VBA or macros. This will allow it to be used in OO Calc.
Would be nice to make a step-by-step evolution starting from miniDSP Advanced Biquad spreadsheet from knuisje, Juoigâ Linkwitz Transform | miniDSP

Evo 1 : a sheet showing the mechanical layout of the woofer and the tweeter, showing the sources vertical misalignment, quantifying the resulting time misalignment, and providing digital delay parameters for cancelling such time misalignment.

Evo 2 : a sheet for calculating the IIR coefficients for a Linkwitz-Riley 4th order.

Evo 3 : a sheet enabling to enter the FRD data (gain and phase) for the woofer and the tweeter, in-axis.

Evo 4 : a sheet enabling to add up to 4 cascaded Biquads, as woofer linearization.
Evo 5 : a sheet enabling to add up to 4 cascaded Biquads, as tweeter linearization.

Evo 6 : a sheet enabling to add up to 8 cascaded Biquads, as Linkwitz Transform, pre-equalizer and room equalizer.

There would be a sheet representing the in-axis result : the individual woofer and tweeter contributions (gain and phase), and the overall result (gain and phase).
 
Last edited:
Yeah, my tools already do all that 1-6 stuff, except the "Room equalizer" and the diagram. Just not in that order.
Great !
Is there a textfile output containing the delays and the Biquad parameters in ASCII ?
Can you make it structured like a netlist ?
There would be components like delay blocks (the parameter is the delay).
There would be components like Biquad blocks (the parameters are the 5 coefficients in ASCII).

Such netlist, a textfile output, would entirely describe the crossover. Let's take an example. The 4th order Linkwitz-Riley splitter needs to be converted into two signal flows, each hosting two Biquads in series. That's the trick.

Such netlist would be passed to a free and open DSP board for executing the crossover like :
MikroE PIC32 MINI-32
LPCXpresso LPC43xx
BeagleBone

A nice netlist format is the one used by LTSpiceIV. All you need is to add a section at the bottom, listing the blocks as components along with their internal parameters. Only Biquads and delays.

The DSP board would read the netlist, unwrap in and convert it to one or many signal flows containing the various Biquads and delays. Using internally stored templates (processing blocks prototypes), the DSP would create as many instances as needed, and schedule their computation according to the signal flows.
This way, you don't need to deal with DSP code.
All you need is to decompose in Biquads and delays, using the netlist.

You could refine the Google Docs application to such a point that it behaves like a schematic entry. Dragging and dropping Biquads, delays, plus a high-level processing block for the 4th order Linkwitz-Riley splitter. Connecting the blocks using signal lines. Each block having a Wizard. The Delay Wizard would convert distance in time. The Biquad Wizard would base on the RBJ cookbook. The 4th order Linkwitz-Riley splitter Wizard would calculate all Biquad coefficients from the sampling frequency and crossover frequency.

The analog input of the DSP board could have a measuring microphone connected. This way, the DSP board may act as two-channel FFT analyzer. The Google Docs application shall thus support USB messaging with the DSP board, dealing with raw captured data (pink noise as reference signal and mike output as DUT signal), asking the Google Docs application to do the 2-channel FFT, driver-to-mike delay compensation, gain and phase computation, and FRD file generation.
 
Last edited:
The only output for IIR filters is currently formatted exactly for the MiniDSP, e.g. the list of teh five biquad coefficients that you need to paste in to the advanced biquad dialog box in the advanced plug-in, including all the "biquad1," lines. It's just cut from the spreadsheet, and paste directly in.

If you want to use digital (frequency independent) delay, you can dial that in manually in the tools and then enter that amount of delay in to the program. For MiniDSP, there is a minimum delay increment of 0.02msec I think, which is too large for fine acoustic delay compensation IMHO. So I usually end up designing an analog delay stage as a biquad.

For any other IIR filter program, you might need to do some reformatting of the biquad coefficients. I only have experience with MiniDSP. If there is a lot of interest, I could hard code other formats, e.g. your netlist idea, I guess. At this point I am busy trying to get this all documented, and then into the hands of the tester group.

-Charlie
 
Last edited:
Just another Moderator
Joined 2003
Paid Member
Hi Charlie, Is the requirement for miniDSP or beringer so that the filters can easily be simulated for testing to check the results match the programs output?

I've got the measurement gear, and I've got an active filter project (which I haven't worked on for a while but want to get back into) so it's relevant to me :)

Tony.
 
The only output for IIR filters is currently formatted exactly for the MiniDSP, e.g. the list of the five biquad coefficients that you need to paste in to the advanced biquad dialog box in the advanced plug-in, including all the "biquad1," lines. If there is a lot of interest, I could hard code other formats, e.g. your netlist idea, I guess.
It's the usual chicken and egg problem. The interest for another platform than miniDSP will only show after there is a Digital Audio "Shield" embedding a WM8580 Audio Codec, designed for the MikroE PIC32 MINI-32, Embedded Artists LPCXpresso LPC43xx board, and BeagleBone, plus a demo software relying on internal function block prototypes to be instantiated and connected using the netlist concept. Something to be put in parallel with another thread on diyAudio : http://www.diyaudio.com/forums/digital-line-level/195791-open-source-dsp-xos.html
 
Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.