Sound "Playing" property does not fire properly

Playing a Sound in Studio while listening to it’s GetPropertyChangedSignal("Playing") signal only fires when Playing is true. It does not fire when Playing changes to false (after the sound finishes playing). Attempting to listen to the IsPlaying property does not work at all.

In the file below, a client-side script plays a sound 3 seconds after playing solo & prints it’s property state change. Notice that true is fired, but false does not. You can also double-check this behavior by selecting the Sound under Workspace that’s being played & watching the Playing property. It never changes to false when the sound stops playing, and you can see this in the Properties studio widget.

get-property-changed-signal-playing-does-not-fire-when-false-lol.rbxl (53.7 KB)

Expected behavior

The signal should fire when the property changes to true and/or false

Hey @hello42, this is an unfortunate quirk of our replication system. Any time we fire a property change on an otherwise replicating property like Playing, it replicates.

That means that if the server plays a sound, Playing = true replicates to all clients (good) – but the server starts playing its version of the sound before any of the clients get the message, and so if Playing = false replicated when the server is done, it might happen to arrive at the clients before they are done playing (variable network conditions) – this would prematurely pause the playback on the clients (bad).

With that, Playing only fires changes if it is explicitly set; rather than firing Playing = false when a sound is finished, we figured it’d be better to let the clients finish their own playbacks on their own time.

As a workaround you’d have to use Sound.Ended to gauge when the playback is done; sorry for the inconvenience!

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.