Audio 将频率转换为键盘音符

Audio 将频率转换为键盘音符,audio,frequency-analysis,Audio,Frequency Analysis,我正在尝试编写一个音频应用程序 我可以播放频率为20到20K的cin波来听声音。我的问题是如何将频率转换为键盘音符,以创建虚拟键盘(或钢琴)?有什么办法可以做到这一点吗 我使用的编程语言并不重要,因为我不想使用其他工具为我计算它。我想自己写,所以我需要理解它背后的数学原理。谢谢 更新 我找到了以下url: 包含倍频程频率表的。我是否需要存储该列表,或者是否有一个公式可以替代使用?您可以将音调的频率计算为 f=440*exp(x*ln(2)/12) X是钢琴键盘中部A以上半音的数量。 首先,你需

我正在尝试编写一个音频应用程序

我可以播放频率为20到20K的cin波来听声音。我的问题是如何将频率转换为键盘音符,以创建虚拟键盘(或钢琴)?有什么办法可以做到这一点吗

我使用的编程语言并不重要,因为我不想使用其他工具为我计算它。我想自己写,所以我需要理解它背后的数学原理。谢谢

更新 我找到了以下url:


包含倍频程频率表的。我是否需要存储该列表,或者是否有一个公式可以替代使用?

您可以将音调的频率计算为

f=440*exp(x*ln(2)/12)


X是钢琴键盘中部A以上半音的数量。

首先,你需要知道。这是调整其他一切的“标准”音高

将频率提高一倍以提高八度;将频率减半以降低八度。很明显,音调相对于频率是对数的


有多种系统可用于确定其余音符落在对数线上的位置。一个简单的方法是(这是xofon的答案所使用的方法),但可能有更好的方法。

有几种不同的方法来调整乐器。最常用于钢琴的是12音等音律,可以找到一个公式。其思想是,每对相邻的音符具有相同的频率比


另请参见。

P2F F2P转换函数的完整参考。我用69而不是57。

+1提到“平等气质”并不是“唯一”的系统。如果你这样做是出于音乐背景,你肯定需要使用GLUT(通用查找表)来对比“均匀气质”音阶,否则它会在不同的键中听起来不协调。@J_Y_C:你是指狼的音程吗?这似乎影响了平均音阶的气质,而不是12音阶相等的气质。事实上,我不得不问同样的问题。所以,据我所知(而且我不是音乐理论专家),meantone气质对于某些键来说听起来很棒,而对于其他键来说则很糟糕(由于wolf音程)。对于所有键来说,相同的气质听起来有点可怕,但消除了wolf间隔。f=440*(2**(x/12))