Near-field Room correction and crossover in Roon

I thought I would share my recent experience with Roon and room correction. Mods If this is not the right thread please feel free to move/suggest an alternate thread.

While I am more used to EQing headphones, I have not had the opportunity to EQ 2ch systems as much until recently. I have also taken a rather unconventional approach on crossover and also Dirac integration to Roon.

Disclaimer:The thoughts expressed here are based on my personal experience and biases and do not in any way represent a direct endorsement by Audeze .

I have a near-field setup, two planar satellites sit on either side of my 42 inch screen and a Sub to the right of my table. I sit about 40 inches away from center of them monitor (about 48 inches from the satellites). My listening position is fixed with very little variation and this makes it an ideal for the directional (10.5 x 6.5 inch) planar


Tilted upward at 13 degrees, angled toward my ears due to their directional nature.

The tapes are to mark their position.

I needed very compact speakers and also efficient enough (the satellites are about 97dB /mW) to direct-drive out of my Chord DAC. This is a 2-way setup but I did not want to bi-amp. Instead I do a digital XO at 200Hz with my first XO filter at a 10dB lower gain (but adjust level on mySub) than my filter for > 200Hz. The Satellites do not like frequencies below 100Hz, they ‘flutter’. XO filters were also necessary for delay compensation of my sub.

I designed the XO filter in Acourate but used Dirac for room correction. I used Acourate to align the microphone exactly between the left and right speakers and also to estimate the delay between the satellites and sub (thanks to this post by Mitchco on CA). In my setup, both Dirac and Acourate were very close tonally but Dirac correction improved depth and transparency better than Acourate. Before I did room correction, I used REW to measure and linearize the sub and Satellites. My workspace is a relatively small room (12 x 10) and the Sub response is peaky.

I used DMG Equilibrium to do the initial correction manually, I also validated the correction as I add filters by routing REW through Jriver and loading the DMG VST plugin in Jriver. I use zero-latency min-phase correction. Here are sample filters I created for Sub and the Satellites.

Filters for Sub - I am not afraid to make some precise adjustments. Multiple measurements around my listening position barely changed the frequency response.

Filters for Satellites - Based on 1/6th octave smoothing of measurements made around listening position. My listening position is fixed and within 1feet cube. It is nice that DMG lets you design filters for L and R channels independently.

I use ECM800 mic with Focusrite Scarlett 2i2. I have the UMik-1 but did not want any form of SRC as mini-DSP supports 48kHZ internally and all other rates are converted to 48kHz. For the same reason I did not use mini-DSP for crossover, EQ or Dirac room correction.

Here are the linearized measurements.

I then used Metaplugin to host both the crossover filters (Reverberate convolution plugin) and the filters I used to leniarize my sub and sats (DMG Equilibrium) within Jriver. Metaplugin by DDMF is really cool as it lets you create arbitrary configurations to process multi-channels. I also like Reverberate for real-time zero latency processing of FIR filters.


Now it is time to do measurements using Dirac. I routed Dirac calibration output to Jriver using VB Audio cable and VB Audio ASIO Bridge. Then I configured Jriver to use ASIO output to my DAC.

Here is the result of measurements through Dirac

With Dirac audio processor active, I measured using REW (REW ->Dirac->Jriver( XO + leniarization)->DAC), then fine tuned a little based on measurements and listening). Here is the final result

I know it is tricky to use Dirac with Roon, but I wanted to be able to use a network end point with Roon. So I did a loop-back measurment of Dirac’s Audio processor REW -> Dirac Audio Processor (with correction filter) -(VB Virtual IO) > VB Audio Voicemeter -> VB Virtual IO -> REW and extracted the correction filter. This requires correct windowing and multiple tries to get a clean impulse. Once extracted, I could not tell an audible difference between Dirac Audio processor and the extracted filter.

Finally I used Roon’s awesome procedural EQ to pull all these together.
Dirac Extracted filters (Convolution) -> Split LR to 4 channels (L->L, R->R, L->C, R->LFE) -> Apply XO and leniarization (Convolution) -> Mix back to 2 ch
Split:


Mix-back:

Signal-path:

It took me a while to tune this to my liking but it was totally worth it. I like the natural presentation and precise imaging of this setup and it is a nice alternative to my headphones.

My requirements and setup may be unique, but I hope some aspects of this could be used by others in this community. Happy to answer questions.

6 Likes

Excellent job!

1 Like

An excellent read, many thanks for posting.
OT but could I ask about those speakers. What are the model details?

1 Like

Wow! This is mind-boggling! In particular extraction of the Dirac correction. Very nice!

1 Like

Mini Dragons by Dragonfire Acoustics.

1 Like

Thanks; their website could do with some work (well, some content actually).

I’m too exciting to know that I can use a network end point with Dirac! Now I already can setup the loop back measurement, however, the following steps on REW is too complicated for me to do without a guideline. I’ll be very appreciated if you could make a more detailed guideline of these steps. Thanks a lot!

If you are able to ‘measure’ the impulse from Dirac Audio processor, use REW to apply image
I found the following settings to work well for me. Hope this helps.

Thanks a lot for your reply!I’ll have a try later:grin:

Thanks for sharing! I found it strange although that your window starts at t=0 and not before, I thought DIrac was also applying FIR filters with pre-response.

You are right about the ‘pre’ part required for a mixed-phase correction. Note the 6ms left window in my setting.

1 Like

My mistake, I misread the “left window” setting, seeing a 0 instead of a 6, it was to small on my Ipad… :flushed: