Optimization Example - Flatten MLP Response

Flattening the MLP Response

Downloading the User Guide Examples: The data for this demonstration are available as getting_started_user_guide.zip. To get results that match the examples, please download and unzip this file before beginning if you haven't already.

So far, we have a configuration with eight output PEQs per sub and eight input PEQs, but we haven't used any of them yet. The SPL optimization prevents any PEQ parameter values from being adjusted, only allowing adjustment of delay and all-pass filter parameter values. Now we'll look at an optimization type - Flatten MLP response using only shared (input) filters - that modifies the input PEQs (but leaves the output PEQs untouched).

Determining the Reference Level

One piece of information we'll be asked for in the Optimization Options property sheet will be the reference level. Explaining the reference level is easiest to do graphically. Open up the user-guide-2.msop project to show the responses at the different listening positions. Using the Ctrl+Space hotkey, toggle all traces of this graph off except the MLP trace. Use the directions here for toggling trace visibility if you need a refresher. The graph should look as below.

The MLP Response After SPL Maximization
The MLP Response After SPL Maximization

Picture using PEQs to equalize this response using only cuts and no boost. The reference level is the highest constant SPL value over frequency that we could reach using only cuts, without the final result having dips below that level. In the image above, if we picked 80 dB for the reference level, we could cut the response to that level without any dips below 80 dB going all the way up to almost 200 Hz (where it dips down to 75 dB). So let's pick 80 dB as the reference level.

In order to use this technique for picking the reference level, we need to have MLP data that isn't contaminated with phase-related cancellation in the highest octave from 100 Hz to 200 Hz. We can do this in two ways.

We've already used the first approach. Let's also quickly look at the second. Use the technique described previously to add a natural response trace to the graph, picking the MLP as the listening position to display. The graph should now look like the one below.

MLP Response: SPL-Optimizad and Natural
MLP Response: SPL-Optimized and Natural

The SPL optimization has done a decent job getting the MLP to look like its natural response. Even the natural response dips down a little below 80 dB just below 200 Hz, but by a little less than the SPL-optimized one. We can see that no matter which method we use, we get the same 80 dB reference level. If we were doing a different type of optimization and didn't want to do a separate SPL optimization first to find the reference level, we could use the natural response approach. We'll return to this idea briefly later.

Determining How Much PEQ Attenuation Is Needed

With the reference level chosen to be 80 dB, we can now figure out the maximum PEQ attenuation we need. We can see from the graphs above that between 20 and 30 Hz, the un-equalized response peaks at a value very close to 110 dB. This means we need 30 dB of attenuation to knock the response down to 80 dB at that frequency. This is quite a bit of attenuation. Will this have a bad effect on the system?

Having that big un-equalized response peak at low frequencies turns out to help efforts to get low-distortion output rather than hinder them. The room mode is boosting the acoustical output in a frequency range where the subs would ordinarily struggle, taking the load off the amps and subs in that frequency region. Needing 30 dB of attenuation at around 25 Hz means that, at that frequency, the amplifier power required to get 80 dB SPL is a factor of 1000 less than what would be needed if the un-equalized response were flat at 80 dB. That also means that the peak cone displacement needed to get 80 dB SPL is a factor of sqrt(1000) or 31.6 less than it would be if the un-equalized response were flat at 80 dB.

To properly take advantage of this situation, any large attenuation that we use must be provided by shared (input) PEQs as described in an earlier discussion, and not output PEQs. In this particular case, we're using the Flatten MLP response using only shared (input) filters optimization option, which disables output PEQs as part of the optimization itself. This means we're automatically covered in this example.

Determining The Optimization Frequency Range

A good way to figure out the optimization frequency range is to find out the high and low frequencies where the MLP natural curve (or an MLP response optimized for SPL) intersects with a horizontal line at the reference level (in this example, 80 dB). To use this approach with the MLP curve shown above, press Ctrl+J to activate the graph's data cursor, and drag the cursor to the upper and lower frequencies where the curve reads 80 dB. Then press Ctrl+H to hide the data cursor. Using this technique, we obtain a lower limit of 10 Hz and an upper limit of 186.9 Hz. That's a good range if we want to be strict about it. But earlier in the examples, we've been using 15 Hz and 190 Hz for some calculations. For consistency with earlier examples, we'll use 15 Hz to 190 Hz instead of the more rigorous 10 Hz to 187 Hz range.

Setting The Optimization Options

Armed with the information we found above, we're ready to set all the optimization options.

Launch the Optimization Options property sheet as we've been doing.

Specifying the Optimization Type

On the Optimization Type property page, choose the Flatten MLP response using only shared (input) filters optimization option as shown below.

Choose the Optimization Type
Choose the Optimization Type

Setting the General Options

On the left side of the property sheet, choose General Options. Under Frequency range to optimize response, uncheck Auto and enter 15 for the lower frequency limit and 190 for the upper one. Next to Use a fixed reference level of:, enter 80 into the edit control.

You'll see that a number of options are disabled on this property page. UI controls are selectively enabled or disabled based on the optimization type chosen earlier on the Optimization Type property page. If a UI control is disabled, its contents are ignored for the optimization type you chose.

When done, the General Options page should look as below.

Choose the General Options
Choose the General Options

Specifying the Optimization Duration

Select Durations: Single-stage on the left side of the property sheet. Only the controls in the MLP Flatness-Only Optimization Duration group should be enabled. Select the Specify as a count of radio button and enter 8000 into its edit control. The result should look as below.

Choose the Optimization Duration
Choose the Optimization Duration

Setting the Input PEQ Parameter Limits

All that remains before optimizing is to set the PEQ parameter limits. We specifically want to set only the parameter limits of the input PEQs, as those are the only ones used for this type of optimization. The Sub General PEQ Limits contains a radio button that allows you to choose between setting the parameter limits for all PEQs (both input and output) or setting only the output PEQ parameter limits. Neither of these options is what we want, so we'll skip that page. Instead, choose the Sub Input PEQ Limits option on the left.

Make sure the Use this page to set only input PEQ parameter limits radio button is selected.

Earlier we determined that we needed to cut the response peak by 30 dB. Let's allow individual PEQs to have a 30 dB cut, while letting the cumulative cut (which can't be less than this) reach 31 dB. Under Maximum cut, dB, uncheck Keep existing limit and enter a value of 30. Under Maximum total cut, dB, enter a value of 31.

Best practice is to set the minimum and maximum PEQ center frequency limits to be the same as the minimum and maximum optimization frequencies respectively. Under Minimum center freq, Hz, uncheck Keep existing limit and enter 15 for this value. Under Maximum center freq, Hz, uncheck Keep existing limit and enter 190. All other controls can be kept as-is. When done, this property page should look as below.

Choose the Input PEQ Parameter Limits
Choose the Input PEQ Parameter Limits

Click OK to save the options. Before optimizing, make sure all the traces on the graph are visible using the technique described earlier.

Running The Optimization

Now we're ready to optimize the configuration. Right-click on the configuration in the Config View, then choose Optimize Configuration. When the optimization is complete, choose Yes when prompted to save the results, then save the project as user-guide-3.msop.

Result After Optimizing SPL and MLP Flatness
Result After Optimizing SPL and MLP Flatness

This is a somewhat disappointing result, both in terms of MLP flatness and STSV. Using the Performance Metrics dialog, we obtain the following results.

Errors after optimization with maximized SPL and flattened MLP:
SPL penalty: 1.84 dB
STSV: 1.98 dB
MLP target error: 1.01 dB

In the previous example where we optimized SPL only and captured the result in the file user-guide-2.msop, we got the following results.

Errors after SPL optimization:
SPL penalty: 1.84 dB
STSV: 1.98 dB
MLP target error: 18.99 dB

As the theory predicts, the SPL penalty and STSV did not change with the flattening of the MLP. These errors aren't affected by shared PEQs. As expected, the MLP target (flatness) error was greatly improved, from 18.99 dB to 1.01 dB.

Longtime users of MSO will notice that when the traditional method of optimization is used (Minimize seat-to-seat variations (STSV) and flatten MLP response), the STSV and MLP target error are usually much better than what's shown above. But the traditional method does not control for SPL penalty. An important thing to know is how much SPL we would give up by using that method. We'll try to get some insight into that question in the next section.