Skip to content

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

Draft
justin-espedal wants to merge 2 commits into
openfl:developfrom
Stencyl:audio-pos-change
Draft

[wip] Audio 3D position/panning changes (add panning, both panning and position off by default)#1557
justin-espedal wants to merge 2 commits into
openfl:developfrom
Stencyl:audio-pos-change

Conversation

@justin-espedal
Copy link
Copy Markdown
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
Copy Markdown
Contributor

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