嗨,我是音频相关编码方面的菜鸟,我正在研究音高跟踪 DLL,我将使用它来尝试创建一种开源版本的视频游戏 Rocksmith 作为学习体验。
到目前为止,我已经设法让 FFT 工作,因此我可以检测音高频率 (Hz),然后通过使用算法和下表我可以设法确定八度音阶(第 2 到第 6)和音符(C 到 B)演奏音符。
下一步是检测琴弦,以便确定音品。
我一直在考虑它,理论上我可以使用它,我会知道用户何时演奏正确的音符,但游戏可能是“Hack”,因为仅使用 Hz,游戏无法检测到音符以正确的字符串播放。例如第 5 弦 + 1 品 = C4 261.63Hz等于6 弦 + 5 品 = C4 261.63Hz。
让用户在错误的字符串中弹奏音符并使其正确的可能性很低,但我认为知道字符串真的很好,这样我可以在用户弹奏错误的字符串时向用户提供一些错误反馈(比如你应该向上或向下移动一个字符串)。
你知道我能做些什么来检测字符串吗?提前致谢 :)
[编辑]
我们使用的吉他和琴弦会影响音色,因此分析音色似乎不是检测琴弦的简单方法:
“吉他音色的变化是由许多因素造成的,包括拾音器设计和位置、吉他的自然共振和阻尼,由于使用的木材(这是一种不同的木材!)以及它的结构和形状,你的弦的规格和年龄,你的演奏技巧,你在哪里按弦和拨弦,等等。”