SpeakerCalc is a graphing calculator that supports do-it-yourself cabinet design for a woofer or subwoofer loudspeaker system. It makes use of the Thiele-Small parameters provided by speaker manufacturers, and displays various response curves such as sound intensity levels and cone excursion. Closed-box, ported, and passive radiator designs can be analyzed. The results help to evaluate driver selection, cabinet size, and other enclosure construction choices. Crossover design is not covered. There are several Web sites and commercial software products that offer similar analyses, but SpeakerCalc is meant to be particularly easy to use.
Among SpeakerCalc's advanced features are real-time continuously plotted feedback on parameter adjustments, including off-axis directivity effects, and ease of parameter units conversions. Some notes on the theory may found at the end of this guide.
There are three columns. The leftmost has a selectable list of designs or drivers. The Design/Driver button determines which list is showing. One sample design is built into the program, and so is a small but extensible list of drivers. A box below that list allows the user to enter notes about whichever design is selected.
The second column shows parameter values for the selected design or driver, according to the Design/Driver tab setting. Driver parameters are the Thiele-Small parameters commonly available from manufacturers. Below the parameter table is a controls panel with a parameter slider, and computed values for selectable output parameters.
The third column has two plotting windows. Each one displays selectable performance data against frequency. The upper window is for the currently selected design, while the lower window shows either another performance curve for the same design, or data for another design selected for comparison. Expanding the main window enlarges the plots, and adds grid lines when the plot is large enough.
The range of values on the vertical scale of a plot is chosen by the program, and it cuts off the curve outside that range. However, clicking anywhere on the vertical scale causes it to alternate between the normal range and a double sized range.
The main application menu bar provides a few standard functions, such as quitting, printing a window image (from the Window menu), and showing this Help window.
Driver and Design Parameters
Parameters for a chosen design or driver are shown on two tabs. The Design tab shows the current design name, the driver for that design, and parameters for the enclosure and port or other reflex choice. The Driver tab shows the Thiele-Small parameters of any driver (not just the one chosen for the currently selected design).
A driver is selected for the current design with the "Use this driver" button on the Driver tab. (Other buttons in that group are explained in later sections.)
There is also a small button to the right of the tab selector that cycles through the driver list. When the Driver tab is selected, one can inspect different drivers by selecting them either directly on the driver list panel, or by cycling through the list with the above button. Doing this does not modify the current design, but the plot window shows the potential result of choosing the different driver. However, when the Design tab is selected, the cycle button not only changes the driver selection, but also assigns it as the current design choice. This change is still just a pending change that is not yet saved.
Thiele-Small parameters are explained in many sources, including Wikipedia. Each parameter label has a help tag with a brief description. Parameter values can be entered and viewed in a choice of applicable units, selected with the units dropdown menus on their right. For example, the driver cone area Sd can be expressed in square units of centimeters, inches or meters.
Enclosure design parameters include cabinet volume, number of drivers and ports or passive radiators, the amplifier power, and a minimal set of parameters for each port or passive radiator as appropriate.
There is also a Notes area below the design list. This field is for footnotes on the current design. Save the design in order to save changes in Notes.
The bar above each plot window selects options for display. Each window plots a response value against frequency for the design named in the bar. Five types of response curves are available: Excursion, SPL/SPL, Airspeed, PR Phase, and Impedance. The upper plot window is for the design currently active in the parameters panel.
Excursion plots the maximum absolute cone excursion in millimeters from the center or rest position. An excursion plot has a red line at the driver's Xmax level, the manufacturer's recommended maximum excursion for linearity. The plotted excursion will be an overestimate above this level. Excursion plots for the driver and passive radiator, if there is one, are selected with the D and P buttons. In the ported case, the P button shows the excursion of air in the vent, which affects further calculation but is not usually of independent interest.
SPL/SIL plots Sound Pressure Level and Sound Intensity Level in decibels at a distance of one meter. SPL and SIL are defined differently, but generate the identical curve when the corresponding reference level is used. The SPL curve provides a visual sense of the flatness of speaker response across a range of frequencies. The formula used to generate this curve does not reflect cone breakup at higher frequencies, but it should be fairly close at woofer frequencies, up to at least 500 Hz.
The D and P buttons select SPL/SIL contributions individually for the driver and passive radiator or port. When both are selected at once, they plot a single curve representing the combined sound level from both.
Airspeed is available only for ported systems. High vent air velocity is said to result in a "whistling" noise, and should be kept to a small fraction of the speed of sound. The plot is calibrated in Mach (Mach 1 is the speed of sound), and has a red line at the value 0.1, which has been recommended in some sources. The acceptable limit is subjective, however. High air speeds are associated with small vent openings. System Impedance is the fourth option. The approximate impedance of the driver alone, as often reported by the manufacturer, can be approximated by setting the port/PR resonance frequency Fp to zero and box volume Vb to a high level.
For a passive-radiator cabinet, the PR Phase option is available. This is the angle in degrees between passive radiator cone motion and that of the driver.
The lower plot window has the same options, except that it can be set for any of the available designs, since its design name label is actually a menu. The "Same as above" option links this plot window to the same design being shown in the upper window. If the design is set by name, the last saved version of that design is displayed. In this case, unsaved parameter changes will affect the upper plot, but not the lower plot showing the same selected design by name (other than "Same").
The window image, including plots, can be printed, or saved as PDF, using the Print Window Image... command in the Window menu.
Parameter values can be typed into the the text fields next to their labels, or changed with the slider.
Note: when entering values as text, the parameter value is not actually changed internally until the editing is terminated with the Enter key or by clicking on a different parameter, or saving.
The Slider changes Parameter values continuously in a fine-grained way. A left mouse click on a parameter label links the slider to that parameter. When the slider is moved, the current plotted curves are adjusted simultaneously to reflect the change in the parameter value. The available range of adjustment is up to double the starting value when the label was clicked. Additional clicks re-center the slider and recalibrate the range accordingly. The Reset button restores the parameter value to what it was at the last label click.
One parameter, the Reflex type for the cabinet, is not a number but rather a dropdown menu choice of Closed, Port, or Passive Radiator. Note that parameters with a subscript of p may refer either to the port or a passive radiator, depending on the reflex selection. For a closed box, Fp is calculated as an output, reporting the system resonance frequency usually denoted Fc.
Passive radiator parameter values can be set either directly or by choosing a passive radiator from the list of drivers and pressing the Use as PR button. Pressing this button will change the design to a passive radiator design if it is not already.
A change in design parameter values, including the choice of driver, is signaled by an orange status dot to the left of the tab selector. The dirty-status warning sometimes overcautiously reflects possible changes that were not carried through.
The dot is simply a reminder that parameters were edited. When another design is selected while the dot is present, a dialog will appear to allow the user to save the changed design if desired. The dot disappears when the dialog is dismissed.
The values of certain parameters can be determined as a function of input parameters. They cannot be changed directly. Some of them are displayable, because of their design usefulness, as menu selections in the Outputs area of the controls panel.
Lp, the port length, depends on the port cross-section area Sp, the volume Vb of the cabinet, and the port resonance frequency Fp. The port opening is assumed to be circular.
Mp is the total moving mass of the passive radiator (or of the air in a port vent, depending on the reflex selection). The moving mass of a passive radiator is linked to its resonance frequency. One can set a lower desired resonance frequency and check this output to see how much mass needs to be added.
Qtc is the total Q for a closed-box system, computed from Qts, Vas, and Vb. A value of 0.707 for it is usually recommended for a flat response curve.
The other outputs are driver parameters that are often supplied directly by the manufacturer. Qts is the total Q, calculated from Qes and Qms. Cms is the suspension compliance, and Mms is its total moving mass. BL is the force factor.
Directivity is attenuation of the sound level when measured at a location that is some angle away from the central axis of a speaker. The off-axis angle is the parameter Theta. It is set in the controls panel, using the slider, up to 90 degrees left or right. Directivity affects the SPL/SIL curve, with more attenuation at higher frequencies. For multiple speakers, or the combined driver and port or passive radiator sound level, the predicted effect is valid only when the axes point in the same direction.
Thiele alignment is a way to optimize a ported design by relating enclosure parameters to driver parameters. The alignment goal is to maximize response flatness. Thiele's alignment table, as rewritten in Keele  (see references below), gives values of Fb/Fs and Vb/Vas for various values of Qts. The Alignment button in the design parameter panel takes the driver parameters as given and calculates Fp (for Fb) and Vb of a ported design by interpolation from the table. This button has no effect on passive radiator designs.
The results are not claimed to be optimal, but rather provided as a way to generate reasonable starting values for further experimentation with parameter modifications. It seems to work best for Qts < 0.4, and should not be used for Qts > 0.518. Thanks are due to Giovanni Cornara for suggesting that SpeakerCalc should have an alignment feature.
For a closed-box system, the Alignment button sets a suggested value of Vb, namely that value that yields the recommended Qtc value of 0.707. Higher values of Qtc, up to about 1.2, emphasize bass response.
Saving and Creating Specifications
The parameter panels have Save Driver As... and Save Design As... buttons. Specifications are saved as user preferences, so they are local to a machine and user. A saved specification that is currently showing can be deleted with the Delete... button. A right click in the design list column also brings up a dialog with save and delete buttons.
Built-in specifications cannot be deleted or modified through the app interface. (They are read in from an app txt resource.)
Saving a design or driver under a new name creates a new specification, which automatically appears on appropriate lists. The Design List [+] button creates a design by initiating a save of the Sample design under a new name of the user's choice. The new design may be modified as needed.
Performance curves were derived from the steady-state solutions of the classical equations of motion for cone excursion. Leakage effects were not included because they would require additional parameters beyond the basic Thiele-Small set. Francis Deck's physics explanations (see the references below) were very helpful as an introduction to the concepts and computational approach. The results of this tool were checked against Ougaard's Unified Box Model spreadsheet on a few representative examples, and showed reasonable agreement, given the level of this model.
L.E. Kinsler, A.R. Frey, A. B. Coppens, and J. V. Sanders, Fundamentals of Acoustics, 4th edition, Wiley, 2000.
Francis Deck, Derivations of Speaker Response, Sealed and Ported, http://personalpages.tds.net/~fdeck/bass/speaker.pdf, as of September, 2017.
Francis Deck, How a Speaker Works - What I've Learned So Far, http://personalpages.tds.net/~fdeck/bass/speaker2.pdf, as of September, 2017.
D.B. Keele, Sensitivity of Thiele's Vented Loudspeaker Enclosure Alignments to Parameter Variations, J. AES 21(4), May, 1973, 246-255.
Kyle Lahnakoski, Kyle Lahnakoski's Speaker Equations, http://www.arcavia.com/kyle/Equations/, as of September, 2017.
Kristian Ougaard, Unified Box Model for Loudspeaker Design, http://audio.claub.net/software/kougaard/ubmodel.html, as of September, 2017.
R. H. Small, Direct-Radiator Loudspeaker System Analysis, IEEE Trans. Audio and Electroacoustics AU-19, December 1971, 269-281.
R. H. Small, Passive-Radiator Loudspeaker Systems Part I: Analysis, J. AES 22(8), October 1974, 592-601.
Jonathan Millen (coding, math) and Samuel Millen (CEO of Cue Acoustics, practical loudspeaker design).