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:
- Dell XPS P120c Pentium 120 MHz PC
- Soundblaster AWE-32 sound card with full-duplex drivers
- Cool Edit 96 software
- RadioShack analog SPL meter
- Audio amplifier
- 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:
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:
- 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.
- 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.
- 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.
- 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.
- 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 |
|
|
|
|
|
|
|
dB(F)
|
|
|
|
|
|
|
|
0.22
|
|
|
|
|
|
|
|
0.43
|
|
|
|
|
|
|
|
0.80
|
|
|
|
|
|
|
|
1.41
|
|
|
|
|
|
|
|
2.40
|
|
|
|
|
|
|
|
3.92
|
|
0.18
|
|
1243
|
0.03
|
|
12411
|
6.11
|
|
|
|
|
|
|
|
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:
- 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.
- 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).
- 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.
- 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.
- 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.
- Adjust the amplifier's volume control until the output of sound level
meter as measured by Cool Edit peaks at about -6 dB.
- 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.
- Apply the SOUNDCARD REVERSE EQ and, if necessary, the REVERSE-C FFT
filters to the recording.
- 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.
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:
- 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.
- Measure the response of the system with the port SEALED, at a distance
> 1m from the enclosure. Call this B(f).
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- Adjust the amplifier's volume control until the output of sound level
meter as measured by Cool Edit peaks at about -6 dB.
- 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.
- Apply the SOUNDCARD REVERSE EQ and, if necessary, the REVERSE-C FFT
filters to the recording.
- 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:
- 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.
- 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.
- 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.
- 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.
- 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.
- Adjust the amplifier's volume control until the output of sound level
meter as measured by Cool Edit peaks at about -6 dB.
- 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.
- Apply the SOUNDCARD REVERSE EQ and, if necessary, the REVERSE-C FFT
filters to the recording.
- 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.
|