A convolution based alternative to electrical loudspeaker correction networks

Your TDA software does look very interesting and useful. Please describe advantages over using open source software like that used by Gmad or Wesayso to achieve the same goal. I think many of the graphical tools appear to be similar to what we can see in a package like REW.
Yes, it looks like similar in terms that it is spectrogram.
But the difference is in the level of resolution.

TDA was developed to „see” timing issues for professional and car applications.
Especially, to set timing alignment between bands of multiway system. Or, at least, to check result of some tuning job.
The title picture of APL website is very illustrative in terms of resolution.
Non Linear Distortion Analysis feature of TDA gives as frequency curves of particular harmonics.

That timing resolution of TDA allows working not only with timing issues but allows getting very true amplitude information for detailed EQ of loudspeaker. It is implemented in TDA EQ.

BR,
Raimonds
 
Thanks BYRTT,
It is for professionals.
Please make your offer : )

Sorry I'm late Raimands don't know why i missed post maybe to many subscriptions in my mailbox.
Based experience from what wesayso showed no doubt its worth it for professionals, but think cost to go high sale for diy think more we in €10-30 range.
That said if you can offer me a licence cost same as announced for students €62, then i go pro : ) for my diy 2-way.
 
Sorry I'm late Raimands don't know why i missed post maybe to many subscriptions in my mailbox.
Based experience from what wesayso showed no doubt its worth it for professionals, but think cost to go high sale for diy think more we in €10-30 range.
That said if you can offer me a licence cost same as announced for students €62, then i go pro : ) for my diy 2-way.
Ok, I am accepting your offer : )
And same way any offer from readers off this topic
 
Administrator
Joined 2004
Paid Member
A Second Try

Finally got time to revisit this and do it properly. The results were interesting.
On my first try I did not have 44.1K sweeps of my system, but 48K MLS. That had to be adjusted before exporting the impulse for each speaker.
Today I did fresh new sweeps 16-22kHz at a 44.1 sample rate. With those exported and reformatted I was able to generate correction file. I did 3 cycles, 4 cycles, normal, ERB and minimal.

They all sound different. Minimal was not right at all, very skewed to one side and strange sounding. 3 and 4 cycle were similar to each other, of course. ERB is different. Strong and forward center image (nice) and a little warm and thick sounding. Reminds me of a good 8" fullrange driver in a big box. I think a lot of listeners would like it.

I ended up using 4 cycle, as it sounded the most natural and the most like no correction, but flatter. Good depth, neutral tonal balance, center image good and slightly deep.

Thanks for the scripts and the help, it is a very nice EQ and is very eay to listen to. :up: :up:
 
I'm glad to see you're having fun Pano! The possibilities are endless really.
The ERB, as theaspin noted has a soft handed approach at the bottom end. Quite a strong correction in the mid and high frequencies.
The 4 cycle has just that, 4 cycles top to bottom. But you can make the tonality of the 4 cycle correction much like the ERB one. Just by changing the target.
The template I use is somewhere in-between those 2 generally speaking. I think the ERB is quite nice but a little too strong in the mid frequencies and soft at the bottom (in a nice way)
But there are more differences between Greg's templates and the standard ERB template which determine what get's done and how.

My own templates also change the phase on the low end to "resemble" minimum phase behaviour, much like one would/could do with RePhase by hand.

It's not easy to find the right settings, as so much influences us while listening. One thing I did note: I need to be able to listen to it for weeks to really like something. First impressions can be very good, only to be disappointed the next day. SPL level while listening also messes with our minds. Sometimes all you need is a notch up on the amp to make the stage come alive. That's why I always have a SPL meter handy.
The imbalance from left to right might occur occasionally. DRC does not make both channels equally loud. I always run a measurement with convolution active and check the left/right balance and adjust if needed. While making the correction DRC shows the average SPL for that channel, but like I said. It does not correct left to right balance differences. It's up to the user to do that. This alone can make quite the difference.

The puzzle here is getting to know what part of the correction makes you happy and what should change. The way I tried to figure that out is by overcorrecting a part of the spectrum, change only one thing. For example long correction at bass frequencies and keep the rest the same as before. You need to change a few parameters to do that but it's a good learning experience. The tool DRC Designer is very handy to do something like that. Though it is limited in template choices but you can put in your own and replace one of the standard ones.

For instance: When I started these experiments I took Greg's 4 cycle template and saved it within DRCDesiger as the "Soft44100" template.
That way I could create custom correction windows with just a few sliders. I have long moved on but this experiment was very helpful for me.
It makes you conscious of the specific changes you make. I noticed I could tolerate long windows at high frequencies without noticing much differences (short term). But not in mid and low frequencies. Things change more quickly there with different window lengths.
If you think about it the explanation is simple. The wave length at high frequencies is short. So it would take a lot longer window before you're messing with room reflections/effects.
At the low end you can't even avoid them. The room determines a lot there and you just can't gate it out.
The way curves look isn't a guarantee for the best sound sadly. More and more I'm convinced that finding the right (frequency dependant) window of correction is. And combine that with a target that works in your room. The 500 ms graphs will still look pretty enough if you find that right window. But I'm convinced it's the early wave front that's the most important to get right. However long that (FD) window representing that wave front might be ;).
 
Last edited:
Another thing is that playing with DRC variables is like choosing a perfume - at some point brain stops sensing minor differences at all :)

For me a good starting point was the 4-cycle template with two types of phase correction: one with all minimum phase and one with linear phase. I'm still trying to tweak it as the amount of all things that can be changed is enormous.
 
Another thing is that playing with DRC variables is like choosing a perfume - at some point brain stops sensing minor differences at all :)

For me a good starting point was the 4-cycle template with two types of phase correction: one with all minimum phase and one with linear phase. I'm still trying to tweak it as the amount of all things that can be changed is enormous.

That's where all tabs in REW come in handy. Look at all the tabs and play with the views. If REW had the frequency dependant windows sooner it would have saved me a huge amount of time. Look what the differences are over time.

If you are talking about PLType I personally settled on "W". In other words: log weighted minimum phase.
 
Thanks again for the update, Pano. A couple of things to consider for the future in case you still want to do some tweaking:

- channel balance can vary a bit from filter to filter and is rarely acceptable without adjusting the level of one of the filters. I put a note about this in the guide but unfortunately it consists of a few steps (and can't be done if the left or right IRs are normalized independently of one another at any point).

- the standard config files (minimal, normal, erb etc...) use the the psychoacoustic target response stage which will have a more pronounced affect with weaker filters (ie: minimal) since it tries to flatten any remaining "peaks" in the corrected response. I bypassed this feature with the custom presets in order to give a better sense of the effect of window length (and get a cleaner final impulse response).

- if you like the sound of your system with no correction and just want to flatten the response a bit, a minimum phase filter might suit you well. The output is taken from the minimum phase filter extraction stage; unfortunately, you won't be able to generate a test correction file for this filter (I do it the manual way by convolving the the IR with the filter). The min phase 4 cycle filter (with ringing truncation switched back on) works very well for my system and is very close to what I get using the auto eq feature of REW (with a 4 cycle freq dependent windowed min phase IR). I could post a script for the min phase filter generation if anyone is interested.
 
Administrator
Joined 2004
Paid Member
OK, I'm missing something here. I want to do a 4 cycle with a B-K target. But I don't see where or how in the script to call the target file. 4 cycle is nice and flat, but I'd like to add some tilt to it.

I've read the documentation, but I don't see it. Can you help?
 
Another way would be to look inside the template you're using.

The variable you are looking for is:
PSPointsFile = flat.txt
You can change that flat.txt to whatever target you want to use. I still use DRCDesigner to draw my own targets. Generating a random file get's me the file: DRCDesignerCustomizedPoints.txt in the DRC\Sample folder. I rename that file and make the template work with that one in my scripts.

Another thing to note, there's also a mic calibration file in the template. Look for:
MCPointsFile = wm-61a.txt
Substitute that one for your own microphone calibration file.

The above method from theaspin works as well. I've been doing that for a long time.
I just thought I'd point at the actual variables that influence the behaviour.
The way a target is interpreted by DRC can also be changed. I know, as I have changed the settings to make it do what I wanted! The documentation tells you what you need to look for. It's in the PS part of settings.
If I have a recent enough copy of Greg's templates it says:
PSInterpolationType = H
From the DRC manual:
6.12.2 PSInterpolationType



This parameter defines the type of interpolation used between the points of the target transfer function. L means the usual linear interpolation, G means logarithmic interpolation, i.e. interpolation performed on a bilogarithmic scale, R means interpolation using Uniform Cubic B Splines, S means interpolation using Uniform Cubic B Splines on a bilogarithmic scale, P means interpolation on a linear scale using a monotone Piecewise Cubic Hermite Interpolating Polynomial (PCHIP), H means interpolation on a logarithmic scale using PCHIP. The logarithmic interpolation makes the definition of the target transfer function easier, without the need to define intermediate points to get the desired behaviour on a bilogarithmic scale. The default is S.
If it is indeed H, that's the same interpolation type I currently use and it's also used in the ERB template I have here. But if I look at the Normal44100.drc template it says: PSInterpolationType = G.
So lot's of variables to play with. Maybe even too much! I've gotten to know a lot of them intimately :D.

** Disclaimer, some of the actual values of what I posted might be different, I got these files in pre-production stage from Greg, end of disclaimer**
 
Last edited:
Yes, open "4cycles-44.1" (it's really just a text file) and change "PSPointsFile" from "flat.txt" to "tilt.txt"; that's basically all there is to it. The steepness of the slope can be changed by simply editing the target definition file.

The "H" interpolation gives the slope a nice subtle B&K type curve, and the linear phase setting (PSFilterType = L) allows for perhaps slightly more "transparency".
 
Last edited: