A reprodução de áudio ocorre através de objetos Sound que emitem áudio dentro de uma experiência. O Roblox atribui a cada ativo de áudio um ID exclusivo que você pode atribuir a objetos Sound para tocar um efeito sonoro específico ou uma faixa musical. Você pode definir que este áudio toque automaticamente em tempo de execução ou acioná-lo para tocar a partir de scripts.
Para modificar a reprodução de vários objetos Sound, você pode atribuí-los a um grupo de som e controlar o volume de todo o grupo, além de aplicar efeitos dinâmicos.
Criar objetos de som
Existem três locais nos quais você pode criar um objeto Sound, e cada local determina como o áudio emite e como o volume muda em relação à posição do usuário dentro da experiência.
| Localização | Como o áudio emite | Como o volume muda |
|---|---|---|
| Filho de um bloco, esfera ou cilindro BasePart. | O áudio emite para fora de toda a superfície da parte. | O volume muda dependendo da distância entre o ouvinte de som do usuário e a posição da parte, assim como seu tamanho. |
| Filho de um Attachment, MeshPart, TrussPart, WedgePart ou CornerWedgePart. | O áudio emite para fora do único ponto de anexo ou centro da parte. | O volume muda dependendo da distância entre o ouvinte de som do usuário e a posição do anexo/parte. |
| Dentro de SoundService ou Workspace. | O áudio emite ao longo de toda a experiência. | O volume e a posição do pan permanecem os mesmos, independentemente da posição ou rotação do ouvinte de som do usuário. |
Áudio Posicional
O áudio posicional é aquele que os usuários só podem ouvir perto de uma posição específica dentro da experiência. Existem dois tipos de áudio posicional que você pode utilizar: volumétrico e ponto de origem.
Volumétrico
O áudio volumétrico é a opção de áudio mais realista, pois muda dinamicamente dependendo da posição do usuário em relação à fonte de áudio. Por exemplo, se o usuário estiver dentro de uma BasePart com um objeto Sound filho, o áudio toca ao redor do usuário, semelhante à música em fones de ouvido tocando no mesmo volume em cada alto-falante. Quando o usuário sai da parte, o áudio diminui gradualmente em volume e se torna mais direcional por alto-falante, movendo-se ao redor da cabeça do usuário quando seu ouvinte rota. Para informações sobre as propriedades que controlam quão alto seu áudio está a diferentes distâncias da parte, consulte RollOffMinDistance e RollOffMaxDistance.
O tamanho da BasePart também afeta o volume do áudio, já que partes maiores produzem uma área mais ampla na qual os usuários podem ouvir o áudio e, quando um usuário navega para longe de uma grande BasePart, o volume diminui mais lentamente. O exemplo a seguir exibe uma BasePart que é do tamanho de uma cidade com um objeto Sound tocando áudio ambiente. Os usuários A e B experimentam o áudio de forma diferente: o usuário B está mais próximo da grande BasePart, e ele ouve o áudio em um volume relativamente igual em ambos os alto-falantes. Por outro lado, o usuário A está mais distante da cidade, então o áudio que ele ouve é mais silencioso e direcional do que o do usuário B, tocando em volumes diferentes em cada um de seus alto-falantes.

O áudio volumétrico é útil para qualquer áudio que precise ser imersivo ao redor de um usuário e mudar dinamicamente dependendo da posição do usuário, como em um palco de concerto ou zonas de ambiente como chuvas. Ao experimentar a colocação de um objeto Sound em BaseParts de diferentes tamanhos e posições em relação aos usuários, você pode perceber quão imersivo o áudio volumétrico pode ser.
Para criar um objeto Sound para áudio volumétrico:
Na janela Explorer, selecione SoundService.
Na janela Properties, navegue até a propriedade VolumetricAudio, e defina como Enabled.
Na janela Explorer, passe o mouse sobre uma BasePart, em seguida, clique no botão ⊕. Um menu contextual será exibido.
No menu, insira um Sound.
Na janela Properties, navegue até a propriedade SoundId e insira um ID de ativo de áudio.

(Opcional) Se você quiser que o áudio comece a tocar quando a experiência iniciar, habilite a propriedade Playing.
Ponto de origem
Ao contrário do áudio volumétrico, o áudio de ponto de origem emite apenas de um único ponto de origem. Esse tipo de áudio é útil para explosões, ruídos de impacto, dispositivos eletrônicos e diálogos.
Para criar um objeto Sound para áudio de ponto de origem:
- Na janela Explorer, passe o mouse sobre um anexo, treliça, cunha ou cunha de canto, em seguida, clique no botão ⊕. Um menu contextual será exibido.
- No menu, insira um Sound.
- (Opcional) Se você quiser que o áudio comece a tocar quando a experiência começar, habilite a propriedade Playing.
Áudio de Fundo
O áudio de fundo toca no mesmo volume, não importa onde o usuário viaje dentro da sua experiência. Esse tipo de áudio é útil para músicas que você deseja tocar para os usuários, especialmente quando você deseja criar uma trilha sonora de vários arquivos de áudio.
É melhor manter todos os objetos Sound para áudio de fundo em uma única localização do Workspace para fins de organização, enquanto você continua a adicionar e editar áudio dentro da sua experiência. O exemplo a seguir armazena o novo objeto Sound sob o contêiner SoundService, pois este serviço determina como os objetos Sound tocam nas experiências.
Para criar um objeto Sound para áudio de fundo:
- Na janela Explorer, passe o mouse sobre SoundService, e então clique no botão ⊕. Um menu contextual será exibido.
- No menu, insira um Sound.
- (Opcional) Se você quiser que o áudio comece a tocar quando a experiência iniciar, habilite a propriedade Playing.
- (Opcional) Se este objeto Sound for a única faixa que você deseja tocar no local, habilite sua propriedade Looped.
Personalizar objetos de som
As propriedades do objeto Sound trabalham juntas para influenciar como os usuários experimentam seu áudio, como:
- Quão alto eles ouvem áudio específico individualmente e em relação uns aos outros (Volume).
- Como eles percebem o volume ao se afastarem da fonte de áudio (RollOffMinDistance, RollOffMaxDistance, e RollOffMode).
- Que parte do áudio eles podem ouvir (TimePosition).
- Quão rápido e em que tom eles o ouvem (PlaybackSpeed).
- Se o áudio é automaticamente reproduzido novamente ao ser concluído (Looped).
Volume
A propriedade Volume permite que você defina o volume do seu áudio em qualquer lugar de 0 (silêncio) a 10 (estrondoso). Se você quiser mudar o volume de vários objetos Sound ao mesmo tempo, coloque-os como filhos de um grupo de som.
RollOffMinDistance e RollOffMaxDistance
RollOffMinDistance e RollOffMaxDistance determinam a faixa de como um usuário percebe o volume do áudio posicional. Para áudio volumétrico, RollOffMinDistance é a distância mínima em studs que o áudio começa a diminuir em volume quando o ouvinte do cliente se afasta da parte pai BasePart, e a propriedade RollOffMaxDistance é a distância máxima em studs que o ouvinte de um cliente pode ouvir o áudio da superfície do objeto.

Para áudio de ponto de origem, RollOffMinDistance e RollOffMaxDistance funcionam de maneira similar ao áudio volumétrico, mas a distância de redução que essas propriedades controlam não circunda o objeto, ela apenas influencia a distância para fora do ponto de origem.

RollOffMode
A propriedade RollOffMode permite que você decida como o áudio desvanece à medida que a distância entre o ouvinte do usuário e o objeto Sound aumenta. Você pode definir essa propriedade com um dos quatro valores do enum Enum.RollOffMode.

| RollOffMode | Descrição |
|---|---|
| Inverse (padrão) | O volume se desvanece abruptamente a partir de RollOffMinDistance, mas o desvanecimento do volume se torna mais gradual quanto mais perto o usuário estiver de alcançar o RollOffMaxDistance. Uma vez que eles alcancem o RollOffMaxDistance, o áudio silencía. |
| Linear | O volume se desvanece linearmente entre RollOffMinDistance e RollOffMaxDistance. Uma vez que um usuário alcance o RollOffMaxDistance, o áudio silencía. |
| InverseTapered | O volume segue o modelo inverso quando próximo a RollOffMinDistance e o modelo quadrático linear quando um usuário está próximo a RollOffMaxDistance. O áudio se aproxima do silêncio no ponto de máxima distância. |
| LinearSquare | O volume se desvanece entre RollOffMinDistance e RollOffMaxDistance com uma relação quadraticamente linear. O áudio se aproxima do silêncio no ponto de máxima distância. |
PlaybackSpeed
A propriedade PlaybackSpeed permite que você determine a velocidade com que seu áudio toca. Por exemplo, se você definir a propriedade PlaybackSpeed para um valor de 2, seu áudio tocará duas vezes mais rápido e uma oitava mais alta em tom. Da mesma forma, se você definir para um valor de 0.5, seu áudio tocará duas vezes mais devagar e uma oitava mais baixa em tom.
| PlaybackSpeed = 0.5 | PlaybackSpeed = 1.0 | PlaybackSpeed = 2.0 |
TimePosition
A propriedade TimePosition exibe, em segundos, que posição dentro da amostra de áudio um usuário está ouvindo atualmente. Essa propriedade é útil tanto para tocar apenas uma seção da amostra de áudio, quanto para acionar um evento que ocorra uma vez que o áudio atinja uma posição específica. Por exemplo, o seguinte exemplo de código faz com que um emissor de partículas emita uma partícula de anel branco acima de uma parte dentro de um intervalo de tempo limitado de uma faixa de áudio.
local RunService = game:GetService("RunService")
local Workspace = game:GetService("Workspace")
-- Cria uma nova parte
local part = Instance.new("Part")
part.Anchored = true
part.Color = Color3.new(0.75, 0.2, 0.5)
part.Size = Vector3.new(2, 1, 2)
part.Material = Enum.Material.Neon
part.Position = Vector3.new(0, 4, 0)
part.Parent = Workspace
-- Cria um anexo na parte
local attachment = Instance.new("Attachment")
attachment.Position = Vector3.new(0, 0.5, 0)
attachment.Parent = part
-- Cria um emissor de partículas no anexo
local emitter = Instance.new("ParticleEmitter")
emitter.Rate = 5
emitter.Lifetime = NumberRange.new(1.5, 1.5)
emitter.Texture = "rbxassetid://1266170131"
emitter.Speed = NumberRange.new(1, 1)
emitter.Size = NumberSequence.new{NumberSequenceKeypoint.new(0, 1), NumberSequenceKeypoint.new(1, 6)}
emitter.Transparency = NumberSequence.new{NumberSequenceKeypoint.new(0, 1), NumberSequenceKeypoint.new(0.25, 0), NumberSequenceKeypoint.new(1, 1)}
emitter.Orientation = Enum.ParticleOrientation.VelocityPerpendicular
emitter.Parent = attachment
-- Cria um som no anexo
local sound = Instance.new("Sound")
sound.SoundId = "rbxassetid://1835405646"
sound.Parent = attachment
-- Reproduz o som
sound:Play()
-- Começa a verificar se o emissor deve ser habilitado
RunService.Heartbeat:Connect(function()
-- Habilita o emissor dentro de um intervalo de tempo do áudio; caso contrário, desabilita
emitter.Enabled = sound.TimePosition >= 5 and sound.TimePosition < 20
end)
Looped
A propriedade Looped permite que você repita o áudio após ele ter terminado de tocar. Quando configurado como true, o áudio do objeto Sound toca novamente. Isso é útil para aplicar ao áudio de fundo para garantir que sua experiência nunca tenha silêncio abrupto.
Objetos de som de script
Tocar áudio contextual
Além de reproduzir áudio automaticamente através da propriedade Playing do objeto Sound, você pode tocar áudio de forma contextual a partir de um LocalScript chamando Play() no objeto Sound correspondente. Por exemplo:
local Workspace = game:GetService("Workspace")local sound = Instance.new("Sound")sound.SoundId = "rbxassetid://9120386436"sound.Looped = truesound.Parent = Workspacesound:Play()
Alternativamente, se o local contará com várias faixas, você pode tocar uma faixa específica a partir de um LocalScript:
local SoundService = game:GetService("SoundService")local musicTrack = SoundService:FindFirstChild("LucidDream")if musicTrack not musicTrack.IsPlaying thenmusicTrack:Play()end
Tocar áudio de interface
Você pode tocar áudio de interface para GuiObjects como botões ao conectar um objeto Sound ao listener de evento Activated. Isso permite que você forneça feedback auditivo aos usuários, como quando eles passam o mouse sobre ou pressionam o botão.
Para tocar o áudio de um objeto Sound quando um usuário ativa um TextButton ou ImageButton:
- Na janela Explorer, passe o mouse sobre o TextButton ou ImageButton, em seguida, clique no botão ⊕. Um menu contextual será exibido.
- Cole o seguinte código no script, e então substitua SOUND_NAME pelo nome de um objeto Sound localizado dentro do contêiner SoundService.
local SoundService = game:GetService("SoundService")
local button = script.Parent
local sound = SoundService:FindFirstChild("SOUND_NAME")
if not sound.isLoaded then
sound.Loaded:Wait()
end
local function onButtonActivated()
if sound and not sound.IsPlaying then
sound:Play()
end
end
button.Activated:Connect(onButtonActivated)