Designing a Speaker with Simulated Measurements

Home > DIY Speaker FAQs > Simulated Measurements

I want to design a loudspeaker. What measurement equipment and software do I need to buy?

Stop right there! If you’ve never designed a loudspeaker before, do not invest in measurement gear yet. Designing loudspeakers is a complex task. Measuring loudspeakers is a science in and of itself. Did you know that you can accurately design a loudspeaker without making your own measurements? It’s true, and the best part is that it will cost you nothing to do this due to the wonderful free tools available on the internet.

I personally believe it is important to learn how to “simulate” measurements before one actually attempts them. By working with the simulation software, you can begin to understand how baffle shape, cabinet size, driver location, listening location, and phase affect the frequency response of a driver. It also allows you the freedom to try out drivers without ever actually cutting any wood.

As you may or may not know, to design a loudspeaker using modern simulation software, you need a few data files:

  • Frequency Response (.frd) – this is a set of data that plots the driver’s amplitude (in dB) at various frequencies.

  • Impedance (.zma) – This is a set of data that plots the driver’s resistance (in Ohms) at various frequencies.

  • Thiele/Small parameters – OK, not necessarily a data file, but rather a few key numbers that allow us to accurately model the correct box volume and tuning for a woofer.

If you had the measurement tools, you would gather this data yourself, usually by measuring the drivers mounted within the enclosure you intend to use. However in our case, we want the raw, anechoic measurements. How might we get these? Why, we can use the manufacturer’s spec sheets, of course!

(Note: not all manufacturers have accurate spec sheets. Tang Band, for instance is notoriously “optimistic” when they display the frequency response of their drivers. In some cases, you may want to forego the manufacturer’s spec sheets and use anechoic measurements by a 3rd party, of which there are various guys measuring drivers around the web. Just be sure that the drivers you choose for your design were measured under the same conditions. The last thing we want is to have the drivers measured at different SPL; this will really screw us up when trying to “voice” our design)

Step 1: Download the spec sheet and graphs

All right. For this demonstration, I will be creating “artificial measurements” for the Dayton RS150S midwoofer and the Dayton RS28a tweeter. If I Google these drivers, or go to Parts Express’ web page, I can download the PDF of the spec sheet. Alternately, I could have downloaded the .jpg and .gif files from a 3rd party test site, such as

Step 2: Convert the spec sheet graphs into FRD and ZMA files

Unfortunately, we can’t just stick pictures of the graphs into our loudspeaker design software. It needs these graphs converted into numerical values. To do this, there some freeware utilities out there to help us "trace" the SPL measurements into actual data points.

Currently, I found the program SPLTrace to do the job. It is available as part of a package of free speaker design software called Vituix.

Here is a video of a robot demonstrating how to use the SPLTrace software. I found it takes a bit of clicking around until the trace starts to match up.

So, using these programs, I have converted Frequency Response and Impedance graphs, and now have 4 files: DaytonRS150.frd, DaytonRS150.zma, DaytonRS28a.frd, and DaytonRS28a.zma. Unfortunately, these files are not yet ready to be used in loudspeaker design software. The problem is that this is pure anechoic data; it does not show how the drivers will act when mounted in an actual enclosure. Thus, we need to model ourselves an enclosure.

Step 3: Look at the T/S Parameters and choose a woofer alignment

The first smart thing to do as a designer would be to figure out what kind of box I need to build for my speaker. To figure this out, I need the Thiele/Small parameters for the woofer. This information is handily available on the spec sheet; if I’m dubious of the numbers, I can cross-check them against the 3rd party measurements mentioned above.

To get a rough idea of the size enclosure I’ll need—and how much bass extension the driver can offer—I will use a box simulator software. There are lots of these out there, but the two most trusted tools I use are Jeff Bagby's Woofer Box and Circuit Designer and Unibox by Kristian Ougaard. In this example, I'll use Unibox.

Once I input the T/S specs into Unibox, and I play with box sizes and tunings a bit, I see that I can get a nice tradeoff between bass extension and size by using the RS150S in a .375 cu ft (11 Liter) enclosure. This should make a modest-sized bookshelf speaker; good enough for critical listening, but small enough to stay mostly “hidden” in a room. Using a “vented” (aka “bass reflex” or “ported”) alignment at 48 Hz, I can get an F3 of 43 Hz. Sounds good!

Step 4: Design the cabinet

Now that I know my enclosure volume will be 11 Liters, I can play with cabinet dimensions a bit and experiment with how tall, deep, or wide I want my enclosure. A very handy program for doing this is called Boxycad, which is another Excel spreadsheet and also is free to download and use. However, some people are more comfortable doing this sort of sketching with pencil and paper, and some prefer 3D CAD models.

For this example, I have used Boxycad to create a mockup of my speaker. I have decided to make my cabinet 8” wide x 14” high x 10.5” deep. One of the many nice things about Boxycad is that it has a little mockup drawing of what my speaker will look like. I must remember the height and offset of where I placed the drivers on the baffle, as this will impact many things when we simulate the drivers’ Frequency Response.

For the rest of this article, the only program I will need is Jeff Bagby’s Response Modeler, which is a very powerful Excel spreadsheet. It combines the functionality of several different software tools, and also rings up at the bargain price of free. Gotta love that! You may have a tiny bit of difficulty running a few features unless you turn on the “Analysis ToolPak" in Excel. (Instructions on how to do this here)

To the best of my knowledge, you must run this spreadsheet using a Windows version of Excel. The Mac version and Linux clones will not work. Sorry.

Step 5: Model the Impedance of the woofer

In Response Modeler, I want to scroll down the page a bit to where it says Impedance Model. In this section, I will enter the Thiele/Small parameters of the woofer: Re, Le, Fs, Qes, Qms, Vas. Then I will enter the Vab (volume of the box I plan to use) and Vb (tuning of the box I plan to use). You may notice that I entered .7 Ohms into the Rs (series resistance) field. This is to approximate the series resistance (“DCR”) of the inductor(s) I will use on my finished speaker. This is important because adding resistance to a woofer’s circuit can change the Qts of a driver, thus altering the bass response.

Once I have created the Impedance graph, I want to save it as a .zma file. I don’t want to confuse it with the one I traced, so I will call it DaytonRS150_simmed.zma. This is a simulated graph of what the Impedance of the woofer would be, if it were mounted in my actual box.

Step 6: Apply the box simulation to the .frd file

Now I’m going to load in the manufacturer’s measurement of the woofer. To do this, I’ll scroll up to the top of Response Modeler, and slightly to the right, and click the button “Import FRD file to modify.” Then I just need to go to the folder where I saved the .frd files I made in SPLTrace, and load up the woofer’s file.

Looking at the manufacturer’s graph (above), you can see that the response rolls off below 200 Hz. This is because it is virtually impossible to measure anechoically below 200 Hz, unless you suspend a driver in the center of a room 60’ x 60’ x 60’. That’s OK, because we will be simulating the woofer’s response down in that region. To do this, I need to scroll down the page in Response Modeler to where it says “Box Response Model.” This graph shows a modeled response of the woofer in the enclosure up to 1000 Hz. We probably only need this up until 200-300 Hz—more on that in a second.

I click the button to “Splice Box Plot to Response Model” and I’m transported back up to the top of the page. Now, all I have to do is click the button labeled “Splice Box Plot 200 Hz.” Suddenly, the two graphs are combined; from 200 Hz on up, the graph shows the anechoic measurements, from 200 Hz down, we see our simulated box response.

Looks like we’re on our way to a real measurement. But we’re not done yet!

Step 7: Simulate for baffle diffraction and loss.

This is where the real learning comes in. Response Modeler has the amazing ability to model for diffraction and baffle step loss of our drivers when mounted in an enclosure. This is very important! In this section, I entered the baffle dimensions and driver location on the baffle. I also told the program that the driver’s diameter is about 6”. You will notice that the graph will change significantly as you adjust values. For example, if I change the width of the baffle to make it wider, the baffle step “hump” and “roll off” will go lower in frequency. Also notice that the size of a driver has a large impact on how much diffraction (ripples above baffle step) it exhibits, as well as where the driver is placed on the baffle. This is very important stuff to consider when doing your next design!

Teachable moment over. Now, I will click the button to “Save Diffraction Curve to BDS Register Above.” This will apply this curve to our Frequency Response graph at the top. So let’s scroll up and take a look.

Whoah! Suddenly, the bass response has just dropped off by 6 dB! This, folks, is called “Baffle Step Loss,” and it will happen on any speaker that isn’t mounted into a wall. You can compensate for Baffle Step Loss when doing your crossover design (this is aptly known as “Baffle Step Compensation” or BSC).

Step 8: Save the File and Extract Minimum Phase

We’re almost there! All we need to do now is save the “artificial measured” response we just created. (This button is at the top of the program, scroll slightly to the right) I click the button that says “Save Modified Result to FRD File.” I’ll call it DaytonRS150_simmed.frd

Now, I have a graph that very accurately represents how the Dayton RS150 would perform in my enclosure. However, I haven’t accounted yet for Phase, which is crucial if I want to accurately design a crossover.

Phase is a very ephemeral idea, but basically it relates to a concept called “Group Delay,” which states that, as frequencies get lower, they arrive at the destination point later than high frequencies. Weird, eh? Anyway, quality crossover design programs account for this—and they should—because it has a huge impact on how the woofer and tweeter will integrate. If the woofer and tweeter are out of phase with one another at the crossover point, the finished speaker will have a noticeable dip in the frequency response at that point, due to phase cancellation. Also, the speaker may tend to have a less uniform sound, depending on where the listener is in the room. Long story short: phase is important.

Response Modeler has a built-in function that will figure out the phase of our “measurements.” To do this, I simply scroll to the right where there is a little menu that says “Hilbert-Bode FFT Transform.” Then I’ll click the button that says “Extract Phase from FRD file.” I’ll go to where I just saved my simulated file (DaytonRS150_simmed.frd) and let the program work its magic! It will figure out the phase delay for all the points on my graph. Then, when it’s done it will ask me for a file name. I’ll call it DaytonRS150_simmed_minphase.frd.

While I’m at it, I’ll do the same for the simulated impedance file I created in Step 5 (DaytonRS150_simmed.zma), and let it extract the Impedance Phase of the simulated woofer, and save that to a new file, which I’ll call DaytonRS150_simmed_minphase.zma. OK, I admit that “Phase” in an .frd file and “Impedance Phase” in a .zma file are two completely different things, and they should be named differently. But this is just how things are, so please just bear with it. Suffice it to say, you need to extract the Phase of both the .frd and .zma files in order for your crossover software do its work optimally.

Step 9: Repeat the process for the tweeter’s .frd and .zma files.

The process for response modeling the tweeter is simpler in that I don’t have to mess with any box modeling (the tweeter is in its own enclosure). It is very important, however, that I model for baffle diffraction. I will save this simulated measurement, extract minimum phase, and be done with it.

That’s it. I now have 4 files:





Note that I didn’t have to simulate anything with the tweeter’s .zma file, just extract minimum phase. That's because tweeters have their own self-contained "enclosure" or "chamber" and will not interact with the inside of the loudspeaker enclosure.

These four files are all I need to load into the loudspeaker design software of my choice and get to work designing a kick-ass speaker. I have created the equivalent to measuring the 2 drivers in the cabinet, and I’m ready to design a crossover. These “simulated measurements” cost me $0, and only a bit of my time. If you think this process seems long and complicated, then go pick up a copy of Joe D’Appolito’s book, Testing Loudspeakers, and find out what the alternative is like.

By now, perhaps you are wondering, "How accurate are these simulated measurements?" To find out, let's go on to Part 2 ->

by Paul Carmody | this page was last updated December 22, 2020