我是XNA的新手,正在尝试允许用户编辑他们加载的音频文件。在XNA中,是否可以选择一个时间范围(例如0:00 - 0:10)并将该部分“裁剪”为单独的实体?我猜,本质上,它只是简单地将数据复制到一个新文件。这可以使用XNA音频库来完成吗?如果可以,我应该查看哪些方法?谢谢
发布于 2010-07-13 04:19:26
如果您可以等待XNA 4,则可以对声音缓冲区进行低级访问,并且可以随心所欲地裁剪它。谷歌搜索"C# wav file“会显示大量的链接,这些链接将向你展示如何操作内存中的数据。
在此处下载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
发布于 2010-07-08 01:42:15
我看不出有什么方法可以做到你所说的,但是在寻找的过程中,我确实遇到了这个有用的Audio Overview和这个tutorial on using Microsoft's Cross-platform Audio Creation Tool (XACT)。由于您是XNA的新手,我希望这些链接能提供一些帮助。
问题似乎是,人们的期望是,音频是事先创建的,而不是您需要的游戏中创建的。当然,也不乏像Audacity、Aviary、waveosaur和Adobe SoundBooth这样的外部audio editors来帮助你在游戏之外进行编辑。或者,您也可以使用XNA / XACT库的回放功能来“模拟”裁剪,方法是将用户的时间帧选择存储为变量,然后只回放音频的相应部分。
我希望其中的一些对你有所帮助。
-gMale
发布于 2010-07-08 13:05:48
据我所知,XNA不包含任何简单地将音乐或提示对象写入文件的方法。
如果您希望用户在您的XNA游戏中编辑音频并将其保存为仍可使用的音频文件,则必须找到正确的文件格式并直接写入。但是,如果你只是想让他们在你的游戏中操作音频,我相信你还有另一个选择。
您可以序列化对象(以便在游戏之间保存状态)。您可以存储代表您对音频的操作的值(例如,开始和结束时间),并将它们与提示一起序列化。我必须承认,我从未尝试过序列化音频提示,但是您可以尝试将数据推入XNA内容管道,强制它在运行时为您创建一个XNB文件。
https://stackoverflow.com/questions/3172887
复制相似问题