I am trying to get a looping Ambient audio track to play in the background and I want it to stay consistent. However, when any other sound plays, it immediately reduces the volume of the Ambient Track, even though the Ambient Track is: 1) set to its own Concurrency Group, 2) set to its own Sound Class, which is not set to be affected by any Sound Mixes nor is its parent, 3) set as a UI sound with no Spatialization.
The first time a new sound plays, the Ambient Track volume immediately and abruptly cuts to about half or .75 of it’s volume. Each subsequent sound continues to reduce it by a small amount until it is barely audible. These changes are not shown in any of the sound debugs (they show the Ambient Track as being at full volume). But you can definitely hear the volume reduction subtly dwindling away.
Now the weird thing is, if I have my other Sound Classes set with a passive mix override to go ahead and mute my Ambient Sound Class to zero, and then bring it back after at least .5 seconds, it comes back at a much higher, but not quite full volume. Whereas just default with no passive mix of any kind, we have the former behavior with the unwanted ducking.
I am fully aware that this can be a desired behavior in regards to fire and forget SFX, or to put focus on important sounds such as voiceovers. But as far as ambient background noise goes, it really should be pretty consistent 99% of the time.
Is there ANY way or workaround to avoid this behavior? Maybe a way of bypassing the engine’s built in audio mixer (if that’s a thing…)? Or is this possibly a bug of some kind?
I’m using 4.19.2, and I’m not using the New Unreal Audio Engine.
UPDATE:
I went ahead and tried it in 4.18.1 and got the same behavior. Then I enabled the new audio engine in 4.19 and it seems like it is a bit better (maybe my ears playing tricks on me?) I’m also noticing that super loud ambient tracks aren’t being affected as much. A light breeze in the background fades pretty dramatically, but a loud wind gust seems to hold its ground much better.
If you do not set the Concurrency on a sound, it will not have a Concurrency Group and will not be judged on Concurrency rules.
However, there is still a Max Channel Count on your platform settings, which will dictate the maximum allowable Active Sounds. Priority * Volume is still taken into account on the final sort.
Your Ambient sounds are part of a custom Sound Class? Or are they part of the Engine’s Ambient Sound Class?
Additionally, could you verify using “stat soundwaves” that your ambient sounds are being reduced in Volume logically?
Ah, ok I didn’t know that. I went ahead and tried disabling concurrency on the looping track and nothing changed, so I also disabled it on all my other sound effects that didn’t help either.
Yes, I have all my sounds set to their own Sound Classes (SFX, Music, Dialog, Ambient, etc.). I’m not sure what you mean by the Engine’s Ambient Sound Class. I also tried assigning them all to no Sound Class, that didn’t work either.
I did actually check “stat soundwaves” and the other related stat commands, but it shows no change. So whatever is happening must be taking place after the debug info goes out. That makes me think it is maybe related to the Priority * Volume sorting that you mentioned. I remember reading somewhere that no matter how high a sound’s priority is, higher volume sounds will always take priority? Which makes sense, except the looping track doesn’t come back up to volume after.
I did actually notice a peculiar tooltip on Volume Scale in the Concurrency settings:
“The amount of attenuation to apply to older voice instances in this concurrency group. This reduces volume of older voices in a concurrency group as new voices play. Applied volume scale = Math.Pow(DuckingScale, VoiceGeneration)”
That sounds exactly like what is happening, but it’s somehow applying to all sounds, not just sounds in the same concurrency group? Is there any way to expose this DuckingScale variable?
I’m having a lot of unwanted sound ducking in 4.18.0.
I have loud gun sounds and they’re lowering my looping music volume so much that it’s almost inaudible for a couple of seconds after firing.
My music doesn’t have a concurrency group, it has the highest concurrency priority, it’s set to the “Music” sound group and also it has a custom simple music sound class with no reverb or anything.
I tried changing the priority of other sounds, removing my custom music class and anything else I could think of, but nothing seems to have an effect at all. Does anyone have a solution?
Nerdsbeware seems to say that the ability to disable ducking was only added in 4.20? Is that true? Is there no way at all to disable it in 4.18???
I’m definitely not ready to move to 4.20 because the last time I updated my engine version, I had crippling Unreal bugs that took the Unreal team almost a year to fix.
That was basically my situation with gunshots causing music to cut out. I struggled with it for awhile and never did find a solution of my own.
4.20 definitely seemed to make it better, using the checkbox on the sound asset. But it is still present, albeit not quite as pronounced.
I understand how you feel about updating. The 4.20 update went pretty smoothly for me, but you never know what might break with your specific project. 4.18 was a very solid release I had almost zero issues with.
@ItBurn, do your guns have a Sound Class with a Passive Mix Modifier?
@Nerdsbeware Ducking and cutting out are not the same behavior, I would avoid conflating those two. Ducking is the volume being reduced. Cutting out is the sound stopping to play.
There are a maximum number of sounds that can play at any given time in your project (this value is defined by the Max Channels number in your Project Settings as a per-platform setting). If you’re playing so many sounds that some of those sounds are cutting out, are not playing, or inaudible, I would suggest several strategies:
Voice budgeting using Sound Concurrency and Priority: ensure that you do not stomp important sounds by adjusting priority to be higher on important sounds, allocate budgets for types of sounds (weapons, music, etc.) by limiting the max number of those types that can play at any given time.
If your music is getting quieter when you fire a gun, then it sounds like a Passive Mix Modifier is being used on the gun sound class that is detecting a sound being played on it and subsequently ducking the music. If you do not want this behavior, you will need to remove the Passive Mix Modifier. If you do but the envelope affect is too lengthy, then you need to adjust the Fade Times on the mix to be more to your liking.
You should get an onscreen read-out of how many soundwaves are playing and the Volume Multiplier on each one as well as any SoundMixes that have been applied and their magnitude of affect.
Watch your music Volume Multiplier and see if it drops when you fire your guns.
Watch the SoundMixes section and see if one pops up when you fire a gun.
Hey Dan, sorry I wasn’t trying to bring this back up again, just was answering ItBurn. Thanks for taking the time to talk about this.
yes I know ducking and cutting out are different, sorry for using the wrong terminology. I realize that could cause confusion.
when we had talked about this before, I did a lot of investigation totaling around 15+hours. I am very confident in saying the issue was mainly from the final mix you mentioned earlier of priority * volume, since that is probably happening after or not factored into the STAT commands, which for me do NOT show any change even though it is audible. Cementing that conclusion is the fact that the checkbox for Bypass Volume Scale for Priority made a noticeable difference. Better enough to not really be a big deal in 4.20+.
i should have worded my earlier post differently. The checkbox doesn’t just seem to fix it, I’d say in my specific case it was a lot better.
My advice for ItBurn would really be to backup your project and update to 4.20.
No sound mixes popped up.
The music volume multiplier didn’t change at all.
The music volume clearly went down to about 30% after a gun shot and it took at least 4 seconds before it gradually went to 100%.