You are currently viewing Native Audio

Native Audio

Download Native Audio FREE Unity. 

Native Audio – Lower audio latency via direct unmixed audio stream at the native side.
For iOS and Android.

Official Website | Ask questions in the forum | Discord

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