将频率转换为键盘音符

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

要回复问题请先登录注册