# 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.