# 3. Spatializer Plugins
Part of [[Spatial Audio and Reverb Zones]]. Previous: [[2. Reverb Zones and Mixer Effects]]. Next: [[4. Meta XR Audio for Quest]].
> [!note] Verification status
> Checked 2026-11-08 against `AudioSource.spatialize` (custom spatializer plugins expose a Spatialize checkbox; setting the property true with no plugin selected "will fail with a warning"), `AudioSettings.GetSpatializerPluginName`, `GetSpatializerPluginNames`, `SetSpatializerPluginName` (empty/null clears the plugin), and the 6000.5 Audio Spatializer SDK manual page. `AudioSettings.audioSpatialExperience` exists on the 6000.5 `AudioSettings` scripting page as "Determines if the Unity app's final mixed audio stream is spatialized" - I did not find a deeper 6000.5 worked example for that property, so treat its platform behaviour as something to confirm in your Editor. **None of the code has been compiled or play-tested in Unity.**
## 3.1 Built-in panning is not an HRTF
With no spatializer plugin selected, `spatialBlend = 1` still attenuates by distance and pans the source in speaker space (and applies Doppler, spread, etc.). That is enough to teach 3D audio on a desktop stereo pair or a surround setup, and it is what [[Interactable Audio]] has been using.
It is *not* binaural spatialization. An HRTF (head-related transfer function) models the filtering of the head and the tiny delay between the ears so a sound can be heard above, behind, or at a specific elevation. Unity does not ship a production HRTF as "the default"; it exposes a plugin slot. The `AudioSource.spatialize` docs describe this directly: custom spatializer effects improve directionality through HRTF filtering and micro-delays, via the native audio plugin system. If no such plugin is present and selected in project audio settings, the Spatialize checkbox is hidden and setting the property to true warns.
## 3.2 Selecting a plugin
1. Install a spatializer (Meta XR Audio is Part 4; other engines such as Steam Audio or third-party plugins have their own packages - do not invent compatibility claims for them here).
2. **Edit > Project Settings > Audio > Spatializer Plugin.** Pick the plugin by name.
3. Some plugins also install an Ambisonic Decoder Plugin; set that if you are playing ambisonic beds.
4. On each source that should go through the plugin: `spatialBlend = 1` and `spatialize = true`.
5. `spatializePostEffects` decides whether the spatializer sits after (`true`) or before (`false`) the source's filter components. Use the plugin's own recommendation when it offers one.
```csharp
using UnityEngine;
/// Logs the active spatializer so a scene can fail loudly on a misconfigured build.
public class SpatializerPluginCheck : MonoBehaviour
{
[SerializeField] bool logAvailablePlugins = true;
void Start()
{
string active = AudioSettings.GetSpatializerPluginName();
Debug.Log(
quot;Active spatializer plugin: '{active}'", this);
if (logAvailablePlugins)
{
string[] names = AudioSettings.GetSpatializerPluginNames();
Debug.Log("Available spatializers: " + string.Join(", ", names), this);
}
if (string.IsNullOrEmpty(active))
Debug.LogWarning("No spatializer plugin is selected. AudioSource.spatialize will warn if set true.", this);
}
}
```
> [!warning] Code not compiled in Unity
> Not compiled. `GetSpatializerPluginName` is documented to work in the Editor and in players, and to return the plugin selected for the currently-running platform. `SetSpatializerPluginName` can change it at runtime (empty string clears it); prefer setting it in Project Settings so every scene agrees.
## 3.3 What this means for the rest of the audio series
- Score stems ([[Music Mood Mixer]]) stay `spatialize = false`, `spatialBlend = 0`. HRTF-processing a stereo orchestra is expensive and usually sounds worse.
- Pooled one-shots ([[2. Pooled AudioSource Service]]) should apply a `SpatialAudioProfile` that sets `spatialize` consistently, then reset it on release. A leaked `spatialize = true` on a UI click is how you get a mysteriously "beside you" button.
- A diegetic radio ([[In-Game Radio Stations]]) spatializes the *world speaker*, not the internal `RadioPlayer` sources, unless you have chosen to make the player itself the 3D emitter.
- Mixer effects still run. Spatialization and the mixer are not exclusive. Route spatialized sources to `SFX/World` as usual.
## 3.4 `audioSpatialExperience`
The 6000.5 `AudioSettings` page lists a static `audioSpatialExperience` property that "Determines if the Unity app's final mixed audio stream is spatialized." I am citing the property's existence from that page. I did not verify, on 2026-11-08, how it interacts with a per-source spatializer plugin or with Quest headphone output, so do not build a feature on it until you have read the enum (`AudioSpatialExperience`) in your installed 6000.5/6000.3 Editor and listened to the result.
Part 4 installs one specific plugin - Meta XR Audio - and targets the Unity version Marshall actually ships to Quest 2.