A convolution based alternative to electrical loudspeaker correction networks

regarding posts 187-188:

I should have mentioned that (regarding the custom filters) changing PSFilterType from "L" to "T" without changing PLType from "P" to "W" could possibly chop off some pre-echo (there due to "P" being linear phase) and
alter the frequency response of the filter.

I am currently considering (as I have in the past (just ask wesayso ;))) changing these values in the custom config files, making for shorter filters with nearly identical sound). Then, the only differences between my config files and the standard ones (besides windowing), would be the bypassing of the psychoacoustic and ringing truncation stages.
 
Greg, have you ever tried your REW method of EQ-ing the minimum phase IR, but instead of using the exported convolution file in REW, simply type in the needed PEQ's in your player. Record the IR with the EQ inline and run that pulse trough DRC-FIR's correction?
So trying to optimise for minimum phase and let DRC clean up after that with it's partly linear phase settings...(*)

By the way, I use PLType=W, have been using that for quite a while. Still using PSFilterType = L and due to using the EPPFFlatType = L from 20 to 500 Hz I cannot truncate the signal.

(*) = I figured I should use or try that method as a "base" pré-EQ on my lines. But right now it just sounds so good that I'm not touching anything!
 
Last edited:
I actually thought about your pre-eq method after my recent experience with REW and wondered if anything would change for you if that pre-eq was based on a freq dependent window...

What advantage do you think that could give me though? Other than a possibly improved SNR with a pre-eq'd sweep, I can't think of any advantages to that method in my case as opposed to letting DRC handle everything...

I hadn't thought to try EPPFlatType = L with PLType = W until your last post. I tried it and it sounds good! I think it was too much in conjunction with the lin phase peak limiting when I tried it a while back (so many combinations of parameters...). Now I need to listen to it a little bit...
 
Administrator
Joined 2004
Paid Member
Good ideas, I will have to try some of these different settings.
For the moment I managed to get a decent BK tilt with some tweaking. Below is what the left channel should be with the DRC correction. Right is very close to that, without the odd bump at 28Hz.

Now I have to go listen to it!
 

Attachments

  • left corrected BK.png
    left corrected BK.png
    23.1 KB · Views: 325
Yeah, I'll try it at some point as well. I actually almost did try it recently (after getting good REW EQ results) to see if I could get a fully extended bass response with 3-4 cycle DRC windowing (which doesn't seem to really happen with less than 5 cycles). In the mean time, I'll be wrestling with the linear excess phase correction/minimum phase peak limiting combo to see if I can be convinced to give up the "purity" of my min phase filter (does it ever end? ;)).
 
Administrator
Joined 2004
Paid Member
Yes, getting the tonal balance right is the first and most important. The curve I showed is a little too dark for my cave - which is dark enough already. ;)
After the right response target is found, then I can tweak the other things you've been talking about. I did notice some artifacts.

Was going to work on it tonight, but got invited to a showing of Lon Chaney's 1923 silent film Hunchback of Notre Dame with live music. Even better!
 
Administrator
Joined 2004
Paid Member
Question about levels.

My DRC correction lowers the overall level by about 6dB. That seems consistent across a lot of tracks, and it's obvious. But peak level is another matter. Sometimes it's reduced by 6dB or more, but just as often by only 2dB. Content dependent, of course.

Do you ever have any problems with levels or with clipping post convolution?
 
I've had my share of problems, yes. I need to bring down overall level to compensate for the amount of boost used in the convolution. The 6 dB reduction in DRC is an arbitrary number set by the parameters within DRC to protect it from digital clipping.
If you run a loop-back including your DAC, so running your DAC out to Microphone in and run a REW sweep, one with and one without DRC you can somewhat figure out the maximum amount of boost DRC uses. That will help choose attenuation needed to prevent clipping. I just play the most difficult tracks that I can find and keep an eye on the level meters (like JRiver's Analyser) to set it. Adjusting to keep it on the save side. Within JRiver I run the analyse tool on all files and use Volume levelling and adaptive volume set to Peak Level Normalise. That will help keep the peaks below the clipping level.
 
Last edited:
I chose PSNormType = P for the custom filters since it gets the level right for my foobar2000 convolver (the stock setting (PSNormType = E) makes the filter a bit louder causing clipping in my chain). However, when using a different convolver inside MPC-HC, I have found the need to reduce the filter level by 6db to prevent clipping (this can be done in the convolver itself or by reducing the gain with Audacity).

To visually check for clipping, try convolving a full scale sine sweep (Audacity can be used to make a "chirp") with the correction filter and view the resulting file with any audio editing software. Or else, just listen for distortion while playing the sweep and reduce the level as needed.
 
Thanks, theaspin - good to know.

Apologies for such a late clarification but in post 205 I mentioned that the psychoacoustic target stage might compensate for late reflections (not a good thing) since it is not using freq dependent windowing; this is true if the ringing truncation stage is bypassed. In the default config files, the RT stage is engaged and serves (maybe more than anything else) to provide the appropriate windowing for the psychoacoustic target stage. Something to keep in mind if experimenting...
 
Administrator
Joined 2004
Paid Member
Thanks for the EqualizerAPO hint. Will look into it.

All my DRC impulse files for convolution are normalized to -1dBFS after they are generated. That's the louder of the 2 channels, the other channel scales with it.
So far, no problems with clipping that I have found. What I did to check levels was use JRiver to convert files from FLAC to WAV format, with the DSP in place. I then had a look at the converted files in my wave editor, Goldwave. Audacity would work, too.
I ran pink noise, brownian noise, rock, jazz and classical tracks thru convolution and the highest peak value of the convovled files was -2dB. The RMS value of the tracks drops, but the peak value does not always drop by as much.

So far, so good. :checked:
 

ra7

Member
Joined 2009
Paid Member
I noticed the reduction in volume also. But I am not too bothered, with the current arrays, there is plenty of efficiency to burn. I'm not turning up the volume to anywhere close to 11 ;)

Thanks for the EqualizeAPO tip. Did not know about it. That might just be the ticket for me to solve my measurement problems with convolution in place.
 
I made some minor changes to the package - see post 1 for details.

The min phase filters will correct only the minimum phase portion of the response. They introduce no pre-ringing and have less artifacts (or none at all) when listening way off-axis.

The standard filters (custom and default) will correct the excess phase response to the extent possible without introducing much pre-ringing. For a flatter excess phase response in the midrange try EPPFlatType = L (linear phase excess phase renormalization), and for a flatter phase response at the freq extremes (as well as through room-induced dips) try PLType = P (linear phase peak limiting). Switch the target response stage to linear phase (PSFilterType = L) if using linear phase peak limiting to preserve the pre-ringing or if the target response file should be implemented with a linear phase filter.

For a traditional target response (assuming flat is not desirable) try PSPointsFile = tilt and adjust the tilt to taste by simply editing the file. To engage the psychoacoustic target response stage, set "PTType" to "M" or "L" (minimum or linear phase) and consider also engaging the ringing truncation stage (default setting is "s").

Oh, and above all else, have fun ;).
 
Since I sand-filled my speaker stands and made new measurements a little while ago, I have yet to settle down long term with a filter because soon after that I became interested in trying to make shorter filters for improved off-axis sound (I think this started after getting such a nice sounding result with my "low-res" REW filter).

Recently, I made a ridiculously short filter with DRC based on the erb configuration file. I noticed while looking at figure 8 in the DRC manual that the erb curve is shown to be basically no more than 1/6 octave resolution, however, the standard erb config file specifies something like 3 times that resolution (if someone could explain to me what I'm missing here I would appreciate it). Anyway, I started with the erb config file and simply divided the window lengths of the various stages by 3 hoping for a filter that would give a perceived correction of about 4 cycles but with a smaller "footprint". Basically, it seemed to work and it sounded pretty good despite having virtually no correction at all in the bottom 2 octaves.

I thought the psychoacoustic target stage might be a nice compliment in this case since the resulting sound was a little bit more pronounced in the mids than my usual 4 cycles filter (the PT stage tends to reduce midrange energy with my system). The PT stage examines the non-windowed/smoothed corrected frequency response and applies a gentle curve in order to make it so that the peaks can be connected with a straight line supposedly making for a flatter perceived frequency response. This might imply a bit of a compromise between time domain and frequency domain responses but that might not be a bad thing since some musical instruments are more defined by their attack/decay and others more so by their sustain. Anyway, it seems to work pretty well here and I'm thinking more now about the balancing act between the various stages.

With the ringing truncation stage engaged the filter is an incredibly short 17ms making for a file size of just 4.4k (24 bit stereo). I think this filter provides the best "bang for the buck" yet considering its size and effectiveness. I don't know if it will make the cut long term but I'm impressed enough to write this much about it :).
 
In my quest to understand DSP and the many terms and details related to it I ran across this "book" that explains DSP. All the way from early discoveries and basic applications to the very detailed, intricate and advanced. The chapters begin with enough an elementary approach that I was able to take my knowledge to the next level and have something that I can always reference when I need. I apologize if it's been posted here before but I haven't seen it. If not then I believe for beginners it's a good way to wrap your head around all this and more of what is being talked about here will make more sense. Not all will apply to audio but it's a good read.

Wes.
The Scientist & Engineer's Guide to Digital Signal Processing | Education | Analog Devices
 
In my quest to understand DSP and the many terms and details related to it I ran across this "book" that explains DSP. All the way from early discoveries and basic applications to the very detailed, intricate and advanced. The chapters begin with enough an elementary approach that I was able to take my knowledge to the next level and have something that I can always reference when I need. I apologize if it's been posted here before but I haven't seen it. If not then I believe for beginners it's a good way to wrap your head around all this and more of what is being talked about here will make more sense. Not all will apply to audio but it's a good read.

Wes.
The Scientist & Engineer's Guide to Digital Signal Processing | Education | Analog Devices

Great! Many thanks for the link