VRC_PlayerAudioOverride
A region in a world where user voice and avatar audio properties can be adjusted.
Deprecated
This component is deprecated. It is not available in the latest VRChat SDK, and is either non-functional, or will no longer receive updates. It may be removed at a later date.
Use Udon Player Audio instead.
This component is used to alter a player's voice and avatar sound spatialization parameters when they enter a region. This can be used to have performers on stage project their voice further than default, or likewise, have the audience voices not carry as much. This component can also be used to change the limits for avatar-based VRC_SpatialAudioSources within the region-- you can allow higher limits, lower the limits, or even turn off avatar audio entirely in your world.
This component is used in conjunction with a Unity Trigger collider. Any collider shape may be used. In order for the VRC_PlayerAudioOverride
to work, you must create a new collider! You can use any type of collider, but Box is likely the most common use case. This collider must have Is Trigger
checked!
Use Default Layer
You should always use the Default layer for
VRC_PlayerAudioOverride
.
If you want the Override to affect the entire scene, enable the Global
checkbox.
When a user enters the Trigger Collider, the given spatial parameters are applied. When a user leaves the trigger, the default spatial parameters are restored. This change is immediate.
Unity Editor Interface
When you add this component to a GameObject, it will have default settings loaded. No Collider will be defined in the Region
property field. In order for the VRC_PlayerAudioOverride
to work, you must create a new collider, and assign it to the Region
property. You can use any type of collider, but Box is likely the most common use case. This collider must have Is Trigger
checked!
Don't forget to enable Is Trigger!
Any collider used for
VRC_PlayerAudioOverride
must use theIs Trigger
option on the Collider, or else it will be treated as a physics collider.
As an example, a Box Collider
will have a gizmo with walls to indicate its bounds. Clicking "Edit Collider" in the Collider component will allow you to adjust the dimensions of the Override Region in the 3D view. You can also adjust the Center and Dimensions of the Box Collider
component directly in the Inspector. When a player is within those bounds, they will be affected by the Override.
Notably, you can use any collider shape for VRC_PlayerAudioOverride
, like a Sphere Collider
or even a Mesh Collider
. Add the collider to the GameObject, set Is Trigger
to True, and you're good to go!
Voice Falloff Mechanics
All units are in meters. Falloff of audio intensity is roughly inverse-square, with some adjustments.
For more details specific to avatar audio sources, please see the documentation for VRC_SpatialAudioSource.
VRChat Voice Falloff Curve Adjustments
VRChat voice uses an inverse-square curve that has been slightly compressed and boosted.
This voice falloff approximates real-world behavior (ignoring occlusion, reverb, etc) and will allow users to naturally pick voices out of a crowd, while preventing issues such as close-range clipping and unexpected drops.
In addition, there is a low-pass filter on voice once you start to get closer to your Voice Far
range. This is intended to turn distant conversation into "crowd-noise", and helps with improving the ability to understand many voices in crowded areas and instances. The low-pass filter begins affecting voice at 1/2 of the Voice Far
value.
Component Properties
Dynamic Adjustment via Animations
Adjusting these properties via animations during runtime is not supported. These values are set at initialization.
Low "Far" Ranges
Having your
Voice Far
set very low (less than 20m) will result in sharp drop-offs. You probably shouldn't do that-- but if you do, keep that in mind.
Disabling / Enabling GameObject or Component
If a
VRC_PlayerAudioOverride
region is enabled/disabled while someone is standing in its area of influence, you may experience undocumented behavior. This is because Unity does not fire aOnTriggerExit
callback if you are within a collider when it is disabled.In short, do not attempt to toggle on / toggle off the GameObject or Components involved with
VRC_PlayerAudioOverride
while someone is within its area of influence.If you instead choose to move the collider (say, into the floor) via an animation, it should work fine. Obviously, this won't work with Global regions, but in this case you can instead override with regions.
Property Name | Description |
---|---|
Global | If checked, these settings are global. Otherwise, settings only affect players who enter the trigger region. You should only have one of these in your world! If you have more than one, VRChat will only use the first one found. False by default. |
Region | This field takes a GameObject with a Collider-class component on it. The collider must have Is Trigger enabled. When a player enters this region, their settings are changed.Empty by default. |
Region Priority | Higher number means higher priority, can be negative. If a high-priority region overlaps a low-priority region, the high-priority region's settings will be applied instead. |
Voice Gain | An additional boost to voice volume. Can be 0-24db. |
Voice Far | The maximum range at which voice can be heard. At values close to this range, voice is going to be pretty quiet. |
Advanced Voice Near | The near radius, in meters, where volume begins to fall off. It is strongly recommended to leave the Near value at zero for realism and effective spatialization for user voices. |
Advanced Voice Volumetric Radius | An audio source is normally simulated as a point source. However, changing this value allows the source to appear to come from a larger area. This should be used carefully, and is mainly for distant audio sources that need to sound "large" as you move past them. The listener should never get close to the radius for best results. If the listener is inside the Volumetric Radius, strange behavior may result. It is strongly recommended to leave the Volumetric Radius value at zero for realism and effective spatialization for user voices. |
Advanced Voice Disable Lowpass Filter | Disable the lowpass distance filter. May be useful for non-standard ranges. |
Avatar Gain Limit | Limit for avatar audio gain (decibels). Setting this to -1 (or any negative value) will mute all avatar audio. |
Avatar Far Limit | Limit for avatar audio max range (meters). If this is set to zero, all avatar audio will be muted. |
Advanced Avatar Near Limit | Limit for avatar min range (meters). See note on Voice Near. |
Advanced Avatar Volumetric Radius Limit | Limit for avatar volumetric audio (meters). See note on Voice Volumetric Radius. |
Advanced Avatar Force Spatial | Force spatial avatar audio. |
Advanced Avatar Allow Custom Curve | Allow avatar audio to use AudioSource Volume Curve for falloff. Otherwise, Inverse Square falloff is enforced. |
PlayerAudioOverride Default Values
Values listed are the defaults for player voice when no VRC_PlayerAudioOverride
is in effect, or when you create a new component. These values are subject to change.
Property Name | Value |
---|---|
Global | False |
Region | N/A for default settings when no VRC_PlayerAudioOverride is in effect.When a new VRC_PlayerAudioOverride is created, no collider is created. You'll have to make one and ensure Is Trigger is checked. |
Region Priority | 0 |
Voice Gain | 15 |
Voice Far | 25 |
Advanced: Voice Near | 0 |
Advanced: Voice Volumetric Radius | 0 |
Advanced: Voice Disable Lowpass | True |
Avatar Gain Limit † | 10 |
Avatar Far Limit † | 40 |
Advanced: Avatar Near Limit † | 40 |
Advanced: Avatar Volumetric Radius Limit † | 40 |
Advanced: Avatar Force Spatial | False |
Advanced: Avatar Allow Custom Curve | True |
† To reiterate, these are limits, not boosts.
Notes
- All player voice gets an addition 6db boost relative to other sounds. This is on top of any
Gain
you apply with theVRC_PlayerAudioOverride
. - Don't overlap regions with the same priority. That will result in spooky undocumented behavior.
Updated about 1 year ago