Don's Software Downloads!

Here are programs to download via WWW from Don Klipstein Jr.'s Web Site!

WARRANTY: Absolutely none - Use At Own Risk!

Updating in progress 5/11-5/15 2021 (in the section on SPKR and relevant to SPKR). V. 1.20 of SPKR is released ~ 12:15-12:20 AM EDT 5/15/2021, but notes on this are expected to still be coming in for as long as a few days in May 2021.


1. Licensing - as of 6/13/2012 through 5/15/2021, everything here is freeware that I license for free to anyone who wants it, under GPL "public license". Should this ever require any warranty on my part, I disclaim such warranty even should that require me to abandon free licensing.

Some software here may be inadequately copyrighted / noted for enforcement of the very liberal-to-downloader GPL terms. In such case, it becomes public domain software.

2. Executables (ready-to-run) require DOS preferably 3.0 or higher, which is supplied with or required to install (and remains after installing) Microsoft Windows 3.x, 95, or 98. Windows XP "cmd" so far works.

3. For all programs here so far, source code is posted here (in links). Download and compile the source code if you do not trust me to not infect my executibles with nasties such as viruses (virii?) or worms. Source codes are in BASIC (as of 5/15/2021 and all earlier times) and compileable with Microsoft Quick Basic 4.5 (and probably most lower versions down to 2.5) and probably compileable with all versions of Microsoft Visual Basic either as-is or with minor changes. In addition, BASIC source codes are probably largely to possibly entirely-as-is workable in most versions of Borland TurboBasic.

3. Most Microsoft Basic compilers 2.5 to 7 (at least for DOS) and maybe some other Microsoft programming languages (especially BASIC) have some strange extraneous slowdown in floating point math. There is a patch!

My Computer Speedup General Hints (mostly old)

.ZIP file with the patch for speeding up the executables produced by many Microsoft BASIC compilers such as Quick Basic 2.5 to 4.5, BASIC 7 ("QBX"), and possibly some other Microsoft programming language / compiler packages such as some versions of Visual Basic.

Now For The Programs!

Number of Programs Available Here as of 5/15/2021: 3 (three).

MWPL - "mW/lm" UV and blackbody spectrum plot.
Radiate - brightness, chromaticity, scotopic/photopic ratio, and spectrum breakdown of blackbody radiators as a function of temperature.
SPKR - "Speaker", for designing loudspeaker sealed and ported enclosures, for woofers, subwoofers and fullranges. Multiple successive versions of SPKR are now here as of 5/15/2021.

MWPL - "milliwatts per lumen" blackbody radiation spectrum

This program requests user input of "blackbody radiator" (ideal thermal radiator) temperature in degrees Kelvin (limited to a range of 1720 to 31600). Its response is screen output of a spectral distribution curve with horizontal calibration in wavelength in the range of 250 to 850 nanometers. Vertical scaling is obviously enough percentage of peak (in content per unit "bandwidth") but calibrated for a custom purpose in terms of milliwatts of ultraviolet per lumen of visible light. (I got off my butt and developed this program for a customer who wanted ultraviolet data to minimize fading of paintings in an art gallery.)

Additional output displayed on the screen is milliwatts of UV per lumen of visible light.


"IBM-Compatible" PC or "PowerPC" sort of computer, video display including VGA compatibility, operating system suitable for running a DOS program (DOS version preferably 3.0 or higher, but may run on DOS as low as about 2.3 or so).

Preferred processor for fast speed is "X86" type Intel 486DX or higher, AMD 5X86 /"X5" or higher or equivalent. Will work on 8088 or higher.

To print output while using DOS, before running MWPL run the DOS utility GRAPHICS. While what you want to print is displayed, do a -PrintScreen. Your paper output may have black and white reversed.

Source Code Notes:

Successfully compiled with Microsoft Quick Basic 4.5.

Download Links:

MWPL.EXE executable with the "mathptch" speedup worked in.

MWPL.BAS Basic Source Code compileable by Microsoft Quick Basic 4.5, freeware including blackbody formula and photopic data useful for such programs.

RADIATE - brightness, chromaticity, spectrum breakdown of blackbody radiators as a function of temperature

This program requests user input of "blackbody radiator" (ideal thermal radiator) temperature in degrees Kelvin (limited to a range of 350 to 2E7 degrees Kelvin. Its response is to print onto the screen the following properties of a blackbody radiator at such a temperature:

Surface brightness in candela/cm^2
Scotopic/photopic ratio
Peak wavelength in nm
1931 CIE chromaticity coordinates
Watts radiated per square centimeter
Percent of total radiation in vacuum UV, non-vacuum UVC, UVB, UVA, visible, IRA, IRB, and IRC, corrected 1/19/2010.
Overall luminous efficacy, in lumens of light per watt of total radiation.


"IBM-Compatible" PC or "PowerPC" sort of computer, video display with CGA or VGA compatibility, operating system suitable for running a DOS program (DOS version preferably 3.0 or higher, but should run on DOS as low as 2.3).

Preferred processor for fast speed "X86" type Intel 486DX or higher, AMD 5X86 /"X5" or higher or equivalent. Will work on 8088 or higher.

To print output while using DOS, at least of older versions 3 to 6 or so, before running RADIATE run the DOS utility GRAPHICS. While what you want to print is displayed, do a -PrintScreen. Your paper output may have black and white reversed.

Source Code Notes:

Successfully compiled with Microsoft Quick Basic 4.5.

Download Links:

RADIATE.EXE executable with the "mathptch" speedup worked in.

RADIATE.BAS Basic Source Code compileable by Microsoft Quick Basic 4.5, freeware including blackbody formula, photopic, scotopic and chromaticity data of visible wavelengths useful for such programs.

SPKR - "Speaker", for designing loudspeaker sealed and ported enclosures, for woofers, subwoofers and fullranges. Updating in progress 5/11 - 5/15 2021, mostly done 5/15/2021.

This is actually a very old program of mine, developed mostly during 1989 through 1991, with some work done as recently as 1996. Link for downloading this is after a couple or a few pages of stuff about this item that I put a lot of work into.

This program asks for driver Fs, Qts, Vas in cubic feet, nominal diameter in inches, number of drivers, enclosure volume, port tuning frequency, box height and width in inches, and asks for selection either to one of 4 different theoretical operating environments (all 4 of them assume "far field", on-axis and 3 of them assume perfectly reflecting relevant surfaces), or to oversimplify to the 5-component Thiel-Small equivalent circuit for ported enclosures.

As for where to get Fs, Qts and Vas (Divide Vas in liters by 28.317 to convert to Vas in cubic feet) of many woofers, fullranges, subwoofers, and some midranges, some guitar and bass speakers, etc: Put into the Wayback Machine (Link found as no longer currently functioning 4/30/2021.)

NOTED 1/2/2011: (Though this feature is not new)
Just before asking for enclosure volume and port tuning frequency, this program usually offers some suggestions based on Fs, Qts and total Vas, with names of such suggested "alignments".

UPDATE 10:25 AM 5/12/2021: If the port frequency is considered by this program as erroneously high, then the program decreases it to the maximum it accepts.

The program next plots a predicted frequency response graph. The frequency range is fixed at 16 to 1000 Hz, and the dB range is fixed at -18 to +12 dB.

At the right end of the zero dB line, a figure for corresponding sensitivity on axis in the far field in dB @ 1 watt 1 meter is shown, rounded to a whole number of dB. This figure assumes a typical ratio of nominal impedance to voice coil DC resistance, and a typical ratio of Qes/Qts. UPDATE 2/20/2012: This sensitivity figure for the "0 dB line" may be .5 dB lower to 2 dB higher than actual, depending on ratios of Qes/Qts and Znom/Re.

The exact figure for sensitivity dB 1W, 1M corresponding to the "0 dB line" is 111.9 plus 10 times the "common log" (log base 10) of 2.7E-8 (corrected from 2.7 on 5/14/2021) times the product of Znom/Re multiplied by the cube of Fs (in Hz) times Vas (in cubic feet), divided by Qes. Add 6 dB if floor coupling is involved to ideal extent.
Do the log after multiplying 2.7, Vas, ratio of Znom to Re, and cube of Fs by each other and dividing by Qes. After that, multiply the log by 10 and add 111.9 (without floor coupling) or 117.9 (with ideal floor coupling).

As for resolution of the plotted frequency response curve: Horizontally 1/12 octave (1/4 of a 1/3 octave division) and vertically 1/4 dB in versions 1.01 and 1.10, even though the display resolution is finer. The next version (1.20) has horizontal resolution improved to 1/96 octave and vertical resolution improved to 1/8 dB, to have this matching pixel resolution in 640x480 video mode.

Immediately under the graph, the program may print a line mentioning an error or suggesting a change. Under the graph, the program also shows options to change port frequency, to change box volume, to totally redo the box, to change number of drivers, to redo everything, to change among the 5 theoretical environment choices, to erase all curves except the most recent one, or to quit.

If port frequency or box volume is changed, a new frequency response curve is plotted without erasing previous ones.

The environment choices are:

(1) On a reflective floor, away from walls (anechoic half space with the speaker's axis parallel to the halfspace plane)

(2) Anechoic 1/4 space, on a reflective floor and against a reflective wall

(3) Anechoic full space

(4) Standard anechoic half space, speaker axis perpendicular to the halfspace plane

(5) Oversimplified half space, using the 5-component Thiel-Small equivalent circuit for ported loudspeakers.

What is unique about this program is that for the first four environment choices, it calculates approximately and shows the 6 following real-world effects:

(1) The 6 dB shelf reducing bass response if the loudspeaker enclosure is not against or recessed into a wall that its axis is perpendicular to,

(2) Depression of bass response by acoustic loading when efficiency is high,

(3) Elevation of midrange response due to loss of mass reactance of the mass of the air around the cone at frequencies high enough for the acoustic loading of this air to be mostly resistive in effect,

(4) Depression of lower midrange response by increased mass reactance of the air around the drivers when more than one driver is used,

(5) Array gain effects from using multiple drivers, floor coupling, etc.,

(6) And - depression of higher frequency response by the voice coil inductance if that is typical for drivers having the Thiel-Small parameters and diameter that were entered into the program.

This program does calculate typical values for factors necessary for calculations for these effects, except floor coupling effect for the 2 options to consider it assume 100% reflection and measurement in the "far field".

This program calculates these "typical values" with various assumptions including enclosures being made of 3/4 inch thick wood and trends that I have found to be typical of loudspeakers, such as in voice coil inductance.

This program *does not* predict diffraction ripple, effects of cone "breakup", ripple from interference between acoustic radiation from the louspeaker and acoustic radiation reflected by a wall, enclosure internal resonances and reflections, bass loss from air friction in ports, bass loss from damping material inside the box, off-axis response, or near field response. It also does not show acoustic power efficiency as a function of frequency, but does calculate this combined with effect of driver or driver array directivity as a function of frequency.

The source code has been accidentally shrouded. I took extreme measures to maximize run speed by a BASIC interpreter when I developed the core of this program in late 1989 on a laptop having an 8 MHz NEC-V20 processor. Such measures included minimizing length of variable names to increase interpreter speed. I have lost my notes on this in 1991, and now I cannot understand the core of the good part of this program.

However, I can say that this analyzes what I consider to be the "expanded Thiel-Small equivalent circuit", which I will show here in the future.


The executable (of all versions released here) work in Microsoft Windows command prompts or DOS prompts, for Windows versions at least from 3.1 to XP, and DOS likely as low as 2.3. It works with VGA displays and VGA-compatible SVGA displays. The old version V. 1.01 (still here below) works on old CGA displays. It works with generally all processors of X86 type. It works with 640K RAM.

Versions 1.01 to 1.20 are optimized for Microsoft Quick Basic 4.5. The executables are of version preferring but not requiring a math coprocessor, so as to reduce file size and to maximize speed with modern processors. Versions up to 1.20 work with 8088 and NEC V20 even without a math coprocessor, but V. 1.10 takes ~4-7 seconds to generate a plot. Intel X86 processors 486DX and higher and Pentium-like "X86" processors and higher come with built-in math coprocessors. This program should plot essentially instantly with any X86 type processor with a math coprocessor, of type 486DX or higher, with core frequency 25 MHz or higher, despite lacking the Dan Barclay "Mathptch".

Download Links:

NOTE - the source code in V. 1.01 has some ampersands intended to be edited by a hex editer or the like into line feed characters after compiling/linking. I engaged in that practice for this program in 1991 to minimize file size. The executable linked below has this editing done and is usable as-is. Newer versions have source codes that produce executables without need for such editing.

spkr.exe V. 1.01 executable.
spkr.bas Basic Source Code compileable by Microsoft Quick Basic 4.5. (This even has a lookup table part for calculating dB, implemented when that achieved a speed improvement over LOG back when most PCs lacked math coprocessors.)

UPDATE 8:42 PM EDT 5/11/2021: V. 1.10 is now available.
spkr110.exe V. 1.10 executable, produced by Microsoft Quick Basic 4.5.

spkr110.bas source code compileable by Mocrosoft Quick Basic 4.5 and Basic Compiler 7.

Differences from V. 1.01:

1) This works with a Command Prompt / DOS prompt in Windows XP Mode that comes with Windows 7 Professional, although Integration Features of Windows XP Mode is likely to need to be disabled to avoid a bug in graphical display working at all in graphical video modes of DOS programs. V. 1.01 had display still being buggy (but "somewhat working") in my experience with System Integration being disabled in Windows XP Mode of Windows 7 Professional, and not working at all when Integration Features is enabled.

2) The graphics improvement requires a video card and a monitor more advanced than CGA, the minimum is either EGA or VGA (both existed in 1993). Screen resolution of 640x480 is used. This works in Windows XP and (in my experience) in Windows XP Mode of Windows 7 Professional (with XP Mode's Integreation Features disabled).

3) The source code no longer has ampersands that need to be changed to line feed characters in the resulting executable file, by means of a hex editor or the like. (The V. 1.01 executable linked above has that editing already done.)

UPDATE ~ 12:15 AM 5/15/2021: V. 1.20 is here!

The .BAS source code for V. 1.20
The .exe file, v.1.20

Difference from older versions:

1) Frequency resolution is improved from 1/12 octave to 1/96 octave, and vertical resolution is improved from 1/4 dB to 1/8 dB.

2) The vertical range has its upper limit increased by 1/4 dB from +12.5 to +12.75 dB, and the lower limit of the vertical range is shifted downward from about -19 dB to -27 dB. The grid for the graph is expanded downward from -18dB to -24dB.

3) Determination of dB numbers was changed from using a large lookup table to using the LOG function. This decreases source code byte count.

4) Run time is increased by a factor of about 9 or 10 or so, mostly by increasing the horizontal resolution for plotting by a factor of 8. Usage of the LOG function in place of the lookup table in previous versions is known to make runtime a little slower still, at least on some machines, when the Dan Barclay Mathpatch is not used. This increased runtime is still only a small fraction of a second in a Cmd Prompt of Windows XP Mode of Windows 7 Professional on a machine that was purchased as a refurb of something already a few years old in 2016. I expect run time (despite lack of the Dan Barclay math patch) to be a couple to a few seconds on an old 486DX machine running DOS and not running Windows 3.1, several seconds to almost a minute on a 486DX machine that has Windows 3.1 running, and about a minute on an NEC V20 @ 8 MHz and almost 2 minutes on an 8088 running at 4.77 MHz.

5) Precision bugs affecting the reported for the 0dB line for dB @1 watt (or RMS volts being square root of Znom) @ 1 meter (as determinable in the far field in ideal environment) were detected, and decreased but not completely eliminated. A small percentage of drivers had ideal floor coupling environment choices (environment choices 1 and 2) adding 7 instead of 6 dB to what this software reports for environment choices that don't have floor coupling. This is mostly but not completely fixed in V. 1.20. If you experience changing of environment choices causing the dB (at Znom volts 1 meter ideally in far field) to change by other than 6 dB (more likely 7 than 5) by changing the environment choice to include floor coupling (environment choices 1 or 2 instead of 3 to 5), then I suggest increasing the Qts number being inputted into this software by about .1 % to make reporting of the dB @ 1 watt 1 meter corresponding to the 0 dB line being more realistic.

This page and linked software (except for the Dan Barclay "MATHPTCH") written by Don Klipstein.

Copyright (C) 2001, 2008, 2010, 2011, 2012, 2021 Donald L. Klipstein (Jr)
Please read my Copyright and authorship info.
Please read my Disclaimer.