public int EnqueueSamples(int channels, int rate, byte[] samples, int frames) { if (buffer == null) { buffer = new NAudio.Wave.BufferedWaveProvider(new NAudio.Wave.WaveFormat(rate, channels)); //NAudio.Wave.DirectSoundOut dso = new NAudio.Wave.DirectSoundOut(70); //NAudio.Wave.AsioOut dso = new NAudio.Wave.AsioOut(); NAudio.Wave.WaveOut dso = new NAudio.Wave.WaveOut(); dso.Init(buffer); dso.Play(); player = dso; } int space = buffer.BufferLength - buffer.BufferedBytes; if (space > samples.Length) { if (times == 0) { Console.WriteLine("Enqueue"); } times = (times + 1) % 100; return(frames); } return(0); }
private void StopAudio() { if (_audio != null) { if (_waveReader != null) { _waveReader.Dispose(); _waveReader = null; } if (_mp3Reader != null) { _mp3Reader.Dispose(); _mp3Reader = null; } try { _audio.PlaybackStopped -= PreviewAudio_PlaybackStopped; _audio.Stop(); _audio.Dispose(); } catch (Exception e) { Logger.Warn($"Error stopping audio: {e.Message}"); } _audio = null; NotifyPropertyChanged(nameof(IsPlayingAudio)); } }
private void StopAudio() { if (_audio != null) { _audio.Stop(); _audio = null; } }
private void bPreview_Click(object sender, EventArgs e) { if (_audio == null) { _audio = new NAudio.Wave.WaveOut(); if (_fileName.EndsWith(".ogg", StringComparison.InvariantCultureIgnoreCase)) { if (_audioPath != null) { _audio.Init(new NAudio.Vorbis.VorbisWaveReader(_audioPath)); } else if (_audioFile != null) { _audio.Init(new NAudio.Vorbis.VorbisWaveReader(_audioFile)); } } else if (_fileName.EndsWith(".mp3", StringComparison.InvariantCultureIgnoreCase)) { if (_audioPath != null) { _audio.Init(new NAudio.Wave.Mp3FileReader(_audioPath)); } else if (_audioFile != null) { _audio.Init(new NAudio.Wave.Mp3FileReader(_audioFile)); } } else { return; } _audio.Play(); } else { StopAudio(); } }
public int EnqueueSamples(int channels, int rate, byte[] samples, int frames) { if (buffer == null) { buffer = new NAudio.Wave.BufferedWaveProvider(new NAudio.Wave.WaveFormat(rate, channels)); //NAudio.Wave.DirectSoundOut dso = new NAudio.Wave.DirectSoundOut(70); //NAudio.Wave.AsioOut dso = new NAudio.Wave.AsioOut(); NAudio.Wave.WaveOut dso = new NAudio.Wave.WaveOut(); dso.Init(buffer); dso.Play(); player = dso; } int space = buffer.BufferLength - buffer.BufferedBytes; if (space > samples.Length) { if (times == 0) Console.WriteLine("Enqueue"); times = (times + 1) % 100; return frames; } return 0; }
internal void PlayPreviewAudio() { if (_audio == null) { try { if (_audioFileName.EndsWith(".ogg", StringComparison.InvariantCultureIgnoreCase)) { if (!string.IsNullOrWhiteSpace(_audioPath)) { _audio = new NAudio.Wave.WaveOut(); _waveReader = new NAudio.Vorbis.VorbisWaveReader(_audioPath); _audio.Init(_waveReader); } else if (_audioFile != null) { _audio = new NAudio.Wave.WaveOut(); _waveReader = new NAudio.Vorbis.VorbisWaveReader(_audioFile); _audio.Init(_waveReader); } } else if (_audioFileName.EndsWith(".mp3", StringComparison.InvariantCultureIgnoreCase)) { if (!string.IsNullOrWhiteSpace(_audioPath)) { _audio = new NAudio.Wave.WaveOut(); _mp3Reader = new NAudio.Wave.Mp3FileReader(_audioPath); _audio.Init(_mp3Reader); } else if (_audioFile != null) { _audio = new NAudio.Wave.WaveOut(); _mp3Reader = new NAudio.Wave.Mp3FileReader(_audioFile); _audio.Init(_mp3Reader); } } else { Logger.Warn($"Unsupported audio file: {_audioFileName}"); return; } if (_waveReader != null || _mp3Reader != null) { _audio.PlaybackStopped += PreviewAudio_PlaybackStopped; _audio.Play(); } else { Sys.Message(new WMessage($"{ResourceHelper.Get(StringKey.FailedToPlayPreviewAudio)} {_audioFileName}")); } NotifyPropertyChanged(nameof(IsPlayingAudio)); } catch (Exception e) { Logger.Error(e); Sys.Message(new WMessage($"{ResourceHelper.Get(StringKey.FailedToPlayPreviewAudio)} {_audioFileName}: {e.Message}")); } } else { StopAudio(); } }