LoginSignup
1
1

More than 3 years have passed since last update.

純正律の平均律からの差(セント)を計算

Posted at

はじめに

純正律のミとソとラは平均律から14セント下、2セント上、16セント上は覚えてるのですけど、レとファとシは覚えられず、毎回ググってるので、計算方法を覚え書き程度に。

結果

取り急ぎ結果を
数値は純正律の平均律からの差(セント)

Do Re Mi Fa So La Ti
0 +4 -14 -2 +2 -16 -12

オクターブとは?

基準周波数の2倍が1オクターブ
これは平均律も純正律も同じ。

平均律とは?

1オクターブ(2倍)を12等分したものが平均律の半音の幅
JavaScript的な表現だとこんな感じ。


Math.pow(2,1/12)

セントとは?

平均律での半音を100等分した幅
よって、オクターブの1200等分
JavaScript的な表現だとこんな感じ。


Math.pow(2,1/1200)

純正律とは?

1オクターブ(2倍)を整数比で分割したもの。
音の幅は(周波数比は)
半音は16/15だけど全音は幅の広い大全音(9/8)と小全音(9/10)がある。
ドからの周波数比はこんな感じ。

Do Re Mi Fa So La Ti
1 9/8 5/4 4/3 3/2 5/3 15/8

計算してみる

平均律

平均律で1セント幅


cent=Math.pow(2,1/1200); //1セント幅

純正律

純正律は直接的にしか定義できないので

pure =[1,9/8,5/4,4/3,3/2,5/3,15/8]; //純正律

純正律の平均律からの差

上記を踏まえて、純正律の平均律からの差(セント)を計算すると

<script language="JavaScript">
cent=Math.pow(2,1/1200); //1セント幅
pure =[1,9/8,5/4,4/3,3/2,5/3,15/8]; //純正律
stepNum=[0,2,4,5,7,9,11];           //基準音からの幅 半音1、全音2
stepName=["Do","Re","Mi","Fa","So","La","Ti"]; //音名

for(i=0;i<stepName.length;i++){
  //結果を表示
  document.write(stepName[i] + 
                 Math.round(
                     (Math.log(pure[i])/Math.log(cent) - 
                      stepNum[i]*100))  +
                 "<BR>");
}
</script>

おまけ

マイナーコードの場合、ラが基準音だと考えると
ラをドに読み替えて、全体を16セントあげれば
純正律になるけど、とてもピッチが高くなる
・・・けどいいのだろうか

Do Re Mi♭ Fa So La♭ Ti
0 +28 +16 +20 +2 +14 +18
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1