On the PC, we have to set it to give out 5.1 – if plugged into a 5.1 Amp. The 5.1 will come out from the HDMI unless you have a special soundcard.
Different HDMI leads will be better for audio apparently.
When plugged in first open the Control Panel..then go to Change Sound Card Settings

Now select the Audio Device in my case its the NVIDIA High Def Audio then Configure

Now choose the Audio Channels. I can see 2 types of 5.1 – one with rear speakers at the back, the other where they are on the side. (The Test button is good to prove the Amp is getting a 5.1 as it will play a sound from each speaker in turn). Then step thru’ a few screens of configuration using Next and you should be good to go. Unreal will recognise that the sounds need to come out in 5.1 and I assume 7.1 too, when that system is in place. My amp only does 5.1 however.

In Unreal I have 3 x mono Meta Sounds, each like this: They have a custom Input, a Trigger, called PlayLoop instead of the regular OnPlay. This will be triggered by my BP sound manager. I’ve also ticked Maintain Audio Sync – this should be doing sample locking to prevent drift.

The MetaSounds each have a Sound Attentuation that looks like this:

In the Attenuation settings I’m not doing Volume Attenuation instead Spatialization – I’m still testing & fiddling with settings, in practice this does actually make my system work, sounds come out spatialized from the correct speakers.

I might add a little air absorption later – this makes the sound fade out high frequencies first as distance increases.
In the level I have 3 x totems – basically moveable physical sticks with rigid body markers, that the Optitrack system tracks & gives the position back to Unreal. The centre of the mocap volume is marked on the floor. In the Unreal level I have a Quartz Sound Mover BP that controls the sound playback.

Lets break it down, from the left
On Begin Play we start a Timer by Function called Rotate, that loops every 0.1s. More of this later. Then we set up a Quartz clock get a reference to it, and set its BPM to 120 (same as my 3 audio tracks.) Its quantization is bars – my audio tracks are 3 bars long. I’m Subscribing to a Quantization Event that calls a CustomEvent.

next Add Audio Components– this is my 3 Meta Sounds then Play Quantized this gets a reference to the Quartz Clock from earlier, and its Quartz Quantization Boundary is set to Bar counting from Current Time Relative. It has a CustomEvent1 checking if the audio is Queued, then Starting Clock.

next the my first Custom Event (from the Subscribe to Quantization Event earlier) checks the number of bars and if its = to Bar to Loop at (in my case 3) then it fires my Queue Custom event and Resets the Transport – setting the bar back to 1

In the Queue event Im Subscribing to the Quantization Event again with the same clock and this fires my CustomEvent_0 which Execute Trigger Parameter on each Audio Component (that’s my 3 x Metasounds) firing the PlayLoop trigger in the Metasound which causes them to play. There’s another execution wire coming in from the Play Quantized (in pic 02) which plays the sounds when the thing starts. (else it waits for the 3 bars) (The incoming blue wires to the Execute Trigger Parameters are references to the Add Audio Components in pic 02)

Finally for the actual spatialization, my BP has references to each Token(- the moveable physical markers in the space) (see the BP details below)
For each we get the World location and set the position of each MetaSound in the world. I have a print string for one of them for testing. Moving the Tokens around causes each mesta sound to move around the space, and this gets spatialized so if a token is neat the back right speaker, then that sound comes out strongly from that speaker. Everything else is about tweaking settings.

Im doing it this way because I noticed that using quartz and a sound 2d works fine for bar looping. However with a SoundCue, spatialization or attenuation settings causes a delay and it to miss a bar so you get silence. The MetaSound approach seems to work much better and this BP method of retriggering seems to fix the problem. With Volume Attenuation, if the sound level drops to zero then the sound stops playing and you have to enable Play When Silent. Volume attenuation does give a sound mix between speakers but how i have it hear really makes it seem 3D.
QuartzSoundMover BP details panel in level below

