変更履歴:
v0.1.1['14/02/09]
HTML5版を追加しました。
cssファイルを追加しました。
v0.1['10/09/13]
「インハーモニシティの曲線から調律曲線を求める (Inharmonicity curve to Tuning Curve)」では 傾き(Grade)を変えながらキー毎の`うなり'を見てみましたが それを数値計算ソフト「Octave」で行うと だいたい以下のようになります。
参照〉ピアノのための初級 Octaveプログラミング講座 (Octave)
function dispGrade(keys, inte)
global ML Pitch;
ML = log10(2)/1200;
Pitch = 440;
KB = 88;
woundw = 28; # 巻線数
inhar = 0.55; # A49のインハーモニシティ値
grade = -0.15:0.01:0.15;
multi = 1:3; # 倍音の範囲
ratio = Interval(inte);
ihs = []; # 先にgradeを作っておきます
for n = grade
ihs = [ihs; makeGrade(woundw, inhar, n)];
end
for k = keys
khi = k+inte;
if (khi > KB)
break;
end
ihlow = ihs(:,k)'; # 並び方を変えます
ihhi = ihs(:,khi)'; # 同上
be = [];
for m = multi
ra = [ratio(1:2)*m, inte];
bes = getGBeat(k, ihlow, ihhi, ra);
be = [be; bes];
end
plot(grade, be, '-@;;')
hold on
end
hold off
xlabel('Grade')
ylabel('beats')
end
function ih = makeGrade(ww, a49, gr)
x = [1:88]-ww;
if (gr < 0)
ih = 1./cosh(gr.*x);
else
ih = cosh(gr.*x);
end
df = a49/ih(49);
ih = ih.*df;
end
function beat = getGBeat(key, ihl, ihh, ratio)
freq1 = getGFrequ(key, ihl, ratio(1));
freq2 = getGFrequ(key+ratio(3), ihh, ratio(2));
beat = freq2-freq1;
end
function ifreq = getGFrequ(key, ih, multi)
freq = getFrequ(key).*multi;
ifreq = ctof(freq, calcInha(ih, multi));
end
function ih = calcInha(inh, multi)
ih = inh*multi*multi;
end
インハーモニシティの曲線の傾き(Grade)を -0.15〜0.15まで変化させるのでした。
試しに A37のオクターブを見てみます。(3倍音までです)
インハーモニシティ値・2:1の周波数・周波数差を取り出してみます。
傾き(Grade): A37 Inha.: A49 Inha.: A37x2 [Hz]: A49 [Hz]: 周波数差
------------------------------------------------------------------
-0.15 3.1235 0.55 443.19 440.14 -3.0471
-0.14 2.7389 0.55 442.79 440.14 -2.6535
-0.13 2.3975 0.55 442.44 440.14 -2.3043
-0.12 2.0948 0.55 442.13 440.14 -1.995
-0.11 1.8269 0.55 441.86 440.14 -1.7214
-0.1 1.5905 0.55 441.62 440.14 -1.4801
-0.09 1.3829 0.55 441.41 440.14 -1.2683
-0.08 1.2016 0.55 441.22 440.14 -1.0835
-0.07 1.0449 0.55 441.06 440.14 -0.92379
-0.06 0.91136 0.55 440.93 440.14 -0.78767
-0.05 0.79974 0.55 440.81 440.14 -0.67397
-0.04 0.70926 0.55 440.72 440.14 -0.58183
-0.03 0.63936 0.55 440.65 440.14 -0.51066
-0.02 0.58965 0.55 440.6 440.14 -0.46005
-0.01 0.5599 0.55 440.57 440.14 -0.42977
0 0.55 0.55 440.56 440.14 -0.41969
0.01 0.54027 0.55 440.55 440.14 -0.40979
0.02 0.51302 0.55 440.52 440.14 -0.38204
0.03 0.47313 0.55 440.48 440.14 -0.34145
0.04 0.4265 0.55 440.43 440.14 -0.29399
0.05 0.37825 0.55 440.38 440.14 -0.2449
0.06 0.33192 0.55 440.34 440.14 -0.19776
0.07 0.28949 0.55 440.29 440.14 -0.15459
0.08 0.25174 0.55 440.26 440.14 -0.11619
0.09 0.21875 0.55 440.22 440.14 -0.082632
0.1 0.19019 0.55 440.19 440.14 -0.053583
0.11 0.16558 0.55 440.17 440.14 -0.028555
0.12 0.1444 0.55 440.15 440.14 -0.0070205
0.13 0.12617 0.55 440.13 440.14 0.011521
0.14 0.11044 0.55 440.11 440.14 0.027513
0.15 0.096846 0.55 440.1 440.14 0.04134
--------------------------------------------------------------------
A49は 起点ですので 常に一定です。
では 傾き(Grade)を変えながら オクターブの`うなり'を C(28)キーから 3キー毎に A(49)キーまでを 「Octave」で見てみます。
octave:1> dispGrade([28:3:49], 12)
`うなり'が 0になる 傾き(Grade)の転換点は 0.115辺りです。
calcInha.mの内容を 以下の様に変更してみます。(x3)
ih = inh*multi*multi*multi;
転換点は 0.17〜0.18に移動しています。
では calcInha.mを以下のように変更してみます。(x1)
ih = inh*multi;
今度は 0.06〜0.07に移動しました。
最後に calcInha.mを以下のように変更してみます。(x0)
ih = inh;
傾き(Grade)が 0の時
つまり、全てのキーでインハーモニシティ値が同じ場合は
オクターブでは 全ての倍音の`うなり'が 0になります。
つまりそれは "平均律" の事になります。
以上の変更は 机上の空論ですが この様にインハーモニシティ値の計算は "倍数 x 倍数"と言う部分のみに由来している事が分かります。
![]()
HTML5です。
ただし 4度・5度は 0セントでは"ずれ"があるので
同じにはなりません。
4度で x2 x3 x1 x0の順です。
5度で x2 x3 x1 x0の順です。