My Current SH46 Settings

Frank Koenig

Sophomore
Mar 7, 2011
187
0
16
Palo Alto, CA USA
www.dunmovin.com
A little over a year ago I purchased 4 Danley SH46s which have become the focus of my on-and-off-again efforts to develop a process for deriving speaker settings from measurements. I finally have something that I think is at least worth a listen, bearing in mind that this is a work in progress.

Without going into too much detail, the FIR part applies above 360 Hz, which turns out to be a convenient lower limit for the nonminimum phase part. The filter is based on 15 pseudo free-field (IR windowed at 10 ms) measurements taken on an arrayed pair (as they would conventionally be deployed) at 5 horizontal and 3 vertical 10 degree increments.

The IIR part is based on 3 ground plane measurement evaluated from ~90 to 800 Hz. They are expressed in terms of Powersoft AESOP parameters. As an aside, I reverse engineered the Powersoft peaking filters and found them to have the following transfer function in terms of their parameters.

if (A >= 1){
a[2] <- w / (Q * 2)
b[2] <- A * w / (Q * 2)
}
if (A < 1){
a[2] <- w / (Q * 2) / A
b[2] <- w / (Q * 2)
}
a[3] <- 1
b[3] <- 1
a[1] <- w^2
b[1] <- w^2
H <- (b[1] + b[2]*s + b[3]*s^2) / (a[1] + a[2]*s + a[3]*s^2)

Where A is the boost or cut, w is the (radian) center frequency, and Q is what they call "Q". I don't know what their variable-slope shelving filters do, I just slide around the parameters to fit the desired response curve by eye.

The IIR parameters are:
1. peaking, 271 Hz, -2.6 dB, Q = 4
2. low shelf, 182 Hz, +4.5 dB, slope = 1.19 octave

The FIR part is in the attached file of 384 taps at 48kHz and has a processing delay of 4.1 ms.

Now that I think I'm getting somewhere with the process I'm looking forward to getting more (angular resolution) and better measurements and refining all this.

Here are before and after TFE plots averaged across all measurement angles. The contour interval is 2 dB.

SH46avg15Raw.jpgSH46avg15Corrected.jpg

--Frank

For some reason the forum software is not letting me upload the file. It says "invalid file". So here it is inline. Cut and paste away:

-0.002846245
0.003043455
-0.00276923
0.003183166
-0.002690172
0.003323643
-0.002614173
0.003459903
-0.002546179
0.003587006
-0.002491371
0.003699509
-0.00245552
0.003791587
-0.002444295
0.003858145
-0.002462075
0.003895692
-0.00251168
0.003901949
-0.002595197
0.003875004
-0.002714406
0.003813583
-0.00286981
0.00371843
-0.003059345
0.003593022
-0.003278498
0.003442673
-0.003521621
0.003273337
-0.00378252
0.003091872
-0.004053465
0.002907288
-0.0043243
0.002730785
-0.004583431
0.002573956
-0.004819876
0.002447176
-0.005023911
0.002360062
-0.005185813
0.002322874
-0.00529506
0.002346189
-0.005341876
0.002438524
-0.005319704
0.002604548
-0.005225818
0.002845676
-0.00505999
0.003161346
-0.004824032
0.003548249
-0.004523666
0.003998031
-0.004170323
0.004496791
-0.003779983
0.00502765
-0.003370048
0.005573333
-0.002958188
0.00611556
-0.002564373
0.006632562
-0.002212585
0.00709909
-0.00192878
0.007490043
-0.00173672
0.00778393
-0.001656179
0.007962722
-0.00170449
0.008010036
-0.001897404
0.00791208
-0.002246242
0.007661684
-0.002753941
0.007260912
-0.003414569
0.006719466
-0.004216118
0.006052055
-0.005141744
0.005279155
-0.006167294
0.004430126
-0.007259
0.003543508
-0.008375619
0.002662996
-0.009473055
0.001833736
-0.0105061
0.001102693
-0.01142685
0.0005199193
-0.01218529
0.0001352402
-0.01273506
-8.458983e-06
-0.01303919
0.0001216556
-0.0130699
0.000551128
-0.01280522
0.001299965
-0.01223067
0.002377216
-0.01134705
0.003773337
-0.01017512
0.005460484
-0.008750374
0.007400613
-0.007115449
0.009549214
-0.005322337
0.0118475
-0.003443156
0.01421279
-0.001574899
0.01654061
0.0001686628
0.01871554
0.001666027
0.02061516
0.002786222
0.02210577
0.003387647
0.0230508
0.003339845
0.0233453
0.002564316
0.0229531
0.001057102
0.021908
-0.001131846
0.02027927
-0.003933987
0.01815009
-0.007261096
0.01564132
-0.01097112
0.01293651
-0.0148746
0.0102299
-0.01883367
0.00759859
-0.02288747
0.004919605
-0.02726065
0.001953798
-0.03219717
-0.001436282
-0.03774304
-0.005119298
-0.04367251
-0.008724615
-0.04960976
-0.01180809
-0.05519054
-0.01394921
-0.06007289
-0.01465905
-0.06378372
-0.01319234
-0.06557381
-0.008459693
-0.06445388
0.0008555229
-0.05945104
0.01599987
-0.05005392
0.03771801
-0.03684286
0.06575142
-0.02224977
0.09856379
-0.01120144
0.1340354
-0.01148801
0.1725233
-0.03527935
0.2270285
-0.1132232
0.3895175
-0.5656818
-0.8247156
1
-0.373733
0.1444993
-0.1070597
0.087523
-0.0804411
0.1114505
-0.09976711
0.05478278
-0.006782236
0.05348903
-0.1001743
0.0205883
-0.03252572
0.03616147
-0.03986971
0.03301972
-0.02416735
0.05882376
0.002909336
0.02481995
-0.04357157
0.02974635
-0.002310344
0.02982877
-0.03515127
-0.0002781205
-0.03872917
0.006014976
-0.03083049
0.005342594
-0.02859317
0.01282665
-0.01522705
0.01854458
-0.01323903
0.02129957
-0.006068769
0.02227558
-0.007537886
0.02155246
-0.004778915
0.02151843
-0.006865039
0.0145083
-0.01245116
0.01371691
-0.008446633
0.01424334
-0.009916231
0.01147236
-0.01183383
0.008576406
-0.01355354
0.006880111
-0.01295033
0.007568829
-0.01245254
0.007413197
-0.01022552
0.008774196
-0.01057738
0.007894689
-0.007923326
0.01132995
-0.005827832
0.01082909
-0.005795221
0.0114592
-0.004476211
0.0110546
-0.005834086
0.009349459
-0.006024855
0.008817963
-0.006974408
0.007553446
-0.006915541
0.007518867
-0.00710381
0.006513059
-0.007719228
0.005928743
-0.008003979
0.004613789
-0.00920161
0.004008224
-0.008857311
0.003791995
-0.008779559
0.004110667
-0.008186194
0.004080935
-0.007750033
0.00458596
-0.00722885
0.004538535
-0.006936749
0.004781081
-0.006558243
0.00456012
-0.006714255
0.004728302
-0.005757906
0.005006188
-0.006101344
0.004537567
-0.00594439
0.004300864
-0.006294053
0.003860135
-0.006420301
0.003668634
-0.006197419
0.003730702
-0.006070226
0.003988973
-0.005187416
0.004698524
-0.004605529
0.005086675
-0.003863051
0.005758935
-0.003206228
0.005992879
-0.002983469
0.006057148
-0.002871562
0.00578275
-0.003159737
0.005396986
-0.003402257
0.004977932
-0.003642391
0.004659834
-0.003868587
0.004345518
-0.003982391
0.004138676
-0.003936997
0.004247797
-0.003772699
0.004162392
-0.003725634
0.004065882
-0.003773151
0.00409705
-0.003515313
0.003986036
-0.003738801
0.003809289
-0.003625462
0.003837922
-0.00360274
0.003614061
-0.003716097
0.003637517
-0.003534918
0.003524896
-0.003626377
0.00350085
-0.003459179
0.003581244
-0.003332072
0.003532629
-0.003282214
0.003676442
-0.003033149
0.00365808
-0.002986955
0.00377236
-0.002873019
0.003600018
-0.002937467
0.003614102
-0.002877803
0.003463092
-0.003003564
0.003318035
-0.002993832
0.003290372
-0.002993211
0.003209294
-0.002960532
0.00317265
-0.002953917
0.003167701
-0.002866221
 
Re: My Current SH46 Settings

For those having a hard time visualizing the filter taps, I took the liberty of graphing them versus time in Excel, and have put that image below:

Filter Taps vs Time.jpg

As a simplified explanation, the FIR has to have coefficients (i.e. taps) before time "zero" to manipulate the phase in the way that Frank desires. They way that this is achieved in practice is to shift the virtual zero point by enough samples to allow taps that occur "backwards" in time.

In this case sample 197 has the impulse peak of "1" and that corresponds to a time of 4.10ms. Thus, the total delay of the FIR before the nominal zero time is approximately 4.10ms. The total length of the FIR taps is eight milliseconds. The extra delay incurred is approximately half the total length of the filter taps.

If you've used a convolution reverb before, a useful way to think of the FIR filter taps is like a specially constructed impulse response like the kind you might load in a reverb plugin to convolve with a signal source.
 
Last edited:
Re: My Current SH46 Settings

Frank,

This is really cool. Have you tried adjusting the window on your impulse to reduce delay at the expense of minor passband ripple, or did you just decide that 4ms was acceptable? What is the objective sound quality difference post your optimization? How did you characterize the behaviors you were trying to reduce in the wavelet response?
 
Re: My Current SH46 Settings

Have you tried adjusting the window on your impulse to reduce delay at the expense of minor passband ripple, or did you just decide that 4ms was acceptable?
Yes. You can make the filter shorter and this filter may be longer than it needs to be. On the other hand, 4ms is acceptable to me for house speakers. Most of the length is devoted to fixing a bump in the excess group delay that may be if no perceptual importance (it just makes square waves look better on an oscilloscope).

What is the objective sound quality difference post your optimization?
Not sure what you mean by this. The SUBJECTIVE difference so far is that it sounds a lot brighter, as one might expect given that there's a good bit of HF boost. Whether this is good or ice-pick remains to be determined :)~:-)~:smile:. So far I've only listened to playback, although some was outdoors and loud on the 4th. I'll have a real live band playing through it beginning of next month.

How did you characterize the behaviors you were trying to reduce in the wavelet response?
I'm looking at the the time-frequency-energy plots largely to learn about what those representations show in general. I don't know them well enough to really use them as an analytic tool. One observation is that when I average TFE plots of many measurements taken at different angles, many of the small echos that look bad on individual measurements go away. So, bad or not, there is nothing you can do about them by signal processing alone. The projection of the ridge of the TFE plot onto the t-f plane does appear to approximate the excess group delay, which matches my intuition, which is nice, since so much of this stuff is not very intuitive, to me at least.

--Frank
 
Re: My Current SH46 Settings

Not sure what you mean by this. The SUBJECTIVE difference so far is that it sounds a lot brighter, as one might expect given that there's a good bit of HF boost.

Sorry, frank, I meant subjective!

What led you to put certain filters in the FIR versus the IIR, just frequency range? Are you using an semi-automatic system to categorize what appear to be minimum-phase errors that are not correctable with simple EQ in order to add them to the FIR?

This stuff is not intuitive for me at all either. As there are no resources available for the mathematically challenged to attempt to correct anything but the grossest time domain problems (e.g. unwrapping phase, or else applying a single dumb filter to perfect impulse response at one listener location) I am really impressed that you're both working on this project in your spare time and willing to share the results.
 
Re: My Current SH46 Settings

What led you to put certain filters in the FIR versus the IIR, just frequency range? Are you using an semi-automatic system to categorize what appear to be minimum-phase errors that are not correctable with simple EQ in order to add them to the FIR?

Good question. When I started doing this I intended to do all minimum-phase correction using the built-in IIR (peaking, shelving) filters in the DSP. I put a lot of effort into automatically fitting filters to a desired response and eventually decided I couldn't do any better than just loading a "curve" (overlay) into Armonia and tracing it by hand. This works fine but takes a lot of effort to redo after and update of the measurements or their processing (averaging, smoothing). So I thought there's no law against implementing minimum phase filters as FIR, and it's relatively easy to automate, so let's try it. Furthermore, the impulse response of the minimum-phase correction has all its energy "up front", so it does not increase processing delay. Given a sufficiently long filter it takes the fitting parameters out of the process, leaving just the smoothing and averaging to worry about. (And more smoothing lets you use a shorter filter.) I'm hoping that fewer parameters makes it easier to figure out what's perceptually important. So that's how I got here. I think I'll take a break from coding and do some more measuring and listening and looking at graphs before deciding what direction to go next. All suggestions are welcome.

--Frank
 
Re: My Current SH46 Settings

Here's an update. I threw out the horizontally on-axis measurements that bisect the 2 speaker array. Due, no doubt, to some chaotic cancellation right in the middle of the overlap they were causing me, among other things, to boost the highs too much. Having it too bright caused me to turn up the bass shelving to compensate during listening tests and the whole thing ended up sounding like ass.

I also made refinements to the averaging and smoothing process and FIR filter window optimization, and spent some time tweaking other ad hoc parameters that need to get dialed in for each tuning.

The FIR part is down to 5 ms duration with a 2.8 ms processing delay. The file is here and is called FIRtaps.csv:

https://www.dropbox.com/sh/e7drwqvtekr28rb/AABXPK9emHqQzARcCpDXrn2ma

The IIR part is now a single peaking filter:
267 Hz
-5.4 dB
Q = 2.3

I've been sitting around listening to Joshua Redman, Steely Dan, and whatever is playing on Paradise Radio. Dare I say it, I think I'm getting there.

--Frank
 
Re: My Current SH46 Settings

Do you have SmaartLive traces of both magnitude and phase, plus subjective differences with stock boxes and basic EQ?

Not yet. My big problem is that I don't have a decent, convenient place to do measurements. I have done a bunch of simulated tests in software where I apply the processing to the data I have but really need to do fresh, all-the-way-through, tests. And whether any of this is better than basic EQ is a very good question. I'll post results as soon as I have them, but it may be a while.

--Frank
 
Re: My Current SH46 Settings

Too bad you don't have three SH46 or you could play with correcting for pattern collapse!

I actually have 4 SH46s, so I suppose I could. I've never tried them arrayed more than 2 together, but I'd like to sometime. Trouble is I can only fly 2 at a time from my towers, so I would need some other means of support, like a JLG-style lift. Maybe at (Palo Alto) Airport Day this year, if they want me and if they want to rent the lift.

Here is a Smaart plot, as requested. It's just a single point (a little off-axis) near-field measurement taken in a reverberant environment and includes the effect of an 80Hz LR24 HPF. So it's not a substitute for the real thing. At least with an SH-46 near field measurement is possible, since all the sound comes out of one hole. The data on which my settings are based were made with 2 arrayed SH-46s. Better measurements to follow.

SH46NearFieldCor.JPG

Here is a frequency response magnitude plot of the process that leads to the minimum phase filter.

TrimedMeanMag.jpg

The FR plot shows the amplitude-normalized FR magnitudes smoothed at 1/24 octave in colors and the trimmed-mean magnitude smoothed at ~1/6 octave with the ends extrapolated, in black. That gets inverted to becomes the prototype filter.

The "after' TFE includes the effect of the single IIR peaking filter that attempts to quash the resonance at ~270 Hz.

SH46avg12Raw.jpgSH46avg12Corrected.jpg

Bear in mind that all these, except the Smaart plot, are "fakes" in that they are derived by applying the processing to the original data in software.

--Frank
 
Re: My Current SH46 Settings

Good job Frank, 2.8ms is certainly better. How does the out of the box phase response look compared with your processed response?

Your thread is inspiring me to pick up a FIR capable DSP again... it's been a long while since I've messed with this sort of stuff.