A convolution based alternative to electrical loudspeaker correction networks

:)

From the guide (I'm feeling lazy):

If either of the impulse centers were not the loudest peak of the impulse response waveform, DRC will need to be told which sample the impulse center occurs at. This is done by changing the "BCImpulseCenterMode" value of the appropriate configuration file (open as a text file) to "M", and the "BCImpulseCenter" value to the sample that the impulse centers occur at.

Like I said though, in this case (a difference of 3 samples) it may not be much of an issue.
 
We'll use REW for this example (in the guide I use Audacity). Zoom in to T=0 (impulse center) and make sure that the sample points are visible (Controls - Show points when zoomed in). REW assumes that the loudest point is the impulse center and aligns it to T=0 which will be at the 1 second mark (sample number 44100 in this case). Notice now that the initial spike is 3 samples earlier (44097). An audio editing program like Audacity will actually tell you the sample numbers.
 

Attachments

  • showing sample points.jpg
    showing sample points.jpg
    95.2 KB · Views: 368
Last edited:
Got it! Thanks!

Now, I played a sweep with the 4cycles filter, it's ok, but the impulse has shifted...it's not at zero anymore (not that the main peak wasn't exactly at zero in the previous sweep either!) weird?
 

Attachments

  • Screen Shot 2016-10-20 at 12.19.51 PM.png
    Screen Shot 2016-10-20 at 12.19.51 PM.png
    73.1 KB · Views: 372
New kid on the block... and free!

Rosen has made an IR loader called "Pulse". It's perfect to load into audio apps that support AU or VSTs but do not have convolution integrated into the app like in JRiver.

So, apps like Audirvana, Fidelia, and others that allow AU or VST plugins, can now use the Pulse loader.

I just tried it and it works fine. Mac or PC.

Here's some more info:
https://www.kvraudio.com/forum/viewtopic.php?p=6587695
 

Attachments

  • uncorrected.jpg
    uncorrected.jpg
    106.6 KB · Views: 327
  • corrected min phase.jpg
    corrected min phase.jpg
    108.7 KB · Views: 322
  • corrected mixed phase.jpg
    corrected mixed phase.jpg
    102.8 KB · Views: 325
While I'm at it...here are 3 pics showing:

1. uncorrected impulse response
2. corrected with min phase filter
3. corrected with mixed phase filter

Perceval, here's the mixed phase filter to compare to the min phase one i already gave you. Make sure that eq is off ;).

https://www.dropbox.com/s/hzt7usalt51ci3t/perceval filter 4Cycles (mixed phase).wav?dl=0

Greg,

Sorry for the delay... I'm in the middle of setting up the haunted house for our local kids... something I do every year and it's quite special for Asian kids... I have a different theme every year, and it's just so much fun.

So, I got the mixed phase filter, and played some songs with it, shuffling between the minimum phase and the mixed phase filters, but, I couldn't play music at interesting levels, plus there was some action around the house. So far, I couldn't discern anything., there was no "night-and-day" differences but I'll need some quiet times when I can move the decibels a bit higher to enjoy.

So, just a little note to say thanks, and I'll get to play with it... after November 1st, I guess!
 
Since I was cluttering the Two Towers thread, I decided to continue here.

Showing the power of APL TDA and it's visualisation of a room. And showing the power of DRC.

So, here we have a pair of W8-1772 in a ported enclosure, driver placed 60cm (2 feet) off the back cement wall. Mic is at the listening position at ear level on the couch, 130cm (4'3") off the cement back wall. Strong reflection from that back wall and a coffee table in front between 5ms and 15ms.

587179d1482388010-convolution-based-alternative-electrical-loudspeaker-correction-networks-1-mono-ported-only.jpg


This one is with another W8-1772 placed on top of the ported box, dubbed the Mega Nola Brio Trio! ;) We see the multiple new reflection sent by the extra drivers mounted on open backs.

587180d1482388010-convolution-based-alternative-electrical-loudspeaker-correction-networks-2-mono-ported-ob.jpg


Now, I've added pillows on the coffee table, and a rockwool panel with some acoustic foam on top of the panel, trying to tame the back wall reflections.

587186d1482388340-convolution-based-alternative-electrical-loudspeaker-correction-networks-img_20161222_131945.jpg

587181d1482388010-convolution-based-alternative-electrical-loudspeaker-correction-networks-4-quad-pillows-wall-pads.jpg


Now, I will move all the drivers from the front wall, drivers now sitting 105cm (3'5") off the back wall. Now that cleans up a lot of stuff, but that new strong peak at about 7ms is from the cement front wall, I believe.

587182d1482388010-convolution-based-alternative-electrical-loudspeaker-correction-networks-5-quad-forward-pillows-pads.jpg


Here, I turned on the small 10" Yamaha sub placed in a corner of the room.

587183d1482388010-convolution-based-alternative-electrical-loudspeaker-correction-networks-7-quad-forward-pillows-pads-yamsub.jpg


Finally, I launched DRCDesigner, and running out of time, I just let it do it's own sweeps, and didn't follow all the steps mentioned by gmad in his description, hoping peaks would be aligned close enough (hint: they weren't) and used the basic minimal setting with a downslope of -5dB from 1kHz to 20kHz.

587184d1482388010-convolution-based-alternative-electrical-loudspeaker-correction-networks-9-drc-minimal.jpg


Still, it did a clean up job, I should say!


Now, I've spared you the other multiple sweeps I took with TDA, REW, etc... This took a little less than 2 hours.

Imagine what would be possible with a whole afternoon and following the instructions closely to make sure DRC performs at its best!

I have a better understanding of my room, and found a problem.

My right speaker's output dies quickly at 200Hz and lower. I have no idea why. The left is fine. I tried to swap amplifier channels to see if something was wrong there, and nope, still dropping on the right channel.

That might explain why the low end has gaping holes between 50Hz and 120Hz. The left channel is working alone at those frequencies.
 

Attachments

  • 9- With DRC Minimal.JPG
    9- With DRC Minimal.JPG
    135.6 KB · Views: 370
  • 7- Quad forward with pillows and pads with YamSub.JPG
    7- Quad forward with pillows and pads with YamSub.JPG
    137.2 KB · Views: 372
  • 5- Quad forward with pillows and pads.JPG
    5- Quad forward with pillows and pads.JPG
    140.8 KB · Views: 377
  • 4- Quad with pillows and wall pads.JPG
    4- Quad with pillows and wall pads.JPG
    143.2 KB · Views: 372
  • 2- mono ported + OB.JPG
    2- mono ported + OB.JPG
    147.5 KB · Views: 375
  • 1- Mono ported only.JPG
    1- Mono ported only.JPG
    140.6 KB · Views: 377
  • IMG_20161222_131945.jpg
    IMG_20161222_131945.jpg
    76 KB · Views: 371
Last edited:
I will be right here!

I wish I could be like others and settle on one design and be happy with it.
Unfortunately, I love to tinker, so it's always a "let's go back to the beginning and start over" approach for me.

At least at the moment, I like that Mega Brio Trio I got, so I'll try to improve on that.
 
DRC package change

I made a change to the DRC package. Basically, I replaced the custom configuration files with just one file. I'll describe how the new file works and then how to tune it.

The new config file (custom-44.1.drc) is based on the idea of 1/6th octave resolution correction, but now this resolution is defined by the RT (ringing truncation) stage rather than the prefiltering stage which is using a window twice as big as the RT stage. What this means is that the impulse response is windowed to 8 cycles, inverted, and then windowed to 4 cycles. With my system, this new filter (compared to a filter made from 4 cycles of prefilter windowing and no RT) rings more consistently across its range rather than exceeding 4 cycles in some areas and falling a bit short of that in most areas. The practical result for me has been a flatter and more extended response with subjectively better imaging and frequency balance. Some other minor tweaks have been made to various stages which are also contributing to the improved performance. The mixed phase version will further improve the corrected phase response by introducing 1 cycle of excess phase correction as well as linear phase peak limiting which helps to maintain the phase response of the inverted signal in areas that would otherwise cause excessive boost (like frequency extremes or room induced dips). I recommend using the min phase filter - at least in the beginning.

As far as tuning the filter to better suit personal taste, there are basically three aspects to consider: prefilter windowing (how much of the impuse response (from a time domain perspective) will be inverted), peak limiting strength (how much boost/cut will the filter apply), and ringing truncation (how much resolution will the filter have).

For example, to further highlight the direct sound, decrease the value of MPWindowExponent (to something like 0.9) which will reduce the size of the prefiltering window. To increase the allowable amount of boost (at the expense of driver excursion), increase the value of PLMaxGain (perhaps no more than 0.5 at a time). To increase the resolution of the filter (at the expense of off-axis response), increase the value of RTWindowExponent (to something like 1.1) which will allow the filter to ring longer.

I think this approach will better suit all but the most obsessive tweakers. Have fun and report back with any interesting results. Oh, and Happy Holidays :).
 
Last edited:
I'll give it a go!

I usually do like the 4-cycle filter you sent me, so if it's any better than that one, that should be sweet.

I'm having trouble using the original package while running Wine on my Mac. Am I right in thinking I just need to copy the new custom-44.1.drc to the sample folder in DRCDesigner, change its name to something like strong-44.1.drc, and then selecting "Strong" from the preset filter menu and it will produce the right filter?
 
I tried installing your DRC package via VirtualBox, an emulation that runs a full Windows 7 OS. When I click on one of the Filter batch files, it opens a "Run" dialogue, I click on Run, a command windows appears for a millisecond, then disappear.

Nothing happens, no filters are produced, nothing is going on.

Wondering what the problem is here, as it should work fine within the emulated OS...
 
Either it cannot find the impulse reponse files to work with or DRC crashes due to math overflow or something. What you can try is to edit all .bat files in the DRC folder and add a single line with pause at the end. This will cause the window to wait for you to press any key before closing so you can see the error message.

gmad, can you share your latest template? I would like to compare it with mine over the weekend.