• WANTED: Happy members who like to discuss audio and other topics related to our interest. Desire to learn and share knowledge of science required. There are many reviews of audio hardware and expert members to help answer your questions. Click here to have your audio equipment measured for free!

Multi-Sub Optimizer (MSO): Lessons Learned, Tips & Tricks

Hi all, I am new to MSO/REW optimizations. I own classe ssp-800 processor with 5.2 setup. I have two subs, each sub has it's own output channel. Classe SSP-800 allows me to use up to 6 PEQ per channel at any frequency with maximum Q of 20 and gain range in -20 to +3 for all the channels. I hope to align my subs and find the best crossover frequency for my speakers. I know it might be a loaded question but what is the best way for me to measure and optimize my setup? Any help is greatly appreciated. More details about my equipment - I have two DBS4 subs and B&W CWM 7.2 in-wall front left/right and B&W htm72 S3 front channel speaker. I own calibrated UMIK2 and laptop with hdmi output. My room is big, enclosed, width is 20, depth is 22 and the ceiling height is 22. I have connected to Classe through my laptop and can measure all the channels/speakers in my setup. Best regards and happy holidays to all the hifi gurus!
 
Last edited:
Lots to learn but all good fun. Suggest you start with watching Jeff's videos (aka fattire on AVS) on Youtube for MSO and others related to learning the basics of REW and getting your first measurements, plus study the fantastic documentation Andy has created and linked to in MSO. Once you get the hang of it it is pretty straightforward. For measurement the one trick that is needed is to make sure you are measuring you subs without the interference of the Processor, so recommended approach is to by pass it entirely if you can, or temporarily run the R speaker preout directly to the subs (one by one) and use the L speaker as the timing reference.
 
Hi Dave, thank you for your help. I found the youtube video from Jeff Mery and plan to watch it over the next few days.
 
I watched a couple of videos from Jeff on MSO and have couple of questions. I understand that I need to completely reset any pre-processor settings on gains and speaker distances before taking all the measurements. If I am not planning to use miniDSP and just my pre-processor for PEQs how do I enter delays into my pre-processor after I get the results from MSO? Do I restore my pre-processor speaker distances to my main position after I enter PEQs? For per-sub gains I can use the sub settings or pre-processor per-channel gains, what should I use? Thank you for any help on these questions.
 
What specifically are you trying to accomplish that requires PEQ center frequencies outside the optimization frequency range? This generally isn't a good idea, unless you lock the parameters of the PEQs to prevent the optimizer from altering them.

I can't speak for them, but since I am stacking my mains on top of my 10" subs there can be benefits over 200hz in reinforcement of the mains/shifting cross over higher.

While we're asking for features...

It would also be nice to have the ability to turn all graphs on and off with a single button for running optimizations.

Increased or customizable parameter ranges to match the newer generation minidsp offerings.

Create template configurations without measurements. I already know the kinds of graphs and HW limitations I'll want when running different physical configuration tests, but removing and then reimporting new measurements breaks too many things since the graphs are tied to direct files rather than abstracted containers.

Regex measurement import and assignments.
 
I can't speak for them, but since I am stacking my mains on top of my 10" subs there can be benefits over 200hz in reinforcement of the mains/shifting cross over higher.

While we're asking for features...

It would also be nice to have the ability to turn all graphs on and off with a single button for running optimizations.

Increased or customizable parameter ranges to match the newer generation minidsp offerings.

Create template configurations without measurements. I already know the kinds of graphs and HW limitations I'll want when running different physical configuration tests, but removing and then reimporting new measurements breaks too many things since the graphs are tied to direct files rather than abstracted containers.

Regex measurement import and assignments.
My feature request would be the ability to reset unlocked filters only, leaving locked filters unchanged. This option to be added everywhere that the reset all filters appears currently.
 
I watched a couple of videos from Jeff on MSO and have couple of questions. I understand that I need to completely reset any pre-processor settings on gains and speaker distances before taking all the measurements. If I am not planning to use miniDSP and just my pre-processor for PEQs how do I enter delays into my pre-processor after I get the results from MSO?
After running MSO you can print out the filter report and enter the values into you processor manually.
Do I restore my pre-processor speaker distances to my main position after I enter PEQs? For per-sub gains I can use the sub settings or pre-processor per-channel gains, what should I use? Thank you for any help on these questions.
Ideally you would equalize your sub's outside of your processor using an external DSP. That way all your processor has to do is integrate one sub channel with the mains.

To use the processor to integrate the sub's with each other (gain + delay) you would first run the processor calibration (sub's + mains) then apply a relative gain + delay offset to one of the two sub's. This information is in the MSO filter report at the very end. You may have to convert milliseconds to ft/m.
 
I watched a couple of videos from Jeff on MSO and have couple of questions. I understand that I need to completely reset any pre-processor settings on gains and speaker distances before taking all the measurements. If I am not planning to use miniDSP and just my pre-processor for PEQs how do I enter delays into my pre-processor after I get the results from MSO? Do I restore my pre-processor speaker distances to my main position after I enter PEQs? For per-sub gains I can use the sub settings or pre-processor per-channel gains, what should I use? Thank you for any help on these questions.

If you are using MSO to calculate relative delays between the subs, then you would need to enter into your processor different subwoofer distances to set these delays. This means that your processor must have ability to set different distances for each sub channel - I had a quick look at the manual for your processor and think this may not be possible if you are re-assigning one of the unused channels as sub channels but suggest you double check this.

[edit - multiply instead of divide!]
To calculate the sub distance setting, simply multiply the delay setting in MSO for the sub by 1.125 (using feet units) and subtract this distance to the subwoofer distance setting in your processor for that sub relative to the other sub(s). So for example if MSO says add a delay to Sub 1 of +6.5ms, and a delay of +1.5ms to Sub 2, then the relative delay between the subs is 5.0ms. Sound waves will travel 5.6ft in 5.0ms ( 5 * 1.125 = 5.6ft). So simply set the sub distance for Sub 1 to 5.6ft less than Sub 2.

If your processor does not allow you to set different distances for each sub (very common situation), then you cannot use it to set delays between subs, no you should remove the delay filters in MSO and re-run the optimization.
 
Last edited:
Shared filters are extremely useful in shaping the overall response of all subs and optimizing the use of limited DSP resources. I would like to recommend the following procedure when using shared filters.

In this example the min PEQ center frequency that my DSP will allow is 20Hz. The max center frequency that MSO will allow is 200Hz. The measurement range is 10 - 240Hz. I am using four Shared PEQ filters plus shared gain. There are four sub-woofers, each with four PEQ. Three of the subs have gain and delay. I used 12dB max cut for each PEQ and zero boost. I am using a target curve that rolls off at 160Hz because I have a 160Hz Low Pass filter on the input to all my subs.
  1. After importing your measurements, creating the sub only project with the wizard and setting up your graphs, add the shared filters to your configuration
  2. Using the Filter Properties tab, set the max center frequency of the each individual sub-woofer PEQ to 120Hz and set the max center frequency of the each shared PEQ to 200Hz.
  3. In the Optimization options\PEQ constraints tab set the max total PEQ cut equal to the (Optimization options\PEQ Parameter Limits) maximum cut value. This prevents the PEQ filters from stacking on top of each other.
  4. Under Optimization options\Method select "As Flat as possible without additional global EQ"
  5. Under Optimization options\Criteria select "Auto" for the frequency range to optimize. This should select the full measurement range (10-240Hz)
  6. With all filters reset and unlocked, optimize the configuration
  7. Now lock all of the shared PEQ filters so that their values cannot change.
  8. Under Optimization options\Criteria uncheck "Auto" and enter the range 20 - 120Hz
  9. If necessary, reset the Reference Level so that it aligns with the data over this new optimization range.
  10. Optimize the configuration again. This time only the per sub filters will be modified. Their effect is focused on the 20 - 120Hz frequency range while the (locked) shared filters keep the overall response in check. You can try switching between "minimize seat to seat variations" and "as flat as possible" to see which you prefer, but you cannot reset the filters between runs because MSO will reset all of the filters, including the "locked" ones.
Baseline plus target curve (starting point)
Baseline.png
Results after the full range optimization (Step #6 above)
Flat10_240.png
Results after the limited range optimization with the shared filters locked (Step #10 above)
LockShared20_120.png
 
@kiwifi I think the bug was fixed in the latest version for the resetting of locked filters. You should check it out and see.

Also I have found that using shared filters is a very good way to maximize the headroom and balance of use between all the subs. I try to minimize the amount of differences between the subs as any place you are filtering or reducing gain on one sub, another one has to take up the charge to provide the headroom.

I have been experimenting with a similar approach to what you propose but with addition of all-pass filters and delays in the "set to be locked" prior to the second pass of fine tuning individual subs. One of the biggest challenges with MSO and the optimization is it can give you great Frequency Response, but with no indication of the amount of headroom lost in the overall process.

Here's something to try:
- create a new clean optimization run with no filters, no gains, nothing (assumes you have taken measurements with gain matched subs)
- add 2 all pass filters to each sub, with min freq of 10, max of 160 or so - the all-pass filters adjust the phase of the subs
- add a delay to each sub except 1, max range of +/- 10ms
- try one by one adding a polarity inversion to each sub - keep if it looks better, remove it otherwise
- run the optimization just with this to see what happens in the charts - from my experience, just doing these alone without any PEQ can make a major improvement - in effect you are aligning phase, rate of change of phase, and time alignment of the group of subs
- leave all these unlocked and then add 6 to 10 PEQ to the shared group, using filter ranges that you like - I use -12 to +3 gain, 20 to 120Hz, and 1 to 10 Q
- don't add a Gain filter to the individual subs! this will kill your headroom - let the sub filters do the tuning
- run the optimization again - this should you a pretty good result, in particular for the lower frequencies where the headroom is most critical
- for me I can get flat response up to about 50 Hz just with the shared filters and delays/AP - critically what this means is each sub is working all its 100% capacity to provide maximum headroom at the lowest frequencies to add serious punch to the bass
- after this, you can lock the shared filters, add sub specific filters, and continue the optimization.
- another approach is to find out the highest frequency that you know is solved by shared filters only, then use that as the min freq for your sub specific filters

I'll post a few screenshot below to show you what I mean.
 
Here's the raw measurements of my 3 subs at the MLP. I like to show phase as well as FR when optimizing - the goal is to get all the phases to match in slope and time alignment prior to using EQ to flatten FR. Important to note here is the two front subs are sealed and you can see their phase behaviour is very similar (black and red dotted lines), but the back sub sitting behind the couch is a passive radiator - you can see it has a different slope to phase, and there is a kink in the phase curve around 60-70hz, plus it is very different time alignment to front subs (phase line is vertically lower which means the sound is less delayed) as you would expect being a near field sub.

1672446170348.png
 

Attachments

  • 1672440930844.png
    1672440930844.png
    135.3 KB · Views: 83
Last edited:
Step 0 Before: Here is the seat to seat "before". Note major suck out at 40Hz, and some problems between 70-100Hz. Ignore any higher freq than 100Hz for these charts as these measurements where low passed in my pre/pro. The approach will work for any range of measurement and optimizing.
1672441217155.png


Step 1 Add All Pass Filters: Add All Pass filters only, 2 second order all-pass filters per sub. That's it, nothing else for now. Note this results in plus minus 5db seat to seat without doing anything more, and 100% of sub headroom is preserved. You can ssee what the all pass filters are doing at the top dotted lines where they are "rotating" the phase a various rates and various frequencies. Note also how the phase plots (the heavier dotted lines) are all the same with consistent slope for each sub, however the dotted balck line is still below the other ones meaning it is not time aligned. A good start...
1672441448874.png


Step 2 Add Sub Delays: now add a delay filter to the back sub and one of the front right subs to see what happens. I keep the delays to well under 10ms, a larger room could warrant more: Not much change to the FR, but you can now see the three phase plots are now on top of each other - so all time aligned and phased aligned - really good. BTW this was from a 5ms delay to the back sub, and 1ms delay to the front right sub.
1672441698270.png
 
Last edited:
Step 3 Add Shared Filters: Now let's see how good we can get with a bunch of shared filters (i.e. all the same for each of the three subs). Once again using shared filters means that 100% of the each sub's headroom is preserved because no sub will be pulling the weight of another sub at a frequency where the others subs are being filtered independently.

Wow - now +/- about 2.5db from 16 to 80Hz and I haven't really done any "multi sub" changes yet - no gains or individual sub PEQs.

You can see the thin black "Filter Channel" line in the bottom of the chart showing the filters which are relatively modest - this is actually 3 lines one for each sub on top of each other.

I have an open concept basement media room which is decent size (29' x 24' x 7.5' nominal) which helps for sure to have a more even bass response, but I'll take it!
1672442127959.png



Step 4 Add Individual Sub PEQ: First lock all of the settings created so far and then add in some sub specific filters. I am still experimenting on what approach works best here (and am redoing all my measurements to properly bypass the pre/pro LPF) but for example you can see the result if I add 3 PEQ per sub, and all other filters are locked. All of the additional correction happens above 80Hz or so which means all three of my subs are contributing fully to all low bass content, all perfectly time aligned and phase aligned. Note also that the relative separation of gain in between the three subs can be seen in the filters and is all less than around 6-8db. The physical impact and the tightness is very impressive in the room, even with relatively "small subs" (2 13" SVS Ultra sealed and a 12" Paradigm Seismic 12 that I've had for ages but is a serious workhorse in a small package).
1672443275788.png



And just for kicks, for comparison, if you clear out all the locks and do a straight-up MSO run with the exact same filters, ranges etc. you get this output. Technically it has a lower Final RMS but you can see the back sub is running around 6db lower that the front subs, robbing me of roughly 3db each of headroom in the front subs. Or said another way, I need 2x (!!!) the power in the front subs to compensate for the back sub being about 6db down from fronts to have equivalent headroom as the approach I outlined above.

Give it a shot - very curious to see if others find the same thing. And thanks to Jeff Mery for his videos and for his idea on this approach posted on AVS last July, and to many others who suggest plotting your filters so you can really see what is going on. I did not quite understand why all of this works until I started to break it down step by step.

1672445395891.png
 
Last edited:
@kiwifi I think the bug was fixed in the latest version for the resetting of locked filters. You should check it out and see.
Thanks! I was using version 1.11 and I see that it has been fixed in version 1.12.
Also I have found that using shared filters is a very good way to maximize the headroom and balance of use between all the subs. I try to minimize the amount of differences between the subs as any place you are filtering or reducing gain on one sub, another one has to take up the charge to provide the headroom.

I have been experimenting with a similar approach to what you propose but with addition of all-pass filters and delays in the "set to be locked" prior to the second pass of fine tuning individual subs. One of the biggest challenges with MSO and the optimization is it can give you great Frequency Response, but with no indication of the amount of headroom lost in the overall process.
Unfortunately my DSP does not provide all pass filters, but I have experimented with just delays and that also does a good job of phase alignment.
Here's something to try:
- create a new clean optimization run with no filters, no gains, nothing (assumes you have taken measurements with gain matched subs)
- add 2 all pass filters to each sub, with min freq of 10, max of 160 or so - the all-pass filters adjust the phase of the subs
- add a delay to each sub except 1, max range of +/- 10ms
- try one by one adding a polarity inversion to each sub - keep if it looks better, remove it otherwise
- run the optimization just with this to see what happens in the charts - from my experience, just doing these alone without any PEQ can make a major improvement - in effect you are aligning phase, rate of change of phase, and time alignment of the group of subs
- leave all these unlocked and then add 6 to 10 PEQ to the shared group, using filter ranges that you like - I use -12 to +3 gain, 20 to 120Hz, and 1 to 10 Q
- don't add a Gain filter to the individual subs! this will kill your headroom - let the sub filters do the tuning
- run the optimization again - this should you a pretty good result, in particular for the lower frequencies where the headroom is most critical
- for me I can get flat response up to about 50 Hz just with the shared filters and delays/AP - critically what this means is each sub is working all its 100% capacity to provide maximum headroom at the lowest frequencies to add serious punch to the bass
- after this, you can lock the shared filters, add sub specific filters, and continue the optimization.
- another approach is to find out the highest frequency that you know is solved by shared filters only, then use that as the min freq for your sub specific filters

I'll post a few screenshot below to show you what I mean.
When I level match my sub's I first insert -12dB of digital attenuation at the output to each sub channel. By limiting the total PEQ cut to 12dB and not using any boost, I am never in any danger of running out of headroom. Xmax however is another story!
 
@andyc56
I would like to be able to first optimize the shared filters over the range 10 - 200Hz, with all the sub-woofer filters reset and locked.
Then I want to lock the shared filters and unlock the sub-woofer filters, but now only optimize (allocate unlocked filters) over the range 20 - 120Hz.

In this scenario, if I try to set the max PEQ center frequency to match the lower optimization range at 120Hz, it won't allow this unless it first sets all shared PEQ center frequencies to <= 120Hz. But if I leave the max PEQ center frequency limit set to 200Hz and reduce the optimization range to 120Hz, MSO will allocate some filters outside of the optimization range, i.e. with center frequencies greater than 120Hz and to make things worse, these filters are not subject to the Total PEQ cut limits.

The problem is that MSO is allowed to allocate filters with new center frequencies outside of the limits set by the optimization range. This is the "bug" that need to be fixed.
The work around for this bug is to set (one by one) the maximum PEQ center frequency for each (unlocked) filter, using the filter properties tab, so that it matches the new optimization range. MSO appears to use the individual filter limits, but ignores the optimization range when allocating PEQ center frequencies. Filters allocated outside of the optimization range are not subject to the total PEQ gain limits.
 
The work around for this bug is to set (one by one) the maximum PEQ center frequency for each (unlocked) filter, using the filter properties tab, so that it matches the new optimization range. MSO appears to use the individual filter limits, but ignores the optimization range when allocating PEQ center frequencies. Filters allocated outside of the optimization range are not subject to the total PEQ gain limits
Right - forgot about your note re the filters outside of the revised range. A thought: could you just manually set the max and min of the filters you want "forced lock" to have a max and min that are slightly above and slightly below the range? I do this for a gain on one sub that I want hard coded and never to change and never to accidently get unlocked or revised (set the min to 12.0 and the max to 12.01).
 
These are my MSO results, they seem pretty good to me but will be glad to hear any recommendations for next time.

Procedure:
  • Set all AVR distances and levels to 0.
  • Disabled Audyssey.
  • AVR bass configured for LFE only.
  • LPF for LFE configured for 250 Hz (thought I remembered an option in MSO to apply LPF correction but can't find it now).
  • In AVR all speakers set as SMALL and all crossovers configured for 250 Hz.
  • AVR volume at -15 dB.
  • Cleared all EQ out of MiniDSP 2x4HD.
  • Measurements made in REW with laptop connected to Denon AVR via HDMI and UMIK-1.
  • Sweep 2-400Hz, 512k samples (10s).
  • REW sweep volume set at -12 dB fs.
  • Sending sweep signal via L channel (with main L speaker disconnected).
  • Acoustic timing reference via C channel.
  • Made 3 repeat measurements for each subwoofer at each position (10 positions).
  • Used MiniDSP 2x4HD to quickly switch between subs.
  • Optimise for minimum variation between seats - target reference level 80 dB SPL
Lessons Learned:
  • There was no point taking multiple measurements (I ended up just using one for each sub/position combo).
  • It would have been better to set speakers to LARGE and connect the L preout to the MiniDSP input.


Here is the approximate layout of the room. Two subs at the front corners (B&W PV1) and one at the back (KEF HTB2). Main listening position is on a sofa just in front of the back sub. No room treatment other than carpet, curtains and furniture.
sub_positions.png




REW measurements for each sub, at position 001, before MSO:
BeforeMSO.png




MSO results after minimising variation across 10 positions:
MSO.png




REW measurements for each sub, at position 001, after MSO:
AfterMSO.png




REW measurement for all subs combined, at position 001, after MSO:
AfterMSO_combined.png
 
Last edited:
I would like to introduce my own questions. I am slowly reading up on MSO, and I would like to understand some things before I start wasting time. The system is a stereo system with an RME ADI-2 DAC. I use the balanced outputs into my power amplifier (with a passive high pass filter) and the unbalanced outputs into a miniDSP 2x4HD. I have three quite different subs: an SVS SB2000 in the front corner, a much less powerful Kef Kube 8 on a side wall, and a B&W PV1d in the back of the room.
Question 1: how do I set the levels on the subs when I measure?
Question 2: how do I set the relative levels for replay, on the subs, and in MSO? The SB2000 is the most powerful one, and in a corner position as well. It should do most of the heavy lifting, but how do I make that happen?
Question 3: I cross over at about 80 Hz, and I would like to also equalize the main speakers in the range above this, up to perhaps 250 Hz. I can use the filters on the RME ADI-2 for that, but what is the best way to choose the filters? The ADI-2 can do separate filters for each channel. Do I just measure in REW and use that to decide on filters, or is it better to do something in MSO? And if so, how do I do that, given that the ADI-2 only does quite basic filtering, and nothing like delay or phase?
 
Hi Willem. You have a tricky setting where the 3 subs are connected to the minidsp, but your mains are not. This will make it difficult getting the cross over right: you need to make sure that the volume of the subs matches the volume of the mains at cross-over (if the subs are too loud, you change the effective cross over freq).

Perhaps this is obvious but my suggestion is to use MSO with all five speakers (2 mains and 3 subs), instead of just the subs. While you cannot apply PEQ to the mains through minidsp, you want to add them such that MSO incorporates their impact on the overall result. For your mains, apply the slope/shape of your passive high pass filter, and prevent MSO from optimizing this (such that it is not a free parameter). Perhaps add some PEQs on the mains above 80hertz using parameter restrictions, and later implement these through the RME. For the subs, let MSO choose the frequency of the low-pass filter and add PEQs following the tutorial.

With respect to your questions, I myself have a small and a big sub, and faced to same challenge: MSO does not have a simple way to let the big sub do the heavy lifting. You need to run MSO and afterwards check the calculated filters for each sub, which show how much from the original digital signal gets 'cut away'. Hopefully, the SB2000 will have relatively few cuts as compared to the other subs. If not, you need to add constraints on the big sub on how much can be cut away. Its probably a good idea to set the hardware volume on the SB2000 just 2 or 3 db louder then the other subs before starting. Then, in MSO, set max boost to 0 on all subs. It is a bit trial and error and luck with your room.
 
Last edited:
I posted this a few days ago in AVS and think it might help in some of your questions @Willem .

Link here, and note there were a few comments and suggestions right after that suggests a method of "Limit Matching" your subs by measuring each one in turn one by one with increasing Gain and finding the point where each one reaches the same THD (say around 5%) and then using the relative gains required to reach this limit as the basis for setting the relative gains in MSO/MiniDSP

Link: https://www.avsforum.com/threads/op...ins-multi-sub-optimizer.2103074/post-62308699




On the subject of how to Maximize Subwoofer System Headroom using MSO, here is my approach and thinking - would appreciate any comments, feedback and suggestions.

This is from much experimentation myself and from much reading of this thread, @andyc56 's excellent documentation, many other threads, @fattire's great videos, plus searches through numerous papers etc. I have not seen a nice clear set of instructions on how to do this in one place so here are my thoughts:

This methodology is based on the following fundamental principles for maximizing output (aka Headroom).

MSO does not consider Headroom at all: MSO std optimization is 25% MLP delta from the Target Curve and 75% Seat-to-Seat RMS average variation. There are many ways to get the end result, and all of them will impact the overall subwoofer system headroom to some degree. Would be really cool if MSO included a new weighted parameter that balanced between FR and Headroom retained (possibly by simultaneously minimizing Sub-Filter RMS variability and/or Sub Relative Phase variability) but there does not seem to be much in the literature that could provide a rational approach for how to balance these two (at least not that I could find – Welti did propose something called MSVMOL many years back which is sort of what we are looking for but not quite – would love to know if anyone knows of anything published along these lines). So we are all on our own here and as many have said before, you can really muck things up and kill the oomph of your system if you don't carefully set the MSO parameters well to maximize headroom.

Room gain is great for Headroom – take full advantage of placement to maximize output. Ignore the old tricks of placing subs where smoothest response is preferred – MSO and PEQ will get you that and you will get tons of added headroom from good use of room gain.

Shared EQs are good for headroom: Adding shared EQs (i.e. where the same global EQ applied to each subwoofer) always results in an increase in overall subwoofer system headroom. The more shared EQs applied to get to a given target curve, the more headroom is retained.

Individual sub filters are bad for headroom (so use them sparingly!): Adding sub filters to each subwoofer are useful to improve seat-to-seat variation in frequency response however they reduce the headroom of the overall system as each one forces the other subs to “pick up the slack” so to speak – you want to minimize the number and amount of individual sub filters, and keep them to higher frequencies where they are both most useful and do the least damage to headroom

Phase alignment is good for headroom: In a perfect world, the phase of the arriving sound from each sub at each seat would be the same at every frequency (i.e. peaks line up with peaks, troughs with troughs). In practice this is impossible, so at best you want to minimize the relative phase difference of the arriving sounds. Each doubling of subs where phase is in perfect phase sync adds 6dB of headroom – a more typical result is 3 to 4 dB average increase for each doubling of sub count. If you can tweak phase alignment to go from a 3db add to 6dB add, you have effectively doubled your amplifier power

All subs reaching max output at same time is good for headroom: max system headroom will be achieved when all subs are contributing to their max ability all at the same time – see gain matching note below. You do not want your super mondo sub loafing along when your smaller subs are running out of gas, or vice versa – you want them all working at the same percentage of their max capacity at the same time at all times and at all frequencies

Spread the subs around the room: this will result in the most even FR and a more consistent add to the headroom at more frequencies, across a wider seating range

Mixing of sub sizes and types is doable but get ready to learn: if can be done, but is definitely a more advanced process and needs a DSP with all-pass filters if mixing ported and sealed to get really good results

Proposed Methodology:
Step 1.
"Limit Match" your subs - set subwoofer gains such that all subs have the same headroom between the measured level in extreme nearfield and the max subwoofer output
  • if all subs are the same, set their gains to be the same
  • this is neither level matching nor gain matching – not sure if there is a term for it but I think of it as "Limit Matching”. Goal is for all subs to reach their upper limit at the same overall system level at the same time. Subwoofers are limited at some upper bound by distortion, amplifier, or physical limitations of the driver and will manifest itself by measurable distortion or compression of the amplitude response (i.e. it will stop getting louder when given more input). The upper limit will vary by frequency, with limits reached at the lowest frequencies first. Staggering the upper limits of of each subwoofer in the subwoofer system across a range for output volumes will both reduce subwoofer system headroom and invalidate your very carefully set flat frequency response during peaks and high volume
  • for example, if Sub 1 maxes out at 115dB, and Sub 2 at 110dB, then set gain for Sub 1 to 5dB higher than Sub 2 (115dB - 110dB = 5dB) - this will ensure that your higher capacity subs are taking a higher proportion of the load at all times.
  • Use measured data at data-bass.com etc to figure out what the max is - I suggest the CEA-2010 average for 31.5 to 50Hz range as a reasonable proxy and place to start. An alternate approach suggested by @andyc56 is to measure each sub and raise output in increments until the same distortion amount is reached for each sub (say something like 5%), then use the differences in level as the proxy for the max output delta
  • for more than 2 Subs, then make sure that the relative gains are aligned with the relative max outputs

Step 2: if possible, place subs where they will result in the maximum room gain per sub
  • in 2, 3 or 4 corners is best
  • along short wall is second best (this will energize the lowest frequencies which are the ones that require the most power)
  • in nearfield is great for Tactile Response but often will limit the deepest extension below 30Hz - I personally love if for one or 2 in nearfield, though I add a LPF for the nearfield subs at 80Hz as I can localize them a bit too much
  • place your most powerful subs in the locations that provide the highest output at the lowest frequencies
  • I don't worry too much about smooth response when placing, just looking for which places result in the most output dB in 15 to 50Hz range

Step 3: Run all the REW measurements for MSO and upload into MSO

Step 4: Manually set polarity inversions if applicable
  • Experiment with polarity inversions on your subs if some are in front vs behind - this is a manual setting. Pick the setting that results in combination of highest combined output and fewest big cancellation dips in the combined FR for the primary seating positions and then lock these filters
  • add LPF if desired for nearfield subs. I use a 24db/octave BW LPF for my nearfields which introduce a 180 degree phase shift so in effect does the same thing as a polarity inversion, so I remove the previously included polarity inversion
  • make sure that whatever settings you land on, they are either entering into your DSP or into the sub directly – this will seriously mess up your results if you forget to do include these!

Step 5: Run analysis in stages
This is where I think @chadr5731 's approach may diverge a little from what I have been recently been using and is definitely worth trying as well to see if you can get even higher output. I take no credit for the approach – just based on accumulated knowledge and learning of many before us, with special thanks to @andyc56 and @fattire

Suggested approach as below:
  • Use all-pass filters and Delays to align the phases first (you can try to do this and target for max output, then lock them and add PEQ as per @chadr5731’s idea, or use carefully selected filter parameters to keep them within reason and let MSO do it’s thing)
  • Delays to each sub allow for better alignment of the phase, but note they are really more time alignment than phase alignment – if you have significant variation in the rate of change of phase between the subs, then delays alone will not do too much to align the phase. This is typical when mixing ported and sealed subs, or very different subs from different manufacturers etc
  • All-pass filters allow for the fine tuning of phase over a narrow to wide range to better enable the phases to be aligned – they work best when mixing ported, passive-radiator and sealed subs, but can also very nicely tighten up seat-to-seat variation for all sealed or all ported setups. The jury is still out as to the audibility of the introduce phase delay from the AP filter so keep to 2 max and spend time listening after
  • Don’t use any sub gain blocks – you do not want to override your careful Limit Matching and this will have a hugely negative impact to the overall headroom
  • Try to get the FR as flat as possible with only AP + Delay and Shared filters only – target for seat to seat under +/- 3 to 5dB between 20 and 80 or 90 Hz. Ignore any narrow notches.
  • Very often you will see good seat to seat for the lowest frequencies as the relative phase mis-match between the subwoofers caused by the spatial distribution is not that big relative to the long wavelengths – this is a really good thing as it means we can avoid using sub-filters at the lowest frequencies where they will reduce sub-headroom the most
  • As such, add a small number of sub specific EQ but set a min Freq of 50 to 70Hz (look for where your seat to seat starts to significantly diverge and use that for a low bound).
  • Add the Filter plots to you graphs so you can see the sub filters as you are optimizing – the goal is to have the filter plots either right on top of each other or with only 2 to 3dB difference, and only at higher (>50Hz) frequencies
Suggested Filter parameters:

Shared Filters:

  • Shared Gain: plus/minus 24dB (I like to iterate after a few runs to a gain of 0dB and fix it for all future runs such that I can use the filter plots as a proxy for how much headroom I have retained – sum of the area between target curve and filter trace is a nice visual proxy for headroom retained
  • Parametric EQ: 15-160Hz, 0 to -20dB, Q of 1 to 10, 6 to 12 to PEQ
Sub Filters:
  • Sub Gain: NO GAIN BLOCK! - this is critical as you will invalidate your Limit Matching step above and screw up the balance between the subs near their respective limits
  • Sub Delay: -5 to +5ms delay for far subs (typically on front wall), 0 to 10ms delay for nearer subs
  • Sub All-Pass Second-Order: use 1 to 2 per sub if major phase issues, 10 to 300Hz, Q of 0.1 to 1
  • Sub Parametric EQ: 60 to 160 Hz (note 50 to 60 Hz min – very important), Gain 0 to -2dB, Q of 3 to 10, 2 to 4 total per sub – if subs are stacking onto each other, consider doing another run with FR limited say 1 PEQ between 60 and 90Hz, and 2 or 3 between 90-160 Hz
 
Last edited:
Back
Top Bottom