Implement Miniaudio for sound and music processing/mixing/playback #828
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This an initial implementation of Miniaudio for handling our various audio-related needs. It offers the following advantages over our current built-in mixing implementation:
1- Does not require managing device lock/unlocks from the main thread
2- Can accommodate new platforms/libraries without requiring a significant rework (for instance, can be used with SDL or sokol_app or what have you; custom backends can even be written if necessary although it supports the platforms we already target natively)
3 - True 3D spatialization of sounds
4 - Node system will not require allocating additional memory for mixed versions of underwater/vacuum/reverb effects or preprocessing the sound with effects added before playback
5 - More flexible regarding disparity of sound formats, channel counts, etc, and the underlying device's properties
6 - Simplified Sound Menu for the end user
7 - Custom decoders can be written to expand the audio types supported, although this PR implements support for all of the formats that we already supported, with the following exceptions: