1
我正在編程一個小型合成器應用程序,並通過點擊一個小節的長度來輸入音符。現在,音階是對數的,我的問題是,如何將鼠標的位置轉換爲相關音高。目前我計算一個比率。它的工作原理雖然簡單,但我可以得到各種各樣緊湊的低音,而在最遠端,我只需要將幾個像素轉換爲多個八度音階。 基本上我想要的是,如果我點擊酒吧的中心(1/2),頻率翻倍,而1/4是頻率的另一倍。等等... 我在這裏很笨!對數刻度
我正在編程一個小型合成器應用程序,並通過點擊一個小節的長度來輸入音符。現在,音階是對數的,我的問題是,如何將鼠標的位置轉換爲相關音高。目前我計算一個比率。它的工作原理雖然簡單,但我可以得到各種各樣緊湊的低音,而在最遠端,我只需要將幾個像素轉換爲多個八度音階。 基本上我想要的是,如果我點擊酒吧的中心(1/2),頻率翻倍,而1/4是頻率的另一倍。等等... 我在這裏很笨!對數刻度
音符的頻率的確是對數的。當你走高一個八度時,頻率加倍,而當你降低一個八度時,頻率加倍。標準A正好是440Hz。
所以,你需要一個冪律將位置轉換爲頻率。類似於f * 2.0 ^(x/w)其中w是八度音的寬度,f是比例因子,^是功率運算符。
另外,還有很多其他的常用調音。有關鋼琴,請參閱拉伸調音(http://en.wikipedia.org/wiki/Stretched_tuning)。另請參閱:http://en.wikipedia.org/wiki/Piano_tuning#Temperament_and_beating – Brad
您是否在意詳細說明實施?我在c#編程,但一般的僞語法是好的... :)感謝您的迴應! – mickey
八度的寬度是不是總是2的因子?上面的x會是什麼? – mickey