/// <summary>Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.</summary> public void Dispose() { _masterVoice?.Dispose(); _audio?.Dispose(); _tokenSource?.Cancel(); _tokenSource?.Dispose(); }
public void Dispose() { for (int i = xa_voi.Count - 1; i >= 0; i--) { try { xa_voi[i].StreamEnd -= new SourceVoice.VoidAction(End_buffer); } catch (Exception) { } try { xa_voi[i].Stop(); } catch (Exception) { } try { ms_str[i].Close(); } catch (Exception) { } try { xa_voi[i].Dispose(); } catch (Exception) { } try { ms_str[i].Dispose(); } catch (Exception) { } mus_start[i] = false; } try { xa_sou.Dispose(); } catch (Exception) { } xa_voi.Clear(); mas_vol.Clear(); mas_wav.Clear(); wav_ch.Clear(); wav_lop.Clear(); wav_lop_n.Clear(); ms_str.Clear(); }
/// <summary> /// SharpDX XAudio2 sample. Plays wav/xwma/adpcm files from the disk. /// </summary> static void Main(string[] args) { var xaudio2 = new XAudio2(); var masteringVoice = new MasteringVoice(xaudio2); PLaySoundFile(xaudio2, "1) Playing a standard WAV file", "ergon.wav"); PLaySoundFile(xaudio2, "2) Playing a XWMA file", "ergon.xwma"); PLaySoundFile(xaudio2, "3) Playing an ADPCM file", "ergon.adpcm.wav"); masteringVoice.Dispose(); xaudio2.Dispose(); }
static SoundEffect() { var flags = XAudio2Flags.None; #if !WINRT && DEBUG flags |= XAudio2Flags.DebugEngine; #endif try { // This cannot fail. Device = new XAudio2(flags, ProcessorSpecifier.DefaultProcessor); Device.StartEngine(); // Just use the default device. #if WINRT string deviceId = null; #else const int deviceId = 0; #endif // Let windows autodetect number of channels and sample rate. MasterVoice = new MasteringVoice(Device, XAudio2.DefaultChannels, XAudio2.DefaultSampleRate, deviceId); MasterVoice.SetVolume(_masterVolume, 0); // The autodetected value of MasterVoice.ChannelMask corresponds to the speaker layout. #if WINRT Speakers = (Speakers)MasterVoice.ChannelMask; #else var deviceDetails = Device.GetDeviceDetails(deviceId); Speakers = deviceDetails.OutputFormat.ChannelMask; #endif } catch { // Release the device and null it as // we have no audio support. if (Device != null) { Device.Dispose(); Device = null; } MasterVoice = null; } }
public static void Main(string[] args) { xaudio2 = new XAudio2(); xaudio2.StartEngine(); var masteringVoice = new MasteringVoice(xaudio2); if (!string.IsNullOrEmpty(Properties.Settings.Default.BackgroundMusicPath) && Directory.Exists(Properties.Settings.Default.BackgroundMusicPath)) { var musicFiles = Directory.GetFiles(Properties.Settings.Default.BackgroundMusicPath, "*.wav"); if(musicFiles.Length > 0) backgroundPlayer = new TrackPlayer(xaudio2, musicFiles); } var listener = new UdpClient(10009); listener.BeginReceive(new AsyncCallback(ReceiveCallback), listener); effectManager = new EffectManager(xaudio2, 4, Properties.Settings.Default.FXPath); // Wait until its done int count = 1; while (true) { Thread.Sleep(10); if (Console.KeyAvailable) { var key = Console.ReadKey(); if (key.Key == ConsoleKey.Escape) break; switch (key.Key) { case ConsoleKey.A: effectManager.Play("Scream.wav"); break; case ConsoleKey.B: effectManager.Play("Violin screech.wav"); break; case ConsoleKey.N: if(backgroundPlayer != null) backgroundPlayer.NextTrack(); break; case ConsoleKey.V: if (key.Modifiers.HasFlag(ConsoleModifiers.Shift)) backgroundVolume -= 0.1f; else backgroundVolume += 0.1f; if (backgroundVolume < 0f) backgroundVolume = 0f; if (backgroundVolume > 1f) backgroundVolume = 1f; break; } } var muteMusic = effectManager.AreAnyPlaying && autoMuteBackground ? 0.2f : 0f; if (backgroundPlayer != null) backgroundPlayer.Volume = backgroundVolume - muteMusic; if (count % 50 == 0) { Console.Write("."); Console.Out.Flush(); } Thread.Sleep(10); count++; } listener.Close(); if (backgroundPlayer != null) backgroundPlayer.Stop(); if (trackPlayer != null) trackPlayer.Stop(); effectManager.Dispose(); Thread.Sleep(500); masteringVoice.Dispose(); xaudio2.StopEngine(); xaudio2.Dispose(); }
static SoundEffect() { // This cannot fail. Device = new XAudio2(); try { Device.StartEngine(); // Let windows autodetect number of channels and sample rate. MasterVoice = new MasteringVoice(Device, XAudio2.DefaultChannels, XAudio2.DefaultSampleRate); MasterVoice.SetVolume(_masterVolume, 0); // The autodetected value of MasterVoice.ChannelMask corresponds to the speaker layout. Speakers = (Speakers)MasterVoice.ChannelMask; } catch { // Release the device and null it as // we have no audio support. Device.Dispose(); Device = null; MasterVoice = null; } }