C# XNA音乐实时混音

C# XNA音乐实时混音,c#,xna,xna-4.0,mixing,background-music,C#,Xna,Xna 4.0,Mixing,Background Music,我创建了一个“格式”来存储音乐片段(前奏部分、重复部分、结束部分)和这些片段的时间信息(偏移量、评分长度),这样我就可以实时地将其混合起来,就像它是一首音乐一样,同时无限期地重复重复重复部分(可选)。通过这种方式,这些片段可以在播放下一个片段时存储衰减,而上一个片段则完成。(我已经用Java为此创建了一个播放器,并使用了Clip类。) 我想要这种格式,这样我就可以在游戏中播放无限长的音乐时提供有限长的音乐(用于自动存储塔功能) 然而,当我想在XNA中编写一个管理这种“格式”的类时,我注意到,没有

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

我想要这种格式,这样我就可以在游戏中播放无限长的音乐时提供有限长的音乐(用于自动存储塔功能)


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

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

在XACT之外,你的日子会更难过。我想不出用普通的C#/XNA代码做这件事的任何方法。XACT是为了弥补这个缺点而设计的,所以您应该使用它


至于XACT的未来,我认为它已经死了/即将死了(比如,将来可能不受支持)。至少DirectX版本是。我认为他们不会完全放弃这个想法,因为正如我所说的,我发现在XNA中,用这种控制级别来管理音频真的没有一种可比的方式。

这是令人伤心的,因为我计划将我的项目移植到C++中,所以我尽量尽可能少地创建资源的不同版本。但如果它真的正在消亡,这意味着,在未来的XNA中,他们必须计划为它添加高级逻辑。那我就去看XACT。谢谢不一定。他们可能只是让XACT保持原样,永远不会更新它,但也永远不会向XNA添加高级音频。不管怎样,它现在相当有能力。如果您将在DirectX移植到C++时使用,您可能想查看XANT版本的香草DirectX。我知道XNA XACT和DirectX XACT之间有一些可移植性,所以最终移动音频集成可能不会那么困难。我是一个跨平台的怪胎,我想将它移植到系统,DirectX不可用,所以这不是我的选择,但再次感谢。:)XNA不是非常跨平台的友好:(是的,我知道。这就是为什么我会把它移植到C++之后。但是C语言有一个非常有用的IDE,我可以计划这个程序的结构。我也想把它移植到Xbox,只是为了好玩。(这样我就可以告诉我的朋友,我为Xbox。