我是 XNA 的新手,正在尝试允许用户编辑他们加载的音频文件。在 XNA 中,是否可以选择时间范围(例如 0:00 - 0:10)并“裁剪”部分作为一个单独的实体?我想,本质上,它只是将数据复制到一个新文件中。这可以使用 XNA Audio 库来完成吗?如果可以,我应该查看哪些方法?谢谢
3 回答
我看不到按照您所说的做的方法,但在寻找的过程中,我确实遇到了这个有用的音频概述和这个关于使用 Microsoft 的跨平台音频创建工具 (XACT) 的教程。由于您是 XNA 的新手,我希望这些链接能提供一些帮助。
问题似乎是期望音频是预先创建的,而不是根据您的需要在游戏中创建的。当然,不乏诸如Audacity、Aviary、waveosaur和Adobe SoundBooth等外部音频编辑器来帮助在游戏之外进行编辑。或者,您可以使用 XNA / XACT 库的播放功能通过将用户的时间范围选择存储为变量并稍后仅播放音频的相应部分来“模拟”裁剪。
我希望其中一些在某些方面有所帮助。
-g男性
据我所知,XNA 不包含任何将音乐或提示对象简单地写入文件的方法。
如果您希望用户在您的 XNA 游戏中编辑音频并将其保存为仍然可用的音频文件,您必须找到正确的文件格式并直接写入。但是,如果您只是想让他们操纵音频以在您的游戏中使用,我相信您还有另一种选择。
您可以序列化对象(以便在游戏之间保存您的状态)。您可以存储表示您对音频的操作的值(例如,开始和结束时间),并将它们与提示一起序列化。我必须承认我从未尝试过序列化音频提示,但您可以尝试将数据推送到 XNA 内容管道中,强制它在运行时为您创建 XNB 文件。
如果您可以等待 XNA 4,则可以对声音缓冲区进行低级访问,您可以随意裁剪它。谷歌搜索“C# wav 文件”会显示大量链接,这些链接将向您展示如何操作内存中的数据。
在此处下载 XNA 4.0 测试版:
http://creators.xna.com/en-US/launchcenter
这是一个解释如何使用新 API 的链接:
https://blogs.msdn.com/b/ashtat/archive/2010/06/03/soundeffect-creation-in-xna-game-studio-4.aspx