我正在尝试编写音频应用程序。
我可以播放频率为 20 到 20K 的 cin 波来听到声音。我的问题是如何将频率转换为键盘音符以创建虚拟键盘(或钢琴)?是否有某种公式可以实现这一目标?
我使用的编程语言并不重要,因为我不想使用其他工具为我计算它。我想自己写,所以我需要了解它背后的数学。谢谢
更新
我找到了以下网址:http ://www.reverse-engineering.info/Audio/bwl_eq_info.pdf
包含八度频率图表。我需要存储该列表还是有可以替代使用的公式?
我正在尝试编写音频应用程序。
我可以播放频率为 20 到 20K 的 cin 波来听到声音。我的问题是如何将频率转换为键盘音符以创建虚拟键盘(或钢琴)?是否有某种公式可以实现这一目标?
我使用的编程语言并不重要,因为我不想使用其他工具为我计算它。我想自己写,所以我需要了解它背后的数学。谢谢
我找到了以下网址:http ://www.reverse-engineering.info/Audio/bwl_eq_info.pdf
包含八度频率图表。我需要存储该列表还是有可以替代使用的公式?
您可以将音调的频率计算为
f = 440 * exp(x*ln(2)/12)
其中 x 是钢琴键盘中间 A 以上的半音数。
有几种不同的方法可以调整乐器。最常用于钢琴的是 12 音等律,其公式可在此处找到。这个想法是每对相邻的音符具有相同的频率比。
参见维基百科上的平等气质。
首先,您需要了解A440。这是调整其他所有内容的“标准”音调。
将频率加倍以提高一个八度;将频率减半以降低一个八度。从中可以清楚地看出,音调相对于频率是对数的。
有多种系统可以确定其余音符落在对数线上的哪个位置。一种直接的方法是沿对数刻度几何划分半音(这是 xofon 的答案使用的方法),但可能有更好的方法。
P2F F2P转换功能的完整参考。我使用 69 而不是 57。 http://musicdsp.org/showone.php?id=125