FAQ

General

What is the Qualcomm® 3D Audio Plugin?
The Qualcomm 3D Audio Plugin is binaural spatial audio plugin for Unity, ideal for XR/VR experiences and games.

Which computer platforms does this software run on?
Windows 7 (32-bit and 64-bit) and Windows 10 (64-bit).

What hardware is required to take advantage of DSP-offloaded reverb?
You need a mobile device with a Snapdragon™ Processor. This software has been tested and confirmed to support DSP-offloaded reverb on Snapdragon 835 and Snapdragon 845 processors.

Do you have a 3D Audio Plugin for Unity that runs on Mac OS X or Linux?
No.

Can this software be used to create an app that runs on a Daydream-enabled device?
Yes.

What versions of Unity are supported?
This software has been tested with Unity version 2017.1.0f3 and Unity version 2017.2.0f3. Any version of Unity before Unity 5.2.0f3 will not work with this product.

Capabilities

How do I create a sound object or soundfield?
This is covered in the Quick Start Guide for this product under the section titled: "Using the 3D Audio Plugin to Spatialize Audio".

How do I set the default Q3D Audio reverb settings (when the player isn't in an Audio Reverb Zone)?
This is covered in the Quick Start Guide for this product under the section titled: "Adding Reverb to a Spatialized Audio Scene".

How can I create an Audio Reverb Zone using this plugin, so when the listener enters a level of my game, the reverb sounds different?
This is covered in the Quick Start Guide for this product under the section titled: "Adding Reverb to a Spatialized Audio Scene".

Can I use soundfields or Ambisonic-sounds in versions of Unity before 2017.1.0f3?
No. Sound objects are supported in Unity 5.2.0f3 and subsequent versions, but soundfields are not supported until version 2017.1.0f3.

Will the 3D Audio Plugin respect Audio Component Effects on the AudioListener?
Yes.

Can I run soundfields through Unity's standard Audio Reverb Zone?
Yes, you can do this in Unity 2017.1.0f3.

Can I run sound objects through Unity's standard Audio Reverb Zone?
No, this isn't possible with Unity 2017.1.0f3.

Does the 3D Audio Plugin support Audio Source parameters beyond the ones shown in the Q3D Audio Source UI?
No, we inherit the grayed-out parameters from Audio Source and add some Q3D Audio-specific ones.

Does the 3D Audio Plugin support occlusion?
Not at this time.

I want to use the 3D Audio Plugin on some platforms, but a different spatializer (or no spatializer at all) for other platforms. How can I do this?
If you want to use a different spatializer for platforms that aren't supported by the 3D Audio Plugin, you can do so with no special set up. The 3D Audio Plugin is designed to consume practically zero processing power and memory when it's not in use.

If you want to use a different spatializer on some Android or Windows platforms but not others, navigate to GameObject->Audio->Q3DAudioGlobalSettings in the Unity Editor to create a Q3DAudioGlobalSettings object in your scene. After this scene is loaded, this object will remain resident until the game is shut down, even if this scene is unloaded.

Q3DAudioGlobalSettings allows the 3D Audio Plugin to be globally disabled on Windows or Android platforms using the relevant check boxes.

How do I process sound objects or soundfields through individual effects?
The 3D Audio Plugin only supports placing Mixer Effects on the final stereo signal that the Q3DSoundObjectOut Mixer Effect produces, or the final stereo signal that the Q3DAudioSoundFieldOut Mixer Effect produces.

The 3D Audio Plugin doesn't support placing separate Mixer Effects on separate sound objects or soundfields (unless of course you're playing only one sound object or soundfield).

3D Audio Plugin does support placing Audio Component Effects on individual sound objects (if you set "Spatialize Post Effects"=true on the sound object's Audio Source), but this is not supported for soundfields.

These features have been tested Unity 2017.1.0f3.

My project wasn't created with spatialized audio in mind, but I want to convert it to spatialized audio. What is the fastest way to do this?
In Unity Editor, go to GameObject->Audio->Q3DAudioGlobalSettings to create a Q3DAudioGlobalSettings object in your scene. (After this scene is loaded, this object will remain resident until the game is shut down, even if this scene is unloaded).

Q3DAudioGlobalSettings provides several "SpatializeMonoAudioSources" check boxes that can enable settings in the 3D Audio Plugin to automatically detect Audio Sources that have mono AudioClips and make them Q3D Audio sound objects. Some options are more processor intensive than others but are less likely to miss converting Audio Sources (the OnUpdate setting will never miss an Audio Source but it is the most processor intensive; OnStart is less processor intensive, but more likely to miss Audio Sources, and OnSceneLoaded is the least processor intensive but most likely to miss Audio Sources).

Since this feature affects performance, we recommend you use the OnUpdateSpatializeMonoAudioSources setting in conjunction with the LogSpatializeMonoAudioSources setting, run through the entire game, and then search your game log for all instances of the string "adding Q3DAudioSource and setting Spatialize=true".

This list of strings contains the names of all Audio Sources that use mono AudioClips (and the names of the AudioClips) and can be used as a checklist for the developer to go through the Unity project and manually convert Audio Sources to sound objects. Neither of these check boxes need to be used in the final version of the game that will be shipped.

No comparable functionality was developed for soundfields, because Ambisonics soundfields only make sense in the context of spatial audio and can't be used otherwise.

Troubleshooting

Why aren't Q3D Audio-spatialized sound objects or soundfields playing?
Make sure to route at least one sound to the relevant Mixer Effects and follow all the steps in the "Using the 3D Audio Plugin to Spatialize Audio" section of the Quick Start Guide.

Not all of the sounds being played simultaneously can be heard.
Navigate to Edit->Project Settings->Audio and ensure that Max Real Voices and Max Virtual Voices are set high enough to contain every sound you play (both spatialized and non-spatialized).

Note that in addition to Unity's voice limit, the 3D Audio Plugin has a 64-sound object voice limit and a two-soundfield voice limit - exceeding these limits results in some sounds randomly not playing.

Why don't overlapping Audio Reverb Zones that use Q3D Audio Rooms blend the two reverbs together like overlapping regular Audio Reverb Zones?
The 3D Audio Plugin doesn't support overlapping Q3D Audio Rooms. Since reverb requires significant processing time on even the most powerful mobile platforms, we currently support only one reverb module for sound objects, so there's no clear way to support overlapping Q3D Audio Rooms with only one reverb module that uses the shoebox model.

If Unity's Audio Listener is inside of overlapping Q3D Audio Rooms, one is randomly chosen to define reverb at that moment.

When I use PlayOneShot() no sound is played.
When using PlayOneShot() with the 3D Audio Plugin, the Audio Source you're calling PlayOneShot() on needs to be assigned an AudioClip (any AudioClip) that is either a sound object (mono sound) or Ambisonic soundfield (an AudioClip that has the "Ambisonic" checkbox checked and is encoded in the Ambisonic format that Unity expects).

Such an Audio Source will now PlayOneShot() as usual for either sound objects or soundfields (depending on which kind of AudioClip was assigned).

This is necessary because PlayOneShot() doesn't alter the AudioSource::AudioClip property like all the rest of Unity's "play sound" APIs, so this "dummy AudioClip" tells the 3D Audio Plugin what kind of voice (sound object or soundfield) it should allocate for the Audio Source when PlayOneShot() tells it to play.

I'm getting some audible dropouts (or glitches) on a Snapdragon Processor when playing many sound objects.
Offloading reverb from the CPU saves battery but takes longer to process audio information.

If you prefer to play more sound objects at the cost of consuming more battery, then navigate to GameObject->Audio->Q3DAudioGlobalSettings in the Unity Editor to create a Q3DAudioGlobalSettings object in your scene. (After this scene is loaded, this object will remain resident until the game is shut down, even if this scene is unloaded).

Now set "1st Choice Reverb Processor" and "2nd Choice Reverb Processor" to "ARM_CPU." Currently this is a global setting that can't be changed at runtime.

Something else is not working as expected. How can I debug it?
In the Unity Editor, navigate to GameObject->Audio->Q3DAudioGlobalSettings to create a Q3DAudioGlobalSettings object in your scene. (After this scene is loaded, this object will remain resident until the game is shut down, even if this scene is unloaded).

Debug logging can be switched on and off per-platform by toggling the appropriate check boxes.

The 3D Audio Plugin does this by copying "inactive libraries" over the "active libraries" Unity uses to build your game.

Note: The Win64 platform has separate options for C# and C++ debugging. C# debugging can be toggled like the others, but the C++ side requires the user to manually copy the appropriate "inactive library" over the active library while the Editor is closed (Windows prevents this copy while the Editor is open).

When logging is enabled, the 3D Audio Plugin emits log messages prefixed with "q3d_audio".

Asserts are also enabled along with logging and will log further information when they trigger.