Smile4's Dynamic Reverb - Simple, Performant, and Realistic Audio

Hello gamers! I’ve wanted to make a dynamic reverb system ever since seeing that one post from a few years ago, and finally decided to do it.

This was also spurred on partially by the new acoustic simulation beta being kinda mid (and this is coming from this guy). Roblox please make it way more customizable this isn’t a one size fits all problem.

Anyways, I cooked this up within the last day so expect a few updates over the next few days!

How to use:

  1. Have a folder in Workspace called “World”
  2. Create AudioReverb instance (make sure its parented to a part)
  3. Wire it all up
  4. Add tag “DynamicReverb” (do this AFTER parenting the AudioReverb instance)
  5. Profit

Things this doesn’t do (yet):
Occlusion (might add it eventually but its annoying to get it right)

Links:
Model - Model with everything needed to quickly start
DynamicReverbPlayground.rbxl (67.4 KB) - Already setup place with everything installed correctly

32 Likes

Just pushed an update adding server owned DynamicReverb, simply tag your AudioReverb instance with “DynamicReverbServer” instead of “DynamicReverb”, also moved everything to a module.

1 Like

Cool resource!

Some things I would recommend implementing for increasing performance are time splicing and distance checking. Time splicing is just only updating a limited number of objects per update. A distance check is self explanatory… just check if our active listener, the workspace.CurrentCamera, is within the part’s DistanceAttenuation in the AudioEmitter.

Also would be awesome if you managed to support the older Sound instances. Only issue is that you’d have to create a SoundGroup per object to get past this issue.

This sounds a lot better than the official Roblox Beta (when just considering the reverb, not the occlusion), nice work. Could you provide stats for performance eg. how much time does this take per frame in various scenarios?

im not sure how needed this is, i’ve already done a lot of “rate limiting” to keep performance cost down

i cant believe i forgot to add this :sob:

I will do some benchmarks, I have a secondary 10+ year old low end computer to test on as well.

also fyi to the world im working on occlusion rn, already got an a* implementation done, now just have to work on optimization and whatnot

1 Like

Is there any possibility for backwards compatability? (Sounds)

I thought about it but probably not. It shouldn’t be too hard to hack together a version that would work with sounds, but it’s not really a priority for me.

I rewrote your script with help from gemini to try to automatically bootstrap sounds, as @error12345307 wanted. I also added basic occlusion (needs volume adjustment still) and more effecient reverb – it raycasts from your head to search for sounds, which saves computing when you have alot of sounds.

It needs tuning, but when it works, it really works – You can navigate spaces with just your headphones.

Heres the place:

DynamicReverbPlayground.rbxl (91.0 KB)

@smile4cs Thank you so much for posting this open-source. Hence, I am posting this version openly as well. My only request is if anyone improves my improved version of @smile4cs 's code, repost it to this thread to I can use the improvements too :wink:

Alot of credit to this dude for releasing all his trade secrets to the world; Couldnt have done it without the theory in this video:

1 Like

is it possible to also make it an rbxm if i wanna implement it to one of my games? (without opening another studio window ofc)

That looks cool but how is it different from roblox’s audio acoustics and does it run in parallel?

compared to Roblox’s audio acoustics this has less features, and it doesn’t run in parallel although it relatively easily could. however, it does in my opinion provide much nicer dynamic reverb, and since all of the code is open you can adjust it a LOT more than what roblox has provided