[Android Software Development] bjrmd:
Resonance Finder

Purpose: Identify and measure ear canal frequency resonance caused by in ear occluding earphones. Once that is done you may want to gradually cut the resonance frequency area by 2-3 dB or so to begin with and see how things sound. The total amount of cut will vary and you will get an idea from the curve. Over several days of listening, further cutting can be done. This is preferable to boosting the areas around the cut (which you may have done in the past) to avoid clipping the signal.

This is taken from a master's thesis on ear canal acoustics

Background: It has been the audiophile's goal to improve the perceived quality of music they are hearing. There are almost uncountable posts on opinions about various gear by listeners. As most know the conclusions are extremely variable. Some of this difference is out of the control of the reviewer. Given the same hardware, software, mastered material, encoding, two individuals will not necessarily perceive the music data the same way. Some of this is related to the actual physical structure of the ear canal and the effects of ear canal occlusion with an in ear transducer. Other effects are related to hearing loss, brain processing changes and complex neurological/behavioral differences. Studies have shown that the headphone occluded ear causes a “resonance” usually between 6 and 8 kHz with a secondary, smaller one at half the frequency. My aim was to easily find the artificial boosted area (and then cut the boosted area with an equalizer). This occluded ear resonance is only minimally seen in over the ear phones or non occluding earbuds. The typical example would be Shure 425, 535, 846, Etymotics etc.

This app produces low gain sound pulses at adjustable frequencies, allows the user to pick the “threshold” of hearing at the frequencies then graph them out alongside an equal loudness curve. So, if there is a sudden change in the sensitivity curve of a certain frequency range, you have found your resonance area. This is not meant as a hearing tester although if you do have a given curve it should remain stable with the same earphones/output device over time (failure to remain stable with the same gear may indicate a problem with your hearing-age, noise exposure as common causes). Since the resonance peaks are in a given range, the frequency tests only between 750 and 10000 Hz. The dynamic range is 38 dB-loud to soft. The tones are generated using the android soundpool java api, the app was written with Tasker, graphs are generated with google charts.

Requirements, Android 5.0 or above, Root not needed, internet connection needed.

Install: Download the apk below and just open to install. The first time opening the app will trigger a download to the root of your SD, from xda, of a text file of an equal loudness curve and a tone file that the app uses.

Instructions:

Open the app, Resonance Finder.

Try to get a baseline volume for calibration---Spin the frequency adjustment to 10 (the spinner values are times 100, so a 75 is 7500 Hz, 10 is 1000 Hz). Move the top volume spinner to about minus 30 (the range is -38 to 0 dB). Then adjust the android volume spinner on the bottom so you can just barely hear the tone. The tone is triggered by the “Play” button. You do have the option of using both, left and right ears--if you add values for all three (separately) they will be saved and plotted. Go back to the top volume spinner again and change it so you can just hear the tone. If the value is between 0 and -27, then increase the android volume below 1 step to attempt to keep the top volume about -28 to -32 dB. Once done, tap the “Add Data” button just below the Play button.

The list to the left will get populated with chosen values. To remove a value (in case of mistake), just long press the desired value.

Once the 1000 Hz is chosen, the android volume spinner disappears since we don’t want to change that gain by mistake.

Now, start going through the frequency range by whatever increment you want. I would recommend the increment of 5 (500 Hz) to start but you can go back and add more values later and they will all sort out fine. The order, ear choices will all be saved correctly. At each frequency, go up and down with the volume gain adjuster to find the point that you can just barely hear the tone (if you are not sure, an extra dB or 3 should not matter when we are done).

After getting up to 9000+ Hz or so you should be done.

Pressing the Chart button will show a plot of what you have measured compared to an “ideal” equal loudness curve(what the average person with normal hearing can do). There is also a .jpg saved on your root SD with the tested parameters for historical use. An important point is that the equal loudness curve may not apply to you--it changes markedly with age. Do not use deviation from the curve as a basis to alter your music equalization! (more on this later).

Looking at the plot: the resonance band will be pretty easy to spot. You will probably have a curve near the equal loudness one with an area of marked drop. Remember that the low dB numbers represent lower gain/sound energy. As the frequency goes past 4000 Hz, there should be a gradual or rapid(aging effects again) curve increase as the sound energy needs to be higher to be heard. Therefore, if the sound energy needed to be audible suddenly drops, that is related to the resonance response in the ear.

Warnings:

The perception of sound and music is amazingly complex and is much more involved than you may think. Studies have shown that overcompensation of hearing loss (by boosting the hard to hear frequencies) can worsen tinnitus (ear ringing). This happened to me for a bit(believe me-scary stuff) after I made a “perfect” correction to the curve to compensate for my hearing loss. There is actually a large body of literature on “notch music training “ for people with tinnitus that does the opposite-cuts the tinnitus frequency and boosts the surrounding bands. So what I am saying is that many people need to be careful about large sudden equalization changes. Another less well know fact is that although you may have a threshold drop in certain frequencies, this may not translate to a proportional drop at louder volumes. So the generated curve above, may be quite different using real usage volumes. The only reason I am using threshold here is to use our ears as a “biological reference microphone” to find the area of boosted sound.

If there are any readers out there that know this area well from a research standpoint, please feel free to comment. This is a bit out of my field of expertise and am in the learning mode.

Many thanks to [MENTION=2760454]chdloc[/MENTION] for guidance in acoustic engineering information and advice concerning the app.