雑記帳 (Notebook)


周波数・セント計算のタネ (その16)

周波数の計算には その15の x(1から88まで変化)を使います。...(1)(以下 計算式の番号です。)

y = x

その時の yは

y = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13...

次にオクターブ(12)で 1つ増加する様にします。...(2)

y = x / 12
y = 0.083, 0.167, 0.250, 0.333, 0.417, 0.500, 0.583, 0.667, 0.750, 0.833, 0.917, 1.000, 1.083...

yは12番目で1.0, 24番目で 2.0...の様に変化します。
それを 49番目で 0になる様にします。...(3)

y = (x - 49) / 12

ここまでは同じです。
オクターブ(12)で 周波数は2倍になるので 傾きとして 2とします。(^ は指数を表します。)...(4)

y = 2 ^ (x - 49) / 12

yは49番目で 2^0 = 1, 61番目で 2^1 = 2...の様に変化します。

49番目の基準値を 440[Hz]とします。...(5)

y = 440 X 2 ^ (x - 49) / 12

yは49番目で 440 X 1 = 440, 61番目で 440 X 2 = 880 となります。

そこでxにキー番号1〜88を入れる事で 対応する周波数が得られます。

y = 440 X 2 ^ (52 - 49) / 12 = 523.2511
y = 440 X 2 ^ (1 - 49) / 12 = 27.50
y = 440 X 2 ^ (88 - 49) / 12 = 4186.00904480958 ...

セント値は オクターブ(周波数が2倍)で 1200[cent]ですので、では1.5倍の時は

2 : 1200 = 1.5 : x
2 / 1200 = 1.5 / x
x X 2 / 1200 = 1.5
x X 2 = 1200 X 1.5
x = (1200 X 1.5)/ 2

と思ってしまいます。

4倍の時は x = 1200 X 4/2で 2400, OK。
2倍の時は x = 1200 X 2/2で 1200, OK。
1.5倍の時は x = 1200 X 1.5/2で 900, ?。
1/2の時は x = 1200 X 0.5/2で 300, あれ?

右の部分で 2倍の時は 2/2 = 1, 4倍の時は 4/2 = 2でいいのですが 1/2の時は

(1/2)/2 = 1/4 = 0.25,

1/4の時も(1/4)/2 = 1/8 = 0.125となってしまいます。
1/2では -1に 1/4では -2になって欲しい分けです。
2^2 = 4, 2^1 = 2, 2^0 = 1, 2^(-1) = 0.5, 2^(-2) = 0.25...

その様な数があるのでしょうか?...あります。

指数は 1, 2, 3...と増えて行く時に元の数を倍にして行きますが 対数(log)はその逆に

log(100) = 2, log(10) = 1, log(1) = 0, log(0.1) = -1, log(0.01) = -2...

その指数を表します。

そこで 2の指数を表すには 2を底とした対数が使えます。

log_2(4) = 2, log_2(2) = 1, log_2(1) = 0, log_2(1/2) = -1, log_2(1/4) = -2...

従って 1.5倍(3/2)の時は ...(6)

x = 1200 X log_2(3/2) = 701.96 純正5度のセント値が表され 1.333倍(4/3)の時は x = 1200 X log_2(4/3) = 498.04 純正4度のセント値が表されます。

例えば 440[Hz]に対して 442[Hz]は何セント?

x = 1200 X log_2(442/440) = 7.8514

となります。

セント値から周波数を得るのは、今度は逆に 1200の時は2倍に、 -1200の時は 1/2になる様な数があればいいのですが...あります。

2^(2400/1200) = 4, 2^(1200/1200) = 2, 2^(0/1200) = 1, 2^(-1200/1200) = 0.5, 2^(-2400/1200) = 0.025...

上記の様に 2の指数を使います。
例えば 440[Hz]に対して 7.8514[cent]プラスの時は ...(7)

x = 440 X 2 ^ (7.8514 / 1200) = 442[Hz]

となります。