6

不一定需要实时,但是我正在为我最后一年的项目创建一个游戏,我希望使用音频的力量来创建仅基于正在播放的音乐曲目的动态关卡。我的目标是使用 playstation mobile 和 C# 为 PS Vita 创建这个游戏,但如果我愿意,我可以切换到 C++ 和 PSP。

我可以使用 WAV 文件,并希望提取波形的幅度,并从这些数据中计算其他特征,例如平均频率和近似 BPM,以创建一个电平。

我对尝试使用这些原始数据没有任何疑虑,我只想知道一种方法,我可以首先实际获取这些信息。如果我可以提取样本并断言这些样本的不同特征,我可以存储它们并计算出响度、音高等的变化来创建音符等。

我正在使用 C#,但如果可能的话,我可以使用 p/invoke 或将我的项目切换到另一个使用 C++ 而不是 C# 的设备。

我在这里有点恐慌,因为我真的有点难过。

非常感谢你们。

4

3 回答 3

4

不幸的是,我认为您无法使用 C# 来执行此操作 - AFAIK,没有针对它的 JIT 编译器。我记得读过一些关于 Mono 的东西,它可以与 C# 一起使用,但我现在不确定。

那就是说-我会使用c ++。如果你这样做,你可以使用大量的音频分析库,比如 CLAM (http://clam-project.org/)。

不要惊慌(想象一下大而友好的信件。)一步一步地设想项目的必要部分,一个一个地解决,你很快就会完成。=)

于 2012-12-29T18:29:02.167 回答
3

您在此处描述的问题是音乐/音频特征提取之一,并且存在大量您可以借鉴的学术工作。另一个有用的搜索艺术术语是音乐信息检索 (MIR)

研究人员试图从录音中检索到的“特征”列表是庞大而多样的,从诸如音高和键等确定性事物到诸如“能量”之类的情感特征。

其中大多数结果比您想象的要困难,通常只有大约 60-70% 的准确率 - 尽管对于您的要求,这可能就足够了。

一个好的入口点可能是下载Sonic Visualiser,其中存在大量特征提取插件,并且是开源的。你至少会感觉到什么是可能的。

更新:另一个有用的艺术术语是起始检测- 这通常用于描述节拍检测算法。

于 2012-12-29T20:50:56.863 回答
1

Aubio是一个 C/C++ 库,可以进行音高跟踪、起始检测和 bpm 跟踪等。

至于“提取波形的幅度”,波形就是幅度,即您可以每n个样本选择绝对值最大的音频样本,并使用该值来进行可视化的“幅度”部分。

这里有一些代码可以帮助您开始在 C# 中读取 WAVE 数据。

以下是有关为FFTW库编写 C# 包装器的一些信息。

于 2012-12-29T21:56:38.753 回答