Skip to content
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

[wip] Audio 3D position/panning changes (add panning, both panning and position off by default) #1557

Draft
wants to merge 2 commits into
base: develop
Choose a base branch
from

Conversation

justin-espedal
Copy link
Contributor

There are a few issues with sound position that this PR aims to improve.

  • 3D position is used to simulate panning on non-Flash targets. This is ok for native, where we use OpenAL and there's no alternative for panning. On HTML5, however, howler has a stereo mode for playing sounds. That gives a better result than using the awkwardly simulated panning based on 3D audio.

  • Using 3D audio at all on HTML5 can lead to serious degradation of audio quality ("muffled" sounds).
    Stencyl Issue Tracker: Muffled Sounds On HTML5

  • Using 3D audio positioning at all can lead to extra audio processing code being run, even if the position is (0, 0, 0), so it should be avoided if not desired.

This makes position a nullable value, null by default, which is a change to the AudioSource API.

Position shouldn't be applied by default, since it's extra code
running that may not be needed, and in some cases can significantly
alter the sound quality. Specifically, spatializing sounds on HTML5
can make sounds more muffled.

This change caches the position in AudioSource, and all getPosition
functions in the AudioSource backends are replaced with accessing
the cached position value.
- Panning and position aren't designed to be used together,
  so their exclusivity of each other is now enforced by AudioSource.
- Like position, panning can cause extra code to run, so it's null
  by default.
- Panning is supported natively on Flash, and uses Howler stereo for
  HTML5, but relies on an approximation using 3D spatial sounds for
  targets that use OpenAL.
@DigiEggz
Copy link

As mentioned here, these changes have vastly improved the sound quality for me. Paired with my recent PR, sound in HTML5 is now comparable to native.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants