I suspect I might be talking to myself here. But anyway, I had a discussion with Uli about a new driver linearization technique that also flattens phase by convolving a Reverse All Pass filter into the correction. I believe that this method has not been described anywhere online. As a teaser, this is what it does:
Red = uncorrected, Green = corrected and convolved with crossover. These are actual before and after verification measurements, and not a sim. You can see how the phase angle remains absolutely flat, never deviating from 0 degrees,
even through the crossover.
Uli sent me the instructions on how to do it. I have re-organized what he said, and inserted some screenshots, Mitch style, to make the method easier to follow. Any mistakes or errors are mine.
STEP 1: Create Crossovers
1. Create a working directory so that it looks like this:
2. Create your crossovers (Generate-Crossover) and save the raw, unmanipulated crossovers into "00 Naked XO". Uli has persuaded me to move away from NT2 crossovers, and I am now using his new "UB jPol 11" crossover, 1st order. Separate discussion to follow.
Step 2: Measure and Create Filters
3. Set one of the drivers as your project working directory.
4. Logsweep Recorder to record your Pulse48L (work on one driver at a time). The focus is to only measure within the range of the intended crossover, usually 1-2 octaves before the corner frequency depending on the crossover configuration. Load Pulse48L into Curve 1, and note its maximum and minimum gain (in this case, max of 20.655 @ 606.445Hz, and min of 14dB @ 3500Hz; see top right panel). DO NOT MOVE YOUR MICROPHONE until you have completed your verification measurement and you are 100% happy with the result.
The principle of linearization is to avoid too much gain loss through the crossover by correcting too large a range of volume. Uli suggests a maximum of 6dB should be corrected. However, this method involves magnitude limitation followed by normalization, which compensates for the gain loss to an extent, so perhaps up to 10dB can be corrected. This is valid for bandpass filters, for low pass or high pass filters (with rising volume at each extreme frequency), we may need to limit the range of correction, depending on the circumstance - e.g. there may not be any point sacrificing tweeter gain to correct a rising response above 20kHz, since it is less audible.
- TD-Functions - Gain. We are going to add or subtract the gain to avoid over-correcting the gain. In this case, it was 20.655dB, with a minimum of 14dB. So we accept a 10dB gain correction range. I subtracted 10.655dB to bring the maximum gain down to 10dB. This step might need several iterations (see step 6). As Uli said to me in his email, "IMPORTANT: the proper amount of correction is selected by "feeling".
5. Make a linearization filter. All these steps apply to Curve 2 ONLY.
- Copy Curve 1 into Curve 2. (Ctrl-C, 2).
- FD-Functions - Magnitude Inversion (linear phase) into Curve 2. This mirrors Curve 1 along the 0dB axis.
- FD-Functions - Magnitude Limiter 0 into Curve 2. The result is always minimum phase.
- TD-Functions - Frequency Dependent Window (F3): 15/15, result into Curve 2. You may prefer a softer correction with FDW 10/10.
- Save Curve 2, I called mine "LinearizationL.dbl". At this stage your screen should look like this:
6. Linearize your measurement and use it as a guide slope to help create the All Pass Filter. Convolve Curve 1 (raw measurement) into Curve 2 (linearization filter). Result into curve 3. Hit the "PK" button (you will find it at the bottom of the phase window) to reveal the Peak. This is what you should get:
Now study your guide slope, if there is significant phase lag (i.e. most of the phase angle is below zero), you will not be able to correctly create the All Pass filter. It is important to note that the peak of Curve 3 is centered at Sample 6000. Left-Right click on the Time display, and make sure Max is at 6000. If it isn't, then adjust the center in the box circled. Sometimes unconventional thinking is required - e.g. my tweeters had a 180deg phase lag. The solution was to invert the tweeter at the amplifier. To avoid having to re-measure, the inversion was simulated in Acourate and the filter was applied.
7. Create your Reverse All Pass Filter. Set Active Curve 4 (it should currently be blank) and hit the IIR button (or Generate - IIR Filter).
- Play with the f(0) and Q until the curve reasonably matches the guide slope - see blue line in the above diagram.
- Once satisfied, TD-Functions - Reversion (F12) to invert the All Pass filter. This will correct the guide slope.
- Save this as "RevAP-L".
8. Create the correction filter. Convolve the linearized measurement (curve 3) with the reverse all pass filter (curve 4); result into Curve 5. It should show some improvement. In the above image you can see that the frequency response (in blue) has been flattened compared to the initial measurement (in red). The phase angle has also shown improvement.
9. Load the raw crossover (in this case XO3L48.dbl) into Curve 6. Now we are going to complete all the operations into the raw crossover and turn it into a driver correction filter.
- Convolve Curve 5 (correction filter) with the crossover, result into Curve 1.
- Set Curve 1 Conv4_6 active: FD-Functions - Magnitude Normalization
- TD-Functions - CutNWindow; Cut length 65536, position 65536, result into Curve 1.
- Save Curve 1 as XO3L48.dbl
STEP 3: Verification
10. Now we are going to verify that the driver correction filter is working as intended.
- Create a "Verify" subfolder in your current working directory. Change workspace to this folder.
- Set active Curve 1. File-Create Mono .WAV. I called it XO3L48.wav
- Logsweep recorder, and make sure you load XO3L48.wav as a filter!
- Perform your measurement and compare the before and after.
STEP 4: Time Alignment
11. After you have completed linearization of all drivers, proceed to time alignment using your preferred method. NOTE that the reverse all pass filter will affect your time alignment. A normal All Pass filter causes propagation delay. A reverse all pass filter causes a negative delay - i.e. it moves the impulse forward in time. So do not be surprised if all your previously measured delays are thrown off. As an example, without the reverse AP filter, my subwoofers are about 200 samples delayed. After the reverse AP filter was applied, it is now 37 samples delayed.
12. After all these steps are completed, you have a complete set of filters ready for application of room correction and target curves.
Listening Impressions
I generated a new set of filters using the same target curve that I normally use to ensure that the only variable that has changed is the driver linearization technique. The old crossovers that I was comparing to have also had driver linearization, but these were performed using the method described in Mitch's book. Those of you who are familiar with the book know that it does not include the reverse all pass filter in the driver linearization. These old filters that I made already sound very good, and I wondered how the sound could possibly improve from this because I did not think it was possible.
With the old filters, the crossover points were difficult to detect, and in fact I thought I could not hear them. Careful listening with the new filters makes me realize that I can actually hear the crossover points in my old filters, although the difference is fairly subtle - but according to the maxim "once seen, can not be unseen", now that I know what to listen for, I can hear the crossover points in my old filters reliably consistently now. The smoothness of the filters generated by this method is pretty unbelievable. NOW I have a new standard for "can not possibly be improved". The other noticeable difference was clarity - with the old filters there was a bit of smudging here and there (in hindsight, probably at the crossover points) but now everything sounds clean top to bottom.
The other impressive improvement was with the impact of transients, although I am more inclined to credit this to improved time alignment rather than linearizing the phase angle. I use a recording of Japanese drums for this, and when there is a big whack on a Taiko drum, you can hear the skin of the drum, the huge bass transient, and rapid decay back to silence. To me, I had to rub my eyes (and ears) in disbelief as to how realistic it is.