我正在编写一个小的合成器应用程序,我通过点击一条线的长度来输入音符。现在,音阶是对数的,我的问题是,如何将鼠标的位置转换为相关的音高。此时,我计算了一个比率。它在某种程度上是有效的,但我得到了广泛的紧密排列的低音,在远端我只用几个像素转换成多个八度。基本上我想,如果我点击条的中心(1/2),频率是双倍的,1/4是频率的另一个双倍。etc…我在这里太愚蠢了!
发布于 2011-09-27 03:38:20
音符的频率确实是对数的。当你提高一个八度时,频率加倍,当你降低一个八度时,频率减半。标准的A正好是440赫兹。
因此,您需要一个幂律来将位置转换为频率。类似于f*2.0^(x/w),其中w是倍频程的宽度,f是比例因子,^是幂运算符。
https://stackoverflow.com/questions/7560104
复制相似问题