Multi-Sub Optimizer Revision History
Version 2.1.1: Released 2024-12-04
-
Bug Fixes:
-
After launching, then closing the Multiple-Configuration Performance Metrics Dialog, any graphs in tabbed windows that were the same as the graphs in the Multiple-Configuration Performance Metrics Dialog would fail to update. The failure to update would continue until either the graphs or the project itself were closed, then reopened.
-
Many dialogs had clipped label text on displays with resolution lower than 1080p.
Version 2.1.0: Released 2024-09-11
-
New Features:
-
The Multiple-Configuration Performance Metrics Dialog has been redesigned and is now documented. New features include the following:
-
The dialog's configuration list is now a multi-column type, with three added columns:
-
the seat-to-seat variation error (STSV) in dB.
-
the MLP flatness error in dB.
-
the SPL penalty in dB.
-
The configuration list can be sorted by any of the above three criteria as well as the configuration name.
-
The ability to browse Configuration Notes by scrolling through the configuration list.
-
A new embedded property sheet with three property pages.
-
A Configuration Metrics property page identical to the prior one.
-
A Calculation Options property page that allows setting the calculation frequency limits and other options for all configurations at once, or choosing that they be specified individually.
-
A Configuration Graphs property page that allows you to browse the performance graphs associated with the configurations by scrolling through the configuration list.
-
The dialog is resizable.
-
In order to support graph browsing in the Multiple-Configuration Performance Metrics Dialog, the Associate Graphs to Configurations Dialog has been added, allowing each configuration to be associated with a graph to be displayed.
-
The associations established in this dialog are used for both the new graph browsing feature, and for optimizing multiple configurations.
-
To minimize the need to invoke this dialog, an automatic assignment algorithm is run without user intervention whenever the associations of configurations and graphs are needed. You only need to launch the dialog when you want to display a graph that's different from the one chosen by the algorithm.
-
Bug Fixes:
-
The old Multiple-Configuration Performance Metrics Dialog limited the number of configurations that could be displayed, caused by an internal Windows limitation on the maximum number of property pages that could be added to a property sheet. The new dialog is not subject to this limitation.
-
When scrolling through the configuration list in the old Multiple-Configuration Performance Metrics Dialog using the up and down arrow keys, each time the selection was made, the focus would leave the list and jump to the property page. The new dialog keeps the keyboard focus in the configuration list, allowing efficient browsing of configuration errors, notes and graphs.
Version 2.0.3: Released 2024-07-19
-
Bug fix: Both the standalone and multi-stage SPL optimization incorrectly allowed the usage of some filter types that would handicap the optimization. These are filters that cannot be forced to a frequency-independent gain of 0 dB by the pre-optimization code.
-
For standalone SPL optimization, such filters prevent the optimized responses from approaching the natural responses, and prevent the lowest possible SPL penalty from being achieved. They are now disallowed, both as shared sub filters and as output-channel filters.
-
For multi-stage optimization, such filters prevent the lowest possible SPL penalty from being achieved. They are now allowed as shared sub filters but disallowed as output-channel filters.
-
When such filters are found, optimization is now disallowed and an error message describing the problem is shown.
-
Since such filters sometimes need to be used (e.g. high-pass filters for DIY vented-box subs), a new article describing how to deal with this situation has been added to the Tech Topics section of the documentation.
-
Bug fix: When the user chose the optimization option to reset all parameters of all filters to their defaults before optimization, if the user had adjusted the parameter limits so as not to include the default parameter value, the limits were changed without the user knowing it. Now the parameter reset code sets the parameter value as close as it can to the default without changing the parameter limits.
-
In addition to the new article discussing how to deal with filter errors as described above, there is a second new article describing how to use distortion matching to maximize SPL with dissimilar subwoofers.
Version 2.0.2: Released 2024-06-24
-
Bug fix: When performing a Flatten MLP response using only shared (input) filters optimization on a subs+mains configuration when more than one main speaker channel was being used, the individual main speaker filter parameters were not being locked prior to optimizing.
Version 2.0.1: Released 2024-05-24
-
Added the option of retaining all graphs created during an optimization. It is on by default and can be toggled using Tools, Application Options, User Interface.
-
Temporarily put back the multi-configuration Performance Metrics dialog. It will remain undocumented but is available using the Ctrl+Shift+M shortcut key.
-
Bug fix:
-
Fixed a numerical precision error that caused false error messages on the PEQ Limits property pages of the Optimization Options property sheet under certain conditions.
Version 2.0.0: Released 2024-05-22
-
New Features
-
SPL maximization can be performed using phase adjustments to minimize SPL penalty.
-
Standalone MLP flatness optimization using (only) shared sub filters can be performed.
-
Minimization of seat-to-seat variation (STSV) and MLP flatness error with an SPL penalty constraint is now possible.
-
When combined with multiple-configuration optimization, a family of configurations with different compromises between STSV and SPL penalty can be generated.
-
The help documentation and web site have been almost entirely rewritten.
-
Tutorials have been removed and replaced by a shorter Getting Started guide.
-
Documentation for configuration creation without the Configuration Wizard has been moved to the Tech Topics section.
-
Multiple error types in the Status Window for optimization are now reported during optimization.
-
Optimization weighting factors now apply to:
-
Best flatness at all listening positions (as before)
-
Minimize STSV and MLP flatness errors (added)
-
Standalone SPL maximization (added)
-
Combined SPL maximization and STSV minimization (added)
-
The Configuration Metrics dialog has been modified.
-
Weighted versions of new performance parameters with weighting support are now reported.
-
New error types for SPL maximization-related errors are now shown.
-
When exporting error information to a file, the configuration name is now included in the exported file.
-
An initial suggestion for the file name, based on the configuration name, now appears in the File/Save dialog.
-
Configuration notes can be optionally included in the exported file.
-
When not using BEQ, the new miniDSP biquad export allows more MSO shared sub biquads than the input biquad capacity of the miniDSP.
-
For the miniDSP 2x4 HD, the sum of the number of MSO shared biquads and MSO per-sub biquads can be up to 28 in any combination (e.g. 16 shared biquads, 12 per-sub biquads).
-
Automatic measurement name association in the Configuration Wizard is now performed when possible.
-
The Configuration Wizard now has an option to add output all-pass filters for SPL maximization.
-
MSO now automatically manages configuration templates without the need for user intervention.
-
Only two configuration templates are allowed.
-
One sub-only configuration template
-
One subs+mains configuration template
-
Running the Configuration Wizard for the second and subsequent times will cause a configuration template to be detected, allowing you to skip almost all wizard pages.
-
Graphs can now be cloned.
-
"Natural response" trace option has been added to graphs.
-
Graph renaming when cloning configurations has been improved.
-
When renaming a configuration, graphs that only have traces referring to that configuration are automatically renamed if the configuration name appears in the graph name.
-
Optimization weighting can be toggled on and off with a checkbox without having to re-enter the weighting values.
-
The Optimization Options property sheet and its property pages are almost entirely new.
-
Optimization duration can now be specified in terms of an iteration count to get similar results with systems having different speed and maximum number of concurrent threads.
-
Different optimization durations can be specified for different optimization types.
-
For optimizing multiple configurations, if a graph needs to be opened when optimizing a given configuration, it is closed afterward, leaving the remaining graphs at completion identical to what they were before the optimization.
-
The optimizer now uses improved random number generation.
-
Keyboard shortcuts have been added.
-
Ctrl+Space toggles visibility of graph traces.
-
Alt+R optimizes a single configuration.
-
Alt+Shift+R optimizes multiple configurations.
-
Alt+S stops an optimization in progress.
-
Ctrl+M launches the Configuration Metrics dialog.
-
Filters with some, but not all parameters locked now show up in a light gray color in addition to the dark gray color used by filters with all parameters locked.
-
The maximum allowable HF shelving filter corner frequency and PEQ center frequency have been increased.
-
Input data files having comma or semicolon data separators are now accepted if the separators are followed by white space (as with REW).
-
CSV is still not supported (and will not be) due to the automatic detection of the use of commas as decimal separators.
-
Target curves are now only displayed over the optimization frequency range.
-
Bug Fixes
-
When canceling an optimization and automatic parameter reset is enabled, the configuration now properly reverts to its state before the reset.
-
The timer used for computing optimization elapsed time could overflow if the system had gone for 49.7 days without a reboot.
-
The timer has been replaced by one using 64-bit integers.
-
Project save and its toolbar button are only enabled when the project has been modified.
-
When no gain blocks were chosen in the Configuration Wizard, MSO failed to add a shared gain block.
-
Channel deletions that would cause an illegal number of delay or gain blocks in the remaining channels are disallowed and a warning issued, showing how to correct the problem.
-
When a configuration has configuration notes and an optimization is running, the Output Window no longer switches away from displaying the optimization errors when clicking on the configuration in the Config View.
-
Allow the hardware input biquad count limit to be zero in the Application Options property sheet.
-
This supports biquad export for hardware with no input filters.
-
The Graph Properties and Graph Trace Properties property sheets could be launched from the Data View for a graph not currently visible. This allowed making changes that couldn't be seen until the graph was displayed later.
-
When launching these property sheets from the Data View , the graph is shown first so the changes are always visible.
-
Extraneous AVR sub trim information from filter reports of sub-only configurations has been removed.
-
Removals
-
The legacy optimizer has been removed.
-
The Neglect the MLP target curve optimization option has been removed.
-
The Save Response as Target Curve command has been removed and replaced with saving graph traces as text.
-
The multi-graph property sheet has been removed due to a failure to launch when too many graphs are present.
-
When launching the Graph Properties property sheet from the main menu, a graph picker allows you to choose which graph is to be modified.
-
The multi-graph trace property sheet has been removed due to a failure to launch when too many graphs are present.
-
When launching the Graph Trace Properties property sheet from the main menu, a graph picker allows you to choose which graph is to be modified.
-
The multiple-configuration Optimization Options property sheet has been removed due to a failure to launch when there are too many configurations.
-
When launching the Optimization Options property sheet from the main menu, a configuration picker allows you to choose which configuration is to be modified.
-
The Configuration Metrics dialog for multiple configurations has been temporarily removed due to its limit on the number of configurations that can be displayed.
-
When launching this dialog using Ctrl+M, a configuration picker allows you to choose which configuration is to be analyzed.
-
This dialog will be replaced by a hand-coded one in a future MSO version.
Version 1.1.15.9: Released 2024-05-01
-
Adding a channel to a configuration with shared filters caused incorrect channel information in the shared filters.
-
This is now prevented.
-
Incorrect channel information in shared filters is now repaired when reading in the project.
Version 1.1.15.8: Released 2024-04-11
-
Fixed a data file parsing bug with multiple blank lines at the end of the file.
Version 1.1.15.7: Released 2023-09-03
-
Bug fix: When one of the General PEQ Limits or Input PEQ Limits property pages of the Optimization Options property sheet was visited and its How to set PEQ parameter limits modified, and its companion PEQ Limits property page was not visited, and the Optimization Options property sheet was then closed by pressing OK, the corresponding data of the two property pages would get out of sync.
-
Bug fix: When configuration errors were displayed as part of the pre-optimization error check, the configuration name wasn't being shown.
Version 1.1.15.6: Released 2023-08-08
-
Bug fix: When a data cursor was active, any change in Graph Properties that affected the relationship of horizontal pixels to x-axis data values would cause the data cursor to display data at the incorrect frequency until it was dragged with the mouse.
-
Bug fix: Switching between log and linear x-axis scaling in a graph with an active data cursor was hiding the data cursor.
-
Bug fix: Resizing a graph with an active data cursor was hiding the data cursor.
-
When possible, any of the above operations now result in the data cursor continuing to display data at its current frequency, moving it on the screen if necessary to do so.
-
When a data cursor is active, if the graph's x-axis limits are changed so that the data cursor's frequency is out of the new x-axis data range, the data cursor stays at its current screen location, and its frequency and data are changed to new values.
-
Bug fix: Trying to cancel the Graph Properties property sheet using the Esc key when the default General page was active didn't work, as the default Graph Title edit control was "stealing" Esc keystrokes.
-
Bug fix: When using Ctrl+J to activate the data cursor, the data cursor wasn't activating if the mouse cursor wasn't over the graph.
-
You can now launch the Graph Properties property sheet with the Ctrl+G hotkey and the Trace Properties property sheet with the Ctrl+T hotkey.
Version 1.1.15.5: Released 2023-08-04
-
Bug fix: A crash sometimes occurred when adding traces to a graph with an active data cursor.
-
Bug fix: Changing the x axis of a graph between linear and log while the cursor was active was clearing the cursor but not its displayed data.
Version 1.1.15.4: Released 2023-08-02
-
Bug fix: Use CSV as the default file extension for QSC Q-SYS biquad file export.
Version 1.1.15.3: Released 2023-07-22
-
Added support for exporting biquad text for import into QSC Q-SYS software. Importing is done using the Q-SYS IIR Custom Filter Component.
-
Changed the program icon. You may need to update the icon manually due to the Windows icon cache.
Version 1.1.15.2: Released 2023-04-09
-
Bug fix: The Configuration Wizard and the New Configuration From Template dialog allowed an empty name to be entered for a new configuration. Attempting to fix the empty name in the Config View caused a lockup.
-
Empty configuration names are no longer accepted in the Configuration Wizard and the New Configuration From Template dialog, preventing this condition.
-
The Config View has been modified so that the lockup doesn't occur when editing an empty configuration name. This might occur from a project with an empty configuration name having been created with an earlier version of MSO, then saved and later opened.
Version 1.1.15.1: Released 2023-03-26
-
Fixed two bugs that occurred when the start frequency of a graph was set to zero:
-
When the frequency axis was logarithmic, MSO would go into an infinite loop and lock up.
-
When the frequency axis was linear, traces representing channel frequency responses would not be shown.
Version 1.1.15: Released 2023-03-07
-
Added the ability to plot just the output path of a filter channel's frequency response or just the input path in addition to the usual entire response from input to output. See the topic for the Filter Channels property page of the Graph Properties property sheet for more information.
-
The frequency range for computing the constraints for maximum PEQ boost and cut is now separate from the optimization frequency range.
Version 1.1.14: Released 2023-02-24
-
Added the ability to separately specify constraints for maximum allowed cumulative PEQ boost and cut for the input-only and output-only DSP signal paths.
-
The PEQ Parameter Limits and Constraints property pages of the Optimization Options property sheet have been replaced by two new property pages.
-
The Sub General PEQ Limits property page allow you two choices for the method of setting PEQ parameter limits.
-
One option allows you to specify parameter limits of all sub PEQs at once.
-
The other option allows you to specify parameter limits of all sub PEQs in only the DSP output path.
-
The Sub Input PEQ Limits property page allows you to specify parameter limits of all sub PEQs in only the DSP input path.
-
For subs+mains configurations, there are two additional PEQ Limits property pages for the main speakers, analogous to those for the subwoofer signal path. Instead of distinguishing between input and output DSP signal paths, they distinguish between PEQs shared among all main speakers and PEQs that are different for each main speaker.
-
The Configuration Properties page of the Configuration Wizard now allows you to add input PEQs to the new configuration. If you do so, MSO will take advantage of the new features for specifying separate PEQ boost and cut limits in the input and output paths as follows:
-
The input PEQs will be assigned a maximum boost of 0.0 dB and a maximum cut of 28.0 dB.
-
The cumulative input PEQ boost and cut will be limited to 0.0 dB and 29.0 dB respectively.
-
The output PEQs will be assigned a maximum boost of 0.0 dB and a maximum cut of 6.0 dB.
-
The cumulative output PEQ boost and cut will be limited to 0.0 dB and 6.2 dB respectively.
-
These settings will allow knocking down large response peaks while helping to prevent large differences in drive levels between the subs.
-
Identical functionality is provided in the Create Configuration From Template property sheet.
Version 1.1.13.4: Released 2023-02-15
-
Bug fix: when editing text, the Delete key did not work when no text was selected. This showed up in the following scenarios:
-
Editing Config Notes and Project Notes in tabbed windows.
-
Editing text labels in the Config View and Data View.
-
Editing filter parameter values and limits in the Properties Window.
Version 1.1.13.3: Released 2023-02-02
-
The shortcut keys Ctrl+C, Ctrl+X, Del, Ctrl+A and Ctrl+V weren't working in the Properties window. These can now be used just like any other edit control.
-
The status of these edit commands is now correctly reflected in the Cut, Copy and Paste buttons of the toolbar. This applies to the Properties window, and now also to the Config View and Data View windows when editing tree view labels.
-
You can now use the F2 key when editing filter properties in the Properties window. A useful data entry sequence is listed below.
-
Edit a property of a filter parameter by first clicking on it with the mouse.
-
Press Enter to accept the value.
-
Use the Up Arrow or Down Arrow keys to move to the previous or next property respectively.
-
Press F2 or Tab to activate the edit control for the property.
-
Repeat as necessary.
-
Data entry error checking in the Properties window has been made more robust.
Version 1.1.13.2: Released 2023-01-27
-
The Show Data Cursor command for graphs can now be invoked with the keyboard shortcut Ctrl+J.
-
The mouse cursor must be over the graph's data area for this keyboard shortcut to take effect.
-
The Hide Data Cursor command for graphs is now assigned to the keyboard shortcut Ctrl+H.
-
The Undo Zoom/Pan command for graphs is now assigned to the Ctrl+Z keyboard shortcut.
-
Bug fix: Additional cases of temporary reversion of graph manual dB/div to auto mode on left mouse click have been found and fixed.
-
Bug fix: Graphs would only zoom when the zoom rectangle was drawn from top left to bottom right.
-
Zooming in the opposite direction would cause an existing zoom to be undone.
Version 1.1.13.1: Released 2023-01-24
-
Bug fix: Certain combinations of mouse clicks on a graph before optimization would cause the graph's left axis to temporarily revert to auto division mode when the optimization was run.
Version 1.1.13: Released 2023-01-22
-
Feature additions:
-
When saving and restoring graphs and other MDI child windows, window order is now preserved and the previously active window is restored.
-
There is now an "old school" Window menu that allows choosing the active MDI child window and other operations.
-
You can now switch to the next or previous MDI child windows using the standard Ctrl+Tab and Ctrl+Shift+Tab shortcuts respectively, or by using the new Window menu.
-
A new Windows dialog can now be invoked from the Window menu or with Ctrl+W. It has flexible methods for reordering the MDI child windows. It also provides for closing multiple windows at once and choosing the active window. See the new Window Navigation documentation for details.
-
Bug fixes:
-
When a graph displaying data being optimized contained only phase traces, the phase traces weren't updated until after the optimization was complete.
-
The Config View would lose focus when the tab control of the output window was automatically switched to display the Config Notes.
-
Adding an empty configuration to the Config View from the main menu is now only allowed when the Config View is visible.
-
The Windows Explorer shell would sometimes get stuck in an unfocused state after closing MSO with certain combinations of MDI child windows open.
-
Projects that were already open would unnecessarily reload when chosen from the "most recently used" list in the File menu.
-
A facility that I wasn't previously aware of, which allowed MDI child windows to be docked to one another, has been disabled.
Version 1.1.12.3: Released 2022-12-29
-
Bug fix: A bug in command routing was causing incorrect enabling and disabling of filter copy and paste commands in the Config View.
Version 1.1.12.2: Released 2022-12-28
-
Bug fix: Fixed a crash when right-clicking on a graph.
Version 1.1.12.1: Released 2022-12-26
-
Bug fix: When resetting filters to their default parameter values before optimizing, MSO was also resetting locked filter parameters. The filter parameter reset now leaves locked filter parameters alone.
-
Bug fix: A bug occurred after setting up a configuration to use the "neglect target curve" optimization option. If you later added a filter type that made that option disallowed, the dialog controls to remove the option became disabled, making it necessary to remove the added filters to disable the option.
Version 1.1.12: Released 2022-12-23
Version 1.1.11: Released 2022-09-30
-
A new Configuration Notes feature has been added.
-
For each configuration, you can add free-form text using a simple built-in text editor.
-
You can browse configuration notes. As you select different configurations in the Config View, a Config Notes tab in the Output Window will be activated, showing the notes for the currently selected configuration.
-
The "polite mode" for reducing the number of threads used in an optimization has been replaced. On the Data property page of the Application Options property sheet, you now have two ways of specifying the number of threads to be used for an optimization.
-
Use the maximum number of threads available will maximize CPU thread usage, up to a thread count of 32.
-
Use a custom number of threads allows you to specify how many threads to use, from 1 to the maximum number of concurrent threads supported by your CPU.
Version 1.1.10: Released 2022-08-06
-
Import of measurement text files has been sped up by a factor of 20.
-
Detection of unintended binary data in imported measurement files has been made more robust.
-
The help system has been reworked.
-
All non-trivial dialog boxes and property pages now have a help button. When it's pressed, or when F1 is pressed when the dialog is up, the help topic specific to that dialog or property page in the CHM help file is now launched.
-
Configuration Templates are now documented.
-
The Application Options property sheet has 21 property pages, of which only 1 was previously documented. All 21 property pages of this property sheet are now documented (here and here).
-
The Help submenu of the MSO main menu now has commands that take you to the FAQ, Measurements, and Tips and Tricks sections of the CHM help file directly.
-
The command on the Help submenu for navigation to the Contents help page has been removed, as that page is meant for web-based navigation. When browsing the CHM file, the Contents tree view should be used instead, as it has links to every HTML heading on every instructional page of the site.
-
The Contents help page has been reorganized to make web-based navigation to specific help topics easier.
Version 1.1.9.1: Released 2022-06-25
-
Set the maximum allowable number of threads back to 32. For some currently unknown reason, this results in more efficient CPU usage with processors supporting 36 threads than allowing the full 36.
-
Swapped the order of controls on the Optimization Options, Constraints page to match the order on the Optimization Options, PEQ Parameter Limits page (maximum cut before maximum boost).
Version 1.1.9: Released 2022-06-23
-
Feature additions:
-
Added the Select Graphs to Show dialog for picking which graphs to show or hide as a group.
-
Added the ability to export biquad text for all channels of a configuration at once.
-
For normal export mode, the shared MSO sub filters (if any) are exported to a separate biquad text file for use in the miniDSP input filters.
-
For BEQ export mode, the shared MSO sub filters (if any) are replicated in each output channel to free up the input biquads for BEQ usage.
-
Reduced the minimum allowable PEQ center frequency to 4.0 Hz to accommodate users with modal peaks at very low frequencies.
-
Such low-frequency PEQs should be used only in the MSO shared sub channel.
-
If you don't want to use miniDSP input filters for this, export the biquads in BEQ mode to move them into the individual sub channels.
-
Optimization now supports up to 50 concurrent threads (but only if your CPU supports it).
-
The default optimization duration calculation is now based in part on the number of concurrent threads supported by your CPU.
-
Bug fixes:
-
Fixed a crash when accidentally importing binary data as measurement data or a target curve.
-
Fixed a crash when launching the Optimization Options dialog for a project with no imported measurements.
-
When exporting biquad text for main speaker channels, shared main channel filters are replicated in each individual main channel.
Version 1.1.8: Released 2022-06-10
-
Added the JRiver Export Wizard for exporting MSO configurations in a JSON text format for use with JRiver Media Center.
Version 1.1.7: Released 2022-05-31
-
Added Compensate Denon/Marantz distance/delay errors option to the Hardware property page of the Application Options property sheet.
-
See the documentation of The Denon/Marantz Distance/Delay Error Fiasco for a description of the option.
Version 1.1.6: Released 2022-05-05
-
Optimization now supports up to 32 concurrent threads if your CPU supports it.
-
The Configuration Wizard now uses a combination of shared and individual gain blocks when creating a new configuration.
-
A shared gain block with a gain range of 0±24 dB is used. This allows a wide range of reference levels to be chosen.
-
Individual gain blocks with a range of 0±6 dB are used. This prevents large differences in sub gain between channels.
Version 1.1.5: Released 2022-04-18
-
Got rid of cryptic default trace names for manually-added graph traces and made them human-readable.
-
Default trace names contain the relevant configuration, channel, and measurement or measurement group names from which they derive.
-
When a configuration, channel, measurement or measurement group is renamed in the Config View or Data View, all matching traces are renamed when possible.
Version 1.1.4.2: Released 2022-04-06
-
Bug fix: Graph Axes property page was checking validity of manual axis division increments even when the increments were set to auto.
-
Bug fix: Regression in 1.1.4 made it impossible to adjust column width of list views on Graph property pages.
Version 1.1.4.1: Released 2022-03-13
-
Bug fix: When editing text labels in the Config View and Data View, the keyboard shortcuts Ctrl+C, Ctrl+X, Ctrl+V and Ctrl+A now work as they should.
Version 1.1.4: Released 2022-03-11
-
For graphs, added the ability to manually specify the axis interval value for all axes.
-
For filter reports, added an "abbreviated mode" display, showing only a minimal set of parameters for each filter.
-
The minimum system requirement for the Windows version is now Vista.
Version 1.1.3: Released 2021-12-07
-
The core optimization code has been rewritten from scratch to produce lower errors in less time for the vast majority of projects.
-
The legacy optimizer can still be used if desired via an option on the Methods page of the Optimization Options dialog.
-
Added the Allow different SPLs at different listening positions option to the Methods page of the Optimization Options dialog to optionally disallow the responses at the different listening positions from being shifted in level from one another.
-
Various additions to the Configuration Performance Metrics dialog, including:
-
Added the ability to compute the overall metrics for the different states of the Allow different SPLs at different listening positions option.
-
The Metrics for Each Position list control can now be sorted in increasing or decreasing order by any column.
-
Results from the dialog can be saved to a text file.
-
If the configuration contains plot-only measurement groups, there are now three options you can use for the computations:
-
Calculate using only optimized positions
-
Calculate using both optimized and non-optimized positions
-
Calculate using only non-optimized positions
-
If present, plot-only measurement groups are highlighted in a light gray color in the Metrics for Each Position list control.
Version 1.1.2.1: Released 2021-10-17
-
Fixed a bug that caused a minor optimization slowdown when global optimization constraints were used.
Version 1.1.2: Released 2021-08-26
-
In the Configuration Wizard, when selecting measurements to associate with a combination of listening position and sub/speaker, selecting a measurement now removes it from the list of available measurements for all other combinations of listening position and sub/speaker. This makes using the Configuration Wizard easier for projects with a large number of measurements.
-
In filter reports for sub-only configurations, it's no longer necessary to enable the System uses AVR or pre-pro with sub out option in Tools, Application Options, Hardware to see the final sub delay and gain values.
-
In filter reports for subs+mains configurations, if you fail to select System uses AVR or pre-pro with sub out option in Tools, Application Options, Hardware, you'll get a warning that you need to enable it to see the final sub delay and gain values.
-
The filter reports now contain a summary of polarity inversions at the end of the report.
Version 1.1.1: Released 2021-08-14
-
Target curves for any configuration can now be plotted even if no target curve has been imported for that configuration. In this case, the target curve is a flat line.
-
You can choose to plot a target curve either with its value at the highest optimization frequency normalized to 0 dB, or with this value automatically shifted to the reference level. This choice is selected on the All Traces property page of the Graph Properties property sheet.
-
The default setting for projects created with versions prior to 1.1.1 is to normalize the target curve to 0 dB, while for 1.1.1 and later the default is to shift the target curve to the reference level. This avoids breaking existing projects.
-
When a target curve is shifted to the reference level, and Compute reference level automatically is specified in the optimization options, that target curve trace will be animated when running an optimization so that it tracks the reference level changes that occur.
-
An MLP or main trace must now always be specified in the optimization options regardless of the optimization mode.
-
The MLP combo box has been removed from the Configuration Performance Metrics dialog, as it always uses the MLP specified in the optimization options.
-
The documentation has been updated to track the above changes.
Version 1.1.0.2: Released 2021-08-05
-
Bug fix: When a custom frequency range was chosen in the Configuration Performance Metrics dialog and an imported target curve was used, the computed flatness errors were incorrect if the custom stop frequency was not equal to its default value.
Version 1.1.0.1: Released 2021-08-05
-
Bug fix: Text above edit controls on the PEQ Parameter Limits property page of the Optimization Options property sheet was being truncated on some displays.
Version 1.1.0: Released 2021-08-01
-
Program changes:
-
Added the Measurement Import Wizard and the Configuration Wizard to provide a faster and easier way to create projects and the configurations within them.
-
Added the PEQ Parameter Limits property page to the Optimization Options property sheet to allow for setting all PEQ parameter limits of a configuration in bulk.
-
The Optimization Options property sheet for a single configuration can now be launched by right-clicking on that configuration in the Config View and choosing Optimization Options.
-
Added a Reset All Filter Parameter Values command to reset all filters of a configuration to their default states. This is used when you want to start a new optimization from a fresh state.
-
Changed acceleration of spin button controls for tuning filter parameter values in the Properties window to make them more responsive.
-
A progress dialog is now shown during measurement importation.
-
Added some commands to the Help submenu of the main menu to jump to various subtopics directly.
-
Default file type for import is now .txt instead of .frd.
-
The Optimization Options property sheet for a single configuration has been changed from a tabbed type to one with a list on the left for choosing the property page.
-
Individual PEQs can now have up to 30 dB of center frequency attenuation if needed.
-
The Configuration Performance Metrics dialog has been updated to add custom frequency ranges for the error computations.
-
Filter reports now contain a summary of raw gain and delay block parameter values.
-
The default sampling frequency and maximum biquad count in the Application Options dialog have been changed to 96 kHz and 10 respectively (to match the miniDSP 2x4 HD).
-
Swapped hotkeys for Copy all Filters of this Channel and Copy Selected Filters. The former is now invoked with Ctrl+C and the latter with Ctrl+Shift+C.
-
Bug fixes:
-
Double-clicking on a .msop file in Windows File Explorer was launching MSO but not loading the project.
-
Fixed command enabling for the Save BEQ miniDSP Biquad Text for this Channel context menu so it no longer requires that Use crossover biquads if output biquad limit exceeded in the Application Options dialog be enabled.
-
Spin button controls for filter parameter values in the Properties window weren't always able to hit their limits when being held down.
-
Graph updates when tuning filter parameters in the Properties window were slow and choppy due to erroneous updates of the Data View and Config View.
-
Documentation changes:
-
The tutorial has been completely rewritten from scratch to describe the usage of the Measurement Import Wizard and the Configuration Wizard, and to emphasize practice over theory.
-
The reference manual has undergone a major rewrite and reorganization to incorporate the Measurement Import Wizard, the Configuration Wizard and other new features.
Version 1.0.47.4: Released 2021-05-18
-
The following bugs were present in earlier versions:
- MSO was registering its project file type under the cryptic name "multi-sub_opt.Document".
- MSO's uninstaller failed to unregister this file type.
-
The following fixes were implemented:
- MSO now registers its project file type as "MSO Project".
-
MSO's uninstaller now properly unregisters this file type and any other types created by previous versions of the program.
Version 1.0.47.3: Released 2021-04-04
-
Bug fix: When a command to save filters in text format was invoked from the Config entry of the main menu, the wrong window ended up with the focus after saving.
- Fixed a formatting bug in the filter reports.
- Minor optimization speedup.
Version 1.0.47.2: Released 2021-02-21
-
Bug fix: When a filter channel was deleted from a configuration, all filter channel traces matching that channel name were removed from all graphs, regardless of the configuration name associated with that filter channel trace. Fixed to require a match on both the trace's configuration name and channel name.
Version 1.0.47.1: Released 2021-02-06
-
Bug fix: Under certain conditions, spin controls for parameter values in Properties window could stick at their minimum or maximum values.
Version 1.0.47: Released 2021-02-03
-
Program changes include:
-
New commands to export to Equalizer APO format. This is for two-channel multi-sub setups. The commands take two forms:
- A command to export the entire configuration's filters (the preferred method)
- A command to export a single channel's filters.
-
A new command to export miniDSP biquad information for BEQ applications. This is specifically for MSO users who are using shared sub filters and BEQ. The shared sub filters are replicated identically in each miniDSP output channel while removing them from the input sub channel, giving an equivalent circuit. This requires that the option in Tools, Application Options, Hardware to allow the crossover biquads to be used be enabled. For the miniDSP 2x4 HD, this means that the total number of shared plus individual biquads per channel can be as large as 18 (10 in the output channel and 8 in the crossover). This can be any combination of shared- and individual-channel filters as long as the maximum is not exceeded. All input biquads are freed up, allowing BEQ to use them all if needed. It also avoids mixing of input biquads between MSO and BEQ, eliminating the need for biquad merging.
-
Improved ballistics of spin controls in the Properties window used for tuning filter parameter values.
-
Improved legibility of parameter name text in the Properties window.
-
In the filter reports, filters are now grouped by channel.
-
Low-shelf filters now show the "S" parameter value in the filter reports for use with JRiver Media Center if needed.
-
Documentation changes include:
Version 1.0.46: Released 2021-01-01
-
Program changes include:
-
A new option, Neglect the MLP target curve, has been added to the Optimization Options dialog. When optimizing in this mode, MSO only considers the seat-to-seat variation of the responses, without regard to the shape of the response curves. This is for two specific purposes.
-
Users who wish to maximize the output of their system by having identical subs and amplifiers, gain-matching the subs, and using only delays in the sub signal paths of their DSP hardware can get the smallest possible seat-to-seat response variation that using only delays allows. Then global EQ can be used in a separate step to shape the response curve.
-
Users experimenting with Dirac Live Bass Control-like setups using only delays, all-pass filters and attenuation for the subs can explore the efficacy of this technique.
This option came out of some recent experiments showing that when one attempts to do response curve shaping using only DSP elements whose magnitude response is independent of frequency, the seat-to-seat response variation is inevitably compromised by this attempt. Choosing this option requires that only DSP elements whose magnitude response is frequency-independent (delays, gain blocks, all-pass filters and inversion blocks) be used.
-
The functionality and appearance of the Configuration Performance Metrics dialog have been changed to better correspond to the latest error calculation methods.
-
Documentation changes include:
Version 1.0.45: Released 2020-08-04
- Changed the maximum allowable center frequency of all-pass filters to 1.5 kHz.
- Changed the default value for optimization duration to 30 minutes.
- The following documentation changes were made:
Version 1.0.44: Released 2020-07-31
- When the optimization mode was set to "as flat as possible" and the reference level was set to "fixed", only the MLP was using a fixed reference level. This has been changed so that under these conditions, all positions now use a fixed reference level. This change also removed a confusing requirement to specify the frequency range for computing the reference, even though a fixed reference level was specified.
- The optimization mode called "Best match of MLP with other listening positions" has been renamed to "Minimize seat-to-seat variations" and its error computation rewritten. See the error calculation section of the reference manual for details of the computation.
- Response weighting is now only permitted for "as flat as possible" mode, and is no longer used for "minimize seat-to-seat variations" mode.
- In the Configuration Performance Metrics dialog, the results from weighted computation in "minimize seat-to-seat variations" mode have been removed.
Version 1.0.43: Released 2020-06-10
- Fixed an infinite loop bug that occurred when all but zero or one solution guesses failed to satisfy global constraints.
Version 1.0.42: Released 2020-05-26
- Fixed a regression in 1.41 that caused global filter constraints to be disabled.
Version 1.0.41: Released 2020-05-21
- Modified Normalize Gains, Normalize Delays, Rearrange Gains and Rearrange Delays commands so they add delay or gain blocks when necessary. This means these commands can be enabled in their respective context menus under a much broader set of circumstances than before.
- Normalize Gains and Normalize Delays now internally do a "rearrange" operation when needed, making Rearrange Gains and Rearrange Delays needed much less often than before.
- Added new options in the Application Options dialog to allow disabling some prompts that occur when MSO needs to add gain or delay blocks in a normalize/rearrange operation. See the "Tips and Tricks" section for details.
- Changed the license to one that allows commercial use.
Version 1.0.40: Released 2020-01-28
- Deleting a target curve could not be cancelled.
Version 1.0.39: Released 2020-01-21
- Rendering graphs having traces referring to deleted target curves was causing MSO to crash.
Version 1.0.38: Released 2019-10-17
- Measurement text file import now runs in a separate thread. The previous method of using the UI thread was causing MSO to appear to be locked up when run on a slow machine and importing a large number of files containing data over a wide frequency range.
- In Application Options, Data, you can specify an upper frequency limit for MSO to use when importing measurement data. This can speed up measurement file import when the data exported from the measurement program covers a wide frequency range and a large number of files are imported at once. It also helps in keeping project file size small under these conditions.
- In Application Options, Data, the number of threads used for optimization is now displayed. Its value changes when you alter the state of "polite mode" checkbox.
- A bug was fixed in which tuning a filter parameter when viewing a graph having an active data cursor was failing to update the cursor data displayed in the Graph Cursor Data tab of the Output window.
Version 1.0.37: Released 2019-09-15
- MSO now requires that no individual PEQ of a configuration have a maximum boost or cut that exceeds the global limits specified in the Constraints property page of the Optimization Options property sheet for that configuration.
- If MSO detects an error in your project that prohibits an optimization from running, the error is now displayed in a read-only tabbed edit view instead of a message box.
Version 1.0.36: Released 2019-06-07
- Improved convergence when global constraints are used with a large number of PEQs.
Version 1.0.35: Released 2019-05-29
- The optimization process is now multithreaded, resulting in speed improvements when run on multi-core CPUs.
- Eliminated an inefficiency when the maximum total PEQ boost/cut was specified for optimization of sub + mains configurations. MSO was evaluating the maximum PEQ boost/cut even for channels not containing any PEQ filters (e.g. main filter channels).
Version 1.0.34: Released 2019-05-07
- Added items to View menu for showing docking windows (Config View, Data View, Output and Properties) that may have been accidentally hidden.
Version 1.0.33: Released 2019-04-19
- Bug fix: Global constraints for maximum PEQ boost/cut weren't catching RBJ PEQs.
Version 1.0.32: Released 2019-04-07
- Optimization was failing when maximum PEQ boost and cut were specified simultaneously.
Version 1.0.31: Released 2019-04-04
- Added overall PEQ boost/cut constraints via the Optimization Options, Constraints property page to eliminate the PEQ "stacking" problem.
Version 1.0.30: Released 2019-03-27
- Added support for 192 kHz sample rate in biquad coefficient calculation.
Version 1.0.29: Released 2019-03-24
- Added option to specify the biquad limit for input, output and crossover separately.
- Added option to use crossover biquads if the output channel biquad limit is exceeded.
- Removed padding in saved input and output biquad text files.
Version 1.0.28: Released 2019-03-08
- Added plot-only measurements to help with verifying MSO's predicted performance against actual measured data.
- Added option to specify the maximum points per octave in the measured data used for optimization.
- Fixed edit controls that weren't being grayed out when set to read-only.
- Set the default minimum center frequency of PEQ filters to 20 Hz.
Version 1.0.27: Released 2018-12-08
- Phase unwrap wasn't working for traces of type Measurement.
- Clicking certain checkboxes in the Trace Properties dialog wasn't enabling the Apply button.
Version 1.0.26: Released 2018-08-05
- Bug fix: Optimizer was occasionally running in a less efficient mode.
Version 1.0.25: Released 2018-07-18
- Changed filter report output for 2nd-order LF shelf filters to account for some quirks in JRiver DSP software for this filter type.
Version 1.0.24: Released 2018-05-02
- Maintenance release: recompiled using latest Microsoft Visual C++ version that fixes compiler bugs related to code optimization.
- Updated "Tips and Tricks" help section to document Rearrange Gains, Rearrange Delays, Normalize Gains and Normalize Delays commands.
Version 1.0.23: Released 2017-09-15
- Added parametric EQ filters using the RBJ convention for Q to allow the full range of available Q values to be used in the iNuke DSP amps
- Added first-order (6 dB/oct) low-pass and high-pass filters
- Rearranged filter context menus for better legibility
Version 1.0.22: Released 2017-07-01
- Bug fix: Help file was always hiding the application.
Version 1.0.21: Released 2017-07-01
- Bug fix: Renaming a filter channel caused corruption of measurement groups having measurements associated with that channel.
- Numerous documentation changes
Version 1.0.20: Released 2017-02-20
- Added the ability to plot measurement groups in graphs relative to the main listening position.
Version 1.0.19a: Released 2017-02-10
- Bug fix: If a measurement position was chosen as the main listening position, then subsequently renamed, the internal name for the main listening position was not updated.
Version 1.0.19: Released 2016-11-08
- Allow target curves for sub-only configurations
Version 1.0.18: Released 2016-10-17
- Allow the fixed reference level optimization mode to be used for "sub + mains" configurations.
- Added ability to save graph traces as .frd files.
- Filter reports of HF shelf filters now contain a high-frequency corner to make them Behringer-compatible.
- Filter reports of parametric EQ filters now contain bandwidth in octaves per Bristow-Johnson's PEQ specification.
- Bug fix: Allow high-pass filters in shared sub channels.
- Documentation changes:
Version 1.0.17: Released 2016-08-30
- Added ability to save scaled PNG files of graphs.
- Disable reference frequency range controls in Optimization Options, Criteria for sub-only configurations whose optimization method is Best match of MLP with other listening positions.
- Allow low-pass filters to have a maximum legal cutoff frequency of 300 Hz.
- Delete graphs that have no traces after a configuration is deleted.
- Collapse individual configuration and graph nodes by default.
- Updated help files.
Version 1.0.16: Released 2016-08-20
- Bug fix: Starting in 1.13, corrected individual delays were not being reported at end of filter report for configurations that were not sub-only.
Version 1.0.15: Released 2016-08-04
- Bug fix: Added missing main menu option to add a sub-only configuration.
Version 1.0.14: Released 2016-08-01
- Bug fix: Saving filter channel biquad text to a file gave incorrect results if a filter report hadn't been generated first.
- Bug fix: Updating properties of target curves did not update graphs having the corresponding target curve traces.
- Added cubic spline interpolation option for target curves.
Version 1.0.13: Released 2016-07-25
- Added "sub-only" configurations with the following characteristics:
- Main speaker measurements are not needed for the optimization to run.
- A main listening position (MLP) must be specified, even when the optimization method is "as flat as possible".
- A fixed reference level in dB SPL, which applies only to the MLP, must be specified.
- If the number of subwoofer channels is N, then N subwoofer gain blocks can be specified.
- For N subwoofer channels, only N - 1 subwoofer delays can be specified.
- Shared subwoofer delay blocks cannot be used.
- When cloning a sub-only configuration, there is an option to convert the clone to a conventional "mains plus subs" configuration.
- You cannot add main filter channels to a sub-only configuration.
- A target curve cannot be specified for a sub-only configuration.
- You can now copy a single filter to the clipboard by selecting it and pressing Ctrl+C.
- Clarified filter report information for delay and gain blocks when the option to use an AVR is chosen.
- Changed default delay limits and absolute minimum/maximum delay hard limits for delay blocks.
- Fixed a bug that occurred when choosing an MLP and later making the MLP plot-only.
- Added "Normalize Gains" and "Normalize Delays" commands:
- "Normalize Gains" forces each individual channel gain to be zero or an attenuator without having to perform "Rearrange Gains" twice.
- "Normalize Delays" forces each individual channel delay to be zero or positive without having to perform "Rearrange Delays" twice.
- Added the ability to save a filter channel's response as a target curve. Target curves are saved from 5 Hz - 400 Hz, 200 steps per decade.
- Added new low-frequency shelving filters that allow the center frequency to be specified. This simplifies making target curves with such filters.
Version 1.0.12: Released 2016-06-22
- Added ability to save filter biquad coefficients as text files, with the same format as used by REW, for input to miniDSP devices.
Version 1.0.11: Released 2016-06-18
- Fixed incorrect sub data scaling in static graphs of measurement groups when there is more than one main speaker in the group.
Version 1.0.10: Released 2016-06-14
- Added "tool tip" help to all UI controls of all dialogs.
- Added six new filter types
- Linkwitz Transform low shelf
- Linkwitz-Riley fourth-order low shelf (see mid-bass module article for details)
- First-order high shelf
- Second-order high shelf
- Second-order high shelf, variable Q
- Linkwitz Transform high shelf
- Added default parameter limits property pages to the Application Options property sheet to support the above six new filter types.
- Fixed sluggish manual tuning in Properties window for parameters such as Q, which have more than 2 decimal places of precision
- Allow specifying the maximum biquad count supported by your DSP, for compliant advanced biquad format for more DSP types. Examples:
- miniDSP 2x4 with 2x4 advanced plug-in has a maximum of 5 biquads per channel
- miniDSP 2x4 with 1x4 advanced plug-in has a maximum of 6 biquads per channel
- miniDSP 2x4 HD has a maximum of 10 biquads per channel
- Allow adding low-shelf filters to main speakers (to aid in achieving a target curve)
Version 1.0.9: Released 2016-06-04
- Added performance metrics calculation, displayed on the new Performance Metrics property sheet.
Version 1.0.8: Released 2016-05-28
- Added the ability to copy and paste filters in the Config View.
- When cloning a configuration, you can now specify that all graphs of the original configuration be cloned as well
- Bug fix: Low-pass filters are no longer permitted in Mains filter channels.
Version 1.0.7: Released 2016-05-15
- Added optimization mode that gives the best match of non-MLP frequency responses to the MLP
- Requires specifying which listening position is the MLP
- Specified in the new Method property page of the Optimization Options property sheet
- Use this mode for best performance when a later global EQ step will be applied to the MLP
Version 1.0.6: Released 2016-04-24
- Properly scale sub data when left and right main speakers are energized and measured individually instead of together
- Needed when using REW acoustic timing reference for two-channel systems or MCH when main speakers are left and right (not center)
- Situation is detected automatically with no user intervention required