Allow sounds to be played in Studio

As a Roblox developer, it is currently too hard to play audio in Studio.

The problem:
There is one method to play audio in Studio (SoundService:PlayLocalSound(SoundObject)), but it’s incredibly limited: It can only play the sound. It doesn’t respect any of the Sound object’s properties. It just plays it at a Volume of 1 and a PlaybackSpeed of 1. It doesn’t respect the SoundGroup, nor does it respond to other methods called on the Sound object (e.g. Stop()). Thus, it has to play through the whole sound. It’s basically “fire and forget” for audio.

If Roblox is able to address this issue, it would improve the ability to develop plugins that allow developers to interact with sound within Studio. This will open up the ability to create all sorts of features for developers, such as plugins to quickly help developers “mix” their various sounds in the game.

Personally, I want to release a plugin for searching and playing existing songs, but this can only be done in runtime. Currently, Roblox only allows audio to be played during runtime (see this thread).


Possible solutions:

  1. Open up the sound engine to work outside of runtime.
  2. Make PlayLocalSound respect the properties of the Sound object passed to it.
  3. Add more SoundService methods to control the local sound being played.

TL;DR - You can’t call Sound:Play() / Sound:Stop() in Studio if the game isn’t running, which makes it very difficult to create any plugins that utilize sound. You can use SoundService:PlayLocalSound(), but it’s too limited & doesn’t respect the sound object’s properties or methods.

57 Likes

There’s another way you can play audio in studio. You basically have to pick the sound you want to play, clone it, turn on PlayOnRemove and delete it. It’ll then play. However, if you’re on team create, it’ll play for everyone instead of locally.

It does obey the properties like Volume and PlaybackSpeed, but it doesn’t obey SoundGroups, :Play(), and :Stop()

This is the closest you can get when playing sounds in studio with properties.

3 Likes

Missed that! But yeah, the inability to use the sound object’s play/stop methods is still a huge problem.

Would be a godsend for people who want to make beat map plugins on Roblox :stuck_out_tongue:

5 Likes

As a Roblox developer, it is currently too hard to play, and manage currently playing sounds using plugins.

I am making a plugin that requires sound as one of its core features. There are a few methods I’ve found online, (SoundService:PlayLocalSound(), and Sound.PlayOnRemove) but they only play the sound, without any controls whatsoever (pausing, stopping, etc.) I would like to be able to manage sounds that I would like to play. There is a function on the Wiki, but it’s locked to core scripts only.

If Roblox can address this issue, it would improve my game / my development experience because I would be able to include this necessary feature in my plugin. I would be able to use this for small sound effects or to play music for some sort of “radio” or to preview audio in studio as an example. It would help me develop and would be beneficial to me, and possibly many other plugin developers.

(Post was merged :pensive:)

10 Likes

Sorry to revive, but this behavior appears to have at least partially resolved absent recognition; SoundService:PlayLocalSound(SoundObject) does now in fact respond to changes in PlaybackSpeed correctly, see:

local a = Instance.new("Sound")
    a.Parent = game.SoundService
    a.PlaybackSpeed = 3
    a.SoundId =  "rbxassetid://6627068056"
    game.SoundService:PlayLocalSound(a)
    game.Debris:AddItem(a,5)

for which playbackspeed is noticeably raised.

6 Likes