Stereo's Blind Spot: Only X, No Y
Put on headphones and play a well-mixed stereo recording. The drums sit dead center, guitar on the left, keys on the right, bass slightly left of center — the picture is very clear. But one problem:
Everything sits on a single plane.
No depth, no front-back layering, no sense of "a car approaching from afar." Stereo left-right positioning relies on the pan pot's left/right channel level difference — essentially one-dimensional (X-axis) information.
Whether a sound comes from the front or the back cannot be distinguished in traditional stereo — because the left and right channels carry identical information (when the image is centered).
This is the Kakeya conjecture projected into audio: observations from one dimension are insufficient to uniquely determine a solution in another dimension. Given identical left/right level data, you cannot tell whether the sound comes from +Y (front) or -Y (back).
How the Human Ear Perceives Depth
In the physics of the human head, sound reaching the eardrum is not a simple "loud or quiet" matter — it undergoes:
- Head diffraction — when sound travels around the head to the opposite ear, phase and amplitude change
- Pinna reflection — sound from different directions takes different reflection paths in the pinna, producing direction-specific comb filtering
- Interaural time difference — the arrival-time difference between ears varies with angle
Scientists use artificial heads (like the KEMAR mannequin) in anechoic chambers, placing speakers at hundreds of directions; each direction plays a short pulse recorded by microphones in the ear canal — this recording is the spatial impulse response.
M/S + Spatial Convolution: What We Do
DpdoEngine's original spatial processing uses M/S encoding plus dual-direction convolution:
- M/S decomposition — split L/R stereo into M (Mid = L+R) / S (Side = L−R)
- M channel → convolved with the front impulse response → center image placed in front
- S channel → convolved with the rear impulse response → side image placed behind
- Recombine — merge back into L/R
This already produces decent directionality, but has a fundamental limitation: depth (Y axis) is a fixed binary mapping — either front or back, with no continuous transition in between.
DpdoDepth: Multi-Angle Data Interpolation
To break the binary limitation, we need measurement data at more angles, then interpolate continuously between them.
Core Idea
Using the public KEMAR measurement dataset or real-human measurements, load 13 horizontal-direction spatial impulse responses at once (0°–180° every 15°):
0° 15° 30° 45° 60° 75° 90° 105° 120° 135° 150° 165° 180°
Then introduce a depth parameter D ∈ [−1, +1]:
| D value | Meaning | Center image perceived from | Side image perceived from |
|---|---|---|---|
| +1 | straight ahead | 0° | 180° |
| +0.5 | front, spread | 45° | 135° |
| 0 | ear level | 90° | 90° |
| −0.5 | rear, spread | 135° | 45° |
| −1 | straight behind | 180° | 0° |
Each channel maps to a target angle, and interpolated convolution is performed between the two nearest loaded angles: two independent convolution engines each process the signal, and outputs are blended by interpolation weight.
Why 13 Directions?
The 15° step is a practical compromise between precision and compute. Human horizontal resolution is roughly 1° (front) to 10° (side), so a 15° step covers most perceivable variation. Compute only grows from 2 to 4 convolutions — negligible on modern CPUs.
When a full external measurement file is provided, the angle count is fixed at 13. If embedded data (0°/180° only) is used, the original binary logic applies and depth only controls front/back swapping.
How Depth Maps to Angle
The depth parameter D maps to angles via a simple linear mapping:
angleM = (1 − D) × 90°
angleS = 180° − angleM
Verification:
- D=+1 → angleM=0°, angleS=180° (center in front, sides behind → wide stage with the main image forward)
- D=0 → angleM=90°, angleS=90° (center and sides both from the side → flat stage, no front-back layering)
- D=−1 → angleM=180°, angleS=0° (center behind, sides in front → whole stage shifts backward)
The Kakeya Connection
One intuitive reading of the Kakeya conjecture: data observed on a one-dimensional line cannot uniquely determine a position in two-dimensional space. In audio, this manifests as: L/R levels alone cannot determine front vs back.
DpdoDepth doesn't "solve" this problem — it circumvents it. Instead of computing a mathematical solution, it directly uses real human-head physical measurements as templates, embedding the perception of "this sound arriving at the eardrum from some direction" into the signal via convolution.
The Kakeya conjecture says: one-dimensional information is insufficient for a unique two-dimensional solution. DpdoDepth says: then I won't rely on computation — I'll feed you the physical measurements directly.
Future Directions
DpdoDepth's current implementation focuses on horizontal front-back depth. Extensions under consideration:
- Multi-elevation interpolation — add the vertical dimension for 3D spatial positioning
- Personalized profiles — support individual spatial perception data
- Dynamic depth — adjust depth in real time by band or time, creating source movement trajectories in space
- ITD enhancement — superimpose fine interaural time differences to sharpen directional precision
Conclusion
The value of DpdoDepth:
- Combines the mature M/S + spatial convolution framework with multi-angle measurement interpolation
- Provides a continuous depth parameter (not just front/back binary), letting listeners freely adjust spatial placement
- Integrates seamlessly with DpdoEngine's existing mastering toolchain (noise reduction, EQ, limiting, DSEE)
If you're interested in DpdoDepth's implementation, or want spatial optimization on your SACD master, contact us.