Audio Completely Fails to Initialize in PIE

Hello,

I’m facing a persistent audio crash in UE 5.8.3 when using Play in Editor. Interestingly, this only happens in my project, default templates work fine. The broken project has default audio settings, but it features a performance-heavy PCG Graph.

Audio is working correctly in Editor but glitches and completely dies when I start Play in Editor (Standalone not working either).

What I have already tried (none of this helped):

  • Completely removed the heavy PCG graph from the project
  • Cleaned Intermediate and Saved folders
  • Verified that Windows audio output is strictly set to 24-bit, 48000 Hz
  • Experimented with various values in AudioMaxChannels and AudioNumBuffersToEnqueue
  • Tried different audio drivers/outputs (completely uninstalled Realtek to use generic Windows drivers, tested front-panel headphone jack vs. rear direct output)
  • Updated motherboard BIOS
  • Tried forcing XAudio2 (resulted in an immediate initialization failure)

I have hypothesis that it might be caused by bUseRenderScheduler, which crashes the audio due to desynchronization during level loading on startup (the default template is not as heavy, so it might not happen there). However, I haven’t managed to disable RenderScheduler in any way to test it, and besides, literally everyone would be running into this..

LogAudio:

LogAudio: Display: Pre-Initializing Audio Device Manager…
LogAudio: Display: AudioInfo: ‘OPUS’ Registered
LogAudioDebug: Display: Lib vorbis DLL was dynamically loaded.
LogAudio: Display: AudioInfo: ‘OGG’ Registered
LogAudio: Display: AudioInfo: ‘ADPCM’ Registered
LogAudio: Display: AudioInfo: ‘PCM’ Registered
LogAudio: Display: AudioInfo: ‘BINKA’ Registered
LogAudio: Display: AudioInfo: ‘RADA’ Registered
LogAudio: Display: Audio Device Manager Pre-Initialized
LogAudio: Display: Registering Engine Module Parameter Interfaces…
LogAudioCaptureCore: Display: No Audio Capture implementations found. Audio input will be silent.
LogAudioCaptureCore: Display: No Audio Capture implementations found. Audio input will be silent.
LogAudio: Display: Initializing Audio Device Manager…
LogAudio: Display: Loading Default Audio Settings Objects…
LogAudio: Display: No default SoundConcurrencyObject specified (or failed to load).
LogAudio: Display: Audio Device Manager Initialized
LogAudio: Display: Creating Audio Device: Id: 1, Scope: Shared, Realtime: True
LogAudioMixer: Display: bUseRenderScheduler set to true.
LogAudioMixer: Display: Audio Mixer Platform Settings:
LogAudioMixer: Display: Sample Rate: 48000
LogAudioMixer: Display: Callback Buffer Frame Size Requested: 1024
LogAudioMixer: Display: Callback Buffer Frame Size To Use: 1024
LogAudioMixer: Display: Number of buffers to queue: 1
LogAudioMixer: Display: Max Channels (voices): 32
LogAudioMixer: Display: Number of Async Source Workers: 4
LogAudio: Display: AudioDevice MaxSources: 32
LogAudio: Display: Audio Spatialization Plugin: None (built-in).
LogAudio: Display: Audio Reverb Plugin: None (built-in).
LogAudio: Display: Audio Occlusion Plugin: None (built-in).
LogAudioEnumeration: Display: Refreshing FWindowsMMDeviceCache
LogAudioEnumeration: Display: FWindowsMMDeviceCache: Default Render Role=‘Console’, Device=‘Realtek HD Audio 2nd output (Realtek(R) Audio)’
LogAudioEnumeration: Display: FWindowsMMDeviceCache: Default Capture Role=‘Console’, Device=‘Microphone (3- USB Camera-B4.09.24.1)’
LogAudioEnumeration: Display: FWindowsMMDeviceCache: Default Render Role=‘Multimedia’, Device=‘Realtek HD Audio 2nd output (Realtek(R) Audio)’
LogAudioEnumeration: Display: FWindowsMMDeviceCache: Default Capture Role=‘Multimedia’, Device=‘Microphone (3- USB Camera-B4.09.24.1)’
LogAudioEnumeration: Display: FWindowsMMDeviceCache: Default Render Role=‘Communications’, Device=‘Realtek HD Audio 2nd output (Realtek(R) Audio)’
LogAudioEnumeration: Display: FWindowsMMDeviceCache: Default Capture Role=‘Communications’, Device=‘Microphone (3- USB Camera-B4.09.24.1)’
LogAudioMixerWasapi: Display: FWasapiServiceWatcher started.
LogAudioMixer: Display: Initializing audio mixer using platform API: ‘WASAPIMixer’
LogAudioMixerWasapi: Display: FWasapiServiceWatcher initial state: Audiosrv=RUNNING, AudioEndpointBuilder=RUNNING
LogAudioMixerWasapi: FAudioMixerWasapiRenderStream::InitializeHardware DefaultDevicePeriod: 480 requesting buffer size: 1920
LogAudioMixerWasapi: Display: FAudioMixerWasapiRenderStream::InitializeHardware audio mixer requested num channels: 2, Wasapi render stream hardware supports num channels: 2
LogAudioMixerWasapi: Display: FAudioMixerWasapiRenderStream::InitializeHardware succeeded with sample rate: 48000, buffer period: 1024
LogAudioMixer: Display: FAudioMixerWasapi initialized: SampleRate=48000 NumChannels=2 NumDirectOutChannels=0 bIsAggregateDevice=0 StreamParams.Num()=1
LogAudioMixer: Display: Using Audio Hardware Device Realtek HD Audio 2nd output (Realtek(R) Audio)
LogAudioMixer: Display: Initializing Sound Submixes…
LogAudioMixer: Display: Creating Master Submix ‘MasterSubmixDefault’
LogAudioMixer: Display: Creating Master Submix ‘MasterReverbSubmixDefault’
LogAudioMixer: Display: Output buffers initialized: Frames=1024, Channels=2, Samples=2048, InstanceID=1
LogAudioMixer: Display: Starting AudioMixerPlatformInterface::RunInternal(), InstanceID=1
LogAudio: Display: Audio Device (ID: 1) registered with world ‘Untitled’.
LogAudioMixer: Initializing Audio Bus Subsystem for audio device with ID 1
LogAudio: Display: Audio Device unregistered from world ‘Untitled’.
LogAudio: Display: Audio Device (ID: 1) registered with world ‘Lvl_VehicleBasic’.
LogAudio: Display: Creating Audio Device: Id: 2, Scope: Unique, Realtime: True
LogAudioMixer: Display: bUseRenderScheduler set to true.
LogAudioMixer: Display: Audio Mixer Platform Settings:
LogAudioMixer: Display: Sample Rate: 48000
LogAudioMixer: Display: Callback Buffer Frame Size Requested: 1024
LogAudioMixer: Display: Callback Buffer Frame Size To Use: 1024
LogAudioMixer: Display: Number of buffers to queue: 1
LogAudioMixer: Display: Max Channels (voices): 32
LogAudioMixer: Display: Number of Async Source Workers: 4
LogAudio: Display: AudioDevice MaxSources: 32
LogAudio: Display: Audio Spatialization Plugin: None (built-in).
LogAudio: Display: Audio Reverb Plugin: None (built-in).
LogAudio: Display: Audio Occlusion Plugin: None (built-in).
LogAudioEnumeration: Display: Refreshing FWindowsMMDeviceCache
LogAudioEnumeration: Display: FWindowsMMDeviceCache: Default Render Role=‘Console’, Device=‘Realtek HD Audio 2nd output (Realtek(R) Audio)’
LogAudioEnumeration: Display: FWindowsMMDeviceCache: Default Capture Role=‘Console’, Device=‘Microphone (3- USB Camera-B4.09.24.1)’
LogAudioEnumeration: Display: FWindowsMMDeviceCache: Default Render Role=‘Multimedia’, Device=‘Realtek HD Audio 2nd output (Realtek(R) Audio)’
LogAudioEnumeration: Display: FWindowsMMDeviceCache: Default Capture Role=‘Multimedia’, Device=‘Microphone (3- USB Camera-B4.09.24.1)’
LogAudioEnumeration: Display: FWindowsMMDeviceCache: Default Render Role=‘Communications’, Device=‘Realtek HD Audio 2nd output (Realtek(R) Audio)’
LogAudioEnumeration: Display: FWindowsMMDeviceCache: Default Capture Role=‘Communications’, Device=‘Microphone (3- USB Camera-B4.09.24.1)’
LogAudioMixerWasapi: Display: FWasapiServiceWatcher started.
LogAudioMixer: Display: Initializing audio mixer using platform API: ‘WASAPIMixer’
LogAudioMixerWasapi: Display: FWasapiServiceWatcher initial state: Audiosrv=RUNNING, AudioEndpointBuilder=RUNNING
LogAudioMixerWasapi: FAudioMixerWasapiRenderStream::InitializeHardware DefaultDevicePeriod: 480 requesting buffer size: 1920
LogAudioMixerWasapi: Display: FAudioMixerWasapiRenderStream::InitializeHardware audio mixer requested num channels: 2, Wasapi render stream hardware supports num channels: 2
LogAudioMixerWasapi: Display: FAudioMixerWasapiRenderStream::InitializeHardware succeeded with sample rate: 48000, buffer period: 1024
LogAudioMixer: Display: FAudioMixerWasapi initialized: SampleRate=48000 NumChannels=2 NumDirectOutChannels=0 bIsAggregateDevice=0 StreamParams.Num()=1
LogAudioMixer: Display: Using Audio Hardware Device Realtek HD Audio 2nd output (Realtek(R) Audio)
LogAudioMixer: Display: Initializing Sound Submixes…
LogAudioMixer: Display: Creating Master Submix ‘MasterSubmixDefault’
LogAudioMixer: Display: Creating Master Submix ‘MasterReverbSubmixDefault’
LogAudioMixer: Display: Output buffers initialized: Frames=1024, Channels=2, Samples=2048, InstanceID=2
LogAudioMixer: Display: Starting AudioMixerPlatformInterface::RunInternal(), InstanceID=2
LogAudio: Display: Audio Device (ID: 2) registered with world 'Lvl_VehicleBasic

Hello there @Orik!

Checking through your log, first thing to highlight is that audio is actually starting up properly. The log shows UE opening the output at 48000 Hz, and then doing the same for the PIE world with no errors. Meaning, the problem isn’t the audio failing to start, it’s something breaking it after it’s already running.

I don’t think it’s related to bUseRenderScheduler, as it’s enabled by default, and looking around the community, I couldn’t find any mention of it across past scenarios. And as you mentioned, if it was the cause, there should be a lot of mentions about it.

UE buffers sound and sends them to output one after the other in a second. If one of those buffers is not ready, you will get a skip. If that keeps happening, the engine will stop waiting and swtich to a silent output, which would explain why the audio never comes back. So, it’s a matter of finding what’s breaking the buffers.

You mentioned the audio breaks when playing from editor, can you be a bit more specific about it? Like, does it break as soon as you press Play? Or does it work for a short bit, then break entirely Also, your log extract seems to only include the startup. Can you reproduce the issue, then add the log extract of what happens during the failure?

From the tests you mentioned, I think there’s one more worth trying. Inside your project, create an empty, test level. Then press Play from there. If the audio works fine, the problem is in your main level’s content, not in your project settings. Also, while playing, you can use cmdlet “stat sounds” in console to show a list of the sounds playing at that moment.

Another approach to test, would be to give more breathing room for audio in your project. To do so, go to Project Settings > Platforms > Windows > Audio, and set “Number of Buffers To Enqueue” to 4, and raise “Callback Buffer Size” to 2048. This will give UE more time to prepare each chunk of sound.

Hello, thanks to the great reply from @brs-sebascova I went back and thoroughly checked everything again, and I eventually managed to find the cause of the problem.

It turned out that the issue was caused by a corrupted or incompatible version of an older Ultra Dynamic Sky Weather plugin. Its sound effects were causing the problem. Simply updating the plugin and replacing the existing version in my project with the updated one fixed it.

The audio is now working properly, but I still frequently see the following warning in the log:

LogMetaSound: Warning: Underrun detected in audio bus reader node. Check to see if bus was stopped.

Hopefully, this won’t cause any issues in the future.