Multi-Sub Optimizer Tutorial (page 8)

Making Manual Configuration Changes

Using the Configuration Wizard and the Optimization Options property sheet are great time-savers, but there are limits to what they can do. Sometimes there's a need to make manual configuration changes, but making manual changes without having a basic knowledge of configurations can lead to errors. This section attempts to demystify configurations, including their relationship to block diagram elements of popular DSP devices.

Relating MSO Configurations to DSP Block Diagrams

Part of an MSO configuration is designed to represent the structure of the signal processing of a typical DSP unit that might be used in a multiple-subwoofer system. In this section, we'll explore the connection between the block diagram of a popular DSP unit and the relevant portions of the structure of an MSO configuration.

The Block Diagram of a Popular DSP

A DSP unit that can be used with MSO has a single input, hooked up to the subwoofer output of an AVR or preamp-processor (pre-pro). Processing begins with filtering on its input, and people generally refer to these as the "input filters". After the input is filtered, the resulting signal is passed along to (potentially) all the outputs through the matrix mixer. Each output has a bank of filters, a delay, and a gain adjustment among other things. Not surprisingly, people usually refer to the filters in the output channels as "output filters". To make the discussion more concrete, an annotated image of a block diagram of the signal processing of a miniDSP 2x4 HD unit is shown below.

Block Diagram of a Typical DSP Device
Block Diagram of the miniDSP 2x4 HD DSP Device

The original image was taken from the miniDSP 2x4 HD1 plugin datasheet PDF file.

The Anatomy of a Configuration

The diagram below shows the Iteration 2 MSO configuration expanded in the Config View. It demonstrates the connection between the tree items in the Config View and the components of the DSP processor.

Configuration Structure vs. DSP Device
Configuration Structure vs. DSP Device

Under each specific configuration node of the tree, such as Iteration 2, there are nodes called Filter Channels and Optimization Parameters. Under Filter Channels, there are the nodes Mains Channels and Subwoofer Channels. We're interested in the Subwoofer Channels node and the ones under it. Under the Subwoofer Channels node, there is a Shared Filters node, and, in our case, four other nodes, each one representing a DSP channel corresponding to a subwoofer specified in the Configuration Wizard. These channels are named Sub 1, Sub 2, Sub 3 and Sub 4. They correspond exactly to the output channels in the DSP block diagram. The filters contained in these channels correspond exactly to the output filters in the DSP block diagram. The gain and delay blocks also match up with the corresponding output channel gain and delay blocks in the DSP block diagram. When the Configuration Wizard is run, and you tell it the number of subwoofers and their names, it stores this information. Then, when it creates the configuration, it adds one channel for each sub, giving each channel the exact same name as the sub. That's how our channels ended up being named Sub 1, Sub 2, Sub 3 and Sub 4.

The Shared Filters folder node in the figure currently contains no filters. It represents the input channel of the DSP, and we can add filters to it, which we'll do later in the tutorial. These shared filters correspond exactly to the input filters in the DSP block diagram. By comparing the annotations in the figure above with the annotations in the DSP block diagram, the relationship between the structure of the MSO configuration and the DSP device can be understood.

The Measurement Associations of a Channel

We can see that each individual channel (Sub 1, Sub 2, Sub 3 and Sub 4) has a Filters node and a Measurement Associations node underneath it. If we collapse all the Filters nodes and expand the Measurement Associations nodes, we get the result shown in the annotated figure below.

Contents of Channel Measurement Associations
Contents of Channel Measurement Associations

Here it can be seen that the measurement associations for the Sub 1 channel are all the measurements involving Sub 1, and likewise for the channels Sub 2, Sub 3 and Sub 4 and the respective measurements. The associations in this case mean that, as part of an intermediate MSO calculation, all the measurements for Sub 1 are modified in magnitude and phase by the response of the Sub 1 channel filters, with the same situation occurring for channels Sub 2, Sub 3 and Sub 4 and their respective measurements.

The Filtered Measurement Associations of a Listening Position

In MSO configurations, listening positions correspond to Measurement Groups. This odd naming convention comes from early concepts of MSO, where Measurement Groups were conceived as "a collection of measurements, each one modified by the frequency response of its associated channel, that add up via a complex summation to some end result". For our purposes, Measurement Groups are the same as listening positions, as situations for which this does not apply are rare.

Measurement Groups can be thought of as being like a generalization of the A + B function of REW's Trace Arithmetic control in its All SPL view. Except instead of A + B, MSO calculates M1 + M2 + ... + MN, where N is the number of subwoofers, and the traces called M are each measurement associated with that listening position, modified by the frequency response (both magnitude and phase) of the filter channel with which that measurement is associated. This is shown pictorially below. In this image, the number of measurements listed under each Measurement Group is the number of subs.

The Association of Filtered Measurements With a Listening Position
The Association of Filtered Measurements With a Listening Position

The Configuration Wizard takes care of setting up the messy details of measurement associations of a channel, and filtered measurement associations of a listening position. Once you run the Configuration Wizard, there's no reason to change these associations. Prior to version 1.1.0, users had to add channels and measurement groups manually, as well as manually setting up their measurement associations.

The Details of Filters

So far in this tutorial, we've looked at two ways of modifying filter properties:

In the former case, only the limits of the parameter values are affected, and those limit changes only apply to PEQs (sometimes called "peaking filters"). The limits are the permissible range over which the optimizer can adjust parameter values.

In the latter case, all filters of a configuration are affected, but only the parameter values, not their limits, are changed.

For a single existing filter, we can examine or modify all its parameters: both limits and values. This is done by selecting the filter in the Config View. When a filter is selected in the Config View, the details of its parameters are shown in the Properties window on the right side of the MSO main window. This is depicted below. For convenience, the Config View is shown next to the Properties window.

Filter Properties are Shown in the Properties Window
Filter Properties are Shown in the Properties Window

At the top of the Properties window is the Filter Information. This includes the filter type (Parametric EQ (RBJ)), reference designator (FL1), and the configuration and filter channel to which it belongs (Baseline and Sub 1 respectively). This information can't be edited.

Following the Filter Information are the filter parameters. Each parameter has four properties: its Value, its Minimum value, its Maximum value, and Optimization allowed. The parameter's Value is just what you'd expect: the current value of the parameter. Its Minimum value and Maximum value are the lower and upper limits, respectively, of the range over which the optimizer is allowed to adjust the parameter Value. Its Optimization allowed property specifies whether the optimizer is allowed to adjust the parameter value at all. This is an advanced feature that we won't get into here.

You can alter these parameter properties by clicking in the second column of the Properties window, selecting the text, and entering a new value. In addition, the Value property has a spin-button control that allows you to tune the parameter value while watching the effect on the graph in real time.

To demonstrate this, set up MSO to show the Iteration 2 vs. Baseline graph by selecting the Data View, right-clicking on Iteration 2 vs. Baseline in the list of graphs, and choosing Show Graph. Then go back to the Config View and select the delay block FL6 of the Baseline configuration. This scenario is shown in the figure below.

Before Tuning of FL6 Delay Block
Before Tuning of FL6 Delay Block

Next, in the Properties window, click on the right column of the Value field of the Delay (msec) parameter. This will activate an up/down spin button control. Press and hold the down arrow of this control, and observe the graph traces change with the delay change to FL6. After the FL6 change to a delay of 15.0 msec, the graph has also changed as shown below.

After Tuning of FL6 Delay Block
After Tuning of FL6 Delay Block

While tuning the delay value of FL6, some surprisingly large response variations can be seen.

But wait! We've been making changes to a filter in the Baseline configuration, making it so it's no longer a baseline. We can set it back to the baseline state by choosing Config, Reset All Filter Parameter Values, which was how we got it back to the baseline state earlier in the tutorial. But that is not a very robust solution. We need to fix Baseline so we can't accidentally change its filter parameters. We can do that by deleting all its filters. Perform the following steps.

Now all the filters of the Baseline configuration have been deleted. The result is shown in the figure below.

Baseline Configuration With Filters Deleted
Baseline Configuration With Filters Deleted

We can no longer accidentally alter any filter parameter values in the Baseline configuration because they've all been deleted. This guarantees the baseline will always be preserved.

Applying What We've Learned: Manually Adding Filters to a Configuration

Now that we've investigated the details of configurations, recall what originally led us to this investigation.

We will now add two more PEQs to each channel of the Iteration 2 configuration.

Adding the New PEQs

Activate the Config View on the left side of the MSO main window. Make sure the Iteration 1 and Baseline nodes are collapsed, then perform the following steps.

This operation is depicted below.

Adding a PEQ to the Sub 1 Channel
Adding a PEQ to the Sub 1 Channel

A new filter, FL24, has been added. Select FL24 as shown below.

FL24 Added and Selected
FL24 Added and Selected

We could perform the context menu operation described above several more times to add the next five filters, but there's a faster way, using copying and pasting of filters.

Copying and Pasting Filters

Perform the following steps:

You'll now see a new filter, FL25, in the Sub 1 channel. We now have six PEQ filters in the Sub 1 channel as desired. You can now paste filters into the other channels as follows:

For more information about copying and pasting filters, see the Adding Multiple Filters Using Copy and Paste section of the reference manual.

Preparing for a New Optimization

Now we have the two added PEQ filters per sub we need, and we're almost ready to try a new optimization. But let's check something first. Right-click on the Iteration 2 configuration node in the Config View, and choose Optimization Options. Navigate to the PEQ Parameter Limits property page. This property page will look as below.

Existing PEQ Parameter Limits After Adding PEQs
Existing PEQ Parameter Limits After Adding PEQs

This property page shows the parameter limits that are actually in the PEQ filters of this configuration. Something strange has happened. We now have a mixture of values for the minimum and maximum center frequencies, and the maximum boost and cut. We want each limit value to be the same for all PEQ filters of the configuration. To accomplish this, perform the following steps.

The PEQ Parameter Limits property page should now look as below.

After Fixing PEQ Parameter Limits
After Fixing PEQ Parameter Limits

Click OK to save the corrected PEQ parameter limit values.

How did this discrepancy occur? It happened when we chose the Add Parametric EQ (RBJ) command from the Config View context menu. When you add a new filter to a channel using the context menu, the parameter values and limits of the filter are set to default values. These default values can be set by choosing Tools, Application Options, Filter Parameter Defaults, Parametric EQ. This displays the Parametric EQ property page of the Application Options property sheet. This property page is shown below.

Default PEQ Parameter Values and Limits
Default PEQ Parameter Values and Limits

It can be seen from this property page that the default PEQ parameter limits are different from what we chose on the PEQ Parameter Limits property page of the Optimization Options property sheet prior to adding the new PEQ filters. So we ended up with a mixture of parameter limits.

One way to avoid this is to avoid using the Add Parametric EQ (RBJ) command from the Config View context menu altogether. Instead, we could simply select an existing PEQ filter from any channel of this configuration, copy it, and paste it to the channels into which we want to add filters. In that way, the existing PEQ parameter limits would be left intact.

Before running a new optimization, let's double-check the PEQ parameter limits. Open up the Optimization Options property sheet again for the Iteration 2 configuration, and show the PEQ Parameter Limits property page. It should look like the image below.

Double-Check PEQ Parameter Limits
Double-Check PEQ Parameter Limits

The grayed-out values always show the data of the filters themselves. These limit values check out with what we previously decided to use, so now all the PEQs in the Iteration 2 configuration have the correct parameter limits.

As a final step before optimization, let's reset all the filter parameter values back to their defaults, giving us a baseline state with which to start the new optimization. From the main menu, choose Config, Reset All Filter Parameter Values, and choose the Iteration 2 configuration. Choose Yes to accept the changes. Save this project as tutorial-new-3.msop.