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