将频率转换为键盘音符

时间:2011-04-25 14:03:44

标签: audio frequency-analysis

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

我可以播放20到20K频率的cin wave来听声音。我的问题是如何将频率转换为键盘音符以创建虚拟键盘(或钢琴)?是否有某种方法来实现这一目标?

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

更新

我找到了以下网址:http://www.reverse-engineering.info/Audio/bwl_eq_info.pdf

包含八度音阶频率图表。我是否需要存储该列表,或者是否有可以替代使用的公式?

4 个答案:

答案 0 :(得分:5)

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

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

其中x是钢琴键盘中间A以上的半音数。

答案 1 :(得分:5)

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

另见equal temperament on Wikipedia

答案 2 :(得分:2)

首先,您需要了解A440。这是调整其他所有内容的“标准”音调。

将频率加倍以提高八度音程;将频率减半以降低八度音程。由此可以清楚地看出,音调是相对于频率的对数。

有多个系统可用于决定其余音符在对数线上的位置。一个直截了当的方法是divide the semitones geometrically along the logarithmic scale(这是xofon的答案使用的方法),但可能有更好的方法。

答案 3 :(得分:0)

完全参考P2F F2P转换功能。我用69而不是57。 http://musicdsp.org/showone.php?id=125