Tips and Tricks
In this section, you'll find discussion of miscellaneous program features that can help you be more productive with MSO.
Tips for Searching and Viewing the MSO CHM Help File
Advanced Searching of the MSO CHM Help File
The search function in Microsoft's reader for compiled HTML help files such as this document (multi-sub_opt.chm) is more powerful than it first appears. Search syntax includes searching for phrases, wildcard search, and logical operators such as AND, OR, NOT, and NEAR. Documentation of this syntax is available on a very useful web page by Microsoft MVP Robert Chandler. It's well worth a read.
A Cross-Platform CHM Help File Viewer Supporting Multiple Tabs
KchmViewer is a cross-platform CHM help file viewer that supports Windows, Mac and Unix. It supports multiple tabs so that multiple help file pages can be viewed at once. It purports to have improved search features over the MS CHM viewer, but I don't like the search function as much as the MS viewer. After performing the search, the results on the pages found are not highlighted, requiring a "search on this page" to be performed (which seems to have a different syntax than the global search) to highlight them. Despite these quirks, the multiple tab support is a huge improvement over the MS implementation, and the cross-platform support should be useful to some people.
Copying and Pasting Filters
You can copy filters in the following ways:
- Copy all filters in a channel by selecting its Filters node and pressing Ctrl+Shift+C.
- Copy selected filters in a channel by selecting its Filters node and pressing Ctrl+C.
- Copy a single filter by selecting the filter itself and pressing Ctrl+C.
In combination with the filter paste feature, this is a quick way to add many filters to one or more channels. If you choose to copy selected filters of a channel, a dialog box pops up listing the filters in the channel, with a check box next to each one. You can then paste them into the same channel or a different channel of any configuration with Ctrl+V. When pasting filters to a destination channel, sometimes not all filters will be pasted. This can occur if e.g. you try to paste delay blocks, gain blocks or LPFs to a main channel, or if the paste operation would result in too many delay or gain blocks in a sub channel. If not all copied filters are pasted to the destination channel, a tabbed text view is created on the right, listing the filters that weren't pasted and why. This is to show what happened without a dialog box getting in the way. The information in this text view is temporary and not saved with the project. You can also copy filters to another project if desired. To do this, just copy the filters you want, close the project, then open a different one. The filters are still in the clipboard, and so they can be pasted into the newly-loaded project.
The copy and paste commands appear on the edit submenu of the main menu, on context menus in the Config View, and on toolbar buttons. You can see whether the copy or paste commands are available by looking at the appearance of the copy and paste toolbar buttons. If the copy or paste command is enabled (cursor is on an appropriate node), the buttons will show in color. If not, they will display in gray scale. The logic of whether filter paste is enabled is more complex than it first appears. If you have copied e.g. only a delay and a gain block to the clipboard, and you move the cursor to a main channel filter node with the intent of pasting the filters to the main channel, the paste command will be shown as disabled, as neither delay nor gain blocks are compatible to paste into a main channel. To paste the filters using the Ctrl+V keyboard shortcut, be sure the focus is on the Filters node of the desired destination channel in the Config View and not one of the tabbed views on the right.
Specifying Filter Parameters and Limits
Make sure you understand the two ways of specifying filter parameter limits, and how to use the filter Properties Window and Application Options dialog to perform those tasks. See Parameter Locking for how to prevent the optimizer from changing the parameters you've specified.
Avoid Excessive Sub Delays
The introduction of the miniDSP 2x4 HD version has given users the ability to set much larger sub delays than were possible with the non-HD 2x4 versions. Depending on the plug-in used, the non-HD 2x4 hardware is capable of a maximum delay of either 7.2 msec or 7.5 msec. In an anechoic environment at a typical room temperature, these numbers correspond to distances of 8.11 feet and 8.45 feet respectively. These distance numbers can be interpreted as the maximum difference in distance between the closest and most distant sub at a given listening position (usually taken as the MLP) that the hardware can compensate for in an anechoic environment. This adjustment range may not be enough for all applications. On the other hand, the miniDSP 2x4 HD version has a maximum delay of 80 msec, which corresponds to a distance of 90.08 feet. This is larger than would ever be needed in even the most extreme home theater setups. For this reason, the maximum allowable delay of the MSO delay blocks should be much less than this 80 msec value.
A good starting point for figuring out what the maximum allowable delay should be is to use the procedure in AustinJerry's guide called "Using MiniDSP 2x4 to Time-Align Multiple Subs on One Channel before Room Correction". Suppose you were to calculate the maximum delay needed using his approach, and the number turned out to be 10 msec. MSO adjusts delay based on frequency-domain considerations which are affected by room modes (not taken into account when using the anechoic assumption in the above mentioned document). Therefore, it's possible that the actual delay needed by MSO could be somewhat larger than that predicted using the anechoic assumption. In the case of the hypothetical 10 msec number calculated above, even if you double it, which might be more than needed, the resulting 20 msec maximum delay is still far, far less than the maximum 80 msec value of the miniDSP 2x4 HD. It should be emphasized that the use of MSO is intended to be a supplement to, not a substitute for, common sense. Using excessive maximum delay values can degrade the time-domain performance of the system, and also possibly cause MSO to get stuck on poor solutions, especially near the high end of the subs' frequency range.
Example 1: Setting Delays When Using Near-Field and Far-Field Subs Together
When adding delay blocks to subwoofer channels in MSO, the software will by default make the delay value limits for each of the delay blocks equal, as specified in Tools, Application Options, Filters, Delay. For systems using a combination of near-field and far-field subs, having equal delay limits for all subs may not be an appropriate choice. With such a setup, you'll want to experiment with setting the delay of the near-field subs to a larger value than the far-field ones, to nominally match the times of arrival of the early sounds from each of the subs.
In more conventional setups for which all the subs are in the far field, delays are used in MSO in order to manipulate room modes to get consistent seat-to-seat frequency response. But for near-field subs, the room modes have a much reduced effect on frequency response compared to the far-field case. The "time alignment" technique makes the implicit assumption of anechoic behavior, which breaks down for far-field subs. Near-field subs more closely approximate the anechoic case, making the assumptions underlying the "time alignment" procedure more accurate. Thus it's worth experimenting with the "time alignment" technique when using near-field subs.
The traditional solution to the "time alignment" problem has been to calculate the delay for each sub based on the speed of sound and the relative distance of each sub to the main listening position (MLP). The most distant sub to the MLP is assigned a delay of zero, and the other delays are calculated based on the difference in distance to the MLP between that of the most distant sub and each of the others. This calculation is best described in AustinJerry's guide titled "Using MiniDSP 2x4 to Time-Align Multiple Subs on One Channel before Room Correction". The title of the relevant subtopic is "Set Output Delays". This topic gives explicit instructions for how to compute each delay. After setting the delays according to the calculation, you may want to only allow the optimizer to make small delay adjustments, say a few msec, from the calculated delay values. Or, you might want to completely disallow the optimizer from changing the delays from these calculated values. In the latter case, you would use the Parameter Locking feature.
Example 2: Setting the Center Frequency Range for PEQ Filters
Once you have set the minimum and maximum optimization frequencies fmin and fmax respectively using Tools, Optimization Options, Criteria, you'll need to set the allowable center frequency range of the PEQ filters so the optimizer can do its job over the full frequency range you've specified.
For subwoofers, set the minimum PEQ center frequency to the minimum optimization frequency fmin as specified above. Set the maximum PEQ center frequency to twice the highest anticipated crossover frequency or 200 Hz, whichever is smaller.
For main speakers, also set the maximum PEQ center frequency to twice the highest anticipated crossover frequency or 200 Hz, whichever is smaller. Set the minimum PEQ center frequency to one-half the lowest anticipated crossover frequency or 20 Hz, whichever is larger.
Normalizing and Rearranging Gains and Delays
The need for normalization and rearrangement of gains and delays stems from some restrictions on gains and delays documented in the "Adding Filters, Delays and Gains" topic of this reference manual. These restrictions are needed to prevent convergence problems with the optimizer. In the case of the different gain arrangements shown in Figure 4 and Figure 6 of that topic, and repeated below for clarity, it can be shown that these two alternatives can be made equivalent, meaning that they both have the same gains from the input to each output.
But there is more than just equivalence to be considered. Most add-on DSP devices don't allow individual channel gains to be greater than 0 dB, yet a net gain may still be needed. This net gain can be provided by analog circuitry in the AVR or pre-pro. In that case, the shared gain block in the figure above represents the AVR's gain trim value (relative to what it was when the measurement was taken). We want all the positive gain (in dB) to be lumped into this shared gain block, and each individual channel should have only attenuation or no gain block at all. This transformation is known in MSO as normalization. It might seem at first that one should just set up an optimization of N subs with a shared gain that's allowed to have a positive value, and N - 1 individual gain blocks whose gain in dB must be negative or zero. But there is still a problem. Which channel should be chosen to have no gain block? There is generally only one optimum choice, so the optimmizer should ideally figure that out for you. The solution of this dilemma is to initially set up the optimization with the "all gains in individual channels" arrangement above, allowing all gain blocks to have both positive and negative values, then perform the optimization. After the optimization is complete, the Normalize Gains command can be run. This will transform the "all gains in individual channels" arrangement above to that of the shared gain arrangement, with all the per-channel gain blocks being attenuators. This normalization process also involves a rearrangement, as one individual gain block ends up being removed from its individual channel, altered in value, and moved into the shared gain block position. The distinction between normalization and rearrangement is discussed in the next sections.
Prior to version 1.41 of MSO, there were strict restrictions on when the Normalize Gains, Normalize Delays, Rearrange Gains and Rearrange Delays commands could be run, resulting in the menu items for the commands often being disabled. Most of these restrictions have now been lifted. Lifting the restrictions required allowing MSO to add one or more gain or delay blocks when necessary to perform a normalize or rearrange operation. By default, when adding gain or delay blocks is necessary, MSO will prompt you with a dialog box, allowing you to back out of the operation. There is an option to disable this behavior, accessed from the main menu via Tools, Application Options, User Interface, Show me a dialog prompt when Normalize/Rearrange Gains/Delays needs to add gain/delay blocks. When this option is unchecked, MSO will always add the necessary gain or delay blocks without prompting.
To perform these operations, go to the Config View and locate the Subwoofer Channels node of the configuration you wish to modify, then right-click and choose Normalize Gains, Normalize Delays, Rearrange Gains or Rearrange Delays from the context menu.
Normalizing Gains and Delays
The Normalize Gains and Normalize Delays commands ensure that all per-sub gain blocks have an attenuation in dB that is positive or zero, and that all per-sub delay blocks have a delay that is positive or zero respectively. They do so by lumping all positive gains into a shared gain block and all negative delays into a shared delay block. A negative delay in a shared delay block corresponds to a required increase of AVR sub distance relative to its value when the measurements were performed. You can determine the amount of this distance change if the option System uses AVR or pre-pro with sub out is checked in the Hardware, Filter Reports property sheet of the Application Options dialog. To determine the required change of AVR sub distance setting corresponding to this shared delay, open up a filter report for the configuration in question and scroll down to the end. You'll see it under Final gain and delay/distance settings. See Supplying Information About Your AVR in the tutorial.
For sub-only configurations, no shared delay block is allowed, but Normalize Delays still works by adding the appropriate and identical delay to each sub channel until all delays are positive or zero. This can be done because only the subs' relative delays matter in a sub-only configuration. These commands can result in one of the per-sub gain or delay blocks shifting from one channel to another, so in connection with allowing negative per-sub delays or positive per-sub gains, they can be used to determine which individual sub channel should end up with no delay block, and which should have no gain block. This is done by running an optimization, then performing the Normalize Delays and Normalize Gains commands afterwards.
Rearranging Gains and Delays
The purpose of the Rearrange Gains and Rearrange Delays commands is to switch back and forth between gain arrangements or delay arrangements like the "All Gains in Individual Channels" and "Shared Gain" arrangements pictured in the above two diagrams. Beginning with version 1.41 of MSO, these "rearrange" commands will typically be used less often than in previous versions. That's because the "normalize" commands now internally perform a "rearrange" when necessary. The difference between "normalize" and "rearrange" is that the final state for the "normalize" commands is always a normalized arrangement, while "rearrange" toggles back and forth between normalized and non-normalized arrangements.
Double-Checking Parameter Value Limits
When rearranging or normalizing gains or delays, having equivalent arrangements of gain or delay blocks sometimes requires that the new computed value for one or more gain or delay parameters exceeds the limits you originally set for the parameter. In this case, MSO will widen the minimum or maximum limit for the affected parameter just enough to allow the relevant limit not to be exceeded. When this occurs, by default MSO will notify you of this change in a tabbed text window, showing the reference designator (e.g. FL3, FL5), and the old and new values of the parameter limit. This text display can be disabled using Tools, Application Options, User Interface, Show me an information message when min/max gain/delay limits are changed in Normalize/Rearrange Gains/Delays, though it's not recommended that you do so. It's important to check when MSO makes these changes to ensure the limits are still compatible with your hardware. Usually, the allowable delay or gain range should be made wider for shared delay and gain blocks than for per-sub ones.
Saving Graph Traces as FRD Files
You can export any trace to FRD format for import into other programs. To do so, perform the following steps:
- In the Data View, go to the desired graph and expand the tree node as necessary to show the nodes that represent individual traces.
- Right-click on the trace node, and choose "Save Trace as Text" from the context menu. See the figure below.
How Many Subs are Needed?
Earlier versions of the MSO documentation suggested that three or more subwoofers might be needed to get significant improvements with MSO. This appears to have been an overly cautious suggestion. The AVSForum user genesplitter has posted his MSO results with a two-sub system at five listening positions. I've summarized them for clarity below.
First, the data before using MSO:
Next, the data after using MSO:
Substantial improvements have been made at all listening positions. Based on this new information, usage of MSO can be recommended for systems having two or more subwoofers.