• Welcome to ASR. There are many reviews of audio hardware and expert members to help answer your questions. Click here to have your audio equipment measured for free!

Binaural Geometry Mapper — an experimental audio measurement project

Haha, found a bug—and finding one is always a good thing!

In my enthusiasm, I had overlooked some fairly clear signs that the stereo-image results were looking too good. I had noticed them, but had not yet done a proper test to investigate.

A full 360° test around the ear-level speakers finally exposed it. The algorithm was using directional reference information and restricting its estimates to the sector between the speaker pair currently playing. In practice, it was forcing the sound image to stay between those speakers. This explains why the image appeared to cling so tightly to the speakers at the extremes in my earlier posts.

The giveaway was the low-frequency plot. At 34 Hz, it formed a staircase that followed the active speaker pairs around the room. That exposed the imposed boundaries rather than an independently measured direction.

I have now removed that restriction. The estimates can fall outside the active speaker pair, allowing the limitations of the binaural analysis to show through. This also exposes some large directional errors when sound comes from almost directly—or directly—behind the head. How to handle those ambiguities is something I still need to work through.

So the earlier plots need to be interpreted with this limitation in mind. Less flattering results, but a much more useful basis for development!

The staircase plot shows the earlier behaviour; the other plot shows the result after removing the restriction. The angular axes use different conventions: 0–360° and ±180°.
7ch-360_ART_Pan_47pct_34Hz_001.png
7ch-360_ART_Pan_0pct_34Hz_001.png


Here are a few more L–R measurements with the corrected algorithm, covering panning from fully left through the centre to fully right.

The direction estimates are no longer forced to stay between the speakers. This makes the frequency-dependent differences much more visible, including estimates extending well beyond the speaker positions. The colours represent frequency—not movement over time.

The overall left-to-right progression is still there, but the results look much less tidy now. These are experimental estimates from the binaural measurements, not a validated picture of exactly what a listener hears. Removing the restriction exposes both the measured variation and the remaining limitations of the analysis—which is what I need tomove forward.

L-R_ART-070926_Sound_0pct_626Hz_001.png

L-R_ART-070926_Sound_24pct_626Hz_002.png
L-R_ART-070926_Sound_50pct_626Hz_003.png
L-R_ART-070926_Sound_74pct_626Hz_004.png
L-R_ART-070926_Sound_100pct_626Hz_005.png
 
BGM: a small headphone listening test

I’d like to try something a little different: compare what BGM’s analysis shows with what other people actually hear.

These videos contain real binaural sweep recordings made with my DIY dummy head at two positions in the same room. Each set has three recordings: left speaker only (0% pan), both speakers at equal gain (50%), and right speaker only (100%).

The most interesting one is the 50% recording—the phantom centre. Where does it seem to be, and does it stay there as the sweep goes up in frequency?

Please listen with headphones, start at a low volume, and switch off spatial audio, crossfeed and other processing if possible. For sets A and B, I’d be interested in hearing:

  • Where you hear the phantom centre, and whether its position or width changes with frequency.
  • Whether it feels inside your head or outside, and how clearly you can place it.
  • How it compares with the left-only and right-only recordings.
  • Does the phantom centre seem closer to you, farther away, or about the same distance as the left-only and right-only sounds?
Just describe it in your own words—no technical terminology needed. Please mention your headphones and any processing left enabled.

There’s no “correct” answer here. This is an informal comparison to help explore how the measurements relate to listening impressions, not a test of anyone’s hearing.



Text edited with AI assistance.
 
BGM can now display its sound-image analysis in sync with the actual binaural sweep recording. You can listen to the sweep while following how the estimated image direction and spread change with frequency.

I’ve uploaded two examples: an L–R phantom centre and a dedicated centre speaker. Headphones on, volume low, and spatial audio/crossfeed off if possible. I’d be interested to hear whether what you hear matches what you see!

These are still experimental estimates, so the visualisation isn’t a definitive picture of perception—but this gives us another way to compare the two.

Text edited with AI assistance.



 
I received these questions on the Finnish Hifiharrastajat forum and wanted to share both the questions and my answers here on ASR.

Questions​

  1. Was the original intention to try to determine the direction of just one speaker at a time? Had you then moved on to the “phantom” image created by several speakers working together?
  2. In the L–C–R case (and other cases where the image/source is placed exactly between two speakers), a phantom image is trivial to produce: there is no need to change phase or level as long as the geometry is precisely symmetrical. Have you made a version that investigates arrangements other than L–C–R, and a sound image or source produced by more than two speakers? Of course, even in the L–C–R case, the speakers’ acoustic centres may differ in height, which seems to show in those plots.
  3. Have those phantom-image samples also been used to train the recognition network? Or are you aiming for a situation where it would learn to recognise a direction, such as the centre, without having “seen” it? That depends somewhat on what you are trying to achieve. Without phantom examples in the training data, the results could probably be a little difficult even to interpret: the model would naturally try to recognise from the acoustic features whether the right or left speaker is playing, even though both are playing, and the result might oscillate between them. Of course, acoustically, a perfect superposition of the two speakers’ sound waves would appear to come from the centre. I’m mainly wondering whether human ears and brains might be more forgiving of that phantom centre than a neural network that has never seen it.
  4. And if those samples are included in the training data, that also makes interpretation somewhat difficult: it learns to recognise when two speakers have been played in that particular room and that the direction should be reported as being between them.

My answer​

Good questions. The first answer is that there is no neural network involved here anymore. This is a purely calculation-based method, where all the results are obtained from the data by calculating ITD, ILD, phase, GD and other parameters. In that sense, it is a very traditional approach compared with a neural-network-based method. I chose this approach so that the software’s operation can be broken down into its smallest parts more easily, and the calculations could even be reproduced elsewhere. Neural networks are a little too much of a black box in this respect, and I don’t really want to put my trust in that fog.

So the individual answers can be read with that in mind.

1. Originally, I was interested in using a binaural dummy head specifically to determine directions and distances. Later, during a visit, friend suggested measuring stereo imaging, which is what these latest posts have been about. I immediately thought it was a good idea, and it has been really interesting to work on. In my view, this is probably the part with the most interest from a hi-fi perspective.

2. The software can render sound to any speaker or combination of speakers, between speakers, or along a path between speakers in a 7.1.4 system. These can then be measured using the dummy head to check how the system behaves.

Earlier, I posted about a silly bug I found in the software relating to exactly this: it was calculating where the sound landed based on the speakers used for rendering. It was using the speakers as anchors, forcing the sound across the whole frequency range to stay between the relevant speakers, which obviously did not reflect reality. This became particularly clear in the bass when I did the 360° panning measurements. The corrected code allows the sound image to spread wherever it happens to go, so in that respect the calculation better reflects reality.

The challenge here is, of course, the cone of confusion, where the same ITD values can correspond to sound coming from in front or behind. I then came up with my own causal solution to this: with panning, the sound is tracked starting from both/all speakers, and each panning step has a cause-and-effect relationship. This means that if the pan is, say, 10% from L towards R, and the next panning point is 15%, the calculation for 15% follows the ITD, ILD, phase and other data from 10% and the preceding steps, which weight the likelihood of the next value. This still allows the code to get the direction completely wrong, but it is no longer as random as it is without that information.


3. This is a slightly trickier question because, as I mentioned, there is no neural network behind this, so no actual training takes place. However, the calculation does use known references through the solved topology. Once the speakers, room and dummy head have been worked out through blind measurements, the code knows the speakers’ directions and distances. Their data has been stored as a reference, so it knows what each speaker sounds like at the different points where it has been measured.

The phantom data is therefore completely new from the code’s perspective, and there is no direct reference for it. The same ITD, ILD, phase and other quantities are calculated from it as in the other calculations, and those are then used to form the plots showing where the sound falls on the coordinate axes.

The foundation is nevertheless very shaky in the sense that the code has no fixed values to work from. It does not know the size of the dummy head—meaning its acoustic ear spacing—which I think is already a serious challenge to solve in itself. It does not know which direction is up. Nor does it receive an external reference value from which it could calculate TOF, such as a loopback signal. Consequently, its ability to create a speaker map that corresponds to reality is the strongest evidence that the code works. To do that, it has to solve those unknown variables from the supplied measurements with sufficient accuracy.

Ear spacing, for example, is an excellent scale adjustment. When you have a suitably sized head to listen with, everything makes sense to it and all the speakers fall into place at the correct distances.

Those few videos I posted were real ear- and mind-openers for me, because I was already fairly convinced that the code was not identifying the front direction correctly in the L–R measurements. But when I listen to those measurements through headphones, to my ears they correlate with the data very logically. In one, I hear the sound clearly farther away and focused at the centre, whereas the other spreads around my head and partly behind it. In both, I can also hear the direction and distance of the direct L and R speaker measurements really well. This convinces me, at least, that the code is already quite capable of forming a logical graphical representation from the data.

4. As mentioned, because there is no neural network, “learning” is a slightly misleading word. I think it should be called something like “a model formed from measured data,” which better describes the mathematics behind it. But you are certainly right that this is not a general-purpose model that you could simply drop into any room and start measuring sound directions. You can, however, put it into any room and feed it sounds, after which it can establish directions for those sounds with good accuracy.

Below is the mapping data used for these measurements. The measurement points are scattered around the room, and this is the accuracy achieved with them. From experience, I can already say that around seven measurement points give really good accuracy in my setup when measuring all 11 speakers. With a large number of speakers, the constraints between them force the solver’s solution much more strongly than with fewer speakers.

The two-channel map is still far from reality, and I’m convinced that it cannot be solved with this little starting information. There are simply too many free variables in the two-speaker case.

Further down are a few more images of those L–R measurements. They show where the dummy head is positioned relative to the speakers. The dummy head’s position first has to be measured as part of the sound-image measurement process, and only then can the actual sound image be measured.

The images also show clearly how much difference it makes whether the dummy head is near or far away. As I described earlier, when listening from farther away, the phantom sound forms a more point-like image in the centre, whereas up close it spreads all around. The same thing appears in the graphs through the data.

The centre speaker produces an even more focused image in the middle, which is also very clearly audible directly from the measurements. However, the centre speaker is not completely immune to the effects of reflections when the dummy head is very close to the speakers. That also shows in the data and can be heard in the measurements.

Because listening to this is so important, I have added a feature to the software that lets me listen to the measured sounds while seeing, in real time, how the data from that sound forms the graphics.

Now, as I’m adding these pictures, I notice that I need to improve how the code shows which speaker or speakers are playing in each measurement, and perhaps also show their weighting in some way.
COVERAGE_C_1_kHz_selected_X_2.43_dB_nearest_0.36_m_inside_hull.png
L-C-R_ART_070926_Stereo_50pct_626Hz_001.png
L-C-R_ART_070926_Sound_50pct_626Hz_001.png
L-R_ART_Control1_-_same_angle_Stereo_50pct_626Hz_001.png
L-R_ART_Control1_-_same_angle_Sound_50pct_626Hz_001.png
L-R_ART-070926_Stereo_50pct_626Hz_001.png
L-R_ART-070926_Sound_50pct_626Hz_001.png
L-C-R_ART_Stereo_50pct_626Hz_001.png


Translated from Finnish with AI assistance.
 
I added a feature to the software that lets me put any .wav signal through it and run an analysis. The analysis is still very incomplete, but here’s the first mockup. Once again, I’m comparing a dedicated centre speaker with a phantom centre, this time using a simple speech signal. The data presentation still needs a lot of work, but at least the signal chain now works, and I can also listen to the recordings through headphones directly from the software.

For now, the graphs roughly look like this. The dedicated centre, shown first, concentrates most of the energy around the centre, as it should. Below it, the phantom plot spreads fairly evenly all around, but when listening, the difference is not quite as massive—although to my ears it does sound clearly more open.
1789063051114.png
1789063061288.png



Translated from Finnish with AI assistance.
 
Testing the rig positioning for measurements. First, I placed it by eye where it seemed about right. Then, based on the first measurement, I made an educated adjustment: a little to the left and rotated slightly to the right.

1789113915325.png
1789113926134.png
 
A look at BGM’s experimental 3D sound-image visualisation, created from binaural dummy-head measurements. It shows estimated sound directions and how they spread and change across frequency—not the physical shape of a sound source.

Headphones recommended to hear the directional cues in the binaural recording and compare what you hear with the visualisation. Start at a low volume.

 
I found a simple way to visualise the timing difference. The wavefronts are separated by a distance corresponding to how far sound travels through air during that delay difference.

For example, this measurement was taken in front of the main listening position, where the sound image spread pretty much all around. This view helps explain it better: you can see that the dummy head wasn’t perfectly centred, resulting in a clear difference in when the sound from each speaker reaches the ears. It certainly doesn’t explain everything, but it makes things considerably clearer and feels relatively intuitive to me.

Here, the sound from the right speaker arrives 0.662 ms earlier than the left, so its data is drawn closer to the dummy head.
 

Attachments

  • 1789292205968.webp
    1789292205968.webp
    47.1 KB · Views: 38
  • 1789291949916.webp
    1789291949916.webp
    56.2 KB · Views: 41
Back
Top Bottom