Version
You may want to review the following sections, which provide you with a series of tips and best practices that can help you better manage your platform and language versions throughout the audio development process.
You can convert many audio files at once by right-clicking a high-level object in the hierarchy, such as a container, and then selecting Convert from the shortcut menu. If you want to set the Conversion Settings for an entire group of objects, you can right-click the top-level object and select Conversion Settings from the shortcut menu. You can also multi-select objects in the Project Explorer and then define their Conversion Settings or convert them all simultaneously.
Many times, when a studio develops a game, it examines each platform and then allocates a “budget” for such items as the memory footprint, CPU, and bandwidth. The audio team is given a portion of this budget and it is up to them to manage this budget efficiently for each platform. Depending on the platform, these allowances will be different, so the audio designer needs to understand how to efficiently compensate for these differences and still deliver great sound using the various Conversion Settings available. To see how well you are doing, you can monitor your project's performance in game using the Game Profiler, and adjust the Conversion Settings as needed to stay within your budget.
Audio formats must also be considered in your budget. It is useful to review the characteristics of the different formats supported by Wwise so that you can make good choices for your project. A general rule is that the less a file is compressed, the less processing power is needed; however, an uncompressed file usually uses more memory or disk space.
The following table provides you with some basic suggestions and information to help you decide how to encode your audio files.
File Format |
Compression ratio |
CPU |
Memory |
Examples of how these are commonly used |
Limitations |
---|---|---|---|---|---|
PCM |
1:1 |
Very Low |
High |
Sounds requiring high fidelity. |
None. |
ADPCM |
4:1 |
Low |
Moderate |
Ambient sounds and SFX. |
Looping on 64 sample boundaries only. |
Vorbis |
3-40:1 |
Moderate to High |
Moderate to very low |
Dialogue, music, ambient sounds, and SFX. |
Slightly larger metadata overhead than other formats, so you should avoid it with very small sounds (less than a few tens of milliseconds). Requires a seek table for seeking. |
AAC |
3-23:1 |
High (low when using hardware-assisted decoder on iOS) |
Moderate to low |
Background (not interactive) music. |
Very large metadata overhead. Long setup time. Not appropriate for sample-accurate playback. |
|
|||||
Opus (standard) |
10-60:1 |
High |
Moderate to very low |
Dialogue, simple music, ambient sounds, and SFX. |
Slightly larger metadata overhead than other formats, so you should avoid it with very small sounds (less than a few tens of milliseconds). Very long setup time after a seek or a loop, especially when streamed from disk. Therefore should be used with caution with Interactive Music, if streamed. Seeking also incur a significant, but temporary, CPU hit. |
WEM Opus |
10-60:1 |
High (when not hardware-accelerated), Very Low (when hardware-accelerated) |
Moderate to very low |
Dialogue, simple music, ambient sounds, and SFX. |
Limitations differ based on platform capabilities. See How Platform Capabilities Influence WEM Opus Limitations and Trade-Offs below for more details. |
By default, the Vorbis encoder uses a Seek table granularity (sample frames) of 16384. While seek tables are not always necessary, you must use one in the following circumstances:
When using the Vorbis encoder in combination with the virtual voice "From Elapsed Time" settings.
When using the Vorbis encoder for interactive music files, especially when the sound engine must start reading the file from somewhere other than the beginning.
When using Seek Actions with the Vorbis encoder.
To enable the seek table for a selection of Vorbis encoded files, do the following:
In the Conversion Settings dialog, click Edit for the platform that is using the Vorbis encoder.
In the Vorbis Encoder Parameters dialog, specify granularity by selecting a number from the Seek table granularity list.
Smaller seek table granularities require more memory. Sample-accurate seeking (interactive music or seek actions) may incur a CPU spike if granularity is too large, and inefficient I/O usage if it is larger than the disk streaming granularity. As a rule of thumb, pick a seek table size that is smaller or equal to your disk streaming granularity, which is the value used for AkDeviceSettings::uGranularity
during initialization.
Seeking can fail if the file is too small | |
---|---|
If the file is smaller than or very close to the size of the Seek table granularity, seeking may fail. In such cases, make the Seek table granularity smaller. |
WEM Opus is a particular format in that its decoding behavior is dependent on the platform's capabilities. Specifically, WEM Opus will attempt to use hardware acceleration on platforms that support it. Therefore, its limitations (and overall usefulness) depend on the target platform.
On most platforms, WEM Opus is decoded on the CPU, similar to Opus (standard). When this is the case, its limitations are similar to Opus (standard): overall higher CPU usage than Vorbis, in exchange for better compression. It is worth noting, however, that seeking operations have been optimized compared to Opus (standard) for streamed media.
When the target platform supports Opus hardware acceleration, this limitation goes away: CPU usage will be very low, even when seeking. For these platforms, the Wwise sound engine will expose an option to turn on or off low-latency hardware decoding during initialization:
When low-latency decoding is disabled, WEM Opus playback may start one audio frame late (usually 10.6ms with default settings). Seeking operations will incur a similar delay.
When low-latency decoding is enabled, WEM Opus will not suffer the extra latency described above. However, playing too many WEM Opus-encoded sounds concurrently runs a higher risk of voice starvation. This is because the sound engine must wait for the platform's hardware to complete decoding before mixing the different sounds together.
Note that this option is a global setting; it is not possible to toggle it on or off for individual sounds. The trade-offs must be carefully considered in the context of your project's specific use cases.
Please consult your target platform's specific SDK documentation page to learn whether it supports Opus hardware acceleration, and how to turn on or off low-latency decoding.
Questions? Problems? Need more info? Contact us, and we can help!
Visit our Support pageRegister your project and we'll help you get started with no strings attached!
Get started with Wwise