private void SetAudioDevice(int deviceIndex) { if (streamSlots != null) { foreach (var s in streamSlots.Values) { s.TemporaryShutdown(); } } if (freeVoices != null) { foreach (var v in freeVoices) { v.TemporaryShutdown(); } } if (usedVoices != null) { foreach (var v in usedVoices) { v.TemporaryShutdown(); } } if (masteringVoice != null) { masteringVoice.Dispose(); X3DInstance.Dispose(); masteringVoice = null; X3DInstance = null; } masteringVoice = new MasteringVoice(AudioDevice, XAudio2.DefaultChannels, XAudio2.DefaultSampleRate, deviceIndex); DeviceDetails = AudioDevice.GetDeviceDetails(deviceIndex); X3DInstance = new X3DAudio(DeviceDetails.OutputFormat.ChannelMask, 340f); if (streamSlots != null) { foreach (var s in streamSlots.Values) { s.ShutdownRevival(); } } if (freeVoices != null) { foreach (var v in freeVoices) { v.ShutdownRevival(); } } if (usedVoices != null) { foreach (var v in usedVoices) { v.ShutdownRevival(); } } }