Frequency Response Measurements using Cool Edit
Author: Brian Steele
Created: 26 January 1998
Updated:09 Aug 2015
*** under construction ***
The subwoofer DIY Page Introduction:
For the past few years, I've been using a signal generator and an SPL meter to measure the response of my sub-woofer systems, as somewhat tedious process, because:
  • The response was measured at specific frequencies,and
    didn't show the response of the sub-woofer between
    these frequencies
  • The response at each frequency had to be recorded and
    then entered on an Excel spreadsheet for graphing purposes,
    a pretty tedious process
  • Measurements were limited to close-miked methods, with
    an upper limit of 200 Hz.

Recently, I've been experimenting with a new measurement process that uses a software package called Cool Edit, a PC with a sound card and an SPL meter to do the measuring. Below, I've detailed the measuring equipment and the techniques I'm presently using to get the best results from this method.

The subwoofer DIY Page Measuring Equipment:
The following equipment was used during this exercise:
  1. Dell XPS P120c Pentium 120 MHz PC
  2. Soundblaster AWE-32 sound card with full-duplex drivers
  3. Cool Edit 96 software
  4. RadioShack analog SPL meter
  5. Audio amplifier
  6. Various interconnects

Notes:
The Dell PC is pretty adequate for the purpose, except at the higher FFT sampling rates, at which point it does take some time to do the FFT sampling. The SoundBlaster is good for below 30 Hz and above 10 kHz, but make sure that you have the latest drivers for it, otherwise you will not be able to use it in full-duplex mode. The Radio-Shack SPL meter will be used in C-weighting mode, but even then it doesn't have a flat response - but we're going to fix that with CoolEdit. Finally, it's important that you use interconnects and an amplifier of fairly decent quality because the methods that will be outlined here will assume that the interconnects and amplifier have no effect on the frequency response measurements.

The subwoofer DIY Page Creating test signals
Cool Edit provides numerous tools and methods for generating audio signals. For testing purposes, I presently use the following signals:
  • A 0.3 second, 0 Hz to 20 kHz sine sweep
    - for in-room response measurements
  • A 0.005 second, 0 Hz to 20 kHz sine sweep
    - for anechoic response measurements
  • A 10 Hz sawtooth positive sweep
    - for room mode measurement

Creating the 0.3 second sine sweep
To create the 0.3 second sine sweep, select Generate..Tones. In the Generate Tones dialog box, under Intial Settings, set the Base Frequency to 0 Hz, the amplitude to -6dB and the duration to 0.3 seconds, and under Final Settings, set the Base Frequency to 20000 Hz. Select Ok to create the sine sweep. Once the sweep is created, select the entire waveform and use the frequency analyzer to analyze it using a 65536 sample rate and a Blackmann-Harris window. You should see something that looks like the following:

[long sweep, unadjusted]

Note that, while the graph seems pretty flat at higher frequencies, it seems to droop below 360 Hz or thereabouts. Ideally we'd like to get a flat graph here, so we're going to tweak it a bit. The best way to do this is to use CoolEdit's FFT filter to tweak the low frequencies a bit, however, MAKE SURE THAT THE FINAL WAVEFORM DOES NOT EXCEED 0 DB!! Once you've done this correctly (you may have to apply several different FFT filters in series to get it right) the frequency analyzer will display a frequency analysis graph similar to the following:

This is flat enough for the measurements we're going to make here. Once you've created an acceptable "long"sweep, add 1 second of silence to each end of the sweep, then save it as LSWEEP.WAV (Windows PCM format)

Creating the 0.005 second sine sweep
To create the 0.005 second sine sweep, repeat the process above, but select a duration of 0.005 seconds for the waveform, and use a 16384 sample setting. Adjust it accordingly with FFT filters, then save the waveform as SSWEEP.WAV. Note - you're not going to get a very smooth graph like the one above. Your graph will probably vary +/- 1 dB from 200 Hz up.

Creating the sawtooth positive sweep
To create the sawtooth sweep, select Generate..Tones, and when the Generate Tones dialog box is displayed, set the base frequency under Initial Settings to 10 Hz, select the "Lock to these settings only", Change the Flavor to Sawtooth, and the Duration to 0.1 seconds, and finally set the Volume to -6dB and press Ok to create the waveform. Once the waveform has been created, delete the negative portion of the waveform by highlighting it and pressing the delete key. Finally, add a 1-second period of silence to each side of the waveform. If you analyze the final waveform with CoolEdit, it will look something like the following:

One you've finished creating the waveform, save it as SAWTOOTH.WAV

The subwoofer DIY Page Calibrating the sound card
Ideally, with most measuring equipment, we want to minimize the effects of the measuring equipment on the observations. This is especially important in the case of PC sound cards, most of which add their own "signature" to any recording. Here we are concerned with the sound card's frequency response - ideally it should exhibit a flat response from 0 Hz to above 20 kHz, but you're not going to get this with inexpensive sound cards. In the case of the Soundblaster AWE32, the response droops below 30 Hz and drops above 15 kHz.

To minimize the effect of the sound card's frequency response on the measurements, perform the steps below:

  1. Connect the line output of the sound card to the line input.
    - to do this, you will need an interconnect cable with a miniplug connector at either end.
  2. Open two instances of Cool Edit. Use one instance of the program to playback a 1kHz tone in loop mode, and the other to monitor the recording level. Use the Windows 95 Volume control to adjust the RECORDING LEVEL until it's as close to -6dB as you can get.
  3. Use one instance of CoolEdit to play back the 0.3 second sweep signal, and the other to record a few instances of the signal. Trim the recording so that only one instance of the recorded sweep is left.
  4. Use the FFT analyzer on the recorded sweep, to determine where frequency response anomalies occur. If you've done this correctly, you should see an almost flat line that droops at the frequency extremes.
  5. Use an FFT filter to flatten the measured response as much as possible. Save this FFT filter as SOUNDCARD REVERSE EQ.

Example
The graph below shows the frequency spectrum of the recorded sine sweep, as recorded by my Soundblaster AWE32 soundcard. Notice the drooping frequency response below 30 Hz and
above 14 kHz:

And this is what it looks like after I've used the FFT filter function to correct it:

The subwoofer DIY Page Creating a reverse-C FFT filter
If you're planning to use a Sound Level Meter to take frequency response measurements, you will need to create to create a "reverse-C" FFT filter to "flatten" its response measurements. The sound level meter applies A or C-weighting to any measurements it takes and normally C-weighting is chosen for frequency response measurements, but C-weighting is not flat - frequencies below 30 Hz and above 10 kHz are rolled off. The reverse-C FFT filter will be used to negate the effects of the meter's C-weighting.

The reverse-C weighting curve is defined as follows:

dB(F) = (-0.06) -20*LOG((12200^2*F^2)/((F^2+20.6^2)*(F^2+12200^2)))

This curve can be used to create a table that can then be used to create the reverse-C FFT filter:

Reverse-C filter table
F
 
dB(F)
 
 
F
 
dB(F)
 
 
F
 
dB(F)
 22
 
 5.41
 
 
 221
 
0.02
 
 
 2209
 
0.22
 29
 
 3.49
 
 
 295
 
-0.01
 
 
 2945
 
0.43
 39
 
 2.08
 
 
 393
 
-0.03
 
 
 3927
 
0.80
 52
 
 1.21
 
 
 524
 
-0.03
 
 
 5236
 
1.41
 70
 
 0.66
 
 
 699
 
-0.02
 
 
 6981
 
2.40
 93
 
 0.36
 
 
 932
 
-0.01
 
 
 9308
 
3.92
124
 
 0.18
 
1243
 0.03
 
12411
6.11
166
 
 0.07
 
 
1657
 
 0.10
 
 
16548
 
9.01

..and the corresponding filter should look something like this...

This filter will be applied after each frequency response measurement, to negate the effect of the sound level meter's C-weighting filter.

An alternative method is to modify the sound level meter to record a flat response instead of a C-weighted one - see my Audio links page for a way to do this.

The subwoofer DIY Page Low-frequency response measurements
To measure the low-frequency response (<2 kHz) of a loudspeaker, the best results can be obtained by using the close-miked method, where the microphone is placed within 2-3 inches of the speaker's cone or port. Unfortunately, this procedure only works for systems where one driver or port serves as the sole reproducer of low frequencies, i.e. sealed or 4th order bandpass systems.

To measure the response of a sealed or 4th order bandpass system using Cool Edit:

  1. Connect the line-level output from the PC's soundcard to the line-level input of an amplifier, and connect the amplifier's speaker terminals to the loudspeaker.
  2. Position the sound level meter so that it's microphone is within two inches of the driver's dust cover (sealed system), or in the center of and flush with the port opening (4th order bandpass system).
  3. Using the Windows 95 volume control, mute the Line-In section by selecting the appropriate box. This will prevent feedback from occurring. Do NOT adjust the volume control.
  4. Connect the line-level output of the sound level meter to the line-level input of the PC's soundcard and set it to the 100 dB setting.
  5. Start two instances of Cool Edit. Use one instance of Cool Edit to play back the 0.3 second sweep in loop mode, and the other to monitor the output of the sound level meter.
  6. Adjust the amplifier's volume control until the output of sound level meter as measured by Cool Edit peaks at about -6 dB.
  7. Using Cool Edit, record the response of the sound level meter for a few cycles of the sweep signal, then trim the recording until only one instance of the loudspeaker's response to the sweep signal is left.
  8. Apply the SOUNDCARD REVERSE EQ and, if necessary, the REVERSE-C FFT filters to the recording.
  9. Finally, select the entire recording, and analyze it by using Cool Edit's frequency analysis option set to a 65536 sample rate and a Blackmann-Harris window.  The resulting graph represents the low-frequency response of the loudspeaker.

The graph below shows the frequency response of my "El Uglito" 4th order bandpass system measured using the technique that I outlined above. Note that the graph is very similar to the one I generated some months ago for this speaker, using continuous sine waves and a sound level meter.

[Frequency Response of 4th order bandpass system]

The frequency scale is not shown, but the first out-of-band noise peak (a characteristic of all systems using ports) occurs around 1150 Hz. The frequency response seems to rise again below 30 Hz, but this is probably an inaccuracy introduced by the measuring process.

This measurement method can also be used to determine the resonant frequency of a vented enclosure, by measuring the output at the port, just as you would for a 4th order bandpass system. Shown below is the measured response at the port of my DIY center channel speaker. The graph peaks at 49 Hz, which therefore the effective resonant frequency of the enclosure.

 

Note that there's a sharp peak in the upper frequency (at 930 Hz, to be precise). If the port was located on the front baffle with the speaker, this peak may have colored the overall response of the speaker. Luckily, I located the port to the rear of the enclosure, where the out of band noise would have much less effect on the overall response. This is one clear argument for locating ports to the rear of the enclosure!

For ported or 6th order bandpass systems, you will need to use a method that allows you to combine the outputs from the driver and/or ports to determine the overall bass response. One method of measuring the low-frequency response of a ported system using this technique is described below:

  1. Measure the response of the system with the port SEALED, by using the usual close-miked method. Call this A(f), where A(f) is the magnitude response at frequency f.
  2. Measure the response of the system with the port SEALED, at a distance > 1m from the enclosure. Call this B(f).
  3. Now, without moving anything else, repeat step 2 with the port UNSEALED. Call this C(f).

The difference between B(f) and A(f) is the "transfer function". This can be used to calculate the anechoic frequency response of the ported box (let's call this D(f)) as follows:

 D(f) = C(f) - (B(f) - A(f))

An example...

Let's say at 20 Hz, we measure A(f) = -15 dB, B(f) = -9 dBC(f) = -5 dB

we can therefore calculate

D(f) = -5 - (-9 - (-15))
= -5 - (-9 + 15)
= -5 - 6
= - 11 dB

Therefore the actual response at 20 Hz is -11 dB

Of course, the easiest way to do these types of calculations is via a spreadsheet, because (1) it'll do the calculations for you, and (2) you can graph the response curves at the same time.

The subwoofer DIY Page In-room response measurements
This is fairly easy to do with Cool Edit, though analyzing the results can be a bit of a chore, and the accuracy of the results of course dpends a lot upon the accuracy of your sound level meter! The method is quite similar to the method used for measuring a loudspeaker's low-frequency performance, but this time the sound level meter is placed at the normal listening position, and a lower setting is used. Try to keep the background noise as low as possible, as it could adversely affect the results.
  1. Connect the line-level output from the PC's soundcard to the line-level input of an amplifier, and connect the amplifier's speaker terminals to the loudspeaker.
  2. Position the sound level meter at your normal listening position so that its microphone is located at the same height as your ears would normally be, if you were listening to the speakers from that position.
  3. Using the Windows 95 volume control, mute the Line-In section by selecting the appropriate box. This will prevent feedback from occurring. Do NOT adjust the volume control.
  4. Connect the line-level output of the sound level meter to the line-level input of the PC's soundcard and set it to the 80 dB setting.
  5. Start two instances of Cool Edit. Use one instance of Cool Edit to play back the 0.3 second sweep in loop mode, and the other to monitor the output of the sound level meter.
  6. Adjust the amplifier's volume control until the output of sound level meter as measured by Cool Edit peaks at about -6 dB.
  7. Using Cool Edit, record the response of the sound level meter for a few cycles of the sweep signal, then trim the recording until only one instance of the loudspeaker's response to the sweep signal is left.
  8. Apply the SOUNDCARD REVERSE EQ and, if necessary, the REVERSE-C FFT filters to the recording.
  9. Finally, select the entire recording, and analyze it by using Cool Edit's frequency analysis option set to a 65536 sample rate and a Blackmann-Harris window. The resulting graph represents the low-frequency response of the loudspeaker.

Shown below is the in-room frequency response of one of my Mission 751 loudspeakers, measured using the method outlined above. Note however that the sound level meter was placed about 1 meter away from the speaker instead of the normal listening position, because my cables aren't long enough to reach the couch! Note: the red line does not form part of the original graph - I added that afterwards as a rough representation of the averaged response. Below where the red line ends, the response is largely affected by room modes, which can cause variation from measurement to measurement.

Shown below is the in-room frequency response of my new DIY center channel loudspeaker , measured under conditions identical to those for the 751 in-room response measurement.

The subwoofer DIY Page Simulated anechoic response measurements (under constuction)
The subwoofer DIY Page Identifying room modes
To determine the room modes affecting the in-room frequency response of your loudspeaker, a slightly different approach will be used in the measurement method, which is outlined below:
  1. Connect the line-level output from the PC's soundcard to the line-level input of an amplifier, and connect the amplifier's speaker terminals to the loudspeaker.
  2. Position the sound level meter at your normal listening position so that its microphone is located at the same height as your ears would normally be, if you were listening to the speakers from that position.
  3. Using the Windows 95 volume control, mute the Line-In section by selecting the appropriate box. This will prevent feedback from occurring. Do NOT adjust the volume control.
  4. Connect the line-level output of the sound level meter to the line-level input of the PC's soundcard and set it to the 80 dB setting.
  5. Start two instances of Cool Edit. Use one instance of Cool Edit to play back the sawtooth pulse, and the other to monitor the output of the sound level meter.
  6. Adjust the amplifier's volume control until the output of sound level meter as measured by Cool Edit peaks at about -6 dB.
  7. Using Cool Edit, record the response of the sound level meter for a few cycles of the sweep signal, then trim the recording until only the gap between the end of one sweep and the start of another is displayed.
  8. Apply the SOUNDCARD REVERSE EQ and, if necessary, the REVERSE-C FFT filters to the recording.
  9. Finally, select the entire recording, and analyze it by using Cool Edit's frequency analysis option set to a 65536 sample rate and a Blackmann-Harris window. The resulting graph represents the low-frequency response of the loudspeaker.

Shown below is the result I obtained when I used Cool Edit and the method above to look at the room modes in my living room. Note the peaks between 28 Hz and 66 Hz - these are the primary room modes. Of these peaks, the most annoying one is probably the one at 66 Hz, as it's well within the audio spectrum. The ones at 87  Hz and 90 Hz could also be annoying, though the width of the peak is quite small. There is a very large peak at 27 Hz, but it's my guess that this won't have any ill effects with most music.