新しい音律を作りたかったけど純正律と平均律を理解しただけで終わったやつ(書きかけ)
投稿日:2021-07-22
更新日:2022-01-07
ジャンル:音楽
この速さを「周波数」といって、1秒間に振動する回数をHz(ヘルツ)という単位で表します。さっきの例だと「440 Hz」「660 Hz」となります。
440 Hzを2倍した880 Hzは、440 Hzの「ラ」の1つ上の「ラ」になります。4倍の1760 Hzはその上の「ラ」の音です。3倍した1320 Hzは「ミ」になります。周波数が440上がることで1オクターブ上がるのではなく、2倍になることで1オクターブ上がります。
逆に、半分にすると1オクターブ下の音になるので、1320 Hz(ミ)を半分にした660 Hzも「ミ」の音になります。つまり1.5倍した音と3倍した音は(オクターブは違うけど)同じです。同様に、1.25倍した音、2.5倍した音、5倍した音…は(オクターブは違うけど)同じ、ということになります。
一般化すると、ある音の周波数を\(f\)としたとき、\(n\)を整数として周波数が\(f\cdot 2^n\)となるものは、その音の\(n\)オクターブ上の同じ音です。
「ド」を中心に考えます。「ド」の2倍音は「ド」、3倍音は「ソ」、4倍音は「ド」、5倍音は「ミ」です。その3倍音「ソ」と5倍音「ミ」をまずは採用します。オクターブを合わせる(1倍~2倍の中の同じ音にする)ためにそれぞれ1/2倍、1/4倍して、3/2倍(ソ)、5/4倍(ミ)とします(後のことも考えて分数表記で)。
次に「ド」の3倍の「ソ」を中心に考えます。「ソ」の3倍音は「ド」の3x3=9倍音で「レ」、「ソ」の5倍音は「ド」の3x5=15倍音で「シ」です。オクターブを合わせて、それぞれ「ド」の9/8倍(レ)、15/8倍(シ)とします。
次に「ド」の1/3倍の「ファ」を中心に考えます。「ファ」の3倍が「ド」になるのでこれを選びます。「ファ」の5倍音は「ド」の(1/3)x5=5/3倍で「ラ」です。「ファ」のオクターブを合わせると4/3倍になります。
まとめるとこうなります。ついでに前の音の何倍かも載せておきます。(表1)
音 | 根拠 | 倍音(「ド」基準) | 1~2倍 | 前音比 |
---|---|---|---|---|
ド | 基準 | 1倍 | 1倍 | 16/15倍 |
レ | 「ソ」の3倍 | 3x3=9倍 | 9/8倍 | 9/8倍 |
ミ | 「ド」の5倍 | 5倍 | 5/4倍 | 10/9倍 |
ファ | 「ド」の1/3倍 | 1/3倍 | 4/3倍 | 16/15倍 |
ソ | 「ド」の3倍 | 3倍 | 3/2倍 | 9/8倍 |
ラ | 「ファ」の5倍 | (1/3)x5=5/3倍 | 5/3倍 | 10/9倍 |
シ | 「ソ」の5倍 | 3x5=15倍 | 15/8倍 | 9/8倍 |
残りの♯♭の音はこれらから決めることができます。例えば「ド」と「レ」、「ド」と「シ♭」の幅は同じ全音なので、「レ」の9/8倍から、1÷(9/8)=8/9倍、オクターブを合わせて16/9倍となります。 同様に求めたものを含めるとこうなります。ついでに\(a=\frac{3}{2},\ b=\frac{5}{4}\)としてそれぞれの比を表したものを載せときます(オクターブは無視で)。(表2)
音 | 根拠 | 計算 | 1~2倍 | 式 |
---|---|---|---|---|
ド | 基準 | 1倍 | \(1\) | |
レ♭ | ド-シ の幅 | 1÷(15/8)=8/15倍 | 16/15倍 | \(\frac{1}{ab}\) |
レ | 9/8倍 | \(a^2\) | ||
ミ♭ | ド-ラ の幅 | 1÷(5/3)=3/5倍 | 6/5倍 | \(\frac{a}{b}\) |
ミ | 5/4倍 | \(b\) | ||
ファ | 4/3倍 | \(\frac{1}{a}\) | ||
ファ♯ | 「ソ」を基準に ド-シ の幅 |
(3/2)x(15/8)=45/16倍 | 45/32倍 | \(a^2 b\) |
ソ | 3/2倍 | \(a\) | ||
ラ♭ | ド-ミ の幅 | 1÷(5/4)=4/5倍 | 8/5倍 | \(\frac{1}{b}\) |
ラ | 5/3倍 | \(\frac{b}{a}\) | ||
シ♭ | ド-レ の幅 | 1÷(9/8)=8/9倍 | 16/9倍 | \(\frac{1}{a^2}\) |
シ | 15/8倍 | \(ab\) |
純正律の場合、2つ上の表1にあるように、同じ幅でも周波数比が違うことがあります。例えば「ド」→「レ」は9/8倍、「レ」→「ミ」は(5/4)÷(9/8)=10/9倍です。「レ」と「ラ」で5度を響かせようと思っても「レ」→「ラ」は(5/3)÷(9/8)=40/27≈1.48倍で、3/2倍(1.5倍)と少しずれます。このようなことで純正律は転調に向いていません。転調のたびに調整するのもかなり面倒です。
この純正律で完全5度(完全4度)が3/2(4/3)にならないものは、「レ」-「ラ」、「ミ♭」-「シ♭」、「ファ♯」-「ド♯」の3つです。同様に長3度と短3度で「ド」基準と同じにならないものをまとめるとこうなります。(表3)
(片方(例:長3度)が合えば反対側(例:短6度)も合います(両方かけて2になるので))
完全5度(完全4度) | レ-ラ、ミ♭-シ♭、ファ♯-ド♯ |
長3度(短6度) | ミ-ソ♯、ファ♯-ラ♯、ラ-ド♯、シ♭-レ、シ-レ♯ |
短3度(長6度) | ド♯-ミ、レ-ファ、レ♯-ファ♯、ファ♯-ラ、ソ-シ♭、ソ♯-シ |
1オクターブは半音12個分なので、半音の比を12回かけて2になればよいです。つまり半音は\(2^{\frac{1}{12}}\approx1.0595\)倍ということになります。
この1オクターブを12個に割った12平均律は上の純正律によく一致しています。しかも転調して比がおかしくなるということもないのでほとんどこの平均律が用いられています。
実際に純正律とどれくらいずれているかをまとめてみます。
周波数\(f_1,\ f_2\)の音のセント(1オクターブを1200に割ったもの)差は、\(1200\log{\frac{f_2}{f_1}}\)で表されます(\(f_2\)が\(f_1\)に比べて高いと正、低いと負)。この表では平均律が純正律より高いときセント差が正になるようになっています。(表4)
音 | 純正律(式) | 純正律(小数) | 平均律(式) | 平均律(小数) | 比(平/純) | セント差 |
---|---|---|---|---|---|---|
ド | 1 | 1 | 1 | 1 | 1 | 0 |
レ♭ | 16/15 | 1.06667 | 2^(1/12) | 1.0595 | 0.9932 | -11.73 |
レ | 9/8 | 1.125 | 2^(2/12) | 1.1225 | 0.9977 | -3.91 |
ミ♭ | 6/5 | 1.2 | 2^(3/12) | 1.1892 | 0.9910 | -15.64 |
ミ | 5/4 | 1.25 | 2^(4/12) | 1.2599 | 1.0079 | 13.69 |
ファ | 4/3 | 1.33333 | 2^(5/12) | 1.3348 | 1.0011 | 1.96 |
ファ♯ | 45/32 | 1.40625 | 2^(6/12) | 1.4142 | 1.0057 | 9.78 |
ソ | 3/2 | 1.5 | 2^(7/12) | 1.4983 | 0.9989 | -1.96 |
ラ♭ | 8/5 | 1.6 | 2^(8/12) | 1.5874 | 0.9921 | -13.69 |
ラ | 5/3 | 1.66667 | 2^(9/12) | 1.6818 | 1.0091 | 15.64 |
シ♭ | 16/9 | 1.77778 | 2^(10/12) | 1.7818 | 1.0023 | 3.91 |
シ | 15/8 | 1.875 | 2^(11/12) | 1.8877 | 1.0068 | 11.73 |
これらのセント差はすべて-1.96(ソの差), 13.69(ミの差)を足したり引いたりしたものです。すべての音が「ド」「ミ」「ソ」を元に決められたためです。例えば「ラ」は、まず「ファ」が「ソ」の反対側なので1.96、「ラ」は「ファ」から「ド」→「ミ」の幅なので1.96+13.69=15.64(微妙なずれは四捨五入のせい)ということになります。
ほかに5度の和音がいい感じになる平均律を探すには、\(\log_2 \frac{3}{2}\approx0.58496\)に近い分数を見つければ良いです。直接0.585となる分数を求めてみると\(\frac{117}{200}\)ですが、200平均律は音が多すぎて使いにくすぎます。
そこで総当たりで探します。各平均律ごとに0から1まで分数を書き出して、\(\log_2 \frac{3}{2}\approx0.58496\)との差が最も小さいものを調べます。
こんなプログラムを書きました(Python)。やってることは0〜1の分数を順番に総当たりして純正律に近いのを探している感じです。
import math
just = [3/2, 5/4, 6/5, 9/8] #調べたい比のリスト
for i in range(1, 25): #とりあえず24平均律まで調べる
dfs = [i, round(600/i, 2)] #最小のセント差を入れていくリスト(出力用の情報もいれておく)
for n in just: #それぞれの比を調べていく
p = math.log2(n) #調べたい比の対数
clsst = -p #基準音での差をまずはclsst(closest)入れる
for j in range(1, i+1): #分母がiで1までの分数を調べていく
d = j/i - p #それぞれの分数での差(平均律が純正律に対してどうか)
if abs(d) < abs(clsst):
clsst = d #差が暫定のclsstより小さければ更新
dfs.append(round(1200*clsst, 2)) #セントに変換して四捨五入してリストに入れる
print(" ".join(map(str, dfs))) #出力(実際はhtmlタグを挟んだ)
出力をまとめたのがこれです。(表5)
平均律 | 最大ずれ | 3/2(完5) | 5/4(長3) | 6/5(短3) | 9/8(長2) |
---|---|---|---|---|---|
1 | 600.0 | 498.04 | -386.31 | -315.64 | -203.91 |
2 | 300.0 | -101.96 | 213.69 | 284.36 | -203.91 |
3 | 200.0 | 98.04 | 13.69 | 84.36 | 196.09 |
4 | 150.0 | -101.96 | -86.31 | -15.64 | 96.09 |
5 | 120.0 | 18.04 | 93.69 | -75.64 | 36.09 |
6 | 100.0 | 98.04 | 13.69 | 84.36 | -3.91 |
7 | 85.71 | -16.24 | -43.46 | 27.22 | -32.48 |
8 | 75.0 | 48.04 | 63.69 | -15.64 | -53.91 |
9 | 66.67 | -35.29 | 13.69 | -48.97 | 62.76 |
10 | 60.0 | 18.04 | -26.31 | 44.36 | 36.09 |
11 | 54.55 | -47.41 | 50.05 | 11.63 | 14.27 |
12 | 50.0 | -1.96 | 13.69 | -15.64 | -3.91 |
13 | 46.15 | 36.51 | -17.08 | -38.72 | -19.29 |
14 | 42.86 | -16.24 | 42.26 | 27.22 | -32.48 |
15 | 40.0 | 18.04 | 13.69 | 4.36 | 36.09 |
16 | 37.5 | -26.96 | -11.31 | -15.64 | 21.09 |
17 | 35.29 | 3.93 | -33.37 | -33.29 | 7.85 |
18 | 33.33 | 31.38 | 13.69 | 17.69 | -3.91 |
19 | 31.58 | -7.22 | -7.37 | 0.15 | -14.44 |
20 | 30.0 | 18.04 | -26.31 | -15.64 | -23.91 |
21 | 28.57 | -16.24 | 13.69 | 27.22 | 24.66 |
22 | 27.27 | 7.14 | -4.5 | 11.63 | 14.27 |
23 | 26.09 | -23.69 | -21.1 | -2.6 | 4.79 |
24 | 25.0 | -1.96 | 13.69 | -15.64 | -3.91 |
やっぱり12平均律が周りと比べて純正律に近いことがわかります。完全5度のところだけを見ると、17,19,22あたりがいい感じです。他の数字を見ると19平均律は短3度、22平均律は長3度が結構近めになっています。
続く(続いてない)