A convolution based alternative to electrical loudspeaker correction networks

Minor Update

theaspin's tip about about pausing a script got me thinking. I used to use an Audacity plugin called "Wave Stats" to help perform my channel balancing because I could calculate the corrected A-weighted RMS level for each channel which I felt was probably the best method. Unfortunately, this method involves a few steps and can be a bit of a pain. However, due to the flatter response I get with the new custom filter, it looks like it doesn't really matter whether I use A-weighting or not. So, I decided to take advantage of the fact that DRC reports the RMS level of each corrected channel, and so now the scripts will pause twice to give us the opportunity to take note of it. I was able to eliminate the last paragraph of part 2 of the guide, and incorporate the new simpler method into the previous (now final) paragraph. Hope this helps!
 
Earlier we had someone post an example of an automated batch file, I sort of took that example and build my own variant of that, here's the jest of it:
Code:
Echo off
CLS
cd c:\DRCDesigner
Echo Generating Left side
Echo.
Call Leftcustom_44100.bat >leftvar.txt
Echo printing results:
Echo.
cd c:\DRCDesigner
Type leftvar.txt
Echo. 
Echo Generating Right side
Echo.
Call Rightcustom_44100.bat >Rightvar.txt
Echo printing results:
Echo.
Type c:\drcdesigner\Rightvar.txt
Echo.
Pause
Echo off
CLS
C:\DRCDesigner\sox-14.3.2\sox.exe -t raw -e float -b 32 -r 44100 -c 1 Lcust.pcm -e signed -t wavpcm Lcust.wav
C:\DRCDesigner\sox-14.3.2\sox.exe -t raw -e float -b 32 -r 44100 -c 1 Rcust.pcm -e signed -t wavpcm Rcust.wav
C:\DRCDesigner\sox-14.3.2\sox.exe -M Lcust.wav Rcust.wav -e signed -t wavpcm Custom_44_lin.wav

move /y Custom_44_lin.wav "C:\DRCDesigner\ConvolverFilters"

This batch file calls two separate routines that run DRC-FIR with al variables.
In one go I get the DRC results saved to a text file, see them on the screen, get a predicted result and a convolver file ready to use in JRiver.

The separate batch files to run DRC-FIR allows me to deviate from the template by setting the right variables... it is set to generate both a predicted result and the actual FIR filter. Sox is used to build the stereo FIR filter.
 
SoX for Christmas

Taking a cue from some previous posts, I further streamlined the procedure; the scripts now generate stereo WAV files. Following Part II of the (latest) guide is basically a breeze at this point. The new scripts won't work with the previous package so I'm not providing them separately. I hope this will be the last update for a while. I think this will be a worthwhile download for anyone who likes to experiment with DRC, or anyone who has been put off until now by the complexity of the procedure. Have fun and let me know what you think.
 
Last edited:
Did some tests over the weekend, new filter sounds "fuller" but sometimes too much "in your face" on certain tracks. Guess I'll have to play a bit with my own filter and come up with something in between. Thanks for sharing it!

Things like "in your face" usually have more to do with the in room curve. Basically you could try a different room curve and still use this template.

A measurement with the convolution in line will be able to show you why.
 
Thanks for the tip, I'll try to compare both filters with a flat target instead of a sloping one. I can only tune by ear and by looking at what EqualizerAPO shows in the resulting FR plot as setting up everything for measurement is too time consuming at the moment. Another thing is that I still haven't figured out how to properly interpret the measurements apart from looking at the FR curve :D
 
You're welcome, guys. Thanks for trying it.

theaspin, the new filter gives me a "fuller" sound as well, but the response is flat; it's really that my previous filter wasn't strong enough to provide an extended response with my system (now I can use a proper HP filter without losing too much bottom end). As for the "in your face" part, I'm not really sure what to make of that other than what wesayso mentioned. The custom filter uses a flat target and no psychoacoustic target stage - perhaps you're using the psychoacoustic target with your personal filter? When large differences are heard between filters, the first two places to look should probably be the corrected freq response, and the filter's resolution (smoothness of the eq's freq response). Thanks for reporting back, and please keep us updated.

I just want to clarify some sloppiness from post 333: while making a comparison to the previous 4 cycles filter I must have combined the versions with and without ringing truncation in my mind...it was the RT version which (due to the double windowing) was a bit low on resolution, while the non-RT (the one I used and the one that was provided) had decent resolution (even ringing longer than 4 cycles at some frequencies). Anyway, contrary to intuition, neither version was strong enough to give me a very flat and extended response over the first 4 cycles.
 
I had to try and run that Ringing Truncation filter again in my own template. Sad to say it does not work out for me. The basic filter I use without ringing truncation is cleaner in early waterfall graphs, even cleaner pré-ringing wise but about one dB less average output. I never tried that filter with a shorter length so I figured to give it a shot.

I had to try, though this does not imply the new filter from Greg wouldn't achieve better results in general. My template is way different and tailored specifically to my line arrays and what I wanted from them. Greg is probably using a variant without any pré ringing, at least in the minimum phase filter. I do use quite a bit of phase manipulation in the bottom end, again tailored to my specific situation and room.

I had to try, too bad it isn't gaining me anything. As I run totally different numbers/lengths in the windowing, making up for my arrays spread out high frequencies (different distances to each full range driver as measured from the listening position) it's not that unusual that this does not work in my case.
 
Last edited:
Well, I too was previously getting the best results without ringing truncation. The idea with the new filter is (assuming no previous use of the RT stage) to set the RT window to whatever prefilter windowing you like, and then increase the prefilter window ~2X. For example, 4 cycles prefilter window and no RT becomes 8 cycles prefilter window and 4 cycles RT. I should mention also that Toeplitz inversion and double sided windowing are important factors in the results I'm getting. Did you modify the my custom file or your own?
 
I modified my own template. I do use Toeplitz inversion.
I did catch I had MPPrefilterType = s, not 'S', so that would imply I'm using single sided windowing.

Just tried, no luck, still the same results for me. I do admit having ran just about any parameter to see what it does and optimised my template for my specific goals. I just did not try this approach. So to really test it I should double my préfilter window and run the RT the length I usually use.
That I definitely did not try. Wouldn't that also double the window length in cycles used for inversion? That's quite a bit more aggressive.

I tested different window lengths separately for bass, mids and top end. Optimising the process by stepping each one back till I lost something in listening tests. As said, my window on the top end is still longer than usual, as this did have an effect on imaging. However longer windowing in the mid frequencies were making the filter more restricted to a smaller sweet spot.
 
Last edited:
Ok, so try "S" window type for MP/EP prefilter stages and RT stage, and see what happens. I wouldn't be surprised at all if you lost resolution in a couple of small spots compared to your current filter, but I'm interested to know about the overall result.

edit: I was typing without seeing your edit...

yes, what is being inverted would be 2X the current size...
 
Last edited: