Migrating Crescendo to ISO-226:2003 entailed working entirely in a proper Phons framework for computing hearing correction gains.
I mentioned that I subjectively felt that there was about a 10% improvement in the sound. To see why so little, and how bad it could have become, let’s examine the quality of hearing corrections in an extreme case – my own hearing at 4 kHz.
My audiology specifies a vTuning threshold elevation of about 60 dB at 4 kHz. That is an average of my left and right hearing. And it was measured in dBHL.
Recall that dBHL measures the sound power above the absolute threshold of hearing (ATH) at any given frequency. Since the ATH varies with frequency according to the bottom trace of the equal loudness contours, a measurement of 0 dBHL is a non-constant dBSPL intensity.
So, presumably, when the audiologist specifies my hearing loss in dBHL measure, we should trust that her instruments were properly calibrated against the ATH according to ISO-226:2003. (Any wagers?)
But now, when computing hearing correction gains, we know that the proper way to do this is to first compute the sound intensity in Phon, then compute the needed increase in Phons to achieve the same Sones above my elevated threshold as would be discerned by a person with normal hearing listening to the same sound at that same frequency.
Then to find the required electronic dB gain, we convert back to dBSPL from the required Phon level, and subtract the dBSPL of the sound being presented.
Computing the needed Phon increase, given a hearing threshold elevation can be done either properly, via the EarSpring and Conductor equations, or we can resort to a cheap approximation. Because of the realtime demands on Crescendo, I opted for using the cheap approximation, since it is supposed to be good to about 1.5% over the entire audible range of interest for musical listening.
But there are two more possible shortcuts… First of all, if we assume that Phon and dBHL are nearly identically scaled, then it might be okay to just skip the conversion to Phon space and work directly in dBHL.
Secondly, since the audiologist reported my threshold elevation in dBHL, one might absentmindedly use this value as the threshold elevation in the cheap approximation for conversions to / from Sones, instead of converting that threshold elevation to its Phon equivalent. Or not.
So here is an interesting graph showing the errors made in computing the required correction gains in dBSPL, as a function of sound presentation level, measured in dBHL. That would be the electronic gain needed to make a hearing correction at 4 kHz, given a measured threshold elevation of 60 dBHL.
Four different curves are shown, depending on how incorrectly we implement the correction gain computations. Positive gain errors show that too much correction gain is being applied, while negative gain errors are insufficient correction gain.
The green curve, demonstrates the gain errors committed by just working directly in dBHL space, and using the threshold elevation in dBHL directly. It shows a pretty small error across the entire audible range of interest.
That was very nearly how Crescendo has been working up until now. It shows that you could almost forget about the impact of Phons on the whole subject, at these treble frequencies. The Phons relation has much more impact on bass frequencies, well below 1 kHz, where sensioneural hearing loss affects almost nothing.
Recall that bass frequencies are sensed at the apical end of the cochlea, while treble frequencies are sensed very near the oval window. So sensioneural loss typically occurs after damaging levels of sound, and it affects mostly treble frequencies. The bass frequencies are protected by the length of the cochlear channel, fluid viscosity, and power loss on the way to the far end.
For comparison, the blue curve shows the kinds of gain errors that result from doing an almost proper gain computation, all performed in Phon space, and using a threshold elevation that has been converted to Phon measure. The sole remaining errors come from using the cheap approximation to EarSpring and Conductor. As expected, the cheap approximation is quite acceptable here.
I’m reporting the subjective sense of the difference between the green (before) and blue (now) curves as being approximately 10% improvement. Not much difference to see at 4 kHz. So, perhaps the additional cleaning up of harmonic and intermodulation distortion products accounts for some of my sense of improvement.
But now, look what could have happened (and actually did, until I caught the error this morning). The red curve shows what happens if we attempt to produce a more correct gain correction computation by working in Phon space, while forgetting to convert the threshold elevation to Phons. That results in substantial over-correction across the entire audible range. Such strong overcorrection might tempt the reduction of the vTuning level just to get a nicer sound from Crescendo.
The orange curve is the symmetric counterpart, where we still compute everything as before in dBHL space, ignoring ISO-226 and Phons, but using a threshold elevation that has been converted to Phons. That is just about equally bad, causing a substantial under-correction everywhere. This is probably a less likely error to make.
So this is interesting. As suspected previously, one can mostly ignore Phons in the treble region above 1 kHz where sensioneural hearing loss requires dynamic gain corrections. The error committed by ignoring ISO-226 and Phons is minimal. But it does sound slightly better if you pay attention to the equal loudness relation in the treble region.
[Spotting the error made by failing to convert the threshold elevation from dBHL to Phon, shows the value in writing up these items in a blog format. Whether or not anyone else ever reads these entries, the process of writing up causes one to carefully think through what you are describing in order to explain it to someone else. That careful rethinking serves as a double check on what you are doing. It really helps in catching any errors you might have made.]