I've been experimenting with the free
DRC-FIR room correction software for a couple months now. If you feed it an impulse response exported from REW, it produces a correction filter (FIR filter) that can be used with a convolution engine. I use the free
brutefir convolution engine with the
BrutefirDRC plugin for Logitech Media Server.
Archimago had an excellent post on BrutefirDRC a few years ago.
For the speaker+room frequency response, I use
REW and a
UMIK-1 mic. I generate the left/right measurement sweep files from the REW Generator dialog and then copy them to my music server to play them back through my system later (click to embiggen).
View attachment 24256
For playing "offline" like this, make sure you check "Add Timing Ref". This adds a short chirp before the sweep proper starts. You would then check "Use acoustic timing reference" in the "Measure" dialog so that it will wait for this chirp to start recording.
View attachment 24258
Click "Start" to start the measurement and then play back the sweep from the music server. Once you have a measurement, export it to a 32-bit WAV file: File -> Export -> Export Impulse Response as WAV.
View attachment 24259
DRC-FIR needs the impulse response in a "raw" format as 32-bit floating point numbers. I use
sox to convert from WAV to the raw format:
$ sox impulse.wav -t f32 impulse-44100.pcm rate -v -s 44100
Here I've converted the WAV file to raw bytes and downsampled it to 44100.
I do all my processing on a Linux Mint box, and there it's very easy to install DRC-FIR
$ sudo apt install drc
But
binaries are also provided for Windows in a tarball (they are in the
sample directory).
DRC-FIR has a ton of adjustable parameters that affect how the correction is computed, but it also provides a set of standard configuration files with preset parameters with different levels of correction. These are named: minimal, erb, soft, normal, strong, extreme, and insane. These config files are provided for 44.1, 48, 88.2 and 96 kHz sample rates.
So finally, to turn the measured impulse response into a correction filter, the drc command is
$ drc --BCInFile=impulse-44100.pcm --PSOutFile=filter-l-44100.pcm --MCPointsFile=7032857.txt "/usr/share/drc/config/44.1 kHz/normal-44.1.drc"
Breaking it down:
BCInFile is our input impulse response measurement,
PSOutFIle is where the correction filter will be saved,
MCPointsFile is the microphone frequency response correction file (You can just leave this empty if you don't have a correction file) and the final file name on the line is the DRC-FIR config file with the parameters that will be used. By default, drc uses
a "psychoacoustic" target file, but several target files, such as the popular B&K target, are also provided, or you could make your own target file (it's just frequency/amplitude pairs).
Of course, I don't type all those commands in, I have a shell script that automates everything. Maybe more on that later, but on to some graphs...
Here are before and after plots of frequency response with 1/6 octave smoothing using the "normal settings".
View attachment 24265
View attachment 24266
I haven't quite figured out how to interpret some of the other plots that REW provides yet.
The gear chain is
Logitech Media Server ==> RPi-3B running piCorePlayer ==> Auralic Vega USB ==XLR==> Bryston 3B-SST ==> Vandersteen Quatros
The Quatros have built in active subwoofers with an 11-band analog EQ, which I've set to flat for this measurement and test.
So how does it sound? Well for the past month I've been really enjoying it with a different gear chain with a tube preamp and tube monoblocks, and there DRC-FIR did a wonderful job of cleaning up the bass and tightening up the imaging. I would never want to go back to un-corrected.
However with this alternate "purist" chain the bass seems a bit too light and the treble is a bit too tipped up. You can see a rise in the treble of the corrected response starting at about 6 kHz. TIme to experiment with some different settings and target files.