※ 検索エンジンから直接このページに来られたかたには、まず 『すのものの「純正律について」』 をお読みになることをおすすめします。
※ これは、ピッチベンドが 100/4096 セント単位でかかると仮定した場合のものである。 実際の PC ではピッチベンドは 1 セント単位でしかかからないので、 「すのものの「純正律について」(その8)」 を利用することをおすすめする。
『すのものの「純正律について」(その1)』 で示した表のうち、最も大きいものについて、 mml で用いるピッチベンドの相対指定による書き方 BW+n または BW-n(n は十進表記された整数)の +n, -n の値を表にしたものである。 小数点以下は(ほぼ)四捨五入してある。
左上にゆくほど値が小さく、右下にゆくほど値が大きくなる。 「その3」で、ピッチベンドの幅が ±200 セント、 すなわち平均律の全音以上になっている音はない、 と観察したことに対応して、 ここでの数値は mml の規格で許される範囲に収まっていると思われる。 (規則を知らないので正確なことは言えない。)
また、「その3」で、 最初にとった C からみて完全五度さがることを七回おこなった音 Ces の長三度下の音 Ases は周波数比 0.001280 と非常に 0 に近いことを観察したが、 ここでは、最初にとった C と同じく、+0 となった。 なお、この位置関係にあるすべてのペアについて、 表の中の数値が同じというわけではない。
| ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### | ### |
| Hisis -7288 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Gisis -6727 |
Disis -6647 |
Aisis -6567 |
Eisis -6487 |
Hisis -6407 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| His -6086 |
Fisis -6006 |
Cisis -5926 |
Gisis -5846 |
Disis -5766 |
Aisis -5686 |
Eisis -5606 |
Hisis -5526 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Gis -5526 |
Dis -5446 |
Ais -5366 |
Eis -5285 |
His -5205 |
Fisis -5125 |
Cisis -5045 |
Gisis -4965 |
Disis -4885 |
Aisis -4805 |
Eisis -4725 |
Hisis -4645 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| H -4885 |
Fis -4805 |
Cis -4725 |
Gis -4645 |
Dis -4565 |
Ais -4485 |
Eis -4405 |
His -4324 |
Fisis -4244 |
Cisis -4164 |
Gisis -4084 |
Disis -4004 |
Aisis -3924 |
Eisis -3844 |
Hisis -3764 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| G -4324 |
D -4244 |
A -4164 |
E -4084 |
H -4004 |
Fis -3924 |
Cis -3844 |
Gis -3764 |
Dis -3684 |
Ais -3604 |
Eis -3524 |
His -3444 |
Fisis -3363 |
Cisis -3283 |
Gisis -3203 |
Disis -3123 |
Aisis -3043 |
Eisis -2963 |
Hisis -2883 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
| B -3684 |
F -3604 |
C -3524 |
G -3444 |
D -3363 |
A -3283 |
E -3203 |
H -3123 |
Fis -3043 |
Cis -2963 |
Gis -2883 |
Dis -2803 |
Ais -2723 |
Eis -2643 |
His -2563 |
Fisis -2483 |
Cisis -2403 |
Gisis -2322 |
Disis -2242 |
Aisis -2162 |
Eisis -2082 |
Hisis -2002 |
||||||||||||||||||||||||||||||||||||||||||||||||||||
| Ges -3123 |
Des -3043 |
As -2963 |
Es -2883 |
B -2803 |
F -2723 |
C -2643 |
G -2563 |
D -2483 |
A -2402 |
E -2322 |
H -2242 |
Fis -2162 |
Cis -2082 |
Gis -2002 |
Dis -1922 |
Ais -1842 |
Eis -1762 |
His -1682 |
Fisis -1602 |
Cisis -1522 |
Gisis -1442 |
Disis -1361 |
Aisis -1281 |
Eisis -1201 |
Hisis -1121 |
||||||||||||||||||||||||||||||||||||||||||||||||
| Bes -2482 |
Fes -2402 |
Ces -2322 |
Ges -2242 |
Des -2162 |
As -2082 |
Es -2002 |
B -1922 |
F -1842 |
C -1762 |
G -1682 |
D -1602 |
A -1522 |
E -1441 |
H -1361 |
Fis -1281 |
Cis -1201 |
Gis -1121 |
Dis -1041 |
Ais -961 |
Eis -881 |
His -801 |
Fisis -721 |
Cisis -641 |
Gisis -561 |
Disis -481 |
Aisis -400 |
Eisis -320 |
Hisis -240 |
|||||||||||||||||||||||||||||||||||||||||||||
| Geses -1922 |
Deses -1842 |
Ases -1762 |
Eses -1682 |
Bes -1602 |
Fes -1522 |
Ces -1441 |
Ges -1361 |
Des -1281 |
As -1201 |
Es -1121 |
B -1041 |
F -961 |
C -881 |
G -801 |
D -721 |
A -641 |
E -561 |
H -481 |
Fis -400 |
Cis -320 |
Gis -240 |
Dis -160 |
Ais -80 |
Eis -0 |
His +80 |
Fisis +160 |
Cisis +240 |
Gisis +320 |
Disis +400 |
Aisis +480 |
Eisis +560 |
Hisis +641 |
|||||||||||||||||||||||||||||||||||||||||
| Beses -1281 |
Feses -1201 |
Ceses -1121 |
Geses -1041 |
Deses -961 |
Ases -881 |
Eses -801 |
Bes -721 |
Fes -641 |
Ces -561 |
Ges -480 |
Des -400 |
As -320 |
Es -240 |
B -160 |
F -80 |
C +0 |
G +80 |
D +160 |
A +240 |
E +320 |
H +400 |
Fis +480 |
Cis +561 |
Gis +641 |
Dis +721 |
Ais +801 |
Eis +881 |
His +961 |
Fisis +1041 |
Cisis +1121 |
Gisis +1201 |
Disis +1281 |
Aisis +1361 |
Eisis +1441 |
Hisis +1521 |
||||||||||||||||||||||||||||||||||||||
| Beses -400 |
Feses -320 |
Ceses -240 |
Geses -160 |
Deses -80 |
Ases +0 |
Eses +80 |
Bes +160 |
Fes +240 |
Ces +320 |
Ges +400 |
Des +481 |
As +561 |
Es +641 |
B +721 |
F +801 |
C +881 |
G +961 |
D +1041 |
A +1121 |
E +1201 |
H +1281 |
Fis +1361 |
Cis +1441 |
Gis +1522 |
Dis +1602 |
Ais +1682 |
Eis +1762 |
His +1842 |
Fisis +1922 |
Cisis +2002 |
Gisis +2082 |
Disis +2162 |
|||||||||||||||||||||||||||||||||||||||||
| Beses +481 |
Feses +561 |
Ceses +641 |
Geses +721 |
Deses +801 |
Ases +881 |
Eses +961 |
Bes +1041 |
Fes +1121 |
Ces +1201 |
Ges +1281 |
Des +1361 |
As +1441 |
Es +1522 |
B +1602 |
F +1682 |
C +1762 |
G +1842 |
D +1922 |
A +2002 |
E +2082 |
H +2162 |
Fis +2242 |
Cis +2322 |
Gis +2402 |
Dis +2482 |
Ais +2563 |
Eis +2643 |
His +2723 |
|||||||||||||||||||||||||||||||||||||||||||||
| Beses +1361 |
Feses +1442 |
Ceses +1522 |
Geses +1602 |
Deses +1682 |
Ases +1762 |
Eses +1842 |
Bes +1922 |
Fes +2002 |
Ces +2082 |
Ges +2162 |
Des +2242 |
As +2322 |
Es +2402 |
B +2483 |
F +2563 |
C +2643 |
G +2723 |
D +2803 |
A +2883 |
E +2963 |
H +3043 |
Fis +3123 |
Cis +3203 |
Gis +3283 |
Dis +3363 |
||||||||||||||||||||||||||||||||||||||||||||||||
| Beses +2242 |
Feses +2322 |
Ceses +2403 |
Geses +2483 |
Deses +2563 |
Ases +2643 |
Eses +2723 |
Bes +2803 |
Fes +2883 |
Ces +2963 |
Ges +3043 |
Des +3123 |
As +3203 |
Es +3283 |
B +3363 |
F +3444 |
C +3524 |
G +3604 |
D +3684 |
A +3764 |
E +3844 |
H +3924 |
||||||||||||||||||||||||||||||||||||||||||||||||||||
| Beses +3123 |
Feses +3203 |
Ceses +3283 |
Geses +3363 |
Deses +3444 |
Ases +3524 |
Eses +3604 |
Bes +3684 |
Fes +3764 |
Ces +3844 |
Ges +3924 |
Des +4004 |
As +4084 |
Es +4164 |
B +4244 |
F +4324 |
C +4404 |
G +4485 |
D +4565 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Beses +4004 |
Feses +4084 |
Ceses +4164 |
Geses +4244 |
Deses +4324 |
Ases +4405 |
Eses +4485 |
Bes +4565 |
Fes +4645 |
Ces +4725 |
Ges +4805 |
Des +4885 |
As +4965 |
Es +5045 |
B +5125 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Beses +4885 |
Feses +4965 |
Ceses +5045 |
Geses +5125 |
Deses +5205 |
Ases +5285 |
Eses +5366 |
Bes +5446 |
Fes +5526 |
Ces +5606 |
Ges +5686 |
Des +5766 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Beses +5766 |
Feses +5846 |
Ceses +5926 |
Geses +6006 |
Deses +6086 |
Ases +6166 |
Eses +6246 |
Bes +6326 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Beses +6647 |
Feses +6727 |
Ceses +6807 |
Geses +6887 |
Deses +6967 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Beses +7528 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
上の表は、C言語による次のプログラムに出力させた。 これは、 『すのものの「純正律について」(その4)』 に載せたプログラムのごく一部のみを変更したものである。
付)以下のプログラムは、LI と CO の値を変えてコンパイルすると正しい結果が得られなかったバグを、 2010-06-22 (3) に修正したものである。
#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);
}
}
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;
}