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.
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.
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.
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 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:
- Using the PEQ Parameter Limits page of the Optimization Options property sheet
- Choosing Config, Reset All Filter Parameter Values... from the main menu
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.
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.
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.
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.
- In the Sub 1 channel filters of the Baseline configuration, select the filter FL1 and press Delete.
- Repeat the above action for all filters in the Sub 1 channel.
- Using similar steps, delete all remaining filters in the Sub 2, Sub 3, and Sub 4 channels.
Now all the filters of the Baseline configuration have been deleted. The result is shown in the figure below.
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.
- One of the listening position responses of the Iteration 1 configuration had a suckout at 181.9 Hz. This suckout was outside our optimization frequency range of 15 Hz to 160 Hz.
- We cloned the Iteration 1 configuration to make Iteration 2, specifying an optimization frequency range of 15 Hz to 190 Hz for the new configuration.
- We allowed for a 3.0 dB maximum boost in the Iteration 2 PEQs, using the PEQ Parameter Limits property page of the Optimization Options property sheet.
- We constrained the maximum total PEQ boost to 3.1 dB in the Constraints property page of the Optimization Options property sheet.
- We reasoned that since the higher maximum limit of the optimization frequency range now includes more room modes, and since the number of PEQs needed per sub is determined by the number of significant room modes we need to fight, we should increase the number of PEQs per sub.
- We estimated that two more PEQs per sub were needed.
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.
- Expand the Iteration 2 node.
- Find the Filters node under the Sub 1 channel.
- Right-click on the Filters node and choose Add Parametric EQ (RBJ).
This operation is depicted below.
A new filter, FL24, has been added. Select FL24 as shown below.
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:
- Select FL24 if it is not currently selected.
- Press Ctrl+C to copy the filter to the clipboard.
- Move the selection to the Filters node under the Sub 1 channel node.
- Press Ctrl+V to paste the filter from the clipboard into the Sub 1 channel.
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:
- Select the Filters node under the Sub 2 channel node.
- Press Ctrl+V twice to paste two new filters from the clipboard into the Sub 2 channel. Now there are six PEQ filters in the Sub 2 channel.
- Repeat these steps for the Sub 3 and Sub 4 channels. Now there are six PEQ filters in each of these channels as well.
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.
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.
- Uncheck the Keep existing limit checkboxes for the Minimum center freq, Hz, Maximum center freq, Hz, Maximum cut, dB and Maximum boost, dB edit controls.
- Enter a value of 15.0 in the Minimum center freq, Hz edit control.
- Enter a value of 190.0 in the Maximum center freq, Hz edit control.
- Enter a value of 26.0 in the Maximum cut, dB edit control.
- Enter a value of 3.0 in the Maximum boost, dB edit control.
The PEQ Parameter Limits property page should now look as below.
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.
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.
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.