Пример #1
0
 private void WaveOutput_PlaybackStopped(object sender, StoppedEventArgs e)
 {
     if (PassingThrough)
     {
         WaveOutput.Play();
     }
 }
Пример #2
0
        public static IPlayableAudio LoadPlayableAudio(Enum25 enum250, GenericAudioStream audioStream)
        {
            switch (enum250)
            {
            case Enum25.Const1:
                return(new WaveOutput(audioStream));

            case Enum25.Const2:
                return(new Mp3Output(audioStream));

            case Enum25.Const3:
                return(new WaveOutput(audioStream));

            case Enum25.Const5:
                return(new WaveOutput(audioStream));
            }
            var flag     = Type.GetType("Mono.Runtime") != null;
            var platform = (int)Environment.OSVersion.Platform;

            switch (platform)
            {
            case 0:
            case 1:
            case 2:
            case 3:
            {
                IPlayableAudio result;
                try
                {
                    result = new WaveOutput(audioStream);
                }
                catch
                {
                    result = new OggOutput(audioStream);
                }
                return(result);
            }

            case 4:
            case 6:
                goto IL_F4;

            case 5:
                break;

            default:
                if (platform == 128)
                {
                    goto IL_F4;
                }
                break;
            }
            throw new PlatformNotSupportedException(string.Concat(flag ? "" : "Not ", "Running Mono. PlatformID: ",
                                                                  (int)Environment.OSVersion.Platform, " | ", Environment.OSVersion.Platform));
IL_F4:
            return(new Class117(audioStream));
        }
Пример #3
0
        public void Dispose()
        {
            try
            {
                if (WaveSource != null)
                {
                    WaveSource.StopRecording();
                    WaveSource.Dispose();
                }

                if (WaveOutput != null)
                {
                    WaveOutput.Stop();
                    WaveOutput.Dispose();
                }

                if (DirectSoundOutput != null)
                {
                    DirectSoundOutput.Stop();
                    DirectSoundOutput.Dispose();
                }
            } catch (Exception) { }
        }
Пример #4
0
 public void StartPassingThrough()
 {
     if (DateTime.Now <= LastPauseOrStart.AddMilliseconds(500))
     {
         return;
     }
     LastPauseOrStart = DateTime.Now;
     try
     {
         WaveSource.StartRecording();
         if (WaveOutput != null)
         {
             WaveOutput.Play();
         }
         if (DirectSoundOutput != null)
         {
             DirectSoundOutput.Play();
         }
         PassingThrough = true;
     } catch (Exception)
     {
     }
 }
Пример #5
0
        public AudioPassthrough(HotkeyAudioDevice input, HotkeyAudioDevice output, AutoTuneSettings autoTuneSettings)
        {
            LastPauseOrStart  = new DateTime(2000, 1, 1);
            _autoTuneSettings = autoTuneSettings;

            _waveSource             = new WaveIn();
            WaveSource.DeviceNumber = input.AudioDeviceId;
            //WaveSource.WaveFormat = new WaveFormat();
            WaveSource.WaveFormat        = WaveFormat.CreateIeeeFloatWaveFormat(44100, 1);
            WaveSource.RecordingStopped += WaveSource_RecordingStopped;
            WaveSource.DataAvailable    += WaveSource_DataAvailable;
            //WaveSource.BufferMilliseconds = 300;
            //_waveInProvider = new JoeWaveInProvider(WaveSource);


            //StereoToMonoProvider16 stereoToMonoprovider = new StereoToMonoProvider16(_waveInProvider);

            //_wave16ToFloatProvider = new Wave16ToFloatProvider(stereoToMonoprovider);
            //var test3 = ;
            MemoryStream = new MemoryStream(new byte[8192]);

            var rawSourceStream = new RawSourceWaveStream(MemoryStream, WaveFormat.CreateIeeeFloatWaveFormat(44100, 1));

            //_autoTuner = new AutoTuneWaveProvider(_wave16ToFloatProvider, AutoTuneSettings);

            _autoTuner = new AutoTuneWaveProvider(rawSourceStream, AutoTuneSettings);

            _waveFloatTo16Provider = new WaveFloatTo16Provider(_autoTuner);

            _monoToStereoProvider = new MonoToStereoProvider16(_waveFloatTo16Provider);

            //_monoToStereoProvider = new MonoToStereoProvider16(_autoTuner);

            _waveOutput                 = new WaveOutEvent();
            WaveOutput.DeviceNumber     = output.AudioDeviceId;
            WaveOutput.PlaybackStopped += WaveOutput_PlaybackStopped;
            WaveOutput.Init(_monoToStereoProvider);


            //JoeWaveOutEvent joeWaveOut = new JoeWaveOutEvent();
            //joeWaveOut.DeviceNumber = output.AudioDeviceId;
            //joeWaveOut.DesiredLatency = 329;
            //joeWaveOut.NumberOfBuffers = 7;
            //joeWaveOut.Init(_monoToStereoProvider);

            //DirectSoundDeviceInfo foundDeviceInfo = null;
            //foreach (DirectSoundDeviceInfo deviceInfo in DirectSoundOut.Devices)
            //{
            //    if (deviceInfo.Description.Contains(output.AudioDeviceName))
            //    {
            //        foundDeviceInfo = deviceInfo;
            //        break;
            //    }
            //}

            //if (foundDeviceInfo != null)
            //{
            //    DirectSoundOutput = new DirectSoundOut(foundDeviceInfo.Guid, 300);
            //    DirectSoundOutput.PlaybackStopped += DirectSoundOutput_PlaybackStopped;
            //    DirectSoundOutput.Init(_monoToStereoProvider);
            //}
        }