読者です 読者をやめる 読者になる 読者になる

What we talk about when we talk about Technology

技術について語ります。

音の高さと周波数の関係

CoreAudio

人が感じる音の高さが1オクターブ上がるのに、
周波数は2倍になる必要があり、線形ではありません。
よって音の高さをUI部品等で変換するときは、そのことを考慮し、
変化量を音の高さと線形に対応させなければならないでしょう。

音の高さと周波数は以下の関係で書くことができます。

f = fs * 2 ^ (L - Ls)

f: 周波数
L: 音程
fs: 基準の周波数
Ls: 基準の音程

逆の関係は、
L = log2(f / fs) + Ls

基準の周波数を400Hz(ラの音)、基準の音程を0とすると、
人の可聴域(20Hz~20000Hz)は、

20Hz : L = log2(20 / 440) = -4.4594
20000Hz: L = log2(20000 / 440) = 5.5064

となるので、UIを-4.46~5.506で動かせるように設定すればよいということになります。
逆にLsを-4.4594ととると、20Hzのときの値が0となります。
このときの20000Hzの値は

L = 5.5064 + 4.4594 = 9.9654

となります。