# SoundService

Roblox Engine API class from Roblox Studio 0.744.0.7441077 (version-7aaa6838d36c4448).

- Inherits from, nearest first: [Instance](https://rapi.sleaze.dev/classes/Instance.md), [Object](https://rapi.sleaze.dev/classes/Object.md)
- Tags: Not creatable, Service
- Memory category: Instances
- HTML page: https://rapi.sleaze.dev/classes/SoundService/
- Roblox documentation: https://create.roblox.com/docs/reference/engine/classes/SoundService

A service that determines various aspects of how the audio engine works. Most of its properties affect how `Sounds` play in the experience.

## Properties

### AcousticSimulationEnabled

```luau
SoundService.AcousticSimulationEnabled: boolean = false
```

- Tags: Capabilities: Audio

Determines whether acoustic simulation is enabled globally in the advanced audio system.

### AmbientReverb

```luau
SoundService.AmbientReverb: Enum.ReverbType = Enum.ReverbType.NoReverb
```

- Tags: Capabilities: Audio

The ambient sound environment preset applied to all `Sounds`.

### AudioApiByDefault

```luau
SoundService.AudioApiByDefault: Enum.RolloutState = Enum.RolloutState.Default
```

- Tags: Hidden, Roblox script security, Read capabilities: Audio

### CharacterSoundsUseNewApi

```luau
SoundService.CharacterSoundsUseNewApi: Enum.RolloutState = Enum.RolloutState.Default
```

- Tags: Write: Plugin security, Read capabilities: Audio

Determines whether the default character sounds will use instances in the advanced audio system vs. `Sounds`.

### DiffractionEnabled

```luau
SoundService.DiffractionEnabled: boolean = true
```

- Tags: Capabilities: Audio

### DistanceFactor

```luau
SoundService.DistanceFactor: number = 3.32999992
```

- Tags: Capabilities: Audio

The number of studs to be considered a meter by [`SoundService`](https://rapi.sleaze.dev/classes/SoundService.md) when simulating the Doppler effect for `Sounds`.

### DopplerScale

```luau
SoundService.DopplerScale: number = 1
```

- Tags: Capabilities: Audio

Degree to which the pitch of a [`Sound`](https://rapi.sleaze.dev/classes/Sound.md) varies due to the Doppler effect.

### IsNewExpForAudioApiByDefault

```luau
SoundService.IsNewExpForAudioApiByDefault: boolean = false
```

- Tags: Hidden, Roblox script security, Read capabilities: Audio

### OcclusionEnabled

```luau
SoundService.OcclusionEnabled: boolean = true
```

- Tags: Capabilities: Audio

### RespectFilteringEnabled

```luau
SoundService.RespectFilteringEnabled: boolean = false
```

- Tags: Capabilities: Audio

Sets whether [`Sound`](https://rapi.sleaze.dev/classes/Sound.md) playback from a client will replicate to the server.

### ReverbEnabled

```luau
SoundService.ReverbEnabled: boolean = true
```

- Tags: Capabilities: Audio

### RolloffScale

```luau
SoundService.RolloffScale: number = 1
```

- Tags: Capabilities: Audio

Determines how fast the volume of a [`Sound`](https://rapi.sleaze.dev/classes/Sound.md) attenuates beyond its [`Sound.RollOffMinDistance`](https://rapi.sleaze.dev/classes/Sound.md).

### VolumetricAudio

```luau
SoundService.VolumetricAudio: Enum.VolumetricAudio = Enum.VolumetricAudio.Automatic
```

- Tags: Not scriptable, Capabilities: Audio

Determines whether certain spatialized `Sounds` emit volumetrically, throughout the space of their parent object.

### DefaultListenerLocation

```luau
SoundService.DefaultListenerLocation: Enum.ListenerLocation = Enum.ListenerLocation.Default
```

- Tags: Plugin security, Read capabilities: Audio

Determines where (if anywhere) to place an [`AudioListener`](https://rapi.sleaze.dev/classes/AudioListener.md) by default.

### ListenerCFrame

```luau
SoundService.ListenerCFrame: CFrame = CFrame.identity
```

- Tags: Capabilities: Audio

The [`CFrame`](https://rapi.sleaze.dev/index/types/CFrame.md) that is used as the listener's position if [`ListenerType`](https://rapi.sleaze.dev/classes/SoundService.md) is set to `ListenerType.CFrame`.

### ListenerObject

```luau
SoundService.ListenerObject: Instance
```

- Tags: Capabilities: Audio

The [`Instance`](https://rapi.sleaze.dev/classes/Instance.md) whose translation or coordinate frame is used as the listener's position if [`ListenerType`](https://rapi.sleaze.dev/classes/SoundService.md) is set to `ListenerType.ObjectPosition` or `ListenerType.ObjectCFrame`.

### ListenerType

```luau
SoundService.ListenerType: Enum.ListenerType = Enum.ListenerType.Camera
```

- Tags: Capabilities: Audio

The current listener type used by 3D `Sounds` to determine where they will be heard from.

## Methods

### BeginRecording

```luau
SoundService:BeginRecording(): boolean
```

- Tags: Roblox script security, Capabilities: Audio

### DebugClearDetachedPlaybacks

```luau
SoundService:DebugClearDetachedPlaybacks()
```

- Tags: Roblox script security, Capabilities: Audio

### EnableDetachedPlaybackMetadata

```luau
SoundService:EnableDetachedPlaybackMetadata()
```

- Tags: Roblox script security, Capabilities: Audio

### EndRecording

```luau
SoundService:EndRecording(): { [string]: any }
```

- Tags: Yields, Roblox script security, Capabilities: Audio

### GetAudioApiByDefault

```luau
SoundService:GetAudioApiByDefault(): boolean
```

- Tags: Roblox script security, Capabilities: Audio

### GetAudioInstances

```luau
SoundService:GetAudioInstances(): { any }
```

- Tags: Roblox script security, Capabilities: Audio

### GetDetachedPlaybackData

```luau
SoundService:GetDetachedPlaybackData(): { [string]: any }
```

- Tags: Roblox script security, Capabilities: Audio

### GetInputDevice

```luau
SoundService:GetInputDevice(): ...any
```

- Tags: Roblox script security, Capabilities: Audio

### GetInputDevices

```luau
SoundService:GetInputDevices(): ...any
```

- Tags: Roblox script security, Capabilities: Audio

### GetListener

```luau
SoundService:GetListener(): ...any
```

- Tags: Capabilities: Audio

Returns the current listener type used by `Sounds`, as well as what that listener is currently set to.

Returns: A table containing two results. The first result is the listener's [`ListenerType`](https://rapi.sleaze.dev/classes/SoundService.md) and the second result is dependent on that type:    Listener Type Description     [`Enum.ListenerType.Camera`](https://rapi.sleaze.dev/enums/ListenerType.md) Does not return a listener object as `Class.Workspace.CurrentCamera|CurrentCamera` is always used.   [`Enum.ListenerType.CFrame`](https://rapi.sleaze.dev/enums/ListenerType.md) Returns the `Datatype.CFrame` used in `Class.SoundService:SetListener()|SetListener()`.   [`Enum.ListenerType.ObjectPosition`](https://rapi.sleaze.dev/enums/ListenerType.md) Returns the `Class.BasePart` used in `Class.SoundService:SetListener()|SetListener()`.   [`Enum.ListenerType.ObjectCFrame`](https://rapi.sleaze.dev/enums/ListenerType.md) Returns the `Class.BasePart` used in `Class.SoundService:SetListener()|SetListener()`.

### GetListenerWorldCFrame

```luau
SoundService:GetListenerWorldCFrame(): CFrame?
```

- Tags: Roblox script security, Capabilities: Audio

### GetMixerTime

```luau
SoundService:GetMixerTime(): number
```

- Tags: Capabilities: Audio

Returns the number of seconds since the audio engine began mixing.

Returns: 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.

### GetOutputDevice

```luau
SoundService:GetOutputDevice(): ...any
```

- Tags: Roblox script security, Capabilities: Audio

### GetOutputDevices

```luau
SoundService:GetOutputDevices(): ...any
```

- Tags: Roblox script security, Capabilities: Audio

### GetPeakLevel

```luau
SoundService:GetPeakLevel(): number
```

- Tags: Roblox script security, Capabilities: Audio

### GetRecordingDevices

```luau
SoundService:GetRecordingDevices(): { [string]: any }
```

- Tags: Yields, Roblox script security, Capabilities: Audio

### GetSoundMemoryData

```luau
SoundService:GetSoundMemoryData(): { [string]: any }
```

- Tags: Roblox script security, Capabilities: Audio

### InsertAsset

```luau
SoundService:InsertAsset(assetId: string, assetName: string, useSelection: boolean? = true): { Instance }
```

- Tags: Roblox script security, Capabilities: Audio

### OpenAttenuationCurveEditor

```luau
SoundService:OpenAttenuationCurveEditor(selectedCurveObjects: { Instance })
```

- Tags: Plugin security, Capabilities: Audio

Opens the attenuation curve editor in Studio for the provided [`AudioEmitter`](https://rapi.sleaze.dev/classes/AudioEmitter.md) or [`AudioListener`](https://rapi.sleaze.dev/classes/AudioListener.md) instances.

Parameters:

- `selectedCurveObjects`: A list of `AudioEmitters` or `AudioListeners`.

### OpenDirectionalCurveEditor

```luau
SoundService:OpenDirectionalCurveEditor(selectedCurveObjects: { Instance })
```

- Tags: Plugin security, Capabilities: Audio

Opens the directional curve editor in Studio for the provided [`AudioEmitter`](https://rapi.sleaze.dev/classes/AudioEmitter.md) or [`AudioListener`](https://rapi.sleaze.dev/classes/AudioListener.md) instances.

Parameters:

- `selectedCurveObjects`: A list of `AudioEmitters` or `AudioListeners`.

### PlayLocalSound

```luau
SoundService:PlayLocalSound(sound: Instance)
```

- Tags: Capabilities: Audio

Plays a copy of a [`Sound`](https://rapi.sleaze.dev/classes/Sound.md) locally, such that it will only be heard by the client calling this method.

Parameters:

- `sound`: The [`Sound`](https://rapi.sleaze.dev/classes/Sound.md) to be played.

### SetAudioApiByDefault

```luau
SoundService:SetAudioApiByDefault(enabled: boolean)
```

- Tags: Roblox script security, Capabilities: Audio

### SetInputDevice

```luau
SoundService:SetInputDevice(nameOrInstance: any, guidOrPin: string)
```

- Tags: Capabilities: Audio + InternalTest

### SetListener

```luau
SoundService:SetListener(listenerType: Enum.ListenerType, ...: any)
```

- Tags: Capabilities: Audio

Sets the listener used by `Sounds`.

Parameters:

- `listenerType`: The [`ListenerType`](https://rapi.sleaze.dev/classes/SoundService.md) of the listener.
- `listener`: Dependent on the [`ListenerType`](https://rapi.sleaze.dev/classes/SoundService.md). Use a [`BasePart`](https://rapi.sleaze.dev/classes/BasePart.md) for `ListenerType.ObjectPosition` or `ListenerType.ObjectCFrame`, a [`CFrame`](https://rapi.sleaze.dev/index/types/CFrame.md) for `ListenerType.CFrame`, or `nil` for `ListenerType.Camera`.

### SetOutputDevice

```luau
SoundService:SetOutputDevice(name: string, guid: string)
```

- Tags: Roblox script security, Capabilities: Audio

### SetRecordingDevice

```luau
SoundService:SetRecordingDevice(deviceIndex: number): boolean
```

- Tags: Roblox script security, Capabilities: Audio

### SetSoundEnabled

```luau
SoundService:SetSoundEnabled(enabled: boolean)
```

- Tags: Roblox script security, Capabilities: Audio

## Events

### AudioDeviceInputAdded

```luau
SoundService.AudioDeviceInputAdded: RBXScriptSignal<(audioDeviceInput: AudioDeviceInput)>
```

- Tags: Roblox script security, Capabilities: Audio

### AudioInstanceAdded

```luau
SoundService.AudioInstanceAdded: RBXScriptSignal<(instance: Instance)>
```

- Tags: Roblox script security, Capabilities: Audio

### ClientLoggedEvent

```luau
SoundService.ClientLoggedEvent: RBXScriptSignal<(sessionIdRaw: string)>
```

- Tags: Hidden, Roblox engine security, Capabilities: Audio

### DeviceListChanged

```luau
SoundService.DeviceListChanged: RBXScriptSignal<(...: any)>
```

- Tags: Roblox script security, Capabilities: Audio

### OpenAttenuationCurveEditorSignal

```luau
SoundService.OpenAttenuationCurveEditorSignal: RBXScriptSignal<(selectedCurveObjects: { Instance })>
```

- Tags: Roblox script security, Capabilities: Audio

### OpenAudioCompressorEditorSignal

```luau
SoundService.OpenAudioCompressorEditorSignal: RBXScriptSignal<(selectedCompressorObjects: { Instance })>
```

- Tags: Roblox script security, Capabilities: Audio

### OpenAudioEqualizerEditorSignal

```luau
SoundService.OpenAudioEqualizerEditorSignal: RBXScriptSignal<(selectedEqualizerObjects: { Instance })>
```

- Tags: Roblox script security, Capabilities: Audio

### OpenDirectionalCurveEditorSignal

```luau
SoundService.OpenDirectionalCurveEditorSignal: RBXScriptSignal<(selectedCurveObjects: { Instance })>
```

- Tags: Roblox script security, Capabilities: Audio

### RequestSttPlatformToken

```luau
SoundService.RequestSttPlatformToken: RBXScriptSignal<()>
```

- Tags: Hidden, Roblox engine security, Capabilities: Audio

### SttPlatformToken

```luau
SoundService.SttPlatformToken: RBXScriptSignal<(token: string, ttlSeconds: number)>
```

- Tags: Hidden, Roblox engine security, Capabilities: Audio

## Inherited members

- From [Instance](https://rapi.sleaze.dev/classes/Instance.md): `Archivable`, `archivable`, `Attributes`, `AttributesReplicate`, `AttributesSerialize`, `HistoryId`, `Name`, `Parent`, `PredictionMode`, `PropertyStatusStudio`, `RobloxLocked`, `SerializedOverrides`, `SourceAssetId`, `Tags`, `UniqueId`, `numExpectedDirectChildren`, `DataCost`, `Capabilities`, `DefinesCapabilities`, `IsInSandbox`, `Sandboxed`, `AddTag`, `ClearAllChildren`, `Clone`, `Destroy`, `FindFirstAncestor`, `FindFirstAncestorOfClass`, `FindFirstAncestorWhichIsA`, `FindFirstChild`, `FindFirstChildOfClass`, `FindFirstChildWhichIsA`, `FindFirstDescendant`, `GetActor`, `GetAttribute`, `GetAttributeChangedSignal`, `GetAttributes`, `GetChildren`, `GetDebugId`, `GetDescendants`, `GetFullName`, `GetStyled`, `GetStyledPropertyChangedSignal`, `GetTags`, `HasTag`, `IsAncestorOf`, `IsDescendantOf`, `IsPropertyModified`, `QueryDescendants`, `RemoveTag`, `ResetPropertyToDefault`, `SetAttribute`, `WaitForChild`, `Remove`, `children`, `clone`, `destroy`, `findFirstChild`, `getChildren`, `isDescendantOf`, `remove`, `AncestryChanged`, `AttributeChanged`, `ChildAdded`, `ChildRemoved`, `DescendantAdded`, `DescendantRemoving`, `Destroying`, `StyledPropertiesChanged`, `childAdded`
- From [Object](https://rapi.sleaze.dev/classes/Object.md): `ClassName`, `className`, `GetPropertyChangedSignal`, `IsA`, `isA`, `Changed`
