Esempio n. 1
0
        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));
            }
        }
Esempio n. 3
0
 private void StopAudio()
 {
     if (_audio != null)
     {
         _audio.Stop();
         _audio = null;
     }
 }
Esempio n. 4
0
        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();
            }
        }
Esempio n. 5
0
        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();
            }
        }