将频率转换为键盘音符

发布于 2024-11-03 09:01:35 字数 389 浏览 8 评论 0原文

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

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

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

更新

我发现以下网址: http://www.reverse-engineering.info/ Audio/bwl_eq_info.pdf

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

I'm trying to write an audio application.

I can play a cin wave from a frequency of 20 to 20K to hear sounds. my question is how can i convert frequencies to keyboard notes in order to create a virtual keyboard (or piano) ? is there some kind of formula to achieve this ?

The programming language that I use is not important because I don't want to use other tools that calculate it for me. i want to write it myself so i need to understand the math behind it. thanks

update

i found the following url: http://www.reverse-engineering.info/Audio/bwl_eq_info.pdf

that contains the octave prequency chart. do i need to store that list or is there a formula that can be used instead ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

诗化ㄋ丶相逢 2024-11-10 09:01:35

有几种不同的方法来调音乐器。钢琴最常用的是 12 音平均律,其公式可参见 在这里。这个想法是每对相邻音符具有相同的频率比。

另请参阅维基百科上的平等气质

There are a few different ways to tune instruments. The most commonly used for pianos is the 12 tone equal temperament, a formula for which can be found here. The idea is that each pair of adjacent notes has the same frequency ratio.

See also equal temperament on Wikipedia.

放血 2024-11-10 09:01:35

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

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

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

You can calculate frequency of a tone as

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

where x is number of semitones above A in the middle of the piano keyboard.

酒废 2024-11-10 09:01:35

首先,您需要了解A440。这是调整其他一切的“标准”音调。

将频率加倍以提高八度;将频率减半以降低一个八度。由此可以清楚地看出,音调相对于频率呈对数关系。

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

First, you need to know about A440. This is the "standard" pitch to tune everything else against.

Double the frequency to raise an octave; halve the frequency to drop an octave. It's clear from this that the tones are logarithmic relative to the frequencies.

There are multiple systems for deciding where on the logarithmic line the rest of the notes fall. A straightforward approach is to divide the semitones geometrically along the logarithmic scale (which is the approach xofon's answer uses), but there may be better ways.

紫南 2024-11-10 09:01:35

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

full reference of P2F F2P conversion functions. i use 69 instead of 57 though.
http://musicdsp.org/showone.php?id=125

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文