This app note demonstrates the use of Multi-Sub Optimizer (MSO) to integrate two subwoofers with two speakers in a stereo system.

Please note that MSO is third-party software. miniDSP is not able to directly provide support for this software. For questions or issues specifically related to MSO, please refer to the AVS Forum MSO discussion thread.

Overview of multiple subwoofers [Top]

Multiple subwoofers are used to improve evenness of bass response across the listening area. While EQ such as REW auto-EQ or Dirac Live can smooth response at any given location, this will not correct for spatial variation. For example, with a single subwoofer, if the level at 40 Hz in one listening seat is 10 dB different to the level in the next, the difference between the two seats will be 10 dB regardless of how much EQ is applied. Well-applied use of multiple subwoofers reduces spatial variation.

Three (or more) subwoofers are usually recommended for a multi-sub system, but it is still possible to gain an improvement with two. We will use the freeware software Multi-Sub Optimizer (MSO) to optimize two subwoofers and two speakers to reduce spatial variation. In addition, MSO will optimize the crossover frequency between the subs and the speakers.

MSO needs measurements taken around the listening area as input to its calculations. We recommend a miniDSP UMIK-1 or UMIK-2 together with Room EQ Wizard (REW) for this purpose. As an alternative, a miniDSP UMIK-X can be used for faster measurement in multiple locations.

To process the filters produced by MSO, we deployed a miniDSP SHD Power integrated processor/amplifier in our test system, but any member of the SHD Series can be used instead. The smaller DDRC-24 and 2x4 HD can also be used. Processors with more outputs such as the C-DSP Series and DDRC-88A can be used with some adjustments to parameters (and in that case can optimize for more than two subwoofers). Figure 1 is a typical system configuration using the SHD Power.

Dual-sub stereo system with the miniDSP SHD Power

Figure 1. Dual-sub stereo system with the miniDSP SHD Power

Note: we recommend that you thoroughly familiarize yourself with measurements using REW and with using the SHD plugin before starting this advanced application.

1. Choose subwoofer locations [Top]

There are no hard and fast rules about where to place subs when doing a multi-sub system. The app note Tuning multiple subwoofers with miniDSP makes some suggestions, which we suggest adapting for dual subs.

2. Get connected for measurement[Top]

Figure 2 illustrates the measurement setup with a UMIK-1 or UMIK-2.

Dual-sub measurement using UMIK-1 or UMIK-2

Figure 2. Dual-sub measurement using UMIK-1 or UMIK-2

3. Set up the SHD plugin [Top]

In the SHD plugin:

  1. Select USB for input.

  2. On the Outputs tab, name the output channels Left, Right, Sub1 and Sub2.

  3. Enable the 100 Hz highpass filter crossover on the Left and Right channels.

  4. Enable the 100 Hz lowpass filter crossover on both subwoofer channels.

  5. Set master volume to –20 dB. This is just a precaution — when you run the levels check in REW, you can increase this if needed.

4. Take your initial measurements [Top]

You will need to measure in four different locations. One of these should be the center of the listening area, while the other three should be spread over the listening area. Vary the height as well as the horizontal location. Mark the location and record the microphone height for each location so that you can measure again after optimization. At each location, you will need to take a total of five measurements.

You may find it easier to do all five measurements in one location, then move the microphone to the next location, and so on. As a time-saving measure, consider setting up one onboard preset for the baseline measurement with crossovers enabled, and another for the individual speaker/sub measurements with crossovers bypassed.

When you do your measurements, make sure that you have the "Use acoustic timing reference" option on. The routing below uses the right speaker as the timing reference speaker, so you will hear a short "peep" sound from that speaker before and after each measurement sweep.

Here are the five measurements you need to take at each microphone location:

  1. Both speakers and both subs playing, with a 100 Hz crossover. This is your baseline measurement. By taking a baseline measurement, you will be able to compare it with the results after optimization. Set the routing matrix like this:

    Routing for baseline
  measurement

  2. Just the left speaker playing, with no crossover. (That is, bypass the crossover on the Outputs tab.) This will be used as an input to MSO. Set the routing matrix like this:

    Routing for left speaker measurement

  3. Just the right speaker playing, with no crossover. (That is, bypass the crossover on the Outputs tab.) This will be used as an input to MSO. Set the routing matrix like this:

    Routing for right speaker
  measurement

  4. Just Sub 1 playing, with no crossover. (That is, bypass the crossover on the Outputs tab.) This will be used as an input to MSO. Set the routing matrix like this:

    Routing for Sub 1 measurement

  5. Just Sub 2 playing, with no crossover. (That is, bypass the crossover on the Outputs tab.) This will be used as an input to MSO. Set the routing matrix like this:

    Routing for Sub 2 measurement

As you proceed, rename the measurements. For the baseline measurement, the names should be "Baseline-1" for mic location 1, "Baseline-2" for mic location 2, and so on. For the left speaker, the names should be "Left-1" for mic location 1, "Left-2" for mic location 2, and so on.

Save this set of measurements to a file with the Save All button.

Here is the set of baseline measurements from our test system:

Baseline individual measurements for MSO

Figure 3. Dual-sub baseline measurement

5. Export measurements from REW[Top]

Drop down the File menu and select Export and then "Export all measurements as text." Use the settings below, noting in particular the .frd extension and the use of Space as delimiter:

Export measurements for MSO

Choose a new/empty folder and click Open. Check the files in the selected folder — you should see files named "Baseline-1.frd", "Baseline-2.frd", and so on. (Note though that you won't import the baseline measurements into MSO, just the left, right, and the two subs.)

6. Configure MSO [Top]

Open Multi-Sub Optimizer (MSO). Drop down the Tools menu and select Application Options, then click on Hardware. For the SHD Series, set the options as shown here. If you are using a different miniDSP processor, you may need to change these settings. In particular, the sample rate should be set to the internal sample rate of the processor — for the DDRC-24, for example, use 48 kHz.

Hardware options for
  miniDSP in MSO

7. Import measurements into MSO[Top]

Select the Data View tab on the left sidebar.

  1. Right-click on the Mains node and select "Import Mains Measurements...". Select the four measurement files for both left and right channels. Don't import the baseline measurements.

  2. Right-click on the Subs node and select "Import Sub Measurements...". Select the four measurement files for both Sub1 and Sub2. Don't import the baseline measurements.

Here is the result:

Imported measurements
in MSO

8. Set up MSO Config[Top]

Switch to the Config View tab.

  1. Right-click on Mains Channels and select "Add Filter Channel". Click on the new channel and name it "Left". Then add another and name it "Right."

  2. Right-click on Shared Filters and select "Add High-Pass Filter" then "HPF Butterworth 24dB/oct."

  3. Under Left, right-click on "Measurement Associations" and select "Associate Measurements...". In the dialog that pops up, select the measurements for the left speaker and click OK. Do the same under Right and select the measurements for the right speaker.

    Here is the result of steps 1 to 3:

    Filters for main speakers in MSO

  4. Right-click on Subwoofer Channels and select "Add Filter Channel". Click on the new channel and name it "Sub1". Then add another and name it "Sub2."

  5. Under Sub1, right-click on Filters and select "Add Gain Block". Do the same for "Add Delay Block," then three times for "Add Parametric EQ". Finally, select "Add Low-Pass Filter" then "LPF Butterworth 24dB/oct."

  6. Right-click on "Measurement Associations" and select "Associate Measurements...". In the dialog that pops up, select the four measurements for Sub1 and click OK.

  7. Repeat steps 5 and 6 for Sub2.

    Here is the result of steps 4 to 7:

    Filters for sub channel 1 in MSO

  8. Under Optimization Parameters, right-click on "Measurement Groups" and select "Add Measurement Group." In the dialog that pops up, select the measurements for mic location 1 and click OK.

    Note the difference to steps 3 and 6: in those steps, you chose measurements made at all mic locations for a single speaker or sub, whereas in this step, you choose all measurements made at a single mic location.

  9. Repeat step 8 three times to create measurement groups for mic locations 2, 3 and 4. Here is the result:

    Measurement groups in MSO

  10. The maximum output channel gain allowed in the SHD plugin is 12 dB. Click on the Sub1 Gain block and in its Properties window, set Maximum Value to 12. Do the same for the Sub2 Gain block. (If the Properties Window is not showing, drop down the View menu and select "Properties Window.")

    Gain
parameters in MSO

  11. Click on the shared highpass filter for the mains and set Value to 100. If you want to limit low frequencies sent to the main speakers, change Minimum Value from the default of 40. In our test system we used quite small speakers and so set Minimum Value to 100.

    Highpass filter parameters in MSO

     

  12. Click on the lowpass filter under Sub1 and set Value to 100 and Maximum Value to 120. Repeat for the lowpass filter under Sub2. Depending on your system, you may want to set a different maximum value.

    Lowpass filter parameters in MSO

9. Create graphs [Top]

Switch back to the Data View. Right-click on Graphs and select "New Graph..." Under Data at the left, click on Measurement Groups and select all 4 groups:

Create graph to display responses in MSO

Click OK. The graphs for all four mic locations should appear as Graph 1:

Baseline response displayed in MSO

Figure 4. Predicted response at four measurement locations after import into MSO

If this graph is the same as your baseline in REW (Figure 3), you have imported and set up your measurements correctly! (To adjust the graph axes, right-click on the graph and select "Graph Properties..." and then Axes.)

Create another graph, but this time select "Filter Channels" and add the Left, Sub1 and Sub2 channels to the graph. (You don't need to add Right since it's the same as Left.) This graph will appear as Graph 2. Initially it will be empty, but once you start the optimizer, it will show the filters for the speaker and sub channels.

10. Run the optimizer [Top]

Drop down the Tools menu and select "Optimization Options..."

  1. Under Method, select the options as shown here:

    MSO optimization method

    We have selected the option to minimize seat-to-seat variation. The final response can be tailored later using Dirac Live or the input channel PEQ. However, in some cases selecting "As flat as possible without additional global EQ" can produce a better result. Feel free to try both ways.

  2. Under Criteria, leave both settings at Auto. Set the optimization to run for one minute (later on, you will increase this).

    MSO optimization criteria

  3. Under Target Curve, you can set a target curve if you wish. Here, we used a target curve that boosted only down to 30 Hz, to try and limit boost to the subs at very low frequencies. This could also be done later on with the target curve in Dirac Live or input channel parametric EQ (depending on your processor).

    MSO target curve

Click on the Start Optimization button. Let the optimization run until it completes.

MSO
start optimization

11. Refine optimization [Top]

At this point, Graph 1 shows the predicted response at the four mic locations and Graph 2 shows the filters. If you wish, you can make changes on the subwoofer channels and try again. For example:

  • Add additional Parametric EQ blocks.
  • Add a highpass filter to subwoofers with limited low-frequency output.
  • Add a Polarity Inversion block to one subwoofer.
  • Add an allpass filter to one subwoofer.

You can also limit the range of parameters in the filter blocks by changing the minimum and maximum value settings, and exclude a parameter from optimization if you don't want MSO to change the value you have set.

Note: We recommend making changes only on the subwoofer channels, and not adding filters to the mains/speaker channels.

If you make changes, re-run the optimizer for one minute to see what result you get. Once you feel you have a good basic result, run the optimizer for a much longer period of time – say 30 minutes. In our test system, here is the final result:

Optimized response displayed
  in MSO

Figure 5. Predicted response after optimization with MSO

Here are the responses of the filter channels:

Optimized filters in MSO

Figure 6. Channel filters generated by MSO

12. Export filters from MSO[Top]

Once you are happy with your result, check the Value fields in the Delay blocks of Sub1 and Sub2. If either of them is negative, right-click on Subwoofer Channels and select "Rearrange Gains." This will create a new Delay block under Shared Filters with a negative value, which represents the delay that will be applied to the mains.

Drop down the Config menu and select "Save Biquad text file...". Click on the line "Left" and then the Save button, and select a folder to save the file in. Then do the same for Sub1 and Sub2.

13. Import filters into the plugin[Top]

In the SHD plugin:

  1. Check that the crossovers are bypassed on all four output channels. This is because the crossovers will be embedded in the filters imported from MSO.

  2. Open the PEQ block for the Left output channel. Link it to the Right output channel. Select Advanced mode, then IMPORT, and select the file you exported for Left from MSO. You will see the plot change to a highpass (crossover) filter.

  3. Open the PEQ block for the Sub1 output channel. Select Advanced mode, then IMPORT, and select the file you exported for Sub1 from MSO. Note that the lowpass (crossover) filter is embedded in the imported filters from MSO, which may make it difficult to verify visually that the imported filter matches the plot in MSO.

    Imported filter from MSO

  4. Repeat step 4 for the Sub2 output channel.

14. Set gains and delays [Top]

  1. In MSO, if Sub1 has a Gain block:

    1. Read its value from the properties window.
    2. In the SHD plugin, write that value into the gain entry field of the Sub1 output channel.
  2. In MSO, if Sub1 has a Delay block with a positive value:

    1. Read its value from the properties window.
    2. In the SHD plugin, write that value into the delay entry field of the Sub1 output channel.
  3. In MSO, if Sub1 has a Polarity Inversion block:

    1. In the SHD plugin, click on the Invert button of the Sub1 output channel (so that it says "Inverted").
  4. Repeat steps 1 to 3 for the Sub2 output channel.

  5. In MSO, if there is a shared Delay block with a negative gain:

    1. In the SHD plugin, set that delay (as a positive value) on both Left and Right output channels.

To illustrate, here is the Outputs tab in our test system highlighting where we changed gain and delay values:

SHD output channels

15. Confirm your result [Top]

To verify that you have transferred all the data correctly, we recommend that you run a set of measurements with REW. You will need to move the mic to the exact same locations and heights that you used when taking the baseline measurements. Change the routing to be the same as when you took the baseline measurements (click here to go up to the screenshot) then measure as before.

The resulting set of measurements should be very similar to MSO's prediction (Figure 5). If it is not, you have made a mistake in transferring the data from MSO to the SHD plugin and will need to double-check your work. In particular, make sure that you have transferred the gain and delay values correctly and that you have bypassed the crossover in the Xover blocks.

Here is the measured result from our test system:

Optimized response measured
  by REW

Figure 7. Actual multi-sub measurement after optimization with MSO

While the reduction in spatial variation compared to the baseline measurement in Figure 3 is not as dramatic as when we've used three subs, it is still a useful improvement. In addition, MSO has already optimized the crossover frequencies, so there is no need for us to do further measurements!

Wrapping up [Top]

At this point, your routing matrix is still set up for measurement. Change it now so that it is set up for normal 2.1 operation with dual subs:

Routing for dual subs

Don't forget to save your SHD configuration to a file. If you are using a miniDSP processor with Dirac Live enabled, you can run a Dirac Live calibration and make adjustments to the target curve. Now kick back and listen to the rewards of your hard work! Let us know about your experiences in our forum!

 


Related Products - Acoustic measurement