A few months ago, I posted on the use of the free DRC software for audio room correction. I was already very impressed with what the technology is able to accomplish and wanted to explore this even further. In this spirit, I invested in a copy of (((Acourate))) from AudioVero. As I had mentioned previously, there are a number of other software/hardware packages to accomplish a similar task. While I'm sure other packages would do a fine job, as a JRiver user, I wanted to create WAV-based FIR filters like I did previously with DRC which I could import into the convolution DSP and Acourate allows me to do just that without needing to run any other plug-in.
Acourate isn't inexpensive and does cost 286€. However, realize that we are entering rather "specialized" territory and although I suspect many audiophiles know about FIR-based room correction, it's not exactly mainstream (for example, how often do showrooms at audiophile shows utilize room correction DSP?)... Personally, given the amount of potential improvement, we could easily spend 286€ (~$310USD currently) on stuff like fancy cables and other tweaks achieving likely no actual improvement in sound quality.
I would highly recommend going through Mitch's excellent write-up on Computer Audiophile on going about using Acourate for doing basic room correction. The software itself isn't hard to understand once you do the basic procedure a few times but there is certainly a learning curve and Mitch's article really helped with getting me going! Other resources include AudioVero's documents and tutorials. Also go check out the Yahoo! Acourate User Group where the software author
Dr. Uli Brueggemann can be found among others with tips and experience with the software.
For this write-up, I'll go through the process as well showing the settings I've been using, mention a few observations including confirmation of the filters created; basically hopefully adding to the experience out there for those interested in rolling their own Digital Room Correction. As of late 2015, I'm using version 1.9.5 of (((Acourate))).
I. Setting UpAs noted by Mitch, it's good to get the room ready and have a Reflection Free Zone. In the picture above, you see my attempt at practical creation of a "low reflection zone" between speakers and the calibrated Behringer mic - I hesitate to say "reflection-free zone" because as you can see, I still have all my furniture in there and I'm sure there are numerous reflections! The doorway to my sound room is a bit narrow and I would have needed extra help if I wanted to move the sofa section in and out of the room so I figured this is adequate and if my results sound bad, then I would go the extra mile. Nonetheless, moving the sofa back and to the side as shown improved the ratio of direct:reflected sounds plus reduces risk of comb filtering at the measurement position (I actually did some preliminary measurements to know this to be true).
The E-MU 0404USB ADC is sitting on top of the Paradigm Signature SUB1 subwoofer in the front left corner (where the mic cable is heading to). Main speakers being the Signature S8 v.3 floorstanders. Acourate is being run off the HTPC in the corner as well. I used the Emotiva XSP-1 preamp's bass management to lowpass the subwoofer at 50Hz. As usual, the amps are two monoblock Emotive XPA-1L's. Balanced interconnects where I can, short Canare 4S11 DIY speaker cables.
In setting up the microphone, remember to prepare the calibration file to be applied when recording the sweep:
The graph in red is the calibration file for my Behringer ECM 8000 and the green is the inverse after going through FD-Functions > Amplitude Inversion. The inverted curve is of course the one applied when measuring. Notice that this mic deviates a bit above 2kHz, up to +1dB oversensitivity around 8kHz. I think it's worth spending the extra few dollars to get one's mic calibrated even though a measurement mic should be reasonably flat from 20-20kHz. Make sure to save the inverted mic curve in an accessible place for later use as per Mitch's instructions.
Remember to also make sure the microphone is situated at the proper height at ear-level and centered between your speakers. You can use Acourate's LogSweep > Microphone Alignment tool to make sure. This is a great way to ensure that your sweetspot is actually centered as well!
You know you're in the right place when "Delay in samples" is 0 and green as shown above.
II. Sweep MeasurementTime to make a directory for your workspace: File > Project Workspace Definition, click on the space for directory information and point to this new workspace directory. The program will now default saves and file retrieval from this location.
Now it's time to do the LogSweep > LogSweep Recorder to capture the room data. Just like with the free DRC software, this will now run a low-to-high sweep tone for a specified time period; first the left channel followed by the right. This is also where you decide the samplerate and length of the filter. As you can see below, I selected 96kHz and 131k taps for "target length". Sweep time was set for 60 seconds here. I set the sweep to start at 10Hz and end at 32kHz which is plenty to cover the audible spectrum and beyond (my Paradigm SUB 1 subwoofer can generally go down to 15Hz and Signature S8's seem to be reasonably extended up to about 25kHz). There's also a recording level indicator - obviously make sure the amplitude doesn't clip. Using my Radio Shack SPL meter, I played the sweep tone at approximately 80-85 dB peak. Wear some earplugs!
After the recording the program will spit out some IACC (InterAural Cross Correlation) numbers to examine. These numbers correlate to how similar the sound is from each stereo channel. The higher the better - your room is more symmetrical, side reflections more balanced, microphone centered, etc... As you can see with my sofa moved aside and no coffee table in front of the speakers, I'm getting 69% which looking around at others' results seems reasonable for a domestic sound room without a large amount of room treatments. 80's would be awesome and I'm amazed at Mitch's achievement of 90's - great! For the purpose of the room correction, the data from the first 10ms would be most important.
III. Room Macro 1: Amplitude PreparationNow that the audio data collection is done, the rest of these steps are about crafting a good filter for use. This first step will now create a psychacoustically smoothed curve to use as the basis for creating the correction filter.
As you can see, I've stayed with the "Psychoacoustic" model, set the high frequency treatment up to 30kHz (remember, I measured up to 32kHz above - good to give some overhead), and I've set the windowing to "30/30". I believe the default is "15/15" which is fine of course but since I selected 131k taps, I thought I'd let the program work with a slightly "rougher" or less smooth curve to do its magic.
IV. Room Macro 2: Target Curve DesignOkay, just like with the previous DRC Designer, it's now time to design a target curve. As usual, shape it to your preference. I've stuck basically with the suggestion from Mitch and Bob Katz:
Basically flat from 10Hz to 1kHz, then down to -8dB by 45kHz or around -6dB by 20kHz. This is similar to the DRC Designer B&K curve (although I think the typical B&K starts sloping down around 500Hz). Anyhow, tweak to your heart's desire... In the curve above, I put in a high-frequency roll-off as well. You could get creative and play with the "PeakNDip" function which gives some control like a parametric EQ - maybe add a little "Gundry"/BBC Dip for those inclined:
|(Note that I did not smooth the measured frequency response curve in this image.)
Realize that the level of the target curve is important and will affect the quality of the final correction. Notice in both curves above, I allowed the curve to be slightly above one or two of the lowest dips. There will be a setting in the filter creation module to add a little bit of gain. I've found doing this got me the best results based on trial and error. Be ready to experiment yourself.
Now click Save Target the Exit when done.
V. Room Macro 3: InversionHmmm, not much to say here. Run this macro and you get the inverted measured curve created and saved in the directory mirrored around the correction target.
VI. Room Macro 4: Filter GenerationNow we finally create the filters...
This is where you'll likely be spending a bit of time with the trial and error process!
The settings you see are the optimal for my situation based on test data coming up when we run the test convolution to model the effect of the curve. The main parameters are "Excessphase window" and "Pre-ringing compens.". In my situation, too much Excessphase window and I started seeing ringing in the time domain. Too much Pre-ringing compens. and I noticed abnormal step response results - I'll show you in a bit what this looks like. You'll notice that you can set a maximum correction gain which I've put as 6dB (remember my target curve was set slightly above the lowest dips). Also, I want to create a number of filters from 44kHz all the way to 192kHz and have JRiver automatically switch between them. "64bit WAV" is just great for accuracy and goes well with JRiver's 64-bit DSP.
For Subsonic I put in 13Hz as a lower limit for the subwoofer and have found this beneficial, resulting in cleaner overall step response results. It'll at least reduce the subwoofer's attempt to produce inaudible rumble and still allow me a reasonably flat response down to 15Hz.
Once you run the macro, it'll finish and give you a "Correction filter gain ratio approx.". Although modern DSPs should be able to enable clip protection, I'm happy to see a negative number meaning that overall the filter isn't amplifying the input signal.
You'll now see the files Cor1S44.wav, Cor1S48.wav, Cor1S88.wav, Cor1S96.wav, Cor1S176.wav, and Cor1S192.wav in the workspace directory corresponding to the samplerates selected for the output filters.
VII. Room Macro 5: Test ConvolutionThe final room macro is used to provide feedback as to how well the filter settings work out.
It'll give you an idea as to what to expect when you actually play your music through this filter. As you can see, Acourate spits out a before-and-after IACC report and in this situation, it's nice to see a clear overall improvement in IACC. This is one's first hint that things are looking good so far. The corrected IACC10 is now 74% from 69% and the overall value 46.6% to 52.5%. It's not unusual to see some negative results like the -1.6% with late IACC which is fine... Remember, it's the early IACCs that are most important.
After running the test macro, loaded up in slot "1" and "2" are now the "corrected" waveform data. What I do now is click on the "3" radio button and load up my "Pulse96L.dbl" file in the work directory, and click "4" and load up "Pulse96R.dbl". This will allow me to compare and contrast the "corrected" (slots 1 & 2) with "uncorrected" (slots 3 & 4) impulse, step, and frequency responses to make sure everything looks right.
To focus on the step response, click on "Time" in the radio button above the graph, and for each number of the slots ("1" to "4"), click on the "Step" button below. Then on the graph itself, have a look at the first 3 or 4ms and if things are right, it should look something like this:
The green and red are the "corrected" step responses for right and left channels, the blue and brown being my speaker's "uncorrected" step response. Good to see that without correction, the step response from each speaker matches very well! This I think speaks to how well matched the stereo speaker pair is for the drivers and crossover. Acourate cleans up the overall step response to a more ideal appearance. For more information on step response as a measure of speaker time and phase coherence, check out this old Stereophile article on loudspeaker measurements.
You can click on the "Pulse" button and check out the Pulse/Impulse response... Just to keep things clean here's the "corrected" vs. "uncorrected" for the right channel:
Quickly, you can click on the "Ampl" button to see the frequency response and run the test room pulse through Macro 1 to get a smooth response (windowing default 15/15) by setting the Room Pulse as "TestConvolution\Pulse96L":
Now do the same Macro 1 procedure but with Pulse96L in the default workspace so you have the same smoothing parameter:
|Uncorrected Frequency Response
|Corrected Frequency Response
VIII. Do NOT Overcorrect!As I mentioned in Part VI above, be careful of the parameters you choose for correction. Remember that the "bigger is better" mindset does not work here folks (nor does 32/384 necessarily sound better than 24/96... but that's another topic...). For example, using my measurements, if I created filters with "Excessphase window" as 6/6/6/6 rather than 5/5/5/5, this is the step response I get with the test convolution:
There's now an unfortunate ringing in the left channel which was not there before. Ideally it would be nice not to have oscillation, but low amplitude and frequencies might not be audible.
How about if I increased the "Pre-ringing compens." to 2/2 from 1/1 ("Excessphase window" back down to 5/5/5/5)?
Not only does my IACC score get hammered:
But the step response now gets inappropriately shifted in time between the two channels (hence the worsened IACC):
I've been told that it's hard to anticipate the effects from changing the parameters. Indeed this has been my experience as well. Optimal parameters will change based on your room as well as how you draw the target curve in Part IV above.
Notice that in each of the overcorrection examples above, only one of the channels was affected. Therefore, I could set "Excessphase window" to 5/5/6/6 and "Pre-ringing compens." to 2/1 and come up with a filter that looks and likely sounds fine.
The ability to fine-tune the filters and the quick way to perform test convolutions (easily done within a minute for each run once you get the hang of it) makes this program remarkably powerful!
IX. JRiver Automatic Filter Selection & Confirmation of Effect - Using REWJRiver is my music player of choice when playing through the TEAC UD-501 DAC which is my main playback device apart from my Squeezebox Transporter in the sound room. Because I have 44/48/88/96/176/192kHz filters, I want JRiver to switch between them automatically depending on the samplerate of the music. This is easily done using .cfg files and in my filter directory the files look like this:
48000 2 2 0
The only differences being the samplerate ("44100", "96000", "176400", etc...) and pointing to the corresponding .wav filter file.
After this, it's just telling the JRiver Convolution filter to point to one of the .cfg files, flag "Automatically switch..." and away you go!
Okay, now as a final test, I want to use Room EQ Wizard (REW) to do some final measurements to confirm that indeed the Acourate filters are good and JRiver is doing it's job in my listening room! So, I put all my furniture back, and set up the measurement mic where I'd be sitting:
REW was configured to send the audio out to JRiver's audio device interface (which outputs the sound to the TEAC UD-501 DAC with and without convolution DSP operating at 44.1kHz), and recording via the E-MU 0404USB. Remember that the TEAC and E-MU are measurably very similar in terms of frequency response and both defaults to or are set to a standard sharp linear phase digital reconstruction filter. Here's REW's configuration:
Other times, it'll just be a vague error message:
Despite the data being partial (abruptly cuts off at ~13kHz), I can still assess whether the filter seems to be working at least. And indeed, it does... Here's the frequency response without and with the JRiver convolution filter turned on:
|Uncorrected frequency response - 1/6 octave smoothing.
|Corrected frequency response - 1/6 octave smoothing. Notice the premature frequency cut-off I suspect due to latency from the DSP. The volume was pushed up a few dB in the "corrected" measurement.
And here is the before and after for the speaker step response in the time domain - first 6 milliseconds:
|Uncorrected step response.
|Corrected step response (Acourate filter).
You might be curious; what about with DRC Designer which I used previously?
|Corrected step response (DRC Designer filter)
Be cautious about comparing the DRC Designer and Acourate step responses directly since the measurement conditions were done differently... DRC Designer is doing its job in creating a more "coherent" step response in the time domain from the loudspeakers as well.
Finally, I had a look at the reverberation time (RT60):
|RT60: 1/3 octave bands.
X. Sonic Impressions and ConclusionsAs they say, "the proof of the pudding is in the eating". After all this with Acourate, and confirmation of effect using the JRiver DSP and playback through my intended DAC, how does it sound?
In a word: excellent. Compared to uncorrected playback, the filter clearly has improved the tonality in my usual listening position. As I already described previously when writing about my results with DRC Designer, the effect at the listening "sweet spot" is that of optimizing the imaging one can achieve beyond smoothing the frequency response. I've already mentioned previously the enhanced soundstaging achieved with QSound-encoded tracks (check out the 3D-positional effects in Madonna's The Immaculate Collection). Well-recorded live music benefits nicely (like Eva Cassidy's Live At Blues Alley) in conveying an improved sense of space the event is taking place in. But also not-so-well-recorded modern dynamic compressed pop like the recent Ellie Goulding hit "Love Me Like You Do" (from the Fifty Shades of Grey soundtrack) can sound striking when the phasic soundfield electronic effects get pumped up. Orchestral works like Tchaikovsky's Symphony No. 6 (Mercury Living Presence, Antal Doráti & London Symphony) beautifully evokes the emotional rollercoaster of melancholy, power, serenity, menace, and joy through the system with the fantastic recording quality these releases are known for. Of course the emotional content is inherent in the artistry of the music itself; the audio hardware and optimizations just allows the music to be expressed with fidelity to the source as a conduit of sensorial and intellectual stimulation. Orchestral depth and stability of imaging (you can visualize the location of the strings, woodwinds, brass, percussion in the soundstage) are rendered beautifully. Personally, once I experience this, it's really hard to go back to the "uncorrected" sound and the relative loss of dimensionality and less controlled frequency response. (On a side note, although I still acquire vinyl records for collectability and physicality, I love the improvements brought about by digital room correction and noticed I have not been listening to vinyl as much.)
With the power behind Acourate's ability to run test convolutions, one could literally spend hours just tweaking the filter parameters "just right"; pushing the limits to get closer to ideal and avoiding excess and side-effects like ringing. (Of course, remember hearing ability has limitations so let's not get OCD about it and forget to listen to some music, right?! There is such a thing as "good enough".) I have not heard any significant problems when employing the filters when the test convolution looks good. I have heard of people complaining of harshness, artificiality, and "hollowness" with digital room correction - presumably from overcorrection or incorrect parameters used to create filters.
Remember folks, these are real changes to the sound, "easily" measured and demonstrated. Computing speed should not be an issue these days if you're into computer audio (you might run into speed issues with slower Atom/ARM processors unless the code is optimized). One should be able to buy a decent ADC, calibrated microphone, and software like Acourate for less than US$1000 (even less if you use the freely available DRC Designer). Considering all the other expensive questionable tweaks on the market, that's a relative bargain!
In summary... While I certainly do not expect digital room correction to convert a poor speaker/source system or terrible room acoustics into "high-fidelity" sound, it will fine tune what you have in the space you listen in. One can spend countless hours trying out different speakers, amps, DACs, this-and-that tweaks, etc. to find the "right" combination. Or you could just buy objectively accurate equipment and invest some time and money and learn to harness the power of software like Acourate to achieve the kind of sound you want. In my opinion, as the MasterCard commercial suggests this is the priceless option. Strongly recommended for serious listeners desiring demonstrably higher fidelity.
Final note: Because as an audiophile big numbers are better :-), I will usually upsample everything to 4fs (all 44.1kHz upsampled to 176.4kHz, all 48kHz to 192kHz) for internal calculations and output to the TEAC DAC. Easily done:
Whew! Enough said and done. Time to head downstairs, turn down the lights, and just enjoy the music :-).
December is almost here and a happy Thanksgiving to the American friends! Have a great month ahead everyone. Looking forward to a few days off in December around Christmas, but otherwise swamped with work and even more traveling ahead for me into early 2016! Hope to post some articles nonetheless when I can... BTW I'm working on a new HTPC/music PC build so I'll post a few pictures in the days ahead.