A convolution based alternative to electrical loudspeaker correction networks

I also have the Behringer, a professionally calibrated one.
I started out with the mic horizontal, parallel to the floor. Later on I tilted it upwards slightly, maybe max 15 degree. But I do have huge speakers...
I know gmad points the mic at the speaker that is measured.

Any difference that may occur between the methods is solved on my end by applying my favourite room curve. Not something to get right in one go. I landed there by correcting the speakers with DRC, and making minor cuts with a graphical EQ while listening to a variety of music. Live with that for a while and adjust if needed and next measurement I'd implement the cuts into my target. And start over with the whole thing.
So I kinda grew into this curve. I was very surprised to find out it was almost the same as the room curve from fellow forum member michba, using an entirely different setup though with similar software and room treatment (treatment targeted at the elimination of first reflections).
mitch.jpg

Dark red is Mitch, with higher extension tweeters and light red is me with more low rumble ;).

However, this is no guarantee this house curve will work for you. Just a bit of background, but you're free to try it of coarse. Both Mitch and myself have similar distance to the speakers. We both also have quite a bit of low frequency extension. Gmad listens more in the near field to single drivers and prefers a flat target. Somewhere there are virtual recordings of that and it sounds really good. I'll hunt them down an post them on this thread as I believe they are hosted on my own site.
I tried the flat target on several occasions but that does not work for me with my speakers in my room. The average SPL belonging to my room curve is ~85 dB at the listening position.

I've never done the aiming at the speaker. I measure one side (about 3 times to check consistency) then the other side (same deal, 3x). I then make the correction with DRC and measure it's effect, one speaker at the time. To end the session I record a stereo sweep to check. Most important in a workflow like this is that the mic is exactly in the centre of both speakers. But it should be in any measurement case really.
I check this by running stereo sweeps at the start and align both left and right pulses until I see one clear pulse. Usually I need a few tries to get it right, shifting the microphone sideways only a little. Frustrating work but necessary. I use less resolution sweeps (the shorter ones like 512 or 256) to make it quicker. I switch to 1M after the precise positioning for better signal to noise separation.

Hope this helps. Not only for you but others that like to get their feet wet as well.
 
Last edited:
I've been very happy for a while now with my 4 cycle preset. I tried 5 and 6 cycle windowing again and my experience was consistent with what I remember from the past; the 5 cycle filter sounds good with slightly more extended bass while the 6 cycle length seems excessive. I could live with the 5 cycle windowing but 4 cycles seems like the best compromise to me.

I had a couple of thoughts about why this window length might work so well:

-In the frequency domain, a 4-5 cycle window corresponds to about 1/6th octave smoothness. This is supposed to roughly correlate to how we hear frequency balance, so perhaps this means that a filter of this length produces a frequency response that is "smooth enough"?

-In the time domain, a 4-5 cycle window equates to 20-25ms at 200hz. 25ms is supposedly about where we start to distinguish distinct reflections (although I'd imagine this is frequency dependent to some degree), and 200hz is typically around where our rooms start to transition from modal to reverberant (reflective) behaviour. Perhaps since we don't want our filters to compensate for the effects of (perceived) reflections, it might make sense that we choose a window length that is shorter than 25ms above 200-250hz?

edit: please feel free to pick this apart; I'm just thinking out loud here...
 
Last edited:
However, this is no guarantee this house curve will work for you.

I am happy I found DRC as well, it helped my atrocious listening room into a space that I enjoy music, even if it's still far from perfect.

But that house curve didn't work for me. I have too many room nodes and it was so boomy when I tried it. A flatter response works better in my room, with a notch cut at 1kHz to help with clarity.

That's where DRC shines. It's easy to accommodate space and listening tastes.
 
Your thinking works well for me, Greg :). It's what I figured and thought about as well.
All the help you can get to make the first ~20 ms as clean as possible.
But I do sway a little due to the nature of the beast(s) I correct myself.
Based on extensive testing I have a 6 cycle correction at 20 Hz. Tapering down to 4 ms over much of the mid range and growing again in length again at high frequencies. But for a single driver a 4 cycle correction would probably be all you need. Just play with it... I did use very long windows and very short ones too. Looked at many predictions and actual measurements in REW.
I found out that way longer windows up top while keeping the mids at 4 cycles can be very tolerable. Not true for the bass though, things will start to sound unnatural fast with a long window there. For me, it's a balance between natural and lively bass and control. It needs to feel right, preferably everywhere in the room.
Every time I had more than 4 cycles in the mid frequencies I didn't like how it sounded/felt to me.

And I'll say it again: this is not a complete replacement for actual room treatment. Many view it that way. If you can fix something with a damping panel or other means just do it. It does all add up to a more positive experience.
 
For some reason 4 cycle preset intoduces a large delay and is too quiet. The resulting file has correction somewhere in the middle, whili default presets have it at start :(

The delay is due to the target response stage being set to linear phase; you can change PSFilterType to T if you'd like or just trim the filter with Audacity.

The gain can be increased by changing PSNormType to E or also by using Audacity. I chose PSNormType= P to prevent clipping during convolved playback.
 
The soft pre-set seems like a ~7 cycles correction throughout by looking at it. Slight differences in the template from Greg and the standard DRC-FIR one do exist.

I'd say, whatever makes you happy is the one to enjoy! No need to get as obsessed about it all as I am :D. From what I remember the standard templates are all minimum phase and very short latency. It will be difficult to truly compare anyway, unless you're absolutely sure the playback SPL is exactly the same between the filters you test.
You should also have both follow the same target obviously.

But you had fun right? That's the most important. For me I love to get to hear songs I have known all my life like it's the first time, though all the little nuances I know by heart still exist.
 
For me I love to get to hear songs I have known all my life like it's the first time, though all the little nuances I know by heart still exist.

I thought about you and your towers lately. When you mention how they make you feel.

One song that always gets me is The Friends of Mr. Cairo by Vangelis. Just before the end, when he picks it up and sings "Did you see in the morning light
I really talked, yes I did, to Gods early dawning light..."

I get chills up and down my spine every time.

Sorry, back on track now, even though a little fun now and then is always good.

I made new cables to go between my interface and the amp. I had cheap ones up to now, but I bought some length of nice shielded audio cables and connectors. It's probably in my mind, but it seemed to clean up the sound. Slowly getting back to try convolution again.
 
Thanks, it helped, though 4/6/8 cycle presets provide too little correction for my setup. For now I'm quite happy with soft preset and slight "smiley face" target response.

The soft pre-set seems like a ~7 cycles correction throughout by looking at it. Slight differences in the template from Greg and the standard DRC-FIR one do exist.

The most notable difference is probably the use of the psychoacoustic target stage in the default config files. You could try switching it on (linear phase is probably best) with the 3-8 cycle config files and see what happens (I got decent results with it a while ago used in conjunction with the erb config file).
 
That ERB config file is a pretty strange one:
Code:
ERB approximation windowing (65 ms at 20 Hz, 48.5 ms at 100 Hz, 12.6 ms at 1 KHz, 0.46 ms at 20 KHz)

Translating into 1,3 cycles at 20 Hz, 4,85 cycles at 100 Hz, 12,6 cycles at 1000 Hz and 9,2 cycles at 20 KHz.
That's pretty weird windowing, short at bass, rising fast in the mid and pretty high up top.
I have tried it, but it didn't work out for me in the low bass. Lately I did go for longer windowing up top again.
I'm currently at 6 cycles at 20 Hz, ~ 4.6 cycles at 200 Hz - 1000 Hz and 11 cycles at 20 KHz. But my setup is rather unusual. Not exactly a single driver setup. I moved up from 9 cycles to 11 because like it better, the waterfall plots show improvements too.

@ Perceval: Isn't that what we do it for? I know I am doing this all for that emotion (and several others)... Music is emotion, if it wasn't I'd probably do something else completely. I should try that CD again, or did I only own a tape of it, can't remember :).

Greg, did you ever try a limited target range in frequency for the EP stage? Like I'm using now from 20 Hz to 500 Hz? It actually cleaned up my midrange and top end to my surprise.
 
Last edited:
I did it to be able to correct the group delay around ~130 Hz using a longer window than prescribed in DRC-FIR. But much to my surprise it also cleaned up my high frequency response, both FR and the waterfall plots* changed for the better.
It was just an experiment (one of many) but it worked out well. I had no issues with pre-ringing and it did not change much there. I got the idea by looking at settings in Audiolense and Acourate. DRC-FIR was the only one using a long window for EP correction up top. So the first experiment was to cut that window in half (like at bass frequencies) and I moved on from there.

* = when looking at the early signal, Time Range 10 ms, Window ~3 ms, Rise Time 0.1 ms
 
Last edited:
A little background:
Code:
# EP = Excess phase frequency dependent windowing
EPPrefilterType = s
EPPrefilterFctn = B
EPWindowGap = 35
EPLowerWindow = 1470
EPUpperWindow = 35
EPStartFreq = 20
EPEndFreq = 500
EPFilterLen = 65536
EPFSharpness = 0.25
EPBandSplit = 3
EPWindowExponent = 1.0
EPPFFlatGain = 1.0
EPPFOGainFactor = 0.0
EPPFFlatType = L
EPPFFGMultExponent = 3
EPPFFinalWindow = 1470
EPPFNormFactor = 0.0
EPPFNormType = E
# EPPFOutFile = reppf.pcm
EPPFOutFileType = F
Larger EPwindow values than recommended are used in my case to even out my excess phase at ~120 Hz. Keep in mind the differences in speaker design though. Using this above range enabled me to get phase linear behaviour at the listening spot over a huge bandwidth. I started this with the EP window as normally used to 20000 Hz. Notice the EPPFFlatType = L

Basically I was satisfied with my upper frequency response but wanted to change the phase behaviour at ~ 130 Hz. I had tried linear for EPPFFlatType set to linear before and had mixed results (I think we even emailed about this). By limiting the EP window I could keep my upper end correction as before but straighten out the phase where I wanted it. Like you would/could with RePhase. The EPlowerWindow and EPupperWindow numbers in this section are replaced with actual needed values in my batch file (script). This, much to my surprise, resulted in a cleaner mid and top end wile straightening out the phase at my target frequency. win-win :)
Resulting in flat phase and group delay and excellent STEP response:
4%20cycles%20LandR.jpg

Left and Right 4 cycle window FR and Phase.
impulsestep.jpg

The impulse/STEP when still using EPEndFreq = 20000, reason enough for further investigation at that time...

Too much EP correction did not sound good, I only used values big enough to solve the phase response in the target area I was after. You can't really use it to fix room modes etc. It will sound unnatural. This really worked out well for me.

Your miles may vary ;)

Sample wavelet without convolution:
wavelet-un.jpg


After processing:
wavelet-pro.jpg

Room mode at 70 Hz still visible.
 
Last edited:
Interesting results, thanks for sharing. I forgot about EPPFFlatType=L. I remember our discussion and I remember not liking the effect it gave me of shifting the ringing. Anyway, out of curiosity, I tried a few more things based on your results, but I didn't get anywhere. Maybe that's because (as you have stated) the config file is already optimized for a simple system like mine.