About the Usage of Sound Concurrency

Hello, im having a couple of practical issues with Sound Concurrency Assets and i have questions about 2 specific use cases :

Case 1 : The damaging Laser

So imagine a laser emitter. Its running a Timer by Event to Fire a line trace very rapidly, this line trace have a reach limit, and if something intersect with that linetrace, a damage is applied and a visual niagara Effect is triggered to show some sparkles at the point of impact.

I have 2 sounds, one is a looping laser sound and one is a short laser impact sound, both are Sound Cues.

The way i do it, is i Play the Looped Laser cue at the Begin Play and in order to avoid playing +100 sounds for all of my Laser actors i used a specific Sound Concurrency called SC_LaserLoop it has a max count of 6 with Stop Farthest, then Oldest rule.

My logic is that only when the player enters the sound attenuation space of one or multiple lasers, the sound will be played, if there is more than 6 laser around the player, the oldest or farthest laser would be stopped, and if the player walks away from lasers and goes toward other laser further away, while the player is being out of the sound attenuation range the sounds would all stop, allowing for new ones to play when the player re-enter a new laser filled area.

It seems to work, but it feels weird to me to have a Sound Concurrency linked to a specific actor, is it the way to go ?

Then for my laser Impact, that was a bit more complicated, because the trace have a very high refresh rate, playing the sound on every impact hit was creating a loud mess.

But i really had to play the impact sound on impact, because i need to know where to play the sound, therefore i need an actualized position of the actor interrupting the laser

So i kept the play sound after the trace hit, but i made a new speficic Sound Concurrency called : SC_Laser_Impact with the same settings as for the Loop.

If i used the same concurrency for both of them, the sound would have been in the same “pool” and therefore, the impact sound was cancelling the laser loop sound.

Does this seems correct to you ?

Case 2 : The Fireball + Music Issue

Now i need to add Concurrency to my Fireball projectiles.
The FireBall projectiles have multiple sounds :

  • Fireball Launch (from player)
  • Player Scream “Ha !” (from player)
  • FireBall travel sound loop (on the fireball)
  • FireBall Impact Sound (at impact location of the projectile)
  • Target Object Breaking/Being Damaged (From the target Object, ie : a Metal Barrel)

Right now i have nothing set for the concurrency because i’m simply not sure what’s the best way to do it.

The problem comes from the fact that you can Shoot very fast, even more, i have a slow-motion mechanic, that allows you to shoot even faster and that slow-motion affect the pitch of all SFX, so they will actually play for a bit longer…

I guess i could make a specific concurrency for all individual sounds, but even then, if i allow each of them to have 10 max sounds, if i shoot while being very close to a wall of destructible barrels, the sounds would still accumulate together very fast, climbing to high numbers of concurrent sounds, imagine the Fireball Launch sound would not have been finished that instantly the Fireball travel would play followed by an immediate impact and barrel damage, and if i shoot fast in slow-motion i would easily be able to reach 50 Concurrent sounds maybe even more.

That’s why im wondering if maybe the way to go would be to have only ONE sound Concurrency for all of the sounds linked to the Fireball, and set the limit to 20-30 max maybe, but then i would obviously have situations where either my new Fireballs would not make a audible sound upon firing OR miss their explosion sounds…

In my current situation, i also notice that doing that (firing really fast at a large number of Barrels) actually stops my music (which is also in a soundcue)

Is there a way to make the music above all the rest and make it so nothing could even cancel the music due to concurrency issues ?

Sorry for the long post and Thanks in advance, i really need some advices on this…

You’re right that using ‘oldest’ and ‘furthest’ is good for the laser and impact point.

Again, correct to use ‘oldest’ for the fireballs. But if they’re rapid fire, then a max concurrency of 3-5 should be enough.

Got you, but for the fireball system, would you make One global Sound_Concurrency and set it on all the fireball related Sound Cues ?
like
Fireball_Launch → SC_Fireball
Fireball_Scream → SC_Fireball
FireBall_Travel → SC_Fireball
FireBall_Impact → SC_Fireball
(SC is for the sound concurrency asset)

OR

Fireball_Launch → SC_Fireball_Launch
Fireball_Scream → SC_Fireball_Scream
FireBall_Travel → SC_Fireball_Travel
FireBall_Impact → SC_Fireball_Impact

That’s my main issue, i dont know if im supposed to group sound concurrencies or have many individual ones…

It doesn’t matter which one you do. Say you decide you only want 5 fireballs to sound ( in any way ), If you have a separate concurrency for each sound, you would set each one to 5. If you have one concurrency for all of them, you would still set it to 5.

The only thing you gain from having a separate concurrency is that a fireball could have only part of it’s sound cancelled, rather than the whole thing. It’s really up to you.

Okay, thanks a lot for your help !