public AudioCapture(int sampleRate, int sampleSize) { this.sampleRate = sampleRate; this.sampleSize = sampleSize; if (sampleSize <= 0) { throw new ArgumentException("Sample size must be > 0, instead it is " + sampleSize); } resSamples = new float[this.sampleSize]; var ayy = new MMDeviceEnumerator(); // This uses the wasapi api to get any sound data played by the computer capture = new WasapiCapture(false, AudioClientShareMode.Shared); capture.Device = ayy.GetDefaultAudioEndpoint(DataFlow.Capture, Role.Multimedia); capture.Initialize(); capture.DataAvailable += Capture_DataAvailable; IWaveSource source = new SoundInSource(capture); dataSource = new PureDataSource(new WaveFormat(sampleRate, 8, 1), source.ToSampleSource()); dataSource.OnDataRead += DataSource_OnDataRead; finalSource = dataSource.ToWaveSource(); capture.Start(); }
public void BeginCapture(MMDevice device1, MMDevice device2) { // This uses the wasapi api to get any sound data played by the computer capture = new WasapiLoopbackCapture(); capture.Device = device1; capture.Initialize(); actualSource = new SoundInSource(capture); dataSource = new PureDataSource(new WaveFormat(device2.DeviceFormat.SampleRate, 8, 2), actualSource.ToSampleSource()); capture.Start(); games = new WasapiOut(); games.Device = device2; games.Initialize(dataSource.ToWaveSource()); isSetup = true; }