Crescendo & Headphone EQ



Crescendo has within it a phase linear FIR processor. That’s how it does its magic with hearing corrections. But this engine has a short length to keep throughput latency to a minimum (about 6 ms overall), and is aimed primarily at higher frequency corrections. So it isn’t suited to making EQ corrections in addition to its hearing corrections, for frequencies below about 500 Hz. And that’s why I had earlier dismissed attempting to perform headphone EQ inside of Crescendo.

But above 500 Hz, where most of the headphone EQ is really neededĀ (apart from a strong need for sub-bass corrections too), Crescendo can do a superb job of headphone EQ in addition to its other duties.

This enables a hybrid headphone EQ architecture where the bass region should be handled by an IIR post-Crescendo EQ, and where the higher frequencies are precisely managed by Crescendo itself.

For now, that bass region EQ needs to be an outboard equalizer. But it shouldn’t be too difficult to add this into Crescendo final stage processing. Stay tuned for progress in this area.

By digitizing the curves in the data, I have a Lisp program that will compute the residual EQ needed, after making bass EQ corrections elsewhere, to get us to the Harman target profile. I have already done this for the Sennheiser HD650 and Status SM-CB1 headphones.

The results are stunning for the HD650. Its smaller drivers very capably manage the highest treble range. Sadly, the Status CB1 is starting to show its limitations here. While the treble EQ inside of Crescendo really is doing a much better job than outboard IIR bell EQ filters, the Status just can’t keep up with the Sennheiser. With only outboard IIR EQ, they both sound about the same, but nowhere near as good as they both sound under Crescendo driven FIR phase linear treble EQ.

So to make the corrections, I derive the same optimized bass and mid-range EQ as before, using Levenberg-Marquardt optimization, and then take the remaining residual deficiency and feed that into the Crescendo engine for it to make up.

Here’s an example for the Sennheiser HD650:

In these figures, I have used two IIR EQ filters to reduce the headphone deficit below 500 Hz. The original deficit is shown in the green curve in the bottom graph. That’s the difference between the Harman target profile, shown as the red curve in the top graph, and the headphone response as measured by, shown as the light green curve in the upper graph.

The deficit after IIR EQ is shown in the magenta curve in the bottom graph, and the resulting headphone + IIR EQ is shown as the bold green curve in the upper chart. That’s the part that must be made up by Crescendo’s FIR EQ. We need to force that bold green profile of the headphones plus bass EQ onto that red curve.

Crescendo won’t be much help below 500 Hz, so we did the best we could with the IIR filters there. The remaining deficit down there is less than 0.5 dB everywhere. We ask Crescendo not to touch anything below 500 Hz or above 20 kHz.

Here you can see that I applied a sub-bass EQ of 10 dB at 20 Hz with a Q of 0.73, and a gentle mid-range EQ of 2 dB at 1.38 kHz, with a Q of 0.37. The deficits below 500 Hz will remain as shown here. The two EQ filters are shown as blue profiles in the lower graph.

But above 500 Hz the deficit will be brought to zero by Crescendo’s superb FIR implementation. And since the high frequencies are where most of the action is, and the highest curvatures in the EQ, using phase linear filtering will keep any group delays to zero, whereas that’s the region that could be most troublesome for IIR filters.

To have Crescendo make up the EQ for the treble region, we simply feed it a table of theseĀ (magenta) deficit values for every frequency at intervals of 187.5 Hz. That’s its internal frequency resolution when the sample rate is 48 & 96 kHz. For 44.1 & 88.2 kHz sampling, Crescendo resamples the frequency tables through linear interpolation. The change from 48 kHz to 44.1 kHz is about 10%, and so linear interpolation shouldn’t be too bad.

Headphone EQ in the treble is applied, if you request it, at the tail end of the final stage of processing, just before sending the processed audio on its way in the processing chain.

The results on the HD650 are nothing less than stunning!

  • DM

[ In fact… now that I’m listening through properly EQ’d headphones, I’m getting along at vTuning between 50-55 dB, whereas before I had to use vTuning 60+. Apparently, I was using some Crescendo to indirectly compensate for transducer deficiencies. ]

[ Here we show the expected result from combining bass + midband IIR EQ with Crescendo’s treble EQ. The final profile and residuals are shown by the cyan curves:

Author: dbmcclain

Astrophysicist, spook, musician, Lisp aficionado, deaf guy