public OrderSound(string message, float Depth, float Frequency, float Feedback, float WetDryMix, float ReverbTime, float HighFrequencyRTRatio) { Thread theRT = new Thread(delegate() { { m_AudioStream = new MemoryStream(); using (SpeechSynthesizer speechSynthesizer = new SpeechSynthesizer()) { speechSynthesizer.SelectVoiceByHints(VoiceGender.Female, VoiceAge.Child); speechSynthesizer.Rate = Rate; speechSynthesizer.SetOutputToWaveStream(m_AudioStream); speechSynthesizer.SpeakCompleted += new EventHandler <SpeakCompletedEventArgs>(WriteCompleate); speechSynthesizer.SpeakAsync(message); state = SOUNDSTATE.FORMING; manualReset.WaitOne(); state = SOUNDSTATE.READY; m_AudioStream.Seek(0, SeekOrigin.Begin); flanger = new FlangerEffect(GetSoundSource(m_AudioStream)) { Depth = Depth, Frequency = Frequency, Feedback = Feedback, WetDryMix = WetDryMix }; rev = new DmoWavesReverbEffect(flanger.ToStereo()) { ReverbTime = ReverbTime, HighFrequencyRTRatio = HighFrequencyRTRatio }; rev.WriteToWaveStream(m_AudioStream2); soundOut = GetSoundOut(); soundOut.Initialize(GetSoundSource(m_AudioStream2)); soundOut.Volume = 1; soundOut.Stopped += DonePlaying; soundOut.Play(); state = SOUNDSTATE.PLAYING; manualReset.WaitOne(); } } }) { IsBackground = true }; theRT.Start(); }
public void Reverb() { var soundIn = new WasapiCapture(true, AudioClientShareMode.Shared, 10); soundIn.Initialize(); IWaveSource source = new SoundInSource(soundIn) { FillWithZeros = true }; PreLowpassCutoff = 110; InGain = 10; var eSource = new DmoWavesReverbEffect(source); soundIn.Start(); _soundOut = new WasapiOut(); _soundOut.Initialize(eSource); _soundOut.Play(); }
/// <summary> /// /// </summary> /// <param name="reverb"></param> public void ApplyReverb(float reverb) { if (_waveSource == null) { return; } if (reverb > 96) { reverb = 96; } var reverbPass = new DmoWavesReverbEffect(_waveSource) { ReverbTime = 1000, ReverbMix = -96 + reverb }; InitPlayback(reverbPass); }