private static ISampleProvider ReadWaveFile(WaveFileReader reader, CompositeDisposable disposables) { disposables.Add(reader); // if resampling is needed, do it. if (reader.WaveFormat.SampleRate != SampleRate) { var resampler = new MediaFoundationResampler(reader, WaveFormat.CreateIeeeFloatWaveFormat(SampleRate, ChannelCount)); disposables.Add(resampler); return resampler.ToSampleProvider(); } return reader.ToSampleProvider(); }