在.NET中播放.WAV文件

我正在尝试编写一个SAMPLER程序,其中每个键都有不同的声音(WAV文件)。

有人可以向我解释或给我一个解释链接,我可以学习如何播放WAV文件?

如果重要,我正在使用Microsoft Visual C#并使用WinForms。

SoundPlayer simpleSound = new SoundPlayer(strAudioFilePath); simpleSound.Play(); 

使用fmod,这是整个宇宙中最好的声音库

幸运的是,它们似乎为您可以想象的最佳音频API提供了一个C#包装器,并且您不必更改一行代码就可以使您的代码在playstation或xbox上运行,或者开发人员几乎无所谓(您在晚上报告错误,上床睡觉,并且在您醒来时可以使用更正的版本)文档是可读的,可理解的,以及SDK中的大量示例,这使得提供教程无用,因为文档是非常完美

使用FMOD播放wav只需5行代码,只需4行就可以应用效果,同时将播放的平衡和音量链接到3d引擎(处理consc点和音频源之间的交叉点,4行….

如果你想(使用C#)做声音, – > FMOD。

 SoundPlayer simpleSound = new SoundPlayer(strAudioFilePath); simpleSound.PlaySync(); 

因为声音是异步播放的。

这个基于控制台的解决方案使用LINQPad(因此.Dump()扩展方法调用)和NAudio (你会注意到我在几个类上使用完整的命名空间只是为了澄清)。 要正确设置,您只需从http://share.linqpad.net/d7tli8.linq下载代码段(我从NuGet添加了NAudio)。

要运行,请在linqpad中打开,将wavFilePath的值设置为本地波形文件路径,然后按F5。 Play是异步的,所以我们做一个Console.ReadLine ,等到它完成。

 string wavFilePath = @"TODO"; var reader = new NAudio.Wave.AudioFileReader(wavFilePath); reader.Dump("AudioFileReader"); var sampleProvider = reader.ToSampleProvider().Dump("sample provider"); NAudio.Wave.WaveOut.DeviceCount.Dump("num waveout on comp"); var outputDeviceInfo = WaveOut.GetCapabilities(0).Dump(); var outputter = new WaveOut() { DesiredLatency = 5000 //arbitrary but <1k is choppy and >1e5 errors , NumberOfBuffers = 1 // 1,2,4 all work... , DeviceNumber = 0 }.Dump(); outputter.Init(reader); outputter.Play(); // async Console.Read(); outputter.Stop(); 

这就是所有.Dump调用的输出在我的机器上的样子,以防你想知道:

audiofilereader内容

sampleprovider和waveout信息