我正在尝试编写音频应用程序。
我可以播放20到20K频率的cin wave来听声音。我的问题是如何将频率转换为键盘音符以创建虚拟键盘(或钢琴)?是否有某种方法来实现这一目标?
我使用的编程语言并不重要,因为我不想使用其他工具来为我计算它。我想自己写,所以我需要了解它背后的数学。感谢
我找到了以下网址:http://www.reverse-engineering.info/Audio/bwl_eq_info.pdf
包含八度音阶频率图表。我是否需要存储该列表,或者是否有可以替代使用的公式?
答案 0 :(得分:5)
您可以将音调的频率计算为
f = 440 * exp(x * ln(2)/ 12)
其中x是钢琴键盘中间A以上的半音数。
答案 1 :(得分:5)
调整乐器有几种不同的方法。最常用的钢琴是12音平等气质,可以找到一个公式here。这个想法是每对相邻音符具有相同的频率比。
答案 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