【问题标题】:XNA Music mixing real-timeXNA 音乐实时混音
【发布时间】:2012-04-26 13:05:34
【问题描述】:

我创建了一个“格式”来存储音乐片段(前奏部分、重复部分、结尾部分)和这些片段的时间信息(偏移量、乐谱长度),这样我就可以实时混合它们,就好像它是一首音乐,同时无限期地重复重复的部分(可选)。这样,片段可以在播放下一个片段的位置存储衰减,而前一个片段已完成。 (我在 Java 中为此创建了一个播放器,并使用了 Clip 类。)

我想要这种格式,所以我可以提供有限长度的音乐(用于点唱机功能),同时我在游戏中播放无限长度的音乐。

但是,当我想在 XNA 中编写一个管理这种“格式”的类时,我注意到,没有明显的方法可以同时/重叠播放“歌曲”。我该怎么做/什么是最佳实践,而不是离开 XNA 框架? (我不想创建无限的播放列表。)

【问题讨论】:

    标签: c# xna xna-4.0 mixing background-music


    【解决方案1】:

    您可能想查看XACT。它应该随您的 XNA 副本一起安装。 XACT 是一款试听软件,可让您为游戏中的音频设置一些逻辑。它与 XNA 基本无缝集成。我认为,如果您研究 XACT 的一些高级功能,您也许可以让它完成您需要的工作。它非常强大,但有一个学习曲线。

    在 XACT 之外,您会遇到很多困难。我想不出任何方法可以在 vanilla C#/XNA 代码中做到这一点。不过,XACT 旨在弥补这个缺点,因此您应该使用它。

    至于 XACT 的未来,我相信它已经死了(就像,将来可能不会被支持)。至少 DirectX 版本是。不过,我不认为他们会完全放弃这个想法,因为就像我说的那样——在 XNA 中,我确实没有找到一种类似的方法来管理具有这种控制级别的音频。

    【讨论】:

    • 这很可悲,因为我打算将我的项目移植到 C++ 中,所以我试图创建尽可能少的不同版本的资源。但如果它真的要死了,那就意味着,在未来的 XNA 中,他们必须计划为其添加高级逻辑。然后我会研究 XACT。谢谢!
    • 不一定。他们可能只是让 XACT 保持原样并且永远不会更新它,但也永远不会向 XNA 添加高级音频。反正现在还算可以。如果您打算在移植到 C++ 时使用 DirectX,您可能需要查看适用于 vanilla DirectX 的 XACT 版本。我知道 XNA XACT 和 DirectX XACT 之间存在一定的可移植性,因此最终迁移您的音频集成可能不会那么困难。
    • 我是一个跨平台的怪胎,我想将它移植到 DirectX 不可用的系统,所以这不是我的选择,但再次感谢。 :)
    • XNA 对跨平台不太友好 :(
    • 是的,我知道。这就是为什么我之后会将它移植到 C++ 的原因。但是 C# 有一个非常有用的 IDE,我可以规划程序的结构。我也想把它移植到 Xbox,只是为了好玩。 (所以我可以告诉我的朋友我为 Xbox 编写了一个游戏。;P)
    猜你喜欢
    • 2016-02-08
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 2012-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多