We have posted the version 1.2 update to the TrueAudio Next open-source library to Github. It is available here.
This update has a number of notable performance and feature improvements, and it reflects the enhancements built into the version of TAN supported in Steam Audio. In many ways, it represents a “coming of age” of TrueAudio Next.
First, the audio convolution algorithm now includes a significant speedup option called the “head-tail” partitioned method. This arrangement allows an audio thread that submits a real-time audio buffer into TAN convolution to receive a response from TAN much more quickly than with conventional partitioned convolution. The majority of the computation overhead (the “tail”) occurs in the background, in between buffer submissions to TAN, and thus this method is very friendly to parallel processing. At the same time, it provides a significant latency overhead reduction and performance speedup, since the calling audio thread is not blocked waiting for the entire convolution to be calculated–only for a very short “head” portion.
Many other optimizations were incorporated into the TAN Graphics Audio Acceleration Library (“Graal”) to minimize memory, buffer transfer and synchronization overhead. Notably, a significant performance improvement is realized when the IR kernel is updated dynamically while convolution is running. The latency overhead to the audio buffer calling thread is now only a short “head” calculation with a crossfade from the old kernel output to the new kernel output (illustration below).
Next, the TAN GPU utilities library now supports AMD Resource Reservation, in which a configurable part of the GPU may be reserved for audio processing apart from the normal GPU compute resources. As explained in earlier blogs, Resource Reservation protects audio and graphics queues and compute resources from blocking each other, allowing them to coexist on the GPU as never before possible. Developers can now call a function to query a system’s TAN support and available resources, as well.
Finally, a number of new samples are added to exemplify and streamline the process of building audio applications using TAN:
- Accelerated mixing. Mixing on the GPU with TAN can minimize buffer transfer overhead.
- 10-band EQ.
- IIR (Infinite Impulse Response) filter.
- Time domain convolution and doppler sample.
We continue to work on exciting new optimizations for future releases. Meanwhile, we welcome contributions from others — please feel free to make a pull request to submit your own examples and optimizations for TAN.