-
-
Notifications
You must be signed in to change notification settings - Fork 21
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Positional audio isn't correct #4
Comments
I believe you are overcomplicating your approach to calculating the angle between the "at" and the "position". I think the correct way is to do the following:
|
|
Actually the above code might not always work, you need to clamp the thing you put into SDL_acosf from -1 to 1 otherwise you get NaN issues when the float rounding goes ever so slightly above 1 sometimes. |
Upon further reflection, I think the right code would look like this:
|
A person made a fork with an alternative calculation that appears related to this |
I tested this, can confirm it fixed the issues I was having with very jarring transitions. My test application places two stereo sources in front of the listener, then spins the listener around. It works great with this fork. Any chance this patch could be merged? |
The patch in a9e2f30 is based on @Helco's work (thanks!). The original patch was always converting to source-relative mode and didn't have the SIMD versions implemented, so I tweaked and updated it. It's possible this math is also wrong (and/or I screwed it up, either in updating it or in the SIMD translation), so PLEASE test the latest and report back! |
(Actually, reading back, this was @adahlkvist-feral's work originally.) |
3D positions seem to have rotated 90° in the new commit compared to my fork. But I also introduced a copy-paste error in my fork and already had to fiddle around with orientations. Thanks again, also to adahlkvist-feral whose code I stole for the fork |
I checked that the current sound orientations seem to be same between MojoAL and OpenAL-Soft, so the rotation must have been a bug in my fork. |
As for the transition: yes, this code also has problems. It's already an extremely naive approach, and on top of that, there's clearly some incorrect math somewhere causing that jarring transition. Fixing that is on the TODO list (but I'm going to split this comment into a second bug so there's an actual place we're tracking that change).
Originally posted by @icculus in #2 (comment)
The text was updated successfully, but these errors were encountered: