I need to create a distributed PA system where multiple “speakers” (Audio Components) are rebroadcasting the same audio at the same time. Is there a way to do this?
I’ve tried assigning the same MetaSound Source to two Audio Components (in two separate Blueprints) but if I then execute a Play node for both of them, only one plays.
I suppose it should work. I haven’t worked with meta sounds yet but if 10 characters fire a rifle at the same time everyone would expect the sound to play everywhere as well. In the old system there is a concurrency setup, which you can use to limit a sound from playing more than X times at once. Possibly you set up the sound file / class / other config to play exactly once.
Respectfully, this does not apply because they don’t use MetaSounds. I don’t have the problem with traditional sound cues like they’re using, but I specifically need to use MetaSounds Sources for my purposes, which is a separate audio system that behaves differently.
Have just tested this in 5.2, and this does work.
The BP has an AudioComponent with attenuation override enabled.
The AC uses a simple MetaSound with just the WavePlayer node set to loop.
The level has 2 copies of the BP in place in different locations.
If you turn on the Developer / Enable Attenuation Debug option within your MetaSound, and then use the au.Debug.Sound 1 console command while playing your game, you should be able to check how many sources are currently playing along with your relative distance to them. You can also use the au.3DVisualization.Attenuation 1 console command to draw the sound’s attenuation spheres.
For this implementation it doesn’t matter which sound class is used as a source. Essentially all it is doing is playing a sound source silently in a single centralized manager blueprint and piping the audio out into multiple source buses that are placed in the world where you want to hear the sound coming from.