是否有任何可以与.NET一起使用的声音SDK?

问题描述:

我正在研究C#XNA游戏,最流行的声音SDKs如MSS或FMOD主要与C/C++一起工作。是否有任何可以与.NET一起使用的声音SDK?

+0

[DirectSound](http://msdn.microsoft.com/zh-cn/library/bb318665.aspx)。此外,一些[相当不错的信息](http://*.com/questions/1084433/play-sound-in-net-using-generated-waveform-data) – 2010-05-10 18:23:31

+0

使用AudioEngine或SoundEffect类。 – 2010-05-10 18:27:25

NAudio适用于.NET,但不幸的是我相信它使大量的P/Invoke的使用。这意味着虽然您可以在Windows上使用XNA,但如果您需要在XBox等设备上运行代码,则可能会遇到问题。

其实它并没有那么差,因为你可以使用P/Invoke从csharp调用c/cpp库。
如果你留在窗口,你只需要创建(或找到)C#和你选择的库之间的图层。
还有小example如何从cpp dll调用函数。

+0

非常感谢! 目前我使用的是XNA的声音系统,但是选择专业的SDK说得更好。如果真的没有第三方软件开发工具包直接与C#一起工作,P/Invoke几乎是唯一的方法。 – Andrew 2010-05-11 17:35:43

+0

@Andrew,如果你满意这个答案,你可以在我的答案上签字V – Avram 2010-05-15 22:10:42

我同意上面的Avram,虽然我不会调用,但如果可以的话,我会生成一个使用tlbimp.exe的包装,您应该能够从您的一个fave开源C/C++ API中找到一个类型库然后在其上运行tlbimp.exe。

通过这种方式,您可以获得api的所有特权,而无需自己处理pinvoke /其他不安全调用的麻烦,包装程序可以处理所有这些麻烦。

...

我会然而质疑它是什么,你想要的音频,你不能这样做已经有一点whizzy使用核心.Net和XNA类,编码自己,如果我的事做疯狂我已经看到人们做一些事情,比如安装一个第三方发烧友应用程序,然后从这些应用程序中拉出dll,然后在那些方面进行调整(尽管很努力)。

如果你想避免pinvoke调用altogeher,你几乎已经狂放到XNA本身什么。

虽然有很多游戏引擎,但可能会包含一些您可以借用的漂亮音频类。

BASS作品与.net

你想用声音,你无法通过XNA的音频播放功能,实现干什么? http://msdn.microsoft.com/en-us/library/bb195038.aspx

请注意,如果您呼叫到外部音频API,您的代码平稳移植到XBox,WinPhone等的机会将大大减少。

嗯......你为什么要为.NET寻找合适的SDK? XNA已经包装了XACT并完全支持它在多个平台上。

Here's an MSDN documentation tutorial

有用于FMOD (FMOD.net)以及为BASS (nBASS) .NET包装。

我和两个人一起工作,我认为FMOD.net是两者中最好的。