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(); } }
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); } }