Native Audio

$28
Publisher Exceed7 Experiments
File size 24.67MB
Number of files 51
Latest version 7.0.0
Latest release date 2022-01-03 04:03:41
First release date 2018-04-13 08:28:17
Supported Unity versions 2018.4.2 or higher

Requirements : For iOS and Android only. 2019.3 LTS or higher.


Official Website : https://exceed7.com/native-audio

Unity Forum : https://forum.unity.com/threads/native-audio-lower-audio-latency-via-oss-native-audio-library-ios-android.526837/

E-mail : [email protected]

Discord : https://discord.gg/8gthuWA


So your Unity game outputs WAY slower audio than other apps even on the same device? Turns out, Unity adds as much as 79% of the total latency you hear. Your devices can do better.


Unity won't let you use only a subset of its hard-wired audio pipeline. But with Native Audio we can go native and make as much compromises as we want. Simplify, take dirty shortcuts, and aim for the lowest latency. Sacrificing functions and convenience that Unity was designed for as a friendly game engine.


✴️ How is this possible?


► Unity didn't intialize the native source with the lowest latency settings, but with the safest and defensive settings.

► Unity need to mix audio internally with FMOD to enable any concurrent audio at all. Or else you can only hear an individual imported AudioClip at any point. (That would sucks as a game, we aren't here to make a music player, and we don't want to fire a single bullet that mutes an entire music, either.)

► Unity has many convenient functions to be worthy enough to be called a game engine. Like AudioMixerGroup, volume faders, effects, limiting, AudioSource priority and spatial position, AudioClip flexible import settings that all "just works", etc. All combined, it is inevitable having to wait at some point.


Native Audio allows us to break the norm and go for what normally would be considered crippled for a game engine :


► Request the OS more native sources for our own, completely independent of the one Unity requested and is pumping mixed audio to, going through all the bells and whistles.

► Export an AudioClip data to a new memory area that native side could read. Give the native side a pointer to this memory. Warm up and ready source as much as possible like a runner on a starting block ready to sprint.

► At the critical moment, signal from C# to native side for our exclusive native source to play that memory. Just run through it. No mixing. Just want to hear this AudioClip with nothing else, just want to hear this file like I double clicked on it. Instantly at this line of code, not even waiting to the end of this frame. The Play call is now much closer to the HAL.

► With multiple instances of native sources requested, we can have back limited concurrency while staying unmixed.

► Still keep the Unity-way around for audio that aren't critical but require higher concurrency. Let them take time to mix. Selectively play critical audio in Native Audio's express lane


Native Audio helps you do this across 2 platforms of iOS and Android, using the same common C# interface.


Unfold the Technical details section for more.


Unity Forum : https://forum.unity.com/threads/native-audio-lower-audio-latency-via-oss-native-audio-library-ios-android.526837/

E-mail : [email protected]

Discord : https://discord.gg/8gthuWA

Top Publisher Assets