public void TestFlatten()
{
EventWaitHandle waitHandle = new AutoResetEvent(false);
using (MemoryStream stream = new MemoryStream())
using (SpeechSynthesizer synth = new SpeechSynthesizer())
{
synth.SetOutputToWaveStream(stream);
synth.Speak("This is a test for flattening");
stream.Seek(0, SeekOrigin.Begin);
IWaveSource source = new WaveFileReader(stream);
Equalizer equalizer = Equalizer.Create10BandEqualizer(source);
equalizer.SampleFilters[0].SetGain(-9.6f);
equalizer.SampleFilters[1].SetGain(-9.6f);
equalizer.SampleFilters[2].SetGain(-9.6f);
equalizer.SampleFilters[3].SetGain(-3.9f);
equalizer.SampleFilters[4].SetGain(2.4f);
equalizer.SampleFilters[5].SetGain(11.1f);
equalizer.SampleFilters[6].SetGain(15.9f);
equalizer.SampleFilters[7].SetGain(15.9f);
equalizer.SampleFilters[8].SetGain(15.9f);
equalizer.SampleFilters[9].SetGain(16.7f);
var soundOut = new WasapiOut();
soundOut.Stopped += (s, e) => waitHandle.Set();
soundOut.Initialize(equalizer.ToWaveSource());
soundOut.Play();
waitHandle.WaitOne();
soundOut.Dispose();
equalizer.Dispose();
source.Dispose();
}
}