3

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

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

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

更新

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

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

4

4 回答 4

5

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

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

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

于 2011-04-25T14:09:07.363 回答
5

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

参见维基百科上的平等气质

于 2011-04-25T14:12:48.547 回答
2

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

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

有多种系统可以确定其余音符落在对数线上的哪个位置。一种直接的方法是沿对数刻度几何划分半音(这是 xofon 的答案使用的方法),但可能有更好的方法。

于 2011-04-25T14:09:21.547 回答
0

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

于 2014-11-28T14:37:07.563 回答