• Welcome to ASR. There are many reviews of audio hardware and expert members to help answer your questions. Click here to have your audio equipment measured for free!

Dirac Live ART vs. Custom DAW-based MIMO Calibration Objective and Subjective Comparison

Hello ASR community,
I am a Dolby Atmos music producer and mixing engineer. I take immense pleasure in researching audio and acoustics technologies in my spare time.
Today, I would like to share a comparative experiment I recently conducted in a friend's studio. The goal was to compare the performance of Dirac Live ART against a custom manual MIMO calibration I designed and routed entirely within DAW.

1. Equipment & Setup

View attachment 533772
To ensure consistency, all preamp devices were routed to the same power amplifiers with unified, identical gain staging.

Speaker Configuration :

  • L/R Mains: KEF R3 Meta
  • Center: KEF Q6 Meta
  • Side Surrounds: KEF Q Concerto Meta
  • Rear Surrounds: KEF Q11 Meta
  • Subwoofers: TAULSSEN T12 x2 (placed at the midpoints of the front and rear walls)
Amplification:

  • Topping PA7*2
  • Topping mini300*1
  • Fosi Audio V3 mono*1
Processing Hardware:

  • For Dirac Live ART: Denon X4800H AVR.
  • For Custom DAW Calibration: Reaper running via a Motu 16A multi-channel audio interface.
Measurement Gear:

  • Microphone: Brüel & Kjær 4958A
  • Conditioner: Brüel & Kjær 1704 connecting to the Line-In of the Motu 16A.
  • Note: High-precision mic calibration files were loaded for all measurements.

2. Calibration Workflows

Dirac Live ART

  1. Roughly level-matched the subwoofers with the bed/surround speakers.
  2. Conducted a standard 19-point spatial measurement.
  3. In the filter design interface, I adjusted the target curve and configured the support frequencies based on the low-frequency extension capabilities of each speaker group.
  4. Exported the filters to the Denon X4800H and applied them.
Custom DAW-based MIMO Calibration

  • Unified time alignment for all channels.
  • Subwoofer Optimization: Applied distinct crossovers and delays to the two subwoofers (front and rear wall midpoints) to mitigate anomalous room issues, specifically targeting typical room mode notches and excessively long decay times caused by standing waves.
  • Manual Active Room Treatment (SBIR mitigation): I observed the individual measurements of every speaker to identify specific SBIR issues caused by their physical placement. To resolve these, I applied bandpass filters to the problematic frequencies on the affected channel, adjusted the delay, and routed that specific frequency band to other speakers in the room (effectively using them as active support/absorbers). I repeated this process for all speakers.
  • Target Curve Matching: After another round of measurements, I generated minimum-phase FIR filters to match Dirac Live's target curve as closely as possible. These filters were loaded onto the input tracks of each respective channel in the DAW to avoid introducing any excessive phase anomalies.View attachment 5337773. Objective Measurement Analysis
    Before diving into the calibrated results, it is crucial to establish the baseline of the room.View attachment 533778This shows the raw, uncalibrated SPL measurements for theL, R, and LFE channels, giving a clear picture of the initial room modes and acoustic challenges we were dealing with.

    Now, let's compare the two calibration methods:

    Dirac ART Results(upper)vs. Custom DAW Results(lower)
  • View attachment 533782
    View attachment 533783View attachment 533784View attachment 533785View attachment 533786View attachment 533787View attachment 533788View attachment 533789Observations:Looking at the graphs, the Dirac ART calibration resulted in slightly worse frequency response linearity compared to my manual method, but it achieved a noticeably superior phase response.
    However, this phase perfection seems to come at a cost (discussed in the subjective section below). In the Waterfall plots, Dirac exhibits slightly more low and low-mid frequency ringing. Looking at the Spectrograms, we can observe that while Dirac has a lower overall group delay due to its extensive phase correction, my custom DAW calibration yielded a noticeably faster overall decay time/dissipation.
  • 4. Subjective Evaluation (Blind Test)​

    I invited three friends—two audiophiles and one music producer—to conduct a simple ABX blind listening test.
    • Test Track: Dolphin by Tennyson.
  • Results:All three listeners were able to successfully identify and distinguish between the Dirac ART calibration and my custom DAW calibration across three rounds of randomized ABX trials.

    The universal consensus was that the sound post-Dirac ART calibration felt "slightly lacking in transients". Aside from the fact that the frequency response wasn't perfectly linear, my technical hypothesis is that this transient smearing might be caused by Dirac utilizing non-minimum phase filtering to aggressively correct excess phase, which can inevitably lead to pre-ringing artifacts.

    5. Final Thoughts & Takeaways​

    1. Dirac ART is undeniably one of the most advanced multi-channel auto-calibration algorithms available today. However, it could be vastly improved if Dirac opened up more advanced user parameters. For instance, allowing users to restrict processing to specific frequency bands or choose the degree/aggressiveness of phase correction would likely optimize both the final objective measurements and the subjective listening experience.
    2. The Ultimate DSP Box: Looking at the current market, building a system around a Mac Mini paired with a high-quality multi-channel DAC, running a DAW as a standalone high-performance DSP engine, and utilizing Dante Virtual Soundcard for host connectivity seems to be a solution with an incredibly high performance-to-price ratio and practically limitless potential. After all, there is virtually no DSP operation that cannot be executed within a modern DAW! Furthermore, macOS inherently acts as an excellent high-quality music player and a native Dolby Atmos renderer.
  • I’d love to hear your thoughts, critiques, or similar experiences with Auto Cal vs. manual DSP!
For the SBIR processing once you have identified the issues for one speaker (need to figure out how you do that), what criteria do you use to select the other speakers to route the filtered band passed signal to. Also the distribution levels to the selected speakers? Do each speaker sum all the various band passed components from the other speakers? Or should I go read a book?
SMathews
 
For the SBIR processing once you have identified the issues for one speaker (need to figure out how you do that), what criteria do you use to select the other speakers to route the filtered band passed signal to. Also the distribution levels to the selected speakers? Do each speaker sum all the various band passed components from the other speakers? Or should I go read a book?
SMathews
In fact, it's quite simple. First, only process the lower frequency bands (this will minimize the impact on sound image localization); I chose 120Hz and below. Next, observe the frequency response of all speakers and identify their respective problems (since the speakers are evenly distributed in space, it can be observed that each speaker may have different problems, as well as different frequency bands where they won't have problems). Then, after bandpassing the frequency band that needs to be addressed, send it to the speakers that didn't have problems in those bands during the measurement and align their phases. This allows them to work together to resolve the issue. Of course, in practice, there are many engineering challenges that require multiple trials and solutions.
 
In fact, it's quite simple. First, only process the lower frequency bands (this will minimize the impact on sound image localization); I chose 120Hz and below. Next, observe the frequency response of all speakers and identify their respective problems (since the speakers are evenly distributed in space, it can be observed that each speaker may have different problems, as well as different frequency bands where they won't have problems). Then, after bandpassing the frequency band that needs to be addressed, send it to the speakers that didn't have problems in those bands during the measurement and align their phases. This allows them to work together to resolve the issue. Of course, in practice, there are many engineering challenges that require multiple trials and solutions.
Thanks.
SMathews
 
I was just conversing with friendly Claude AI about how MIMO works and it wrote a script that takes the following inputs from a REW Spectrogram measurement of a room mode (peak frequency in Hz, peak amplitude in dB, and decay time) and creates either biquads or a wav file of an IIR filter that reduces both amplitude and decay time. Claude says the math is the same as MIMO programs and calls the filter a Modal Decay filter or a Pole-Placement IIR filter. I haven't tried it out yet but it sounds very interesting and I will be shortly. Does this make sense? Since I don't know the area very well I don't know enough to challenge Claude on the idea but I haven't heard of a filter that works on both amplitude and decay times at the same time.
 
Last edited:
I was just conversing with friendly Claude AI about how MIMO works and it wrote a script that takes the following inputs from a REW Spectrogram measurement of a room mode (peak frequency in Hz, peak amplitude in dB, and decay time) and creates either biquads or a wav file of an IIR filter that reduces both amplitude and decay time. Claude says the math is the same as MIMO programs and calls the filter a Modal Decay filter or a Pole-Placement IIR filter. I haven't tried it out yet but it sounds very interesting and I will be shortly. Does this make sense? Since I don't know the area very well I don't enough to challenge Claude on the idea but I haven't heard of a filter that works on both amplitude and decay times at the same time.
It looks like this will be pretty hard to achieve the effect you want, unless this script can assign a single input signal to many hardware output channels at the same time (or assign multiple input signals to the same output), which is exactly the core of MIMO.
 
I was just conversing with friendly Claude AI about how MIMO works and it wrote a script that takes the following inputs from a REW Spectrogram measurement of a room mode (peak frequency in Hz, peak amplitude in dB, and decay time) and creates either biquads or a wav file of an IIR filter that reduces both amplitude and decay time. Claude says the math is the same as MIMO programs and calls the filter a Modal Decay filter or a Pole-Placement IIR filter. I haven't tried it out yet but it sounds very interesting and I will be shortly. Does this make sense? Since I don't know the area very well I don't enough to challenge Claude on the idea but I haven't heard of a filter that works on both amplitude and decay times at the same time.
Curious how this will turn out.
SMathews
 
Curious how this will turn out.
SMathews
See below, looks and sounds good but I am not qualified to challenge, I have some rendering issues with .md files.

Biquad_vs_Magnitude_Filter.png
 
It looks like this will be pretty hard to achieve the effect you want, unless this script can assign a single input signal to many hardware output channels at the same time (or assign multiple input signals to the same output), which is exactly the core of MIMO.
The scenario I posed was a stereo system with mains and subs co-located and the correction filter would be used like a PEQ applied to the sub channel. Compared to a regular PEQ in addition to reducing magnitude it also shortens decay times. Sounds too good to be true but apparently MIMO doesn't really send cancellation signals out either, it uses the same math as this script to create filters that reduce the decay time. The math is above my understanding.
 
The scenario I posed was a stereo system with mains and subs co-located and the correction filter would be used like a PEQ applied to the sub channel. Compared to a regular PEQ in addition to reducing magnitude it also shortens decay times. Sounds too good to be true but apparently MIMO doesn't really send cancellation signals out either, it uses the same math as this script to create filters that reduce the decay time. The math is above my understanding.
You can give it a try, and then let’s see what kind of results it can produce.
 
See below, looks and sounds good but I am not qualified to challenge, I have some rendering issues with .md files.

View attachment 539032
Sorry. What your AI came up with, IMHO, is not going to work.

Pole-zero cancellation is a dangerous tool. If the original system (the one that needs corrections) is minimum-phase, which means all the poles are zeros are in the right hand plane (-ve real values, for continuous time systems) or inside the unit circle (for discrete time systems), then correcting magnitude will automatically correct the phase, which also means correcting the timing/decay, issues. So EQ to flat response (referred to by the AI as "magnitude filter") will do the job just fine.

If the original system is non-minimum phase, then at least one of the zeros will be on the left hand plane (or outside the unit circle). The AI "correction" will mindlessly generate a pole (or poles) in the right hand plane (or outside the unit circle), which means the "correction" system will be inherently unstable. Since no measurement can perfectly "identify" * your original system, you'll never get perfect pole/zero cancellations, and will be left with an unstable system.

Note: * Using system identification speak.
 
Sorry. What your AI came up with, IMHO, is not going to work.

Pole-zero cancellation is a dangerous tool. If the original system (the one that needs corrections) is minimum-phase, which means all the poles are zeros are in the right hand plane (-ve real values, for continuous time systems) or inside the unit circle (for discrete time systems), then correcting magnitude will automatically correct the phase, which also means correcting the timing/decay, issues. So EQ to flat response (referred to by the AI as "magnitude filter") will do the job just fine.

If the original system is non-minimum phase, then at least one of the zeros will be on the left hand plane (or outside the unit circle). The AI "correction" will mindlessly generate a pole (or poles) in the right hand plane (or outside the unit circle), which means the "correction" system will be inherently unstable. Since no measurement can perfectly "identify" * your original system, you'll never get perfect pole/zero cancellations, and will be left with an unstable system.

Note: * Using system identification speak.
How does MIMO handle this type of instability or is AI wrong that this is the type of filter MIMO uses?
 
How does MIMO handle this type of instability or is AI wrong that this is the type of filter MIMO uses?
Mathematically, there aren't any significant difference, so AI is still wrong. An SISO (single input single output) system just means there exists 1 transfer function from input x to output y.

For an MIMO system, e.g. 2 inputs 2 outputs, we have 4 transfer functions, input x1 → output y1, input x1 → output y2, input x2 → output y1, and input x2 → output y2. Normally we'd say in this case we have a 2x2 transfer function matrix.

These transfer functions can be determined one at a time, e.g. the x1 → y1 transfer function can be measured by only sending a test signal to x1 and measure the response at position y1, then move to x1 → y2, then x2 → y1, then x2 → y2. Just more work and more computations.
 
Mathematically, there aren't any significant difference, so AI is still wrong. An SISO (single input single output) system just means there exists 1 transfer function from input x to output y.

For an MIMO system, e.g. 2 inputs 2 outputs, we have 4 transfer functions, input x1 → output y1, input x1 → output y2, input x2 → output y1, and input x2 → output y2. Normally we'd say in this case we have a 2x2 transfer function matrix.

These transfer functions can be determined one at a time, e.g. the x1 → y1 transfer function can be measured by only sending a test signal to x1 and measure the response at position y1, then move to x1 → y2, then x2 → y1, then x2 → y2. Just more work and more computations.
So if I am going to test the filter I shouldn't hook my interface up to my 1300 watt per channel sub amp. How does an unstable filter manifest?
 
So if I am going to test the filter I shouldn't hook my interface up to my 1300 watt per channel sub amp. How does an unstable filter manifest?
That I have no actual experience as to how it would manifest in an audio system. Never tried it.

Normally for control system if it is unstable, the output will typically go into oscillations with rapidly increasing amplitude. My guess for audio system is that it would be similar to microphone feedback for PA systems.

[Edit] I guess I can run a computer simulation. But it won't be tonight :p May be tomorrow.
 
Sorry. What your AI came up with, IMHO, is not going to work.

Pole-zero cancellation is a dangerous tool. If the original system (the one that needs corrections) is minimum-phase, which means all the poles are zeros are in the right hand plane (-ve real values, for continuous time systems) or inside the unit circle (for discrete time systems), then correcting magnitude will automatically correct the phase, which also means correcting the timing/decay, issues. So EQ to flat response (referred to by the AI as "magnitude filter") will do the job just fine.

If the original system is non-minimum phase, then at least one of the zeros will be on the left hand plane (or outside the unit circle). The AI "correction" will mindlessly generate a pole (or poles) in the right hand plane (or outside the unit circle), which means the "correction" system will be inherently unstable. Since no measurement can perfectly "identify" * your original system, you'll never get perfect pole/zero cancellations, and will be left with an unstable system.

Note: * Using system identification speak.
I really don't know in depth details about this stuff which is why I asked. I sent your comments to Claude and see below what I got back, have to laugh that AI uses "critic" like it is taking it personally or something. I will test and see for myself with a low powered amplifier as soon as I can get the house to myself.

Pole_Placement_Stability_Analysis.png
 

Attachments

I think they are similar, see below. I was looking for a way to manually get the room decay effect of DIRAC ART and AI said it could make a script to generate filters that would work on both amplitude and decay. I have seen what appear to be impressive results regarding decay on some ART Spectrogram posts. I have also seen posts that claim amplitude cuts will solve decay as well so no need for more. I had never heard of REW Modal filters before, have you tried them and do they make a difference on decay?

Pole_Placement_vs_REW_EQ.png
 
Last edited:
Ran the simulations in Python. The HTML version of the Jupyter notebook viewable with an browser is in the ZIP archive. I will add my explanations later when I have more time.

Yes. As expected, the unstable filter blew up. Also, in this case it is simply not possible to implement pole/zero cancellation. It is because the correction filter processes the electrical signal, and the room effects are induced by the room in the acoustic domain. The idea is to pre-adjust the electrical signal to compensate for the room effects. The correct filter acts alone, and if it is unstable, there is nothing to stop it from blowing up. The room effects the correction filter was to correct are way downstream. The filter and room can't "work cooperatively" with each other (i.e. for the room zero to cancel the unstable filter pole) by having the room inside the feedback control loop, which is how typical control systems are constructed to correct for errors.

Regarding whether or not room modes are minimum phase (MP), they aren't. They sort of behave like MP, but Dr Earl Geddes, who has a PhD in acoustics, said this:

[Edit] Belatedly adding a brief explanation of the simulations in the Jupyter notebook.

In these simulations of constructing frequency response correction filters by inversion, we'll try to undo the effects of a biquad peaking filter, which has 2 poles and 2 zeros.
Test signal: Exponential sine sweep (chirp) 10 - 20 kHz, fs = 48000 Hz, length = 2^15 samples
log_chirp.png

Original filter: Biquad peaking filter, in phase, fc = 500 Hz, Q = 1, gain = 3 dB, discrete time fs = 48000. The frequency magnitude and phase response, and the time domain output waveform of the sine sweep that had passed through this filter.
min_phase_biquad_peq.png

Equivalent maximum phase version (with same FR magnitude response but different FR phase response, see below).
max_phase_biquad_peq.png

The conversion is done by "reflecting" the filter transfer function zeros from inside the unit circle to outside. The process is, for each zero, when expressed in the polar form, x + i y → r exp(i θ), relocate to (1/r) exp(i θ) → x' + i y'. Here is a plot of the zero locations of both the minimum and maximum phase filters in the complex z-plane.
zeros_z_plane_plot.png

Inversion filter by exchanging the poles and zeros for the original minimum phase peaking filter. The response of this filter (see below) "reverses" those from the original filter.
min_phase_inverse.png

Inversion filter using the maximum phase version is unstable since converting the zeros outside the unit circle (in the complex z-plane) to poles results in an unstable system. The computer program errored when trying to compute the frequency response due to overflows. Note that the vertical scale of the time domain simulation plot is in 1e306!
max_phase_inverse_unstable.png
 

Attachments

Last edited:
Back
Top Bottom