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. For instance, if you wish to find information about negative delay values and how to deal with them, click the Search tab of the help file reader and enter "negative delay" (including the quotes). The presence of the quotes indicates that you wish to search for the phrase, not just the individual words. If you were to enter that phrase without the quotes in the search box, you'd get matches on "negative" and "delay" by themselves in addition to the desired whole phrase. That's far less useful than matching only the exact phrase.
Search syntax includes not only searching for phrases as mentioned above, but also 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 is also available as KchmViewer Portable. 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 to highlight them. This latter search unfortunately seems to have a different syntax than the global search. 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. Another benefit is that it launches external links in the default web browser, which prevents errors that occur in the MS CHM viewer with some of the links in this document (such as forum links).
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+C.
- Copy selected filters of a channel by selecting its Filters node and pressing Ctrl+Shift+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 by using 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, 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.
For additional information about copying and pasting filters, see the Adding Multiple Filters Using Copy and Paste section of the reference manual.
The Different Methods of Specifying Filter Parameter Values and Limits
It's useful to understand the different methods MSO makes available to you to specify filter parameter values and their allowable limits. Each one is applicable under different circumstances. Some of these methods require a pre-existing filter whose parameter properties need adjustment, while another affects only filters that have yet to be created. Some methods only affect allowable parameter limits without affecting parameter values, while another does the exact opposite, and yet another allows specifying both parameter values and their limits.
These methods are summarized below.
- You can choose Tools, Application Options, Filter Parameter Defaults from the main menu to specify the default parameter limits of newly-created filters.
- You can select an existing filter in the Config View and alter its parameter values and limits in the Properties Window on the right side of the main window.
- Using the PEQ Parameter Limits property page of the Optimization Options property sheet, you can specify the allowable parameter limits of all pre-existing PEQs of a given configuration.
- By choosing Config, Reset All Filter Parameter Values from the main menu, you can reset all the filter parameter values of a configuration back to their defaults.
Using Application Options to Set Default Filter Parameter Limits
You can specify the default filter parameter limits for a large variety of filter types by choosing Tools, Application Options, Filter Parameter Defaults from the main menu. The Parametric EQ property page of this property sheet is shown below.
Each category of filter has its own property page for setting its allowable parameter value limits. The purpose of these property pages is primarily so that when you create new filters using a context menu, or when MSO creates them for you in the Configuration Wizard, MSO will be prevented from creating filters whose parameter limits are outside what the hardware allows. This is best illustrated by a concrete example.
Suppose you are using a Behringer DSP amplifier. These amplifiers support PEQ filters (among other filter types). The filter parameter values must be entered into their software for each filter individually. Their software limits the maximum allowable Q value of PEQ filters to 10. If you're using one of these Behringer amplifiers, you should choose Tools, Application Options, Filter Parameter Defaults, Parametric EQ from the main menu to set the maximum allowable Q value to 10 before running the Configuration Wizard. Then, when you run the Configuration Wizard, the parameter value limits of the PEQs that MSO creates for you will be compatible with the Behringer amplifier.
Since the filter parameter values of miniDSP hardware are most conveniently specified by using biquad file import, the Tools, Application Options, Filter Parameter Defaults property sheet will seldom be used with such devices. Since specifying biquad coefficients allows for a huge variety of filter types and their parameter values, there isn't any real problem with MSO creating filters that can't be implemented by the miniDSP devices. However, there is a related usage of these property pages that is still applicable: preventing MSO from creating filters whose parameter values are simply not realistic. For instance, the miniDSP 2x4 HD units have a range of allowable delay values that extends to 80 msec. This corresponds to a distance of about 90 feet. This is clearly excessive, so it makes sense to limit the delay to a more sensible range using this property sheet.
Note that the filter settings of the Application Options, Filter Parameter Defaults property pages change only the default filter parameter limits for newly-created filters. This property sheet does not affect parameter limits of existing filters, nor can it be used to specify default filter parameter values.
Modifying Individual Filter Parameter Values and Limits Using the Properties Window
When a filter is selected in the Config View, the Properties Window on the right side of the main window will show information about the filter, its parameter values, and the upper and lower limits of permissible values of each parameter. This is illustrated below.
The first group of properties is Filter Information. You can't alter any of the Filter Information values as their purpose is just to identify the filter, its type, and other information about it. Below Filter Information are the parameters, their names, values, and the upper and lower limits of those values. Only the information in the right column can be changed. You can change the values themselves in the right column by editing them as you would in a spreadsheet. In addition, when you click in the right column of the Value field of a parameter, a spin control with up and down arrows appears, allowing you to tune the value by pressing either of these two arrows.
The Optimization allowed field controls whether the optimizer is permitted to alter the value of the parameter. If set to False, the parameter will retain the value set in the Properties window and it won't be changed by the optimizer. If all the parameters of a filter have their Optimization allowed property set to False, the filter icon in the Config View will be a gray color, indicating that the optimizer can have no effect on the filter at all. Only manual changes via the Properties window are allowed for such filters.
Setting Parameter Limits For Groups of PEQs of a Configuration
New since MSO version 1.1.14 is the ability to set parameter limits for groups of PEQs of a configuration. For subs, this is accomplished using the Sub General PEQ Limits and Sub Input PEQ Limits property pages of the Optimization Options property sheet. The Sub General PEQ Limits property page is shown below.
The other important property page used to set sub PEQ parameter limits is the Sub Input PEQ Limits property page. This page is shown below.
There are multiple methods you can choose for setting groups of PEQ parameter limits. These are described in detail in the Property Pages for Setting PEQ Parameter Limits reference material and won't be discussed further here.
Resetting All Filter Parameter Values of a Configuration to Their Defaults
Sometimes after performing some experiments with a given configuration in MSO, you end up changing things like the frequency range of optimization or the number of PEQs per sub. After making the changes, it's common to want to re-run the optimization starting from a "clean slate", with e.g. all PEQs set to a flat response, all delays set to zero and so on. Starting with version 1.1.0 of MSO, there is a command that does this. From the main menu, choose Config, Reset All Filter Parameter Values. Then you can re-run the optimization starting from a fresh state.
This command is also useful when you want to compare your optimized data to the baseline data before optimization. You can run the Configuration Wizard to create your first configuration with the desired number of PEQs per channel. Then, after optimizing this configuration, you can clone it, calling the clone Baseline, then perform the Config, Reset All Filter Parameter Values on the clone so that its data reflects the baseline condition. This is discussed in the tutorial.
Setting Delay and PEQ Parameters: Guidelines and Examples
The following sections contain some guidelines for avoiding excessive sub delays and setting the limits of PEQ center frequencies.
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 so-called "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 reasonable. 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. Guidelines for setting the PEQ center frequency range are as follows.
For sub-only configurations or subs+mains configurations for which only the subs use PEQs:
- Set the minimum and maximum PEQ center frequencies to be the same as the minimum and maximum optimization frequencies respectively.
For subs+mains configurations for which both the subs and mains use PEQs:
- For subwoofers, set the minimum PEQ center frequency to the minimum optimization frequency. Set the maximum PEQ center frequency to twice the highest anticipated crossover frequency or 200 Hz, whichever is smaller.
- For main speakers, set the maximum PEQ center frequency to the maximum optimization frequency. Set the minimum PEQ center frequency to one-half the lowest anticipated crossover frequency.
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 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. See the filter report page of this reference manual for an illustration of this 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.
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 one delay is zero and the rest are positive. 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.
Using Normalize Delays to Constrain Individual Sub Delays
It's sometimes helpful to think of the first optimization you perform as being a kind of "dry run" to determine which individual sub should end up with no delay block. To do this, perform the optimization, then perform a Normalize Delays command. This will force all individual sub delays to be positive or zero, and in the case of subs+mains configurations, introduce a shared sub delay. If you are using a non-HD version of the miniDSP 2x4 processor, you may find that one or more of these individual delays exceeds the 7.5 msec limit of the 2x4 device. If this happens, set the limits of these individual sub delays to the range of 0 to 7.5 msec and re-run the optimization.
Using Normalize Delays to Constrain AVR Sub Distance With Subs+Mains Configurations
When using subs+mains configurations, it's important to constrain the delay values in MSO's delay blocks so that MSO's final computed change of sub distance is within the AVR's sub distance range. You can use the Normalize Delays command to accomplish this.
After performing the Normalize Delays command, check the delay value limits of the individual sub delays. If you are using a non-HD version of the miniDSP 2x4, constrain these individual delays to be within the allowable limits of the device per the topic Using Normalize Delays to Constrain Individual Sub Delays above.
Next, you'll need to constrain the shared delay block so that its limits, when converted to distance, are within the allowable range of AVR sub distance values. This is best explained by an example.
Suppose you have performed your measurements with your AVR's sub distance set to 10 feet, and want to allow the final sub distance to range from, say, 0 feet to 18 feet. That represents a maximum AVR distance decrease of 10 feet and a maximum AVR distance increase of 8 feet. Below are the relevant relationships between MSO shared sub delay values and AVR sub distance values.
- Decrease AVR distance = increase delay. This implies a positive shared sub delay in MSO.
- Increase AVR distance = decrease delay. This implies a negative shared sub delay in MSO.
- Maximum AVR distance decrease for this example is 10 feet.
- Maximum AVR distance increase for this example is 8 feet.
Next, convert the distance decrease and distance increase to the equivalent millisecond values using 1126 feet/second as the speed of sound.
Decrease of 10 feet: delay_msec = 1000 * 10 / 1126 = +8.88 msec
Increase of 8 feet: delay_msec = -1000 * 8 / 1126 = -7.10 msec
This means our shared delay block should have an allowable delay range from -7.10 msec to 8.88 msec. After setting these new limits, re-run the optimization. Notice that if you perform your measurements with the AVR sub distance set to zero, only negative delays will be allowed for the shared sub delay block.
After completing an optimization, you'll get information from the filter report that tells you how much to change the sub distance. Make sure not to change distances for any speakers other than the sub.
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.