private void WaveOutput_PlaybackStopped(object sender, StoppedEventArgs e) { if (PassingThrough) { WaveOutput.Play(); } }
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)); }
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) { } }
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) { } }
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); //} }