Skip to content

[DAGA] SH HRTF interpolation notebook#138

Merged
mberz merged 13 commits intodevelopfrom
daga/hrtf-interpolation
Mar 24, 2026
Merged

[DAGA] SH HRTF interpolation notebook#138
mberz merged 13 commits intodevelopfrom
daga/hrtf-interpolation

Conversation

@hoyer-a
Copy link
Copy Markdown
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
Copy Markdown
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
Copy Markdown
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/mFtuuSXBPUv25uXLlzfNmjWzXqSjjjrKVvbiiy+25/KLL74o2ZVX7UQgjQlILKXxyUum6q+//rr5/vvv7a6fffaZOfbYY/Mt5pVXXrEihhAAwqhBgwbm0EMPNXiYvvzyS/PRRx+Ze+65x5xxxhnm2muvzVXemjVr7PEQWscdd1ykQNm8ebPddvv27bnKSOUH6kz7//rrr1QWm1Zl0f4tW7akVZ0TrSzX3b///pvobiV++4MOOsjccccduer5559/2s8VKlTItVwfREAEUkdAYil1LEt8SatXrzbffPONFUiffvqpmTVrVr5iCSH0wgsvmNKlS5v+/fub1q1b52knZeKlmDFjhqlTp06oBwlx8vDDDyfkzcpzIC0QARHIReCff/4xdGb22msvc8455+Ral+gHPHFYOobVd+3aZTtApAZwr5KJQKoJaDRcqomW4PLefvttW7sePXpYD9GiRYvMjh07YtYYT9JTTz1l1xPOCBNKrDzssMPMzTffbLcjxBdmHTp0MMuXLzdvvvlm2GotEwERSILAk08+ab27eHSPOOKIJEr43y50hrp162YQYOlm3Muo+8SJE9Ot6qpvmhCQZylNTlRBq4mrfs6cOaZevXqmdu3apm3btmbMmDFm7ty5oZ4gjvfOO+8YcpWOPvpoc/zxx0dWoWHDhlY04WX6+uuvzeGHH55r+0svvdR88sknZuzYsbas6tWr51pf0A+E11atWmVHCFWsWNG20eV0xCp79+7ddnvysOiNEmLkgRPVM125cqUN423dutVwHITikUcemecQrOcPT1u8xyF0VKlSJfuHiEVc/vDDD+aQQw6x9TrwwAPzHMctoGdNbthXX31lw0/Ui3NNT7sglkw7/H3Cjk2YlZAr1yEeEYwcKsQ5YSau1RUrVtjrqFy5cjZHh4RmzLEkP+f333+3IWHOsyvHbhT4RzgONpw7tqtfv74NI0ed50R4Etbcd999TeXKlW3ng+Owf4sWLQI1Se3H5557znpzSfQ+/fTTU1I4rGCcrpaOQi9dWWdbvSWWsuSMz5s3zz5cEEnYKaecYrjZIohIvg4zHjDYueeeG7Y6z7KbbrrJbNq0yYQJIRJTe/XqZcN1jzzyiBkyZEjcyeV5DuQt4OY+btw48/LLL3tL//sW4XPjjTeaatWq5VlHPV3yub+ycePGdh8S4H1DNN577732oesv5z1ikjwSP3yBF496DRw40ApEx9LtG3YcevY8YHn4k+Pl59ww0qlv376mVatWroicVwQqOWMIDt8YKUX7EQfJWjLtcPs89NBDVhAFj821+Pjjj5thw4YZRDbGtUiC//Dhw+018ttvv+XshqjHc8Lw+Ntvv92GknNW7nmDx7Nfv36hIhfuXGsMsfeNa5SyatWq5S+27xPlybknh4/8PzoDiI2WLVvGJZYQ+dj+++9vX92/n376yV63sQZgTJo0yUyZMsXgJT777LPdbsX+yjXLdwXR6xuDQhCQwXYS+uNcIzRLgsWqP3VEzAfrXxLqrDoUDQGJpaLhXOxHYRQYPWkXSuNLz6ga5mzhgYJXJWhMD4AhBuIxev/OAxC2PQ8TesA8TMlv6tixY9hmCS178MEHrceMpPMLLrjAPrTwOsyePduQwH733Xeb++67zw6r9gvmAcqDkgcdniG8HYySI0zIA5v9nJFvxfbwYNTfaaedZm+aiJOXXnrJ8PB//vnnzdVXX+12yXlN5DjsRFn8nXfeeZYPnhW8RU888YRtB56nY445Jqd8vGm33XabFZ54GJo2bWq9J+SkkWvGqL8HHnjAcsnZKYk3ibYjnkP4YpDt+Tx48GDrlSSkwrQUtJ1zTDh4+vTpBhGBaGzSpIkd7fbMM89Y7ygiEzHlG1452k/isxONJLZ/8MEH5rXXXjMDBgwwI0aMsJ47t1+yPMkHXLp0qeXMd+zEE090RYa+Ug/EuvNq3nDDDVZccQ2+9dZbZt26dXZagOuuu84grH1buHChFeKMgnN5SpTHfpdccom/aZG+5/h8HxCAdFSY4oB2jB8/3ixZssSKJUQk54L6IoJZzveLewMdiygPYWE3hvozGnfbtm156s99Eq8V1xidGln2EVDOUhaccx4ahAYIpRE6cua8THiXwmz9+vUGj1AqR9lcfvnlhnAS4iLoCQmrQ9QyRuIRWkTM8ZClfVWrVjVt2rSxN17EEPPSEP4LGl4XPBsIRrxI9IR79uxpyyL85deNz7DAw4ZYwiuBF4nyr7nmGjsRIA+9MEvkOG5/GF122WVWeCJqaVefPn3saqZ+8A2O9NgRM3gYaAeCFSF61113WQHCA6yglkw7kjkmwnXQoEHWu+bazjQSPFAJU+JBQ6ziiaCtThzwMAszrl0e2jzkaAPl443hXOMtmDx5cq7dkuWJ5wRRg/eRuY4IMcYyPC8INTwViFvOHwIZQczDmmW0De9nMMcPUc/UD//5z39s/RGLiA6mASGkXlyGIMIbyrnBC4rIRTwy8INzB3/EMO1kOecYwdS+fXtbZcT9smXLiqv6VtBRf+6Jrv6IUnI1CYlzT6H+MOY6lGUfAYmlLDjnTgy1a9cuV2udeHr//fftDdtfyY2BvJJUu50RX4RUyDfhpl8Qc8nkPDB5ePiGFw1PD4KG3m3QEBbBUBvbNGrUyG7qh214EJ5wwgn2QRAshzLoRfMADLNEjsP+PNzDwip4k+h184BxhhcEIccDKiw/i5wlhAbhLXrLBbFE25HssfCoBXOJnGcFb01QhJATxjnwufjHvvDCC+0M1/4y3iMmEb2IbcemoDy7d++eKxQbPKb7jNDGw4KY5brCPvzwQzsrN2LwiiuuMGeddZZdvnbtWvvq/r333nvWC4oAmTp1qvWQMR0IoUPyporLEKJ48RD5fMcxRr+eeuqp1vOJh8x1uvAgkdOI9xbRSk4eFmyrXVhE/8Lqz2SfhL3piPXu3Tun/sVZzyLCocOEEFAYLgRKJi2i14o3Ao8SXhTf+GkEbgb0XhlN4ocxeDATAgpOQOnvn+x7RBoPeOpFSC7Z5FR6eHgYXN5LsD4IDG7Y0qXEpwAACRdJREFUYRYrj4cwF8bDyBmM/FwhmP788882LIdYwWtHbzTMEjkO+/MQCYoFlnM+EAUc25nr4SLwEJ9hhljE8JT5XsWwbaOWJdqOqLKi1iHwguZEbXDQANuR04NI8HOc/P3JzQszeHJOyXXDawibgvDkJ0cQzfEY1xjeLcwJec4f3iYnBt15xsPkW+fOnQ1/BTE8UXi1gkZiPoaHK+waJOwXq/PEaFeM+4XLw0IEOc8f58nlX5HfRf4i5wBzdQm21a4M/MMDhccnaC5lgI5B2Ahfzk2ws+iXEav+V111ld2MPDSX+B5PPf2y9T4zCEgsZcZ5jNkKRBA9Z3qzJGAHzYWb8D75YontSIwmjMWNO9W/OcXDghsfYQQmq6Rnl4hRJ/JXwjwq8ZSDEEzESESlB08uFF4kd+Pkhu8eAmHlJXqcqO2Dx+Ehj5HTw1+UcZ7DhEjUPv66qHr52xXkPe2L8o5ErQs7LiLLT7oPbuNGFyJ8uY4KwjPZBGW8WRjfPX+CWLccz1mqjQ6Km1MprGzWhxlh6FhiyW1P+M0ZXiNnfFediMFz5u4nCCvWYYio/Iz8SnLXYhni0wlQfxvEaJRYctv69SfE7r5zpDIgyBGRzhPm9tFrdhCQWMrw80xiN0ZvyD3g/SYjUkhcRLiQI+GLFt4jlvCc+EnF/v7+e8J5eIuYyTu/YdM8yLgZEXbA3R2cldgvN+y9EymEC5Mx16uNZ1+GsZP0zY2dpGNCJPRU8Sbg7UCohOVFUXYix2F7d3PmfbxGYnt+N3CmEiiIJdqOqGM5T0LUNmHrEmUTdr375bo2BctNhqcLPfnl5/ceDiSGY3hafcNjicXymvrbJvp+9OjRuTynbn/yiAg/MyDAiRm3jtewUa7+et7zXcH4fvBdcebEH98ZF+pmndue+1M8gpORu0EPOeXgbSJvCi91mOfNeSfZNspcffheO68s27ufkqFdwZB/VHlalzkEJJYy51zmaQk9NkaEkdTKqJ9YNm3aNDvaCK8JOR7OGHHEDN70NOMRS+QQ0fNzrndXTqxXfkuOkUMkTXLsRIwHHcnctJGHYvCBR1kIKcQbN2G8V8kaI5ToFZOs6vf+XXlRvXS3TWG8uocXQijoFSyM4yVapgslBfdzIZPg8lR/5pzhVY0VfnT14DrCipon85HBiIevf13hxSAkhheDUZ6ptlgjVhF8iCVCgWFiKZ560LHCCLX75kQIyev+d5VkbyzeEbd4Cl2o0i8fZhier7D1/rZR7139XS6Z29Yln/tCz63Ta3YQ+G/QODvamnWtdIndbtRbLADkbnBj5udP/N44vTTCL4xgyS+pEcGDUMLDEZZbEuvYDHfnBkc4LlaSbqx9uSnyUInl1SEZlpwlhoona+QuMbyZHqX/QHPl4ZXzXfdueVG8up4vHr0wQyySTEvisQsxhW2X6mWuF+9643751Mk9IP3lhfXefQeC5SNSGEGH6HYekKLm6R7MTNvhixN3PSGCCzqpaLDdhfmZc+vaFMxxY+QqxvfINwQjlmw43S+roO+j6u/OSUmoZ0Hbqf2TIyCxlBy3Er8XX3weFPRa3dxKsSqNWMG1jZfGuf/ZFqF05pln2t4vc/kw4ibMGDbPRJP0GAmtJWIcm9wGvAD8xlUi5ibLZLi3Syp1+yNi3E8f5Nd+t0/YK4nbCElGBoZ5Svi5CXIZOJ4vNMPKSvUyvH3kIZGXxl/QyO1AmOA5KcqkVHcsRGbQqFN+wju4T0E+M3Gj++FovxymU8CzxJBwrkGsqHk6MRl8ADsvifOQUFcXrvPbUNLekyDvftTXF0UsoyOF+R0pvi+ureQrkQZA8nnY96wo2hqr/niOyWvDqCd1dpOPFkW9dIySQUBhuJJxHlJeC4Yi41JHKLghu1EHIWeCnjYCyw+5MTkgQoZJJBFMuNEJDZB4ioD4+OOP7fBrhNJle4YN+/tGHc9fRwgJ7w8jWRIxjsW+eL4YSUSuFL10hBOTDpKITbvCPELxHod2McybMCFDvRlCT2+fJFLywbhxkocBaz6TY+I8FPEeoyDbMScTc+yQU0X7GWaPeEOoEEJFLDPsuSiNUAUPFULAiGjy1xCT1MdNjsrnwjbOC54jfreQyRt5gHMt43HEG0l4rmvXrrmqUZQ8nbcl6IVxYoE8H645RFUy36tcDSuCDy7UxvXv33PwytB5w3vGfcOZ38FgGgS8UoQI2bY4LFb9yS3jPoC4Iy+K6xiBy2eWy7KDgMRShp5n5o/B8gvBueYTo+cGN3/+fPtwdWEBvCrMi0R4DQGCMOHPN8IFeJTIjQqzeG4ozImEh4pJ9xIxZj7mwUy+FB4mZ9Sf/CsmCPSN9iRqeL7oHdNuBIAzvDrkgpEET5I3iepubid3nHja7srj1SUd+8ui3vMQZSJEknbx2vgjhagfdS9Icncy7aDNTOZ3//33W/HtQmGURXI8Ya+nn346T7Nitd1di+41uGOs5YghBg5wXvyJOakfOTLXX399rgENlJssz1h1D9bVfcZT4eZ3Cn5v6OAgzhHitI35iApyDt0xC/vVhdSC4s95xYLhRtpGqJ9RpnTU8PJxvcY6n8VVf8LKTEHBPZUOHXW+bE/HMNFzXtj1V/mFS6DUHnW8u3APodIziQAeFHqK9NCZWgAR5eYmKs52chnjSWKIPEPMqVeqR63gSSN0w02SG78/nB4ueHQQAsV1E+X4PGARdoTCGBqfqFhL9TnknBAGIzEXUetCXqk+Tn7lEeKhHiQxc+7iyQUqTp6cQ+YsimeEWH5tj3c9v8/HdczPyRTlNcy54bqINVdZPPXHC8dAFSYuLazBDghcvlOuAxFPvbRN5hCQWMqcc6mWiIAIiIAIiIAIFAIBJXgXAlQVKQIiIAIiIAIikDkEJJYy51yqJSIgAiIgAiIgAoVAQGKpEKCqSBEQAREQAREQgcwhILGUOedSLREBERABERABESgEAhJLhQBVRYqACIiACIiACGQOAYmlzDmXaokIiIAIiIAIiEAhEJBYKgSoKlIEREAEREAERCBzCEgsZc65VEtEQAREQAREQAQKgYDEUiFAVZEiIAIiIAIiIAKZQ0BiKXPOpVoiAiIgAiIgAiJQCAT+D6/p4wcqhhstAAAAAElFTkSuQmCC\" 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
Copy Markdown
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
Copy Markdown
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
Copy Markdown
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
Copy Markdown
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
Copy Markdown
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
Copy Markdown
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
Copy Markdown
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
Copy Markdown
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
Copy Markdown
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
Copy Markdown
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.

@mberz mberz merged commit 57a2e91 into develop Mar 24, 2026
6 of 7 checks passed
@github-project-automation github-project-automation bot moved this from Implementation in progress to Done in Weekly Planning Mar 24, 2026
@mberz mberz deleted the daga/hrtf-interpolation branch March 24, 2026 23:16
f-brinkmann added a commit that referenced this pull request Mar 26, 2026
* initial commit

* add spharpy to requirements, add sh definition in notebook

* fix typo

* add pooch

* Update hrtf_sh_interpolation.ipynb

* rename sh notebook

* add to examples gallery; add thumbnail

* apply review from hoyer-a

* simplifying the notebook

* Updated
- formulations
- figures
- updated license agreement
- watermark

* Update HRTF interpolation notebook

* rename to explicitly mention hrtf interpolation

* move to workshop section

---------

Co-authored-by: Fabian Brinkmann <fabian.brinkmann@mailbox.org>
Co-authored-by: Marco Berzborn <m.berzborn@tue.nl>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants