※ 検索エンジンから直接このページに来られたかたには、まず 『すのものの「純正律について」』 をお読みになることをおすすめします。
※ これは、ピッチベンドが 100/4096 セント単位でかかると仮定した場合のものである。 実際の PC ではピッチベンドは 1 セント単位でしかかからないので、 「すのものの「純正律について」(その8)」 を利用することをおすすめする。
『すのものの「純正律について」(その1)』 で示した表のうち、最も大きいものについて、 mml で用いるピッチベンドの書き方 BWn(n は十進表記された整数)の n の値を表にしたものである。 小数点以下は(ほぼ)四捨五入してある。 ここでは、最初にとった C は BW8192 とした。 これは、ピッチベンドをしない、に等しい。
左上にゆくほど値が小さく、右下にゆくほど値が大きくなる。 「その3」で、ピッチベンドの幅が ±200 セント、 すなわち平均律の全音以上になっている音はない、 と観察したことに対応して、 ここでの数値は mml の規格で許される、0 以上 16383 以下をとっている。
また、「その3」で、 最初にとった C からみて完全五度さがることを七回おこなった音 Ces の長三度下の音 Ases は周波数比 0.001280 と非常に 0 に近いことを観察したが、 ここでは、最初にとった C と同じく、8192 となった。 なお、この位置関係にあるすべてのペアについて、 表の中の数値が同じというわけではない。
### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### |
Hisis 904 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Gisis 1465 |
Disis 1545 |
Aisis 1625 |
Eisis 1705 |
Hisis 1785 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
His 2106 |
Fisis 2186 |
Cisis 2266 |
Gisis 2346 |
Disis 2426 |
Aisis 2506 |
Eisis 2586 |
Hisis 2666 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Gis 2666 |
Dis 2746 |
Ais 2826 |
Eis 2907 |
His 2987 |
Fisis 3067 |
Cisis 3147 |
Gisis 3227 |
Disis 3307 |
Aisis 3387 |
Eisis 3467 |
Hisis 3547 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
H 3307 |
Fis 3387 |
Cis 3467 |
Gis 3547 |
Dis 3627 |
Ais 3707 |
Eis 3787 |
His 3868 |
Fisis 3948 |
Cisis 4028 |
Gisis 4108 |
Disis 4188 |
Aisis 4268 |
Eisis 4348 |
Hisis 4428 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
G 3868 |
D 3948 |
A 4028 |
E 4108 |
H 4188 |
Fis 4268 |
Cis 4348 |
Gis 4428 |
Dis 4508 |
Ais 4588 |
Eis 4668 |
His 4748 |
Fisis 4829 |
Cisis 4909 |
Gisis 4989 |
Disis 5069 |
Aisis 5149 |
Eisis 5229 |
Hisis 5309 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
B 4508 |
F 4588 |
C 4668 |
G 4748 |
D 4829 |
A 4909 |
E 4989 |
H 5069 |
Fis 5149 |
Cis 5229 |
Gis 5309 |
Dis 5389 |
Ais 5469 |
Eis 5549 |
His 5629 |
Fisis 5709 |
Cisis 5789 |
Gisis 5870 |
Disis 5950 |
Aisis 6030 |
Eisis 6110 |
Hisis 6190 |
||||||||||||||||||||||||||||||||||||||||||||||||||||
Ges 5069 |
Des 5149 |
As 5229 |
Es 5309 |
B 5389 |
F 5469 |
C 5549 |
G 5629 |
D 5709 |
A 5790 |
E 5870 |
H 5950 |
Fis 6030 |
Cis 6110 |
Gis 6190 |
Dis 6270 |
Ais 6350 |
Eis 6430 |
His 6510 |
Fisis 6590 |
Cisis 6670 |
Gisis 6750 |
Disis 6831 |
Aisis 6911 |
Eisis 6991 |
Hisis 7071 |
||||||||||||||||||||||||||||||||||||||||||||||||
Bes 5710 |
Fes 5790 |
Ces 5870 |
Ges 5950 |
Des 6030 |
As 6110 |
Es 6190 |
B 6270 |
F 6350 |
C 6430 |
G 6510 |
D 6590 |
A 6670 |
E 6751 |
H 6831 |
Fis 6911 |
Cis 6991 |
Gis 7071 |
Dis 7151 |
Ais 7231 |
Eis 7311 |
His 7391 |
Fisis 7471 |
Cisis 7551 |
Gisis 7631 |
Disis 7711 |
Aisis 7792 |
Eisis 7872 |
Hisis 7952 |
|||||||||||||||||||||||||||||||||||||||||||||
Geses 6270 |
Deses 6350 |
Ases 6430 |
Eses 6510 |
Bes 6590 |
Fes 6670 |
Ces 6751 |
Ges 6831 |
Des 6911 |
As 6991 |
Es 7071 |
B 7151 |
F 7231 |
C 7311 |
G 7391 |
D 7471 |
A 7551 |
E 7631 |
H 7711 |
Fis 7792 |
Cis 7872 |
Gis 7952 |
Dis 8032 |
Ais 8112 |
Eis 8192 |
His 8272 |
Fisis 8352 |
Cisis 8432 |
Gisis 8512 |
Disis 8592 |
Aisis 8672 |
Eisis 8752 |
Hisis 8833 |
|||||||||||||||||||||||||||||||||||||||||
Beses 6911 |
Feses 6991 |
Ceses 7071 |
Geses 7151 |
Deses 7231 |
Ases 7311 |
Eses 7391 |
Bes 7471 |
Fes 7551 |
Ces 7631 |
Ges 7712 |
Des 7792 |
As 7872 |
Es 7952 |
B 8032 |
F 8112 |
C 8192 |
G 8272 |
D 8352 |
A 8432 |
E 8512 |
H 8592 |
Fis 8672 |
Cis 8753 |
Gis 8833 |
Dis 8913 |
Ais 8993 |
Eis 9073 |
His 9153 |
Fisis 9233 |
Cisis 9313 |
Gisis 9393 |
Disis 9473 |
Aisis 9553 |
Eisis 9633 |
Hisis 9713 |
||||||||||||||||||||||||||||||||||||||
Beses 7792 |
Feses 7872 |
Ceses 7952 |
Geses 8032 |
Deses 8112 |
Ases 8192 |
Eses 8272 |
Bes 8352 |
Fes 8432 |
Ces 8512 |
Ges 8592 |
Des 8673 |
As 8753 |
Es 8833 |
B 8913 |
F 8993 |
C 9073 |
G 9153 |
D 9233 |
A 9313 |
E 9393 |
H 9473 |
Fis 9553 |
Cis 9633 |
Gis 9714 |
Dis 9794 |
Ais 9874 |
Eis 9954 |
His 10034 |
Fisis 10114 |
Cisis 10194 |
Gisis 10274 |
Disis 10354 |
|||||||||||||||||||||||||||||||||||||||||
Beses 8673 |
Feses 8753 |
Ceses 8833 |
Geses 8913 |
Deses 8993 |
Ases 9073 |
Eses 9153 |
Bes 9233 |
Fes 9313 |
Ces 9393 |
Ges 9473 |
Des 9553 |
As 9633 |
Es 9714 |
B 9794 |
F 9874 |
C 9954 |
G 10034 |
D 10114 |
A 10194 |
E 10274 |
H 10354 |
Fis 10434 |
Cis 10514 |
Gis 10594 |
Dis 10674 |
Ais 10755 |
Eis 10835 |
His 10915 |
|||||||||||||||||||||||||||||||||||||||||||||
Beses 9553 |
Feses 9634 |
Ceses 9714 |
Geses 9794 |
Deses 9874 |
Ases 9954 |
Eses 10034 |
Bes 10114 |
Fes 10194 |
Ces 10274 |
Ges 10354 |
Des 10434 |
As 10514 |
Es 10594 |
B 10675 |
F 10755 |
C 10835 |
G 10915 |
D 10995 |
A 11075 |
E 11155 |
H 11235 |
Fis 11315 |
Cis 11395 |
Gis 11475 |
Dis 11555 |
||||||||||||||||||||||||||||||||||||||||||||||||
Beses 10434 |
Feses 10514 |
Ceses 10595 |
Geses 10675 |
Deses 10755 |
Ases 10835 |
Eses 10915 |
Bes 10995 |
Fes 11075 |
Ces 11155 |
Ges 11235 |
Des 11315 |
As 11395 |
Es 11475 |
B 11555 |
F 11636 |
C 11716 |
G 11796 |
D 11876 |
A 11956 |
E 12036 |
H 12116 |
||||||||||||||||||||||||||||||||||||||||||||||||||||
Beses 11315 |
Feses 11395 |
Ceses 11475 |
Geses 11555 |
Deses 11636 |
Ases 11716 |
Eses 11796 |
Bes 11876 |
Fes 11956 |
Ces 12036 |
Ges 12116 |
Des 12196 |
As 12276 |
Es 12356 |
B 12436 |
F 12516 |
C 12596 |
G 12677 |
D 12757 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
Beses 12196 |
Feses 12276 |
Ceses 12356 |
Geses 12436 |
Deses 12516 |
Ases 12597 |
Eses 12677 |
Bes 12757 |
Fes 12837 |
Ces 12917 |
Ges 12997 |
Des 13077 |
As 13157 |
Es 13237 |
B 13317 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Beses 13077 |
Feses 13157 |
Ceses 13237 |
Geses 13317 |
Deses 13397 |
Ases 13477 |
Eses 13558 |
Bes 13638 |
Fes 13718 |
Ces 13798 |
Ges 13878 |
Des 13958 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Beses 13958 |
Feses 14038 |
Ceses 14118 |
Geses 14198 |
Deses 14278 |
Ases 14358 |
Eses 14438 |
Bes 14518 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Beses 14839 |
Feses 14919 |
Ceses 14999 |
Geses 15079 |
Deses 15159 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Beses 15720 |
上の表は、C言語による次のプログラムに出力させた。 これは、 『すのものの「純正律について」(その2)』 に載せたプログラムのごく一部のみを変更したものである。 文がコメントになっている行が三行あるが、 最初の二行は「その2」にあったものをコメント化したものであり、 最後の一行は、「その3」で示したプログラムで使われた行である。
付)以下のプログラムは、LI と CO の値を変えてコンパイルすると正しい結果が得られなかったバグを、 2010-06-21 (2) に修正したものである。
#include <stdio.h> #include <math.h> /* log10, floor */ #define LIN 21 /* 行の数(変えるとプログラム自体にも手直しが必要) */ #define COL 74 /* 列の数(変えるとプログラム自体にも手直しが必要) */ #define LI 10 /* 周波数 1 を何行めにおくか(変えてよい) */ #define CO 33 /* 周波数 1 を何列めにおくか(変えてよい) */ double val[2]; /* 分子、分母 */ char* name[] = {"Beses", "Feses", "Ceses", "Geses", "Deses", "Ases", "Eses", "Bes", \ "Fes", "Ces", "Ges", "Des", "As", "Es", "B", \ "F", "C", "G", "D", "A", "E", "H", \ "Fis", "Cis", "Gis", "Dis", "Ais", "Eis", "His", \ "Fisis", "Cisis", "Gisis", "Disis", "Aisis", "Eisis", "Hisis" }; char* color[] = { "ffffdd", "eeddff", "ddffdd", "ffddee", "ddffff", "ffeedd", \ "ddddff", "eeffdd", "ffddff", "ddffee", "ffdddd", "ddeeff" }; /* (平均律で)As, Es, B, F, C, G; D, A, E, H, Fis, Cis の地の色(変えてよい) */ void standardize(double* a); double power(double base, int n); main() { int i, j, n; double bend; /* 半音を 1 としたときの値 */ printf("<html><body>\n<table border=\"1\">\n"); printf("<tr>\n"); for (j = 0; j < COL; j++) { printf("\t<td><font color=\"white\">###</font></td>\n"); } printf("</tr>\n"); for (i = 0; i < LIN; i++) { printf("<tr align=\"center\">\n"); if (i <= LIN / 2) { if (i % 2 == 0) { printf("\t<td> </td>\n"); j = 1; } else { j = 0; } } else { printf("\t<td colspan=\"%d\"> </td>\n", 7*i - COL + 5); j = 7*i - COL + 5; } for ( ; j < 7*i + 2 && j < COL - 1; j += 2) { if (i <= LI) { val[0] = power(5, LI - i); val[1] = 1; } else { val[0] = 1; val[1] = power(5, i - LI); } if (i + j < LI + CO) { val[1] *= power(3, ((LI + CO) - (i + j) + 1)/2); } else { val[0] *= power(3, ((i + j) - (LI + CO))/2); } n = 35 - (7*i+1)/2 + j/2; /* この値で音名が決まる */ standardize(val); printf("\t<td colspan=\"2\" bgcolor=\"#%s\">", color[n%12]); /* printf("%s<br>%.0f/%.0f<br>", name[n], val[0], val[1]); */ /* printf("%f</td>\n", log10(val[0]/val[1])/log10(2)*1200); */ printf("%s<br>", name[n]); bend = log10(val[0]/val[1])/log10(2)*12 - (7*n+7*(COL-CO)/2+4*LI+5)%12; if (bend > 6) { bend -= 12; /* Cis の 120 セント下、など */ } else if (bend < -6) { bend += 12; /* H の 120 セント上、など */ } if (bend <= -2 || bend >= 2) { printf("-</td>\n"); } else { /* printf("%f</td>\n", bend*100); */ printf("%.0f</td>\n", bend * 4096 + 8192); } } if (j <= COL-1) { if (COL-1-j > 1) { printf("\t<td colspan=\"%d\"> </td>\n", COL-j); } else { printf("\t<td> </td>\n"); } } printf("</tr>\n"); } printf("</table>\n"); } /* a[] を分数とみたとき、1 以上 2 未満に規格化する */ void standardize(double* a) { while (a[0] < a[1]) { if (floor(a[1] / 2) == a[1] / 2) { a[1] /= 2; } else { a[0] *= 2; } } while (a[0] / 2 >= a[1]) { if (floor(a[0] / 2) == a[0] / 2) { a[0] /= 2; } else { a[1] *= 2; } } } /* base の n 乗を返す。K&R2 にあるのとほぼ同じ */ double power(double base, int n) { int i; double p; p = 1; for (i = 0; i < n; i++) { p *= base; } return p; }