I’m an audio hobbyist with a long-standing interest in loudspeakers - their design, behaviour, and measurement. Over the years I’ve made many DIY attempts at acoustic measurements, but as anyone who’s tried knows, there are countless pitfalls that can corrupt your data.
To tackle this, I set out to build a 3D acoustic speaker scanner capable of capturing the entire sound field emitted by a loudspeaker. Using a mathematical technique called Spherical Harmonic Expansion (SHE), the system can process that data to remove room reflections and other acoustic artifacts. Once the sound field is known, you can project it to any virtual measurement point in space and extract accurate frequency response or impulse response files.
I call this concept the Loudspeaker Acoustic Holography (LAH) Scanner.
Why I’m Sharing This
My personal situation has changed and I know I won’t have the time to complete this large project. So instead of letting it sit idle, I want to share everything I’ve done so far — in the hope that other enterprising hobbyists can take it forward. Together, we could make anechoic-quality loudspeaker measurements accessible to everyone.
What’s Done So Far
I’ve developed a suite of Python scripts that perform the full processing chain:
1. Generate, capture, and preprocess impulse responses (IRs).
2. Solve for Spherical Harmonic coefficients representing the 3D sound field.
3. Perform Sound Field Separation (SFS) to remove the room’s contribution.
4. Reconstruct or “propagate” the clean sound field to any coordinate in space.
5. Output frequency response and phase data, or even generate new IRs from them.
All code and detailed documentation are available in my GitHub repository:
https://github.com/dfapinov/lah-scanner

Why It’s Needed
Most DIY loudspeaker measurements are heavily affected by their environment:
- In-room measurements rely on time gating, which limits low-frequency accuracy unless you have a huge space.
- Outdoor setups reduce reflections but suffer from wind, ambient noise, and ground effects.
- Even in ideal conditions, you typically measure at a few fixed angles and distances — far from capturing the complete sound field.
By contrast, the LAH Scanner can provide truly anechoic data at any distance and any angle and needs only a medium sized room.
How does it work?
A microphone is used to capture impulse responses (IRs) around the loudspeaker across a dense 3D grid of coordinates, allowing us to sample the sound field throughout space. Using these IRs and their precise positions, we can then build a mathematical model of the sound field using spherical harmonics.

Spherical harmonic expansion is not a new idea - it has long been used in fields such as RF to analyze and synthesize antenna radiation patterns, massive MIMO beamforming technologies like 5G, and acoustic cameras with spherical arrays that locate sound sources.
The harmonics are a set of spatial patterns — like lego blocks of different shapes — that can be combined to match the directional shape of a measured sound field. By stacking these harmonic patterns together, it’s possible to describe almost any field in terms of its magnitude, phase, and spatial distribution - a process known as fitting.

Once the field is described in this way, it becomes possible to separate the waves that originate from inside the measurement grid from those that come from outside. This process is called Sound Field Separation (SFS). It is not an audio filter or a time-windowing method, but a natural outcome of defining the spatial directionality of the sound field.
When the full state of the sound field is known, we can propagate it to any point in 3D space — that is, accurately predict how the field expands and extract the sound pressure at new coordinates.

Does It Work?
Yes - I’ve verified the entire processing pipeline using synthetic test data from a simulated piston source inside...
Read more »
d.fapinov
Dave Merrett
Sylwester
ronald
ehughes
does that mean i would be able to build myself a klippel scanner like Erin from Erin's Audio Corner has? That would be bonkers cool!