Procedural Sound Propagation

Cool so far, I’ve done all this for my projects so feel free to dm if you get stuck on anything. Couple questions out of curiosity?

  1. How is performance? You’ve shown us all this but if you want real feedback it’d be helpful to give some benchmarks. Especially because it seems like you’re moving around at 20 frames per second here. This stuff can get tricky when you have a ton of sounds depending on how you’re doing things

  2. Is this calculated in real time based on world geometry(with cached cells until invalidation is necessary), or is it all based on pre-placed nodes? I’ve found certain advantages and drawbacks to both but personally I think the latter is sufficient

  3. You calculating reverb based on the listener’s position or the source? If you’re doing it based on the listener’s position, the source will probably sound a lot better. The developers of Hitman did this. I used a combination of their videos and some videos from the siege devs to replicate their systems

2 Likes

Let me guess…
You will raycast repeatedly from the source of sound to the player and adds the obstacle to a ignorelist until the ray hits the player…
And then you will decrease the reverb of the sound according to the length of the ignorelist…

For the player sound part…
you would create a region3 that returns the amount of parts that the player is next to…
And then according to its length, you decrease the reverb.

Am I correct?

Performance is very good, but due to my computer, it may not seem so when i am recording with OBS, (i dont have a graphics card), i havent done any bench marks yet, but i will soon. The performance should degrade linearly depending on the amount of sounds, but it should be able to handle more then enough needed for a FPS.

2, yes this is calculated in real time, based on world geometry, there isnt a cell system used here, it uses propagation nodes for diffraction though, which allows me to close and open it, allowing me to integrate it into my destructible environment system(sound coming from the hole you created with a shotgun).

3 Everything else is done according to world geometry, the reverb is based on both the source and listener location, most of the resources are allocated to the listener, as most sounds will be emitted from the players, this info is replicated so that it is only needed to be processed by one player.

I wonder if it is possible to improve the reverb quality? the limited parameters makes it very hard, how did you do implement your reverb system?

no…, that would be incredibly laggy, this is more sophisticated then that, i read alot of research papers to determine the best method(imo)
this works by literally propagating sound waves.

there isnt a work around except to use a very hacky solution that has some caveats. It sounds metallic because the high frequency attenuation parameters cant be changed, if Roblox lets us have access to the already implemented FMOD engine this would be solved.

1 Like

For #2 I was mostly talking about diffraction. Since it is possible to get performant real time diffraction(no pre placed nodes)

Oh, how? my diffraction system is the same as sieges system, can you explain how your reverb system works and also what system are you talking about that would be more performant for diffraction then nodes?

also, are you down to talk on discord instead maybe?

Never said more, but if you’re budgeting things correctly it should still be very fast.

Basically how my latest diffraction works is by voxelizing the world into cells(usually 3x3x3). You’d then do your typical pathfinding between the source and the listener as you’d do with pre placed nodes, but for these world cells instead. To determine if a cell is traversible, a ray is casted between cells. It is traversible if it doesn’t hit any world geometry.

This all caches too or course(the result between any two cells , etc.) . For destruction you’d just get all world cells around the destruction point in a given blast radius and wipe the cache for those cells

Yeah tyridge77#5390

added you, my username is a winky face, ill talk to you on discord rn

sorry. that was a bit vague, its ! ;D#6209

Would this system be suitable for this application:
My building has a fire alarm system with alarm sounders with different tones in different areas of the building. Since they use default roblox sound system when the alarm is activated you can hear every single sounder going off which sound both unrealistic and unpleasant.
Would this sound system be able to help with this problem and also have you got plans to release it for us to use on our games?

1 Like

Yes, this simulates sound diffraction and occlusion, so that if you have a fire alarm that is separated by a big wall or in another room, that sound will be faint, scaling accordingly to the environment, and with accurate~ish reverb.

1 Like

Thank you. More importantly I asked at the bottom of my previous post if you have plans to release the system for us to use in our games. Could you answer that? I do believe many developers would benefit from this system if released/open sourced.

No plans as of yet, this is suppose to be released in the ARLO|Siege game, that should be scheduled to release next year, so it would be decided when the game releases, plus I would also like to add more to the system, the current reverb system is kind of a hit or miss(because of the limitation).

I really hope you do decide to release this to the public in the future, I could seriously use this in the same application as Almonty7655.
Here are two videos demonstrating why I want your system so badly:

(Without any occlusions or reverb)

(With manually added reverb and occlusions)

This is why I love your system! It can automatically take the sound from video 1 and convert it into the sound from video 2

1 Like

Nice, I made something similar a while ago but it was a bit costly and it never felt quite right.

But I’ve recently been watching this video on sound design in battlefront 2, specifically how they handle indoor/out door, closed and distant sounds in various environments, and I want to tackle this project again.

2 Likes

Cool, I will check out that video, I already have a system that uses the most out of what Roblox has available right now with my reverb system, I hope they give us more options when customizing reverbs procedurally in the future, sound replication is a bit of a pain when some guns have very fast fire rate, but I have mostly finished the replication part, just need a bit more polish, right now im not working on this system, I got to finish my automatic navmesh generator.

That’s cool, and yeah I wish there were a few more options for sound but.

How is your system in regards to performance? I used to have trouble with mine.

everything is very performant, able to be ran on lower end hardware easily, only thing thats not as performant is the reverb, which i am planning to fix later, and it wont be hard.