Skip to content
Back to skills

Roblox Audio

ASecurity

Sound and music - the Audio API (AudioPlayer, AudioEmitter, AudioListener, AudioDeviceOutput, Wire, effects, faders), classic Sound/SoundGroup, 2D vs 3D audio, music and SFX volume, client vs server playback, asset permissions, streaming caveats, voice routing, text-to-speech. Use when adding music, sound effects, spatial audio, mixing, or fixing sounds that don't play.

  • 5 stars
  • 0 votes
  • 4 copies
  • 24 views
  • Added September 29, 2026
ai-agentsapiperformance

Works with

  • cli
  • api

Security analysis

A100/100

Scanned September 29, 2026

npx -y skills add EL4CTEO/roblox-skills --skill roblox-audio --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Roblox Audio?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Roblox Audio
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/el4cteo-roblox-audio/badge)](https://www.skillsdirectory.com/skills/el4cteo-roblox-audio)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: roblox-audio
description: Sound and music - the Audio API (AudioPlayer, AudioEmitter, AudioListener, AudioDeviceOutput, Wire, effects, faders), classic Sound/SoundGroup, 2D vs 3D audio, music and SFX volume, client vs server playback, asset permissions, streaming caveats, voice routing, text-to-speech. Use when adding music, sound effects, spatial audio, mixing, or fixing sounds that don't play.
---

# Roblox audio

Two systems coexist:
- **Audio API** (modular, current): `AudioPlayer` → `Wire` → (`AudioEmitter` … `AudioListener`) → `Wire`
  → `AudioDeviceOutput`, with effect objects inserted in the chain. Required for voice-chat processing,
  mixing graphs, analyzers, text-to-speech/speech-to-text.
- **`Sound`** (classic, still supported): one object, parented to a part for 3D or to `SoundService`/UI for 2D;
  routed through `SoundGroup`s with `SoundEffect` children. Fine for simple games and existing code.

Don't mix both for the same feature; follow what the project uses.

## 2D audio (music, UI) with the Audio API

```luau
--!strict
-- Client: build a music player once.
local SoundService = game:GetService("SoundService")

local player = Instance.new("AudioPlayer")
player.Name = "Music"
player.Asset = "rbxassetid://1843463175" -- AudioPlayer.AssetId is deprecated; use Asset
player.Looping = true
player.Volume = 0.5
player.Parent = SoundService

local fader = Instance.new("AudioFader") -- one place to control music volume (settings menu)
fader.Name = "MusicVolume"
fader.Parent = SoundService

local output = Instance.new("AudioDeviceOutput")
output.Parent = SoundService

local function wire(source: Instance, target: Instance)
	local w = Instance.new("Wire")
	w.SourceInstance = source
	w.TargetInstance = target
	w.Parent = target
end

wire(player, fader)
wire(fader, output)
player:Play()
```

## 3D audio with the Audio API

- Put an `AudioEmitter` on the sound's part/attachment; wire `AudioPlayer → AudioEmitter`.
- Listening: `SoundService.ListenerLocation` controls the default `AudioListener` (camera or character);
  wire `AudioListener → AudioDeviceOutput` (done automatically in default setups).
- Distance falloff and directionality are set on the emitter/listener (`AudioEmitter:SetDistanceAttenuation`,
  the `AudioInteractionGroup` string property on emitters and listeners scopes who hears what).

## Classic Sound quick reference

```luau
--!strict
local SoundService = game:GetService("SoundService")

local sfxGroup = Instance.new("SoundGroup")
sfxGroup.Name = "SFX"
sfxGroup.Volume = 0.8
sfxGroup.Parent = SoundService

local function playAt(part: BasePart, soundId: string)
	local sound = Instance.new("Sound")
	sound.SoundId = soundId
	sound.SoundGroup = sfxGroup
	sound.RollOffMaxDistance = 80
	sound.Parent = part -- 3D: plays from the part; parent to SoundService/UI for 2D
	sound:Play()
	sound.Ended:Once(function()
		sound:Destroy()
	end)
end

return playAt
```

- `SoundService:PlayLocalSound(sound)` for client-only UI clicks.
- Preload critical sounds: `ContentProvider:PreloadAsync({ sound })` (not everything — slows joins).
- Pool frequently played sounds instead of creating one per shot.

## Where to play

- Sounds started **on the client** are heard only by that client (UI, local feedback, music tracks
  the player chose). Sounds started **on the server** replicate to everyone (use sparingly; prefer a
  remote telling clients to play locally, which also lets each client apply its own volume settings).
- With `SoundService.RespectFilteringEnabled = true` (default), client-played sounds don't replicate.
- Streaming: a sound or emitter in a part that streams out stops. Keep ambient audio in persistent
  models or `SoundService`.

## Assets and permissions

- Use audio you own, uploaded to the same owner (user/group) as the experience, or Creator Store
  audio marked free-to-use. Private audio from other creators won't play unless shared with your
  experience (asset permissions). Check the Output for "failed to load" / permission errors.
- Uploads are auto-classified as sound effects or songs; eligible songs can show on the game page.

## Extras

- Effects: `AudioEqualizer`, `AudioCompressor`, `AudioReverb`, `AudioEcho`, `AudioChorus`, `AudioDistortion`,
  `AudioFlanger`, `AudioPitchShifter`, `AudioTremolo`, `AudioFilter`, `AudioLimiter`, `AudioAnalyzer` (read
  loudness/spectrum for visualizers).
- `AudioTextToSpeech` (artificial voices) and `AudioSpeechToText` (transcription).
- Voice chat: each player's `AudioDeviceInput` can be wired through effects (radios, walkie-talkies,
  proximity) — see the voice chat docs; respect players' voice settings.
- Give players separate Music/SFX volume sliders (faders or SoundGroups) and a mute option.

## Related skills

`roblox-ui` (settings menus), `roblox-architecture` (client vs server), `roblox-performance` (audio memory).

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.