Beispiel #1
0
        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;
    }