Skip to content

[DAGA] SH HRTF interpolation notebook#138

Open
hoyer-a wants to merge 10 commits intodevelopfrom
daga/hrtf-interpolation
Open

[DAGA] SH HRTF interpolation notebook#138
hoyer-a wants to merge 10 commits intodevelopfrom
daga/hrtf-interpolation

Conversation

@hoyer-a
Copy link
Member

@hoyer-a hoyer-a commented Mar 10, 2026

Spherical harmonic interpolation of head related transfer functions

@hoyer-a hoyer-a marked this pull request as draft March 10, 2026 15:21
@hoyer-a hoyer-a requested a review from f-brinkmann March 10, 2026 15:21
Copy link
Member Author

@hoyer-a hoyer-a left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some typos, some suggestions. Overall great notebook!

"\n",
"that represents a single sample of the HRIR or a single frequency bin of the HRTF for one ear and **all** $Q$ source positions.\n",
"\n",
"We can apply the spherical harmonic transform - also referred to as spherical Fourier transform - to $\\mathbf{f}$ to get the spherical harmonic spectrum\n",
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"We can apply the spherical harmonic transform - also referred to as spherical Fourier transform - to $\\mathbf{f}$ to get the spherical harmonic spectrum\n",
"We can apply the spherical harmonic transform - also referred to as spherical Fourier transform - to $\\mathbf{h}$ to get the spherical harmonic spectrum\n",

"\n",
"<img src=\"data:image/png;base64,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ake4uWZ36NDB8Bdl5PTwEyCpNOZz4od969atW6Bip0yZktT+CEc8T3379rVCMqlCtJMIiEBWECi1p3e1OytaqkaKQJYTYPbtQYMGWYEwfPhwm5+UrUiYhXzgwIGG8CK/9SYTAREQgSgCEktRdLROBDKMAMnMo0aNsrNyE7466aSTDHlK2WK7du0yM2bMMGPHjjXt27c3PXr0yKr2Z8t5VjtFINUEJJZSTVTliUAaEFi8eLGZOnWqnVyye/fuaVDj1FRx5MiR9udaunTpktDEmqk5ukoRARFIVwISS+l65lRvEUgBAUJz2eRZyrb2puASUREiIAJ7CEgs6TIQAREQAREQAREQgQgC2ZOsEAFBq0RABERABERABEQgFgGJpVhktFwEREAEREAEREAE9hCQWNJlIAIiIAIiIAIiIAIRBCSWIuBolQiIgAiIgAiIgAhILOkaEAEREAEREAEREIEIAhJLEXC0SgREQAREQAREQAQklnQNiIAIiIAIiIAIiEAEAYmlCDhaJQIiIAIiIAIiIAISS7oGREAEREAEREAERCCCgMRSBBytEgEREAEREAEREAGJJV0DIiACIiACIiACIhBBQGIpAo5WiYAIiIAIiIAIiIDEkq4BERABERABERABEYggILEUAUerREAEREAEREAEREBiSdeACIiACIiACIiACEQQkFiKgKNVIiACIiACIiACIiCxpGtABERABERABERABCIISCxFwNEqERABERABERABEZBY0jUgAiIgAiIgAiIgAhEEJJYi4GiVCIiACIiACIiACOwtBCIgAiIgAulB4O+//zaLFy828+fPN99995355ZdfzAEHHGBOPvlk07VrV7P33rqlp8eZVC3TjYC+Wel2xkpAfX/99VezYcMGU7ZsWVOzZk2zzz77lIBaqQoikPkEEEgjR440NWrUMFdeeaWpUqWKeeyxx8yECRNMmTJlTJcuXTIfglooAsVAQGKpGKAX5yHfffdd8+qrr5r99tvPDB061JQqVSqu6vz444/m2WefNZ9//rnZuXNnrn3q1q1rLrroItO8efNcy/kwatQo8+2335pOnTrZvzwbeAsWLFhgXnzxRVvWSSed5K1J3duZM2eaN954w9x66632gZO6ktOnpEcffdRs3LjR3HnnnelT6QRrynX3xx9/mFtuuSXBPUv25uXLlzfNmjWzXqSj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\" alt=\"Spherical Harmonics Matrix\" width=\"500\">\n",
"\n",
"As you can see, $\\mathbf{Y}$ it is of shape $Q$ $\\times$ $(N+1)^2$, and basis functions depend on the colatitude $\\theta$ and the azimuth $\\phi$ of the source positions. "
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"As you can see, $\\mathbf{Y}$ it is of shape $Q$ $\\times$ $(N+1)^2$, and basis functions depend on the colatitude $\\theta$ and the azimuth $\\phi$ of the source positions. "
"As you can see, $\\mathbf{Y}$ is of shape $Q$ $\\times$ $(N+1)^2$, and the basis functions depend on the colatitude $\\theta$ and the azimuth $\\phi$ of the source positions. "

Comment on lines +218 to +220
"in this case using\n",
"\n",
"$$\\mathrm{Y} = [Y_0^0(\\hat{\\theta},\\hat{\\phi}), Y_1^{-1}(\\hat{\\theta},\\hat{\\phi}), Y_1^0(\\hat{\\theta},\\hat{\\phi}), Y_1^1(\\hat{\\theta},\\hat{\\phi}), ..., Y_N^N(\\hat{\\theta},\\hat{\\phi})].$$\n",
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"in this case using\n",
"\n",
"$$\\mathrm{Y} = [Y_0^0(\\hat{\\theta},\\hat{\\phi}), Y_1^{-1}(\\hat{\\theta},\\hat{\\phi}), Y_1^0(\\hat{\\theta},\\hat{\\phi}), Y_1^1(\\hat{\\theta},\\hat{\\phi}), ..., Y_N^N(\\hat{\\theta},\\hat{\\phi})].$$\n",
"in this case using the target source positions $\hat{\theta}$ and $\hat{\phi}$ for the spherical harmonic basis function matrix\n",
"\n",
"$$\\mathrm{Y} = [Y_0^0(\\hat{\\theta},\\hat{\\phi}), Y_1^{-1}(\\hat{\\theta},\\hat{\\phi}), Y_1^0(\\hat{\\theta},\\hat{\\phi}), Y_1^1(\\hat{\\theta},\\hat{\\phi}), ..., Y_N^N(\\hat{\\theta},\\hat{\\phi})].$$\n",

Or something similar to make it a little bit clearer that Y now represents different directions than before

"\n",
"Before computing $\\mathrm{Y}$ and its pseudo inverse, we need to decide on the maximum spherical harmonic order and the spherical harmonic definition.\n",
"\n",
"The sampling grid supports spherical harmonic processing up to an order of approximately $N=32$ and for simplicity, we use the default spherical harmonic definition of spharpy.\n",
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"The sampling grid supports spherical harmonic processing up to an order of approximately $N=32$ and for simplicity, we use the default spherical harmonic definition of spharpy.\n",
"This specific sampling grid supports spherical harmonic processing up to an order of approximately $N=32$ and for simplicity, we use the real valued default spherical harmonic definition of spharpy.\n",

"cell_type": "markdown",
"metadata": {},
"source": [
"and its pseudo inverse"
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"and its pseudo inverse"
"and its pseudo inverse $\mathbf{Y}^\dagger$"

"source": [
"## Inverse Spherical Harmonic Transform\n",
"\n",
"We now perform the inverse transform introduced above\n",
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"We now perform the inverse transform introduced above\n",
"We now perform the inverse transform introduced above as\n",

"\n",
"Note two things:\n",
"\n",
"1. If $N$ is sufficently large, we get $\\hat{\\mathbf{h}} = \\mathbf{h}$ after applying the inverse transform. HRTFs require $N>32$, which means that you will see differences between $\\hat{\\mathbf{h}}$ and $\\mathbf{h}$ \n",
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"1. If $N$ is sufficently large, we get $\\hat{\\mathbf{h}} = \\mathbf{h}$ after applying the inverse transform. HRTFs require $N>32$, which means that you will see differences between $\\hat{\\mathbf{h}}$ and $\\mathbf{h}$ \n",
"1. If $N$ is sufficently large, we get $\\hat{\\mathbf{h}} = \\mathbf{h}$ after applying the inverse transform. For HRTFs this requires $N>32$, which means that you will see differences between $\\hat{\\mathbf{h}}$ and $\\mathbf{h}$ \n",

"cell_type": "markdown",
"metadata": {},
"source": [
"Note that we manually stored the data in a pyfar Signal object after the inverse transform. Starting in spharpy v1.1, there will be a function that performs the transform and directly returns a Signal object."
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"Note that we manually stored the data in a pyfar Signal object after the inverse transform. Starting in spharpy v1.1, there will be a function that performs the transform and directly returns a Signal object."
"Note that we manually stored the data in a pyfar Signal object after the inverse transform. In spharpy v1.1, a function will be introduced that performs the transform and directly returns a Signal object."

"cell_type": "markdown",
"metadata": {},
"source": [
"As mentioned above, you can see that the spherical harmonic processing introduced errors to the HRTF."
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe mention that where these errors occur depends on the maximum order N (hope i remember this correctly)

"cell_type": "markdown",
"metadata": {},
"source": [
"For illustration, lets plot the left and right ear spherical harmonic signal of order 1 and degree 1. This is contained in `hrirs_nm[:, 1]` and contains the 'left/right'-component of the HRTF data set."
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should we explain why the right ear signal is flipped in sign?

@mberz mberz changed the base branch from main to develop March 12, 2026 13:11
@mberz mberz moved this from Backlog to Implementation in progress in Weekly Planning Mar 12, 2026
@f-brinkmann f-brinkmann force-pushed the daga/hrtf-interpolation branch from db0273e to bafe884 Compare March 13, 2026 13:48
@mberz mberz force-pushed the daga/hrtf-interpolation branch from 9cd7c5f to 990c364 Compare March 20, 2026 09:02
- formulations
- figures
- updated license agreement
- watermark
@mberz mberz marked this pull request as ready for review March 20, 2026 09:32
@mberz
Copy link
Member

mberz commented Mar 20, 2026

@hoyer-a @f-brinkmann
I've updated a couple of things, condensed the notebook in some parts. Please have a look.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Implementation in progress

Development

Successfully merging this pull request may close these issues.

3 participants