MetaSounds Audio Bus Reader/Writer add noticeable latency to sound output

Hi all,

I’ve found that sending audio through Audio Buses delays when the sound is actually played. For context: my project is very sound-centric and involves a lot of MetaSounds - some for creating sound, and some for adding effects to sounds, and some that mix sounds together and finally output them to be heard. To chain them together, I’m using Audio Buses with MetaSounds’ “Audio Bus Writer” and “Audio Bus Reader” nodes. My project has musical elements tied to gameplay, so tight timing is important.

A sound signal played directly from the original MetaSound outputs to the speaker noticeably earlier than if that sound signal is piped into an Audio Bus and another MetaSound reads the signal and outputs it. That latency compounds if there are more MetaSounds chained together in series like this.

Is this delay expected behavior? Is there a way to reduce it? I’ve tried changing the “Override Block Rate (in HZ)”, but using lower values like 10 make the delay worse, and the delay seems the same if I use higher values like 1000.

Below is a simplified example that illustrates the issue. It has two simple MetaSounds. One creates a short sine-wave blip and outputs both to the MetaSound mono output and to a mono Audio Bus. The other simply reads that Audio Bus and sends it to it’s own MetaSound’s mono output. The blueprint spawns the MetaSound with the Audio Bus Reader on BeginPlay so that it is always listening to that bus, and spawns the other MetaSound every second so that it plays on repeat. The result is a rapid “beep-beep” every second. The first beep is from the output of the MetaSound that generates the sound. The second is from the MetaSound that relays the output of the audio bus. To my ear, there is a small amount of quiet time between beeps, suggesting that the delay is around 0.05 seconds.

Thanks!
-Johnny

As a new user I can add only 1 image at a time. Here’s the second:

As a new user I can add only 1 image at a time. Here’s the third:

It does but also there’s a way to lower it somewhat, basically, when you playback the bus audio through the bus reader this is the worst latency you can get for bus playback, you can get better latency if you play the bus not through a metasound but through the “SourceBus” object that lets you play audio busses directly via an audio component without going through another metasound, this dramatically lowers the latency of the bus playback, it is still delayed by at least one audio buffer but it’s nowere near as bad as playback through metasound.

Using a SourceBus object will reduce latency but it’ll still cause phasing if you plan to use a single metasound both for a bus output as well as a ‘standard output’, so if you want keep things playing back correctly you need to output everything from busses.

1 Like

Ah I see, thanks for the explanation. I just tried it out with the minimal example, by deleting the part of the blueprint that spawns the metasound that forwards the audio bus to it’s out put, and instead adding a source bus that uses that same audio bus. The delay is still slightly perceptible, but, like you said, much better. I think it should be suitable for my purposes, though I still need to refactor my actual project to work this way.

Outputting both directly and to a bus was just for the sake of example to illustrate the delay. I only need to output directly to the bus, so the phase difference issue you called out shouldn’t be an issue.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.