Area Sound Kit [v5.1]

Area Sound Kit [v5]


What is it?
“Area Sound Kit” is a free model that I started back in 2016, when I was still relatively new to Roblox scripting. At the time, I began making a number of modular and self-contained free model assets. The idea was that I wanted the user to be able to insert them into a game and not have to do any further setup except for fine tuning, aka an “out-of-the-box” experience.

Over the years, my scripts have either stopped working, or I’ve added new features sense then. It was brought to my attention recently that Area Sound Kit [v4] (from 2019) had stopped working, and I’ve decided to completely remake it for [v5]. Why now? Even though this is a very simple system, I feel the need to keep my old assets up-to-date, even if they’re as old as some of them are.

Older Versions:

Area Sound Kit [v1-v2]
Area Sound Kit [v3]
Area Sound Kit [v4]


What does it do?
As the model description has (almost) always said:

A part that smoothly transitions between music when touched by a player.
Sound only changes for the player that touched it.

Duplicate model for transitions.


What’s new with [v5]?

  • Complete Overhaul (Again)
  • Easier Sound Controls
  • Support for multiple sound systems (Including SFX)
  • Automatic sound controls (Clean + Spam Proof)

New with [v5.1]:

  • PlaybackSpeed Support
  • PlaybackSpeedTween Attribute
  • PlaybackSpeedTransitionSpeed Attribute

Example?
Here’s a video showing the auto sound systems in action:


Higher Quality Video

The music will only start over if the trigger hasn’t been touched within a given length of time. There’s also clean spam protection to avoid awkward transitioning moments.

There was also a trigger used for a SFX that won’t interfere with the other system (as [v5] supports multiple sound systems at the same time), and also had a trigger delay so that the SFX wouldn’t be spammed.


What are the controls?
You can edit the properties of the sound object however you please. Note that the name of the sound object must be the same for all connected sound triggers. If you want multiple trigger systems, each system must use its own sound name.

Further options can be found in the Settings’ Attributes:

AutoPositionTimeout: Controls when the sound’s TimePosition is returned to 0 (for AutoSoundPosition).

AutoSoundPosition: Controls whether or not the sound’s TimePosition is handled automatically.

AutoTransparent: Controls whether or not the trigger part’s transparency is automatically set to 1 during runtime.

Enabled: Controls whether or not the trigger is active. This will also pause the sound if the current sound is the same as the trigger.
(Acts similarly to touching a different sound trigger.)

KeepSoundPosition: Controls whether or not sound is resumed instead of starting over (overwritten by AutoSoundPosition).

TransitionSpeed: Controls the speed at which the sound transitions from the last SoundId to the new one.
(The TransitionSpeed from the newly touched trigger is the only one taken into account.)

TriggerDelay: Controls the delay until when the trigger is active again (does not use “Enabled”). Example usage would be for SFX.
(It’s recommended to rename the sound object to something else, that way it doesn’t conflict with the other sound systems.)

PlaybackSpeedTween: Toggles if the PlaybackSpeed property has a tweened transition when triggering sound parts with the same SoundId but different PlaybackSpeeds.

PlaybackSpeedTransitionSpeed: Controls the transition speed of the PlaybackSpeed property.
This will be ignored if PlaybackSpeedTween is disabled.
Setting this attribute to 0 will use the TransitionSpeed attribute for the transition speed instead.


Where can I get it?
You can get it right here: https://create.roblox.com/store/asset/12868646360/Area-Sound-Kit-v5_1
(CC BY-SA)

Feel free to ask if you have any questions or if something doesn’t appear to be working correctly.


Other Resources:

45 Likes

Updated where active sound is stored and fixed multiplayer compatibility.

If updating from a previous version of [v5], you can run this script in your console to automatically update all existing sound parts in your workspace:

print('Updating scripts for all sound parts...')
local new = game:GetService('InsertService'):LoadAsset(12868646360)
for _,controller in workspace:GetDescendants() do
	if controller.Name == 'Sound Controller' and controller:FindFirstChild('Pointer') and controller.Parent.Name == 'Client Setup' then
		local parent = controller.Parent.Parent
		controller.Parent:Destroy()
		new['Sound Part']['Client Setup']:Clone().Parent = parent
		parent = nil
	end
end
new:Destroy()
new = nil
warn('Finished')
2 Likes

doesn’t work anymore for some reason

1 Like

It appears to work fine for me. In what way was it not working, and what were you doing at the time? Were there any errors in the output? A video with sound might also be helpful.

1 Like

Stupid question probably, but can I make an unlimited amount of sound areas with this?

1 Like

Theoretically yes, although I have yet to test it at any extreme. You can have each sound part cover an entire area, or you could use them at the borders (or entrance/exist) of each zone.

2 Likes

Thought this was a sound effect kit due to name, but turns out it’s an api, either way, I will use this! I heavily rely on sound.

1 Like

Let me know if there’s anything else sound related that might be useful to you :+1:

2 Likes

Oh I would love an “ambient” sound module! Like echo or something.

1 Like

Do you mean something similar to this, but where it modifies audio when touched? Or do you mean a sound object that automatically adapts to the environment?

1 Like

This.

1 Like

I will consider this, however a dynamic system like that will have to make a lot of assumptions about what the environment is intended to be.

2 Likes

Common environments will probably be just empty rooms or forests. (Or outside rain but EQS could make use for that though they’re hard to setup.)

1 Like

What kind of sound modifiers did you have in mind? The only thing that comes to mind is echo, which I assume would be based on material and perhaps room size, and then muffle for if the sound is occurring behind a wall or something?

1 Like

Yeah exactly these.

Seems simple enough, I’ll update this thread when I get around to making a prototype of that.

2 Likes

Players.Sceletons.PlayerGui.SoundPartService.Sound Controller [Sound]:4: attempt to index nil with 'FindFirstChildOfClass'

Is the error I get.

It should be fixed now. You can update all of your sound parts with the script I posted in your command line.

I would recommend that everyone else do the same as well.

1 Like

Thank you so much! This is by far the best Ambience Sound script I’ve ever seen on Roblox. Nothing I’ve made compares to this! Can’t wait to see more from you.

3 Likes

Hey, I have an idea

Maybe you can use configurations to determine the sound ID and the reverb? So you can make a configuration where the user will paste the ID of the sound, and that will play, AND you can input for example “City” reverb, and the chosen reverb type will echo I guess? Or a custom amount of echo?

TL;DR:

Make this be a sound and echo kit.

This would make my developing life a lot easier.

1 Like