Exemple #1
0
        private static void PlayAudio()
        {
            var fileReader = new WaveFileReader("test.wav");
            var paOut      = new PulseAudioConnectionParameters(null, "MumbleSharpDemo", null, "Playback");
            var waveOut    = new WaveOutPulse(paOut);

            waveOut.Init(fileReader);
            waveOut.PlaybackStopped += (sender, args) => { };
            waveOut.Play();
            using (var src = new CancellationTokenSource())
            {
                src.Token.WaitHandle.WaitOne();
            }
        }
Exemple #2
0
        private static void Loopback()
        {
            var     _playBuffer = new BufferedWaveProvider(new WaveFormat(48000, 16, 1));
            var     paIn        = new PulseAudioConnectionParameters(null, "MumbleSharpDemo", null, "Record");
            IWaveIn _waveIn     = new WaveInEventPulse(paIn)
            {
                BufferMilliseconds = 50,
                WaveFormat         = new WaveFormat(48000, 16, 1)
            };

            _waveIn.DataAvailable += _waveIn_DataAvailable;

            var paOut    = new PulseAudioConnectionParameters(null, "MumbleSharpDemo", null, "Playback");
            var _waveOut = new WaveOutPulse(paOut);

            _waveOut.Init(_playBuffer);


            var   _startTime = DateTime.Now;
            ulong _bytesSent = 0;

            _waveOut.Play();
            _waveIn.StartRecording();

            var timer = new System.Timers.Timer {
                Interval = 1000
            };

            timer.Elapsed += _timer_Tick;

            timer.Start();
            using (var src = new CancellationTokenSource())
            {
                src.Token.WaitHandle.WaitOne();
            }

            void _timer_Tick(object sender, EventArgs e)
            {
                var timeDiff       = DateTime.Now - _startTime;
                var bytesPerSecond = _bytesSent / timeDiff.TotalSeconds;

                Console.WriteLine("{0} Bps", bytesPerSecond);
            }

            void _waveIn_DataAvailable(object sender, WaveInEventArgs e)
            {
                _playBuffer.AddSamples(e.Buffer, 0, e.BytesRecorded);
            }
        }