Search code examples
c#audionaudio

How to play ISampleProvider


I want to convert an ISampleProvider to an WaveStream so I can be able to play it.How do I do this?

ISampleProvider mySamples = new mySampleProvider();
IWavePlayer mySpeaker = new WaveOut();

//Convert ISampleProvider to WaveStream Here

mySpeaker.Init(mySamples);
mySpeaker.Play();

Where mySampleProvider is a class that inherits from ISampleProvider but does not have WaveStream as a base class.


Solution

  • The latest NAudio has an extension method on IWavePlayer.Init so your code should compile. What version of NAudio are you using?

    Also, you don't need to pass a WaveStream to Init - all that is needed is an IWaveProvider.

    To convert yourself from ISampleProvider to IWaveProvider use SampleToWaveProvider or SampleToWaveProvider16 which also converts to 16 bit and clips at the same time.