Posts Tagged Hearing

Audio Direction Finding

Given a point source of audio (or RF, for that matter) that’s far enough away to produce more-or-less plane wavefronts, the range difference between two microphones (or ears) is:

ΔR = (mic separation) x sin Θ

The angle lies between the perpendicular to the line from the midpoint between the mics counterclockwise to the source source: + for sounds to your left, – for sounds to your right. That’s the trig convention for angular measurement with 0° directly ahead, not the compass convention, but you can argue for either sign if you keep track of what’s going on.

The time delay between the mics, given c = speed of sound:

ΔT = ΔR / c

For microphones 300 mm apart and c = 344 m/s:

ΔT = 872 µs = 0.3 m / 344 m/s

If you delay the sound from the mic closest to the source by that amount, then add the mic signals, you get a monaural result that emphasizes, at least a little bit, sounds from that source in relation to all other sounds.

In principle, you could find the angle by listening for the loudest sound, but that’s a fool’s game.

There’s an obvious symmetry for a source on the same side, at the same angle, toward the rear.

A GNU Radio data flow diagram that lets you set the angle and listen to / watch the results:

Audio Direction Finding.grc

Audio Direction Finding.grc

The original doodles show it takes me a while to work around to the answer:

Audio direction finding doodles

Audio direction finding doodles



Leave a comment

SoundTech CM-1000 USB Channel Layout

Although microphones intended for conference tables aren’t suitable for inconspicuous hearing aids, they go a long way toward working out algorithms (*). This is a SoundTech CM-1000 USB mic:

SoundTech CM-1000USB microphone

SoundTech CM-1000USB microphone

It produces noise-canceled stereo output and a quick test shows impulse sounds produce reasonable left and right responses responses; I can’t vouch for the noise cancelling part.

A click to the right side:

CM-1000USB mic - Right pulse

CM-1000USB mic – Right pulse

And to the left:

CM-1000USB mic - Left pulse

CM-1000USB mic – Left pulse

The green trace (Channel 2) is obviously the Right channel, which corresponds to in1 on the Scope Sink block and out1 of the Audio Source in the GNU Radio data flow diagram:

Microphone Time Delay.grc

Microphone Time Delay.grc

There’s an irreconciliable clash between 0-index and 1-index numbering in there, but the microphone’s “Left” and “Right” channels appear in the proper places when you look at the mic from the conference room side of the label as shown in the top photo.

Figuring the speed of sound at 344 m/s, that 100 µs delay means the mic capsules sit 34 mm apart, which looks to be about right, as the flat part of the housing under the label spans 22 mm.

That’s a tad skimpy for things like beamforming and direction finding, so I actually bought a set with a separate CM-1000 mic that plugs into the USB mic:

SoundTech CM-1000USB and CM-1000 microphones

SoundTech CM-1000USB and CM-1000 microphones

The channel layout diagram explains what’s supposed to happen:

Soundtouch CM-1000USB microphone channel layout

Soundtouch CM-1000USB microphone channel layout

The additional mic changes the response, so that the USB unit becomes the Left channel and the analog mic provides the Right channel. I don’t know what happens to the “noise canceling” part of the story.

With the mics positioned 200 mm on center, a click to the right side:

SoundTech CM-1000 mics - 200 mm OC - Right pulse

SoundTech CM-1000 mics – 200 mm OC – Right pulse


The eyeballometrically precise 600 µs delay corresponds to 206 mm at 344 m/s, which might actually be close: they’re 200 mm on center, but the Right-channel mic is 10 mm smaller and the mic might be half that much further away from the other one. Not that that makes any difference.

(*) And, frankly, slapping a mic on the table won’t bother me much at all…



Monthly Science: Audiograms

The audio test CD I used to measure my hearing for a Circuit Cellar project back in 2007 came to light, so I ran some tests:



I don’t have an absolute level calibration for any of those curves, so they can be shifted up or down by probably 10 dB without any loss of accuracy. The overall shape matters here, not the absolute level.

The brown curve shows my hearing as of nine years ago. I built and (of course) wrote about a rather chunky low-pass shelving filter that matched the 20-ish dB difference between my midrange and treble responses, then boosted the flattened result enough for me to hear what I was missing:

Board Top

Board Top

Surprisingly, it worked fairly well. That, however, was then and this is now.

The two red curves show my current response, under slightly different conditions: the “buds” curve uses the same earbuds as the 2007 curve and the “phones” curve uses over-the-ear headphones. Perhaps:

  • The previous (lack of) bass sensitivity came from the circuitry of the day
  • My bass has mysteriously improved
  • More likely, my midrange has gotten that much worse

The blue curve shows the response of a reference set of silver ears; the golden ears I used in 2007 were unavailable on short notice.

Given my limited bandwidth and the steep slope of that curve out toward the high end, simply fixing my (lack of) treble won’t suffice any longer: 50 dB is a lot of amplification. Compressing the bandwidth between, say, 200 Hz and 4 kHz to fit into 200 Hz to 2 kHz, then equalizing the result, might give me enough treble to get by, but it’d require re-learning how to hear.

That’s different from the straightforward frequency translation you get from a mixer. I don’t have enough audible bandwidth around 1 kHz to hear a 4 kHz slice of audio spectrum.

Back in 2007-ish, a real audiologist determined that I wasn’t “aid-able”. Maybe that’s changed.

The economics seem daunting. Michael Chorost gave a talk at Vassar lamenting the cost and terrible UX of his cochlear implants that reinforced my prejudices in that area. The discussion following my post on my Bose QC20 earphones includes useful links and rants.

The GNURadio project has enough signal-processing mojo for a nontrivial hearing aid, modulo having enough CPU power at audio frequencies. Battery power density remains the limiting factor, but I’m not nearly as fussy about appearances as most folks and some full-frontal cyborg wearables might be in order.


Bike Helmet Earbud Iteration

Based on having to seal the rear vent hole of the previous earbud, I did the same for the new one:

Earbud - blocked vent

Earbud – blocked vent

The audio quality was terrible, so I tried another bud with a foam windscreen over the hole and a hole punched in the middle of the double-sided white foam tape:

Earbud - foam over vent

Earbud – foam over vent

The audio remained unintelligible, so I tried an upscale (but still cheap, because surplus) Koss earbud, first without blocking the vents and then with snippets of Kapton tape:

Koss earbud - tape over vent

Koss earbud – tape over vent

The earphone has three slits on each side, but only the middle slit has a hole penetrating the case; it must be a stylin’ thing.

That sounded better, so I’ll roll with it. There’s supposed to be a foam cover over the housing, but those things always get grody and fall off; there’s not much point.

As nearly as I can tell, contemporary earbud designs optimize for volume (dBm/mV) and thumpin’ bass, all to the detriment of actual audio quality. Based on numerous samples over the years, there is zero correlation between price (admittedly, on the low end) and audio quality (admittedly, with my crappy hearing).

I own a pair of very nice (and thoroughly obsolete) Shure E2c sound-isolating ear beetles that sound great (even with my crappy hearing), but I’m unwilling to chop them up for the bike headset …


Leave a comment

Zinc-air Cell Corrosion

For reasons that, alas, have little to do with normal age-related hearing degeneration, I’ve been wearing Etymōtic (that should be a long o symbol) MP-915 High-definition Electronic Earplugs (aka, Martian Ear Beetles) when I need a 6 dB boost for normal conversations. The key advantage: a price 10 dB under full-throttle hearing aids.

Anyhow, each one runs for about two weeks on a 312 zinc-air primary cell, so I picked up a batch from the usual eBay vendor. These were short-dated, which let me figure out how long after the rated shelf life they’d be good for, so I know what’s the largest batch I should buy.

One cell arrived with its air vent seal dislodged:

Corroded zinc-air cell

Corroded zinc-air cell

The cell in the middle is used, with several scratches from the contact point inside the earplug. The cell on the right has a good seal.

Assuming a good seal, the cells seem to work about as well as the long-dated fresh cells included with the earplugs.

Although I found several datasheets (Duracell Energizer Rayovac), there seems to be no way to relate the actual cell you purchase to any particular datasheet; the part numbers do not correspond to anything on the package and the nomenclature varies wildly both between manufacturers and within product lines.