Class
SoundService
NotCreatableService
A service that determines various aspects of how the audio engine works. Most
of its properties affect how Sounds play in the experience.
A service that determines various aspects of how the audio engine works. Most
of its properties affect how Sounds play in the experience,
while others affect the behavior of instances in the advanced audio system
such as AudioPlayers and
AudioEmitters.
SoundService is also often used to store
SoundGroups, although this is not mandatory for groups to
work.
Properties 12#
AcousticSimulationEnabledboolean | Determines whether acoustic simulation is enabled globally in the advanced audio system.ReadSafe |
AmbientReverbReverbType | The ambient sound environment preset applied to all Sounds.ReadSafe |
CharacterSoundsUseNewApiRolloutState | Determines whether the default character sounds will use instances in the
advanced audio system vs. Sounds.Write: PluginSecurityReadSafe |
DefaultListenerLocationListenerLocation | Determines where (if anywhere) to place an AudioListener by
default.Read: PluginSecurityWrite: PluginSecurityReadSafe |
DistanceFactorfloat | The number of studs to be considered a meter by SoundService when
simulating the Doppler effect for Sounds.ReadSafe |
DopplerScalefloat | Degree to which the pitch of a Sound varies due to the Doppler
effect.ReadSafe |
ListenerCFrameCFrame | The CFrame that is used as the listener's position if
ListenerType is set to
ListenerType.CFrame.ReadSafe |
ListenerObjectInstance | The Instance whose translation or coordinate frame is used as the
listener's position if ListenerType is
set to ListenerType.ObjectPosition or
ListenerType.ObjectCFrame.ReadSafe |
ListenerTypeListenerType | The current listener type used by 3D Sounds to determine
where they will be heard from.ReadSafe |
RespectFilteringEnabledboolean | Sets whether Sound playback from a client will replicate to the
server.ReadSafe |
RolloffScalefloat | Determines how fast the volume of a Sound attenuates beyond its
Sound.RollOffMinDistance.ReadSafe |
VolumetricAudioVolumetricAudio | Determines whether certain spatialized Sounds emit
volumetrically, throughout the space of their parent object.ReadSafeNotScriptable |
AcousticSimulationEnabled: boolean#
ReadSafe
Determines at a global level whether sound from
AudioEmitters and
AudioListeners should automatically implement
features of acoustic simulation, such as occlusion (being muffled through
walls), diffraction (bending around corners), and reverberation (echoing
off of walls).
If set to false, these instances will not simulate these features,
regardless of their individual
AcousticSimulationEnabled
settings.
AmbientReverb: ReverbType#
ReadSafe
A reverb preset that should be applied to all Sounds in the
experience.
Each ReverbType option for this property corresponds to a preset
available in the FMOD sound engine. For example, when
AmbientReverb is set to
ReverbType.Hangar, Sounds will have reverb applied to
simulate being in a large enclosed space.
Note that this only affects Sounds and not instances in
the advanced audio system such as AudioPlayers and
AudioEmitters. See AudioReverb for a way to
apply reverb in that system.
CharacterSoundsUseNewApi: RolloutState#
Write: PluginSecurityReadSafe
Determines which set of instances core scripts will use to create default
character sounds. If set to RolloutState.Enabled, it will use
instances in the advanced audio system such as
AudioPlayers and AudioEmitters.
If set to RolloutState.Disabled, it will use instances in the
legacy sound system such as Sounds.
DefaultListenerLocation: ListenerLocation#
Read: PluginSecurityWrite: PluginSecurityReadSafe
Determines where to place an AudioListener by default. The
AudioListener will automatically be wired to a
AudioDeviceOutput and will have an empty
AudioListener.InteractionGroup set.
See ListenerLocation for detailed descriptions of each option.
DistanceFactor: float#
ReadSafe
The number of studs to be considered a meter by SoundService when
simulating the Doppler effect for Sounds. This impacts any
Sound parented to a BasePart or Attachment.
By default, this property is 3.33, meaning that a meter is considered
3.33 studs for the purposes of simulating the Doppler effect. The greater
the DistanceFactor, the faster the
listener has to travel relative to Sounds in order to
experience the same Doppler shift.
It's recommended that you only change this property if the objects in your
experience are scaled differently from what they represent. For example,
if your character is meant to be very small (but is normal-sized in the
engine), you may want to increase SoundService.DistanceFactor.
Note that this does not impact the behavior of instances in the advanced
audio system, such as AudioPlayer or AudioEmitter.
DopplerScale: float#
ReadSafe
This property determines the degree to which the pitch of a Sound
varies due to the Doppler effect. This impacts any Sound parented
to a BasePart or Attachment.
The Doppler effect is a phenomenon whereby the pitch of a sound changes as
the source and observer of the sound move further away or closer together,
which is stronger the more quickly they are moving. Increasing
SoundService.DopplerScale exaggerates the impact of this effect,
whereas decreasing it minimizes it. By default, the value of this property
is 1.
Note that this does not impact the behavior of instances in the advanced
audio system, such as AudioPlayer or AudioEmitter.
ListenerCFrame: CFrame#
ReadSafe
This property is only functional when
ListenerType is set to
ListenerType.CFrame. In that scenario, this property determines the
world space position from which 3D Sounds are heard by the
player.
ListenerObject: Instance#
ReadSafe
This property is only functional when
ListenerType is set to
ListenerType.ObjectPosition or ListenerType.ObjectCFrame. In
that scenario, this property determines which Instance will be
used to determine the position from which 3D Sounds are
heard by the player. This property can only be set to
Instances with a position, such as a BasePart or
an Attachment. If it is set to nil, 3D Sounds will
not be heard by the player.
ListenerType: ListenerType#
ReadSafe
The listener type for any 3D Sounds in the experience,
effectively the point from which 3D Sound audio in the experience
is heard by the player. For Sounds parented to a
BasePart or Attachment, the listener influences the volume
and left/right balance of a playing sound. By default, this listener is
set to Workspace.CurrentCamera.
Note that this does not affect the listener location when using the
advanced audio system; see AudioListener for a way to set the
listener location within that system.
This property may not yet be enabled for all creators. Until full rollout,
use SoundService:GetListener() and
SoundService:SetListener() instead.
RespectFilteringEnabled: boolean#
ReadSafe
This property determines whether Sound playback is replicated from
the client to the server, and therefore from the server. In other words,
when a LocalScript calls Play() and this
property is true, the sound will only play on the respective client. If
this property is false, other clients will also hear the sound.
Default is true, meaning filtering is enabled.
RolloffScale: float#
ReadSafe
Determines how fast the volume of a spatialized Sound attenuates.
This impacts any Sound parented to a BasePart or
Attachment.
A higher RolloffScale means the volume
of a Sound will attenuate more rapidly as the distance between the
listener and the Sound grows. More precisely, the volume of
the Sound will still start attenuating at a distance equal to
Sound.RollOffMinDistance, but the attenuation curve will be
steeper or more gradual based on the value of
RolloffScale. Note that the
Sound will still be inaudible past its the
Sound.RollOffMaxDistance regardless of the value of
SoundService.RolloffScale.
Note that this property does not affect the behavior of instances in the
advanced audio system, such as AudioEmitter. See
AudioEmitter:SetDistanceAttenuation for a way to apply custom
attenuation in that system.
VolumetricAudio: VolumetricAudio#
NotScriptableReadSafe
Determines whether any Sounds parented to a Part
emit volumetrically. If set to VolumetricAudio.Enabled, the
Sound will simulate being emitted from every point in the interior
of the Part. If set to VolumetricAudio.Disabled, the
Sound will only emit from a single point in the center of the
Part.
Note that this does not impact Sounds parented to other
objects, such as Attachments or
MeshParts. This also does not impact the behavior of
instances in the advanced audio system such as AudioEmitter.
Methods 6#
| GetListener | Returns the current listener type used by Sounds, as well as
what that listener is currently set to. |
| GetMixerTime | Returns the number of seconds since the audio engine began mixing. |
| OpenAttenuationCurveEditor | Opens the attenuation curve editor in Studio for the provided
AudioEmitter or AudioListener instances.PluginSecurity security |
| OpenDirectionalCurveEditor | Opens the directional curve editor in Studio for the provided
AudioEmitter or AudioListener instances.PluginSecurity security |
| PlayLocalSound | Plays a copy of a Sound locally, such that it will only be heard
by the client calling this method. |
| SetListener | Sets the listener used by Sounds. |
GetListener(): Tuple#
Returns the current listener type used by Sounds and what
object or position that listener is currently set to. This is the point
from which Sound audio in the experience is heard by the player.
By default, the listener is set to Workspace.CurrentCamera. The
listener can be changed using
SetListener().
Note that this does not affect the listener location when using the
advanced audio system. See AudioListener for a way to set the
listener location in that system.
Returns
Tuple—A table containing two results. The first result is the listener's
ListenerTypeand the second result is dependent on that type:Listener Type Description Enum.ListenerType.CameraDoes not return a listener object as Class.Workspace.CurrentCamera|CurrentCamerais always used.Enum.ListenerType.CFrameReturns the Datatype.CFrameused inClass.SoundService:SetListener()|SetListener().Enum.ListenerType.ObjectPositionReturns the Class.BasePartused inClass.SoundService:SetListener()|SetListener().Enum.ListenerType.ObjectCFrameReturns the Class.BasePartused inClass.SoundService:SetListener()|SetListener().
GetMixerTime(): double#
Returns the number of seconds that have elapsed since the audio engine began mixing. Because this clock is derived from the number of audio samples the mixer has processed, it is stable, sample-accurate, and monotonically increasing, which makes it suitable for scheduling audible changes at precise moments.
Use this value as the basis for the atTime argument of methods that
support scheduling playback to begin or end at an exact point in the
future, such as Play() and
Stop(). For best results, those methods expect
times derived from GetMixerTime().
Returns
double— The number of seconds since the audio engine began mixing. This value is stable, sample-accurate, and monotonically-increasing. It's intended to be used for scheduling audible changes at precise times.
OpenAttenuationCurveEditor(selectedCurveObjects: Instances): ()#
PluginSecurity security
Opens the attenuation curve editor in Studio for the provided
AudioEmitter or AudioListener instances.
| Name | Type | Default | Description |
|---|---|---|---|
selectedCurveObjects | Instances | A list of AudioEmitters or
AudioListeners. |
Returns
()
OpenDirectionalCurveEditor(selectedCurveObjects: Instances): ()#
PluginSecurity security
Opens the directional curve editor in Studio for the provided
AudioEmitter or AudioListener instances. This method is
intended for use by Studio plugins that need to programmatically surface
the editor, in the same way a user would open it from the Properties
window.
| Name | Type | Default | Description |
|---|---|---|---|
selectedCurveObjects | Instances | A list of AudioEmitters or
AudioListeners. |
Returns
()
PlayLocalSound(sound: Instance): ()#
Plays a copy of a Sound locally. The Sound will only be
heard by the client calling this method, regardless of where it's parented
to.
Some properties of the Sound will be carried over into the copy.
These include its Sound.Volume, Sound.TimePosition,
Sound.PlaybackSpeed, and any spatialization and effects that are
applied to it, including through SoundGroups.
Properties that do not affect the copy include Sound.Looped and
SoundService.AmbientReverb.
Returns
()
SetListener(listenerType: ListenerType, listener: Tuple): ()#
Sets the listener type for any Sounds in the experience,
which defines the point from which Sound audio in the experience
is heard by the player. For Sounds parented to a
BasePart or Attachment, the listener influences the volume
and left/right balance of a playing sound. By default, this listener is
set to Workspace.CurrentCamera.
Note that this does not affect the listener location when using the
advanced audio system. See AudioListener for a way to set the
listener location in that system.
| Name | Type | Default | Description |
|---|---|---|---|
listenerType | ListenerType | The ListenerType of the listener. | |
listener | Tuple | Dependent on the ListenerType. Use a BasePart for
ListenerType.ObjectPosition or
ListenerType.ObjectCFrame, a CFrame for
ListenerType.CFrame, or nil for ListenerType.Camera. |
Returns
()
Inherited members#
Inherited from Instance 58
Properties (10)
Archivable, archivable, Capabilities, IsInSandbox, Name, Parent, PredictionMode, RobloxLocked, Sandboxed, UniqueId
Methods (39)
AddTag, children, ClearAllChildren, Clone, clone, Destroy, destroy, FindFirstAncestor, FindFirstAncestorOfClass, FindFirstAncestorWhichIsA, FindFirstChild, findFirstChild, FindFirstChildOfClass, FindFirstChildWhichIsA, FindFirstDescendant, GetActor, GetAttribute, GetAttributeChangedSignal, GetAttributes, GetChildren, getChildren, GetDebugId, GetDescendants, GetFullName, GetStyled, GetStyledPropertyChangedSignal, GetTags, HasTag, IsAncestorOf, IsDescendantOf, isDescendantOf, IsPropertyModified, QueryDescendants, Remove, remove, RemoveTag, ResetPropertyToDefault, SetAttribute, WaitForChild