Rem*_*sen 8 c# audio fft pitch-tracking guitar
嗨,我是音频相关编码的菜鸟,我正在使用音调跟踪DLL,我将尝试创建一种开源版本的视频游戏Rocksmith作为学习体验.
到目前为止,我已经设法使FFT工作,所以我可以通过使用算法检测音高频率(Hz),下表我可以设法确定八度音程(第2到第6)和音符(C到B)打了便条.
下一步是检测字符串,以便我可以确定音品.

我一直在考虑它,理论上我可以使用它,我会知道用户何时正在播放正确的音符,但游戏可能是"黑客",因为只使用Hz,游戏无法检测到音符以正确的字符串播放.例如,第5弦+第1音品= C4 261.63Hz等于第6弦+第5音品= C4 261.63Hz.
让用户在错误的字符串中播放音符并将其设置为正确的可能性很低,但我认为知道该字符串真的很好,所以当他们播放错误的字符串时我可以向用户提供一些错误反馈(如你应该上弦或下线).
你知道我能做些什么来检测字符串吗?提前致谢 :)
[编辑]
我们使用的吉他和琴弦会影响音色,因此分析音色似乎不是检测琴弦的简单方法:
"吉他音色的变化是由拾音器的设计和位置,吉他的自然共振和阻尼产生的,因为使用的木材(这是一种不同的木材!)及其结构和形状,你的琴弦的规格和年龄,你的演奏技巧,你烦恼和拔弦的地方,等等."
由于许多潜在的强泛音,简单的 FFT 峰值估计器并不是一个好的吉他音高检测器/估计器。存在更强大的音调估计算法(搜索 stackoverflow 和 DSP.stackexchange)。但是,如果您要求演奏者在开始游戏之前预先表征其个人乐器上的每根琴弦(无论是开弦还是按弦),这些表征的 FFT 指纹可能能够区分某些吉他上不同琴弦上演奏的相同音符。较粗的琴弦在某些较高泛音中会发出略有不同的能量比例,以及不同数量的轻微不和谐音。
| 归档时间: |
|
| 查看次数: |
2603 次 |
| 最近记录: |