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(); }