Unity Set WWise output device — Oculus
Welcome to the Oculus Developer Forums!

Your participation on the forum is subject to the Oculus Code of Conduct.

In general, please be respectful and kind. If you violate the Oculus Code of Conduct, your access to the developer forums may be revoked at the discretion of Oculus staff.

Unity Set WWise output device

mike.solovykhmike.solovykh Posts: 2
NerveGear
edited October 2018 in Audio SDK Development
Hey there,

I'm running unity 2018.1.9f1, Oculus Utilities 1.27, WWise Unity Integration 2018.1.1.6727.1172, and WWise 2018.1.1. I'm struggling to change the WWise audio output from the default windows device. 
#if !OVRPLUGIN_UNSUPPORTED_PLATFORM

                string audioDevice = OVRManager.audioOutId;

        	uint audioOutId = AkSoundEngine.GetDeviceIDFromName(audioDevice);

                ActivePlatformSettings.AkInitializationSettings.initSettings.settingsMainOutput.idDevice = audioOutId;

#endif

I've tried adding something along the lines of the above in the AkWwiseInitializationSettings.cs's InitializeSoundEngine function, before AkSoundEngine.Init gets called. However, it doesn't seem to work. 

Any tips? 

Best Answer

  • mike.solovykhmike.solovykh Posts: 2
    NerveGear
    edited November 2018 Accepted Answer
    I ended up having to do something like this in the AkWwiseInitializationSettings.cs's InitializeSoundEngineFunction:

    
    #if !OVRPLUGIN_UNSUPPORTED_PLATFORM
    	    AkWindowsSettings akWindowsSettings = (AkWindowsSettings)(ActivePlatformSettings);
    	    if (akWindowsSettings)
    	    {
    	        string audioDevice = OVRManager.audioOutId;
    	        uint audioOutId = AkSoundEngine.GetDeviceIDFromName(audioDevice);
    	        akWindowsSettings.UserSettings.m_MainOutputSettings.m_DeviceID = audioOutId;
            }
    #endif
    Additionally, I had to make sure OVRManager ran before AKInitialize in my script execution order.

    And I noticed that AkSoundEngine.IsInitialized() was returning True, even if the sound engine wasn't initialized. So I had to do

    if (AkSoundEngine.IsInitialized())
    {
        AkSoundEngine.Term();
    }
    
    at the start of AkSoundEngineController.cs's Init method. 

Answers

  • MikeFMikeF Posts: 642
    Neo
    Inside the Initialize method of AkInitializer i've used the following and it works 
      platformSettings.idAudioDevice = AkSoundEngine.GetDeviceIDFromName(OVRManager.audioOutId);

            AKRESULT result = AkSoundEngine.Init(memSettings, streamingSettings, deviceSettings, initSettings, platformSettings, musicSettings, (uint)preparePoolSize * 1024);
Sign In or Register to comment.