Originally Posted by AustinJerry
The first optimization (5 minutes) produced delay blocks that exceeded the MiniDSP 2x4 7.5ms delay limit. I went back into Tools/Application Options and set a 7.5ms maximum delay value.
I then ran a second optimization (5 minutes), but still received gain delay blocks in excess of 7.5ms. How can I limit the delay results?
The Tools/Application options only applies to the parameter limits of newly-created filters. For existing filters, you'll need to modify the minimum and maximum properties of the parameters via the Properties window on the right. See this screenshot of the main window
More information can be found in "Adding Filters to Filter Channels
" in the tutorial.
Edit: The above links may have some problems on and off today 11/30/2016 as my web provider is switching over to new servers.
Next question, the results between the two optimizations are quite different, even though the only changed setting was the maximum delay value. Is this normal, and why would the results be so different?
The optimization minimizes an aggregate measure of the response flatness error (a single number that's ideally zero) over multiple listening positions. It's sometimes the case that several different combinations of parameters can produce an aggregate error that's very similar.
Imagine that you were only adjusting two parameters: sub distance and level. You'd have an error that's a function of two variables. Mathematically, that looks like:
z = f(x, y)
This is the equation of a surface in three dimensions. Now imagine that the surface looked like this:
That's called a "multi-modal objective function". This means the error function has many local minima. It can be a challenge to create an optimizer that will find the best minimum in the presence of the many local minima. If you were varying 20 parameters, that "surface" would be a "hyper-surface" in 21 dimensions. It can't be visualized, but the concept is the same. These local minima are a challenge for all optimizers. If you're using a number of PEQs, you'll want to run MSO for a pretty long period of time, like 30 minutes, to allow it to explore the solution space and avoid these local minima.
And finally, the optimization produced no Polarity Inversion blocks. REW measurements show that the front sub pair is 180 degrees out of phase with the rear pair, and my current configuration has a polarity inversion for both front subs. I am curious why MSO is not making the same recommendation.
MSO only changes the parameters of existing filters. It does not add filters. So if you want to use a polarity inversion, you'll need to add it. Did you do the measurements with the polarity inversions in place? If so, no change is necessary. If not, you'll need to add them manually.
One quirk of MSO is that it only varies parameters that have a continuous range of adjustment. Introducing a polarity inversion on some iterations of the optimizer but not others would mess up the convergence of the optimizer. That's why it doesn't add inversion blocks. Unfortunately, exploring that option requires using a distinct configuration for each discrete combination of inversion blocks to be explored.
Optimizers that allow discrete parameter values are called "combinatorial optimizers". MSO does not use such an optimizer. I chose the optimizer on the basis of its ability to avoid local minima of the objective function as described above.
Unless your subs are really out of polarity with one another (as yours are), adding a polarity inversion to individual subs is generally not a good idea, as it increases the likelihood of non-minimum-phase behavior, giving the potential of degraded time-domain response. But since you're aware of the issue, you're equipped to handle it per the above advice.
Next steps (correct me if I am wrong):
1. Export the bi-quads for each sub as a text file, and import the file into each of the four 2x4 output channels.
2. Import the gain and delay settings (once I figure out what is wrong with the delays).
3. Measure the results using REW.
4. Run a fresh Dirac calibration.
5. Measure the final results using REW and compare to the baseline results.
That looks right.
You'll probably want to explore negative delays. You'll have N-1 delays for N subs, assuming a sub-only configuration. I'd do this:
1. Allow the N-1 delays to have a range of -7.5 msec to 7.5 msec
2. Run the optimization
3. Do a "normalize delays" from the "Subwoofer Channels" node of the Config View.
4. This will convert all delays to positive delays or no delay and move some delay blocks around.
5. Some of these delays may be more than 7.5 msec as a result of normalization
6. Change the limits of all delays to 0 and 7.5 msec for min and max.
7. Re-run the optimization
This is just a roundabout way of figuring out which sub needs no delay.
Also, you may want to decrease the minimum allowable center frequency for the PEQs to 20 Hz. I should probably make this the default.