ピタゴラス音階を導くには part2 | 科学アラカルト [実践] | 逆ポーランド電卓の実践ウェブ rpn hacks!

逆ポーランド電卓の実践ウェブ rpn hacks!

逆ポーランド電卓rpnの実践ウェブ   
rpn hacks! アールピーエヌ・ハックスサイトマップ

rpn | 実戦 | 科学アラカルト | 科学に関する話題をrpnで探求!調べて実験してみよう。

HOME > 実践 > 科学アラカルト > ピタゴラス音階を導くには part2 hatena yahoo buzzurl livedoor del.icio.us nifty newsing twitter facebook rss ソーシャルブックマーク

ピタゴラス音階を導くには part2

前のページに戻るLinkIcon

 ピタゴラスは弦を使って実験を行なったのですが、今では先人のおかげで弦の振動に関する公式を知ることができます。その公式は次の簡単な数式で表されます。

           1
  f = k ・ ---
           l    ※fは周波数、lは弦長、kは物体固有の定数


この数式の意味は、長さlを2倍にすると周波数fは1/2になり、長さlを1/2にすると周波数が2倍になるということです。つまり、音の高低は弦の長さに反比例しているわけです。kは弦の材質によって異なりますが、定数なので周波数と弦長の関係に影響は与えません。

上記数式のlは弦の長さですが、管にしても同じことです。実際、ギリシャ人のピタゴラスは弦を使いましたが、古代中国人は管を使って似たような音律の探求を行なっています。

ピタゴラスの足跡を辿って

 ピタゴラスも弦の長さを1/2にすれば2倍の高さの音が出ることは知っていました。そして弦の長さが整数比のときに綺麗な合成音が出ることを突き止め、2:3の整数比を使って探求し始めます。

ピタゴラスは2:3を維持したまま、弦を爪弾き続けると13回目には元の長さに戻り、音も同じであるとしましたが、それは本当なのでしょうか。ここではrpnを使って、周波数を1.5倍し続けるとどうなるか試すことにします。使う計算式は単純で3/2のべき乗です。

   3  n
  ---
   2


rpnによる計算は1行ですぐに終わります。

  >rpn 3 2 / @n p @n 1 + #n -r 13
  1
  1.5
  2.25
  3.375
  5.0625
  7.59375
  11.3906
  17.0859
  25.6289
  38.4434
  57.665
  86.4976
  129.746


当然、周波数の倍率はどんどん大きくなっていきます。そこで、先ほどの施策を実施します。元の弦の高さの2倍になったら、弦の長さを2倍にするわけです。2倍にするということは周波数が1/2になることです。従って、1/2のべき乗で弦が短くなっていくことを示します。

2を底とする対数に変換

ここで、2を底とする対数が必要なのですが、rpnには常用対数と自然対数しかありません。そこで、底の変換作業が必要です。例えば、aを底とする対数をcを底とする対数に変換する底の変換公式は以下のとおりです。

          log b
             c
  log b = -------
     a    log a
             c


従って、2を底とする対数は次になります。

  log x = log x / log 2
     2       e       e


xを2.25として、rpnで計算してみましょう。

  >rpn 2.25 l 2 l /
  1.16993


これは2の1.16993乗が2.25をであることを示しています。

   1.16993
  2        = 2.25


同様にrpnで計算してみます。

  >rpn 2 1.16993 p
  2.25001


数値計算の誤差がありますが、きちんと計算されています。

ピタゴラス音律を計算

 この予備知識でピタゴラスの実験を追いかけてみましょう。弦を3:2にして(周波数なら1.5倍)、複数回繰り返したときの周波数倍率の変化はすでに計算しています。

そこで出てきた値から元の弦の2倍以下の周波数となるよう(弦の長さなら2倍)にそれぞれ適切な値で1/2のべき乗を計算して、掛け合わせましょう。

               +-          -+
               |      3  n  |
               |  ln ---    |
               |      2     |
               | ---------- |
               |   ln 2     |
   3  n     1  +-          -+
  ---   *  ---
   2        2


ちょっと複雑な数式ですが、rpnなら1行で計算できます。

  >rpn 1.5 @n p @n 1 + #n -r 13 | rpn . l 2 l / i 0.5 x p *
  1
  1.5
  1.125
  1.6875
  1.26563
  1.89844
  1.42382
  1.06787
  1.60181
  1.20136
  1.80203
  1.35153
  1.01364


パイプで繋いでいますが、>rpn 1.5 @n p . l 2 l / i 0.5 x p * @n 1 + #n -r 13 でもOK。

これがピタゴラスの弦実験で得られたであろう周波数の倍率です。倍音になるまでに12の音が存在することになります。これらの音の周波数倍率をグラフ化して確認しておきましょう。

  >rpn 1.5 @n p @n 1 + #n -r 13 | rpn . l 2 l / i 0.5 x p * >tmp
  >rpn 1 -c rownum <tmp | xyp -x,13 -y1,2 -n -s1,.25 -m
  ^y 2
  |                 *
  |                                *
  1.75
  |           *
  |                          *
  |
  1.5   *
  |                    *
  |                                   *
  |
  1.25           *              *
  |
  |        *              *              x
  |                                     1*
  +1-*--2--3--4--5--6--7--8--9--10-11-12->


横軸が13回分の周波数で縦軸が周波数の倍率です。グラフでは13回目(最後)に最初の1に周波数倍率が戻っていることが分かりますね。

ただ、上の計算結果をよく見ると13行目の計算結果は1であるはずなのですが、値は1.01364です。これは計算誤差ではなく本当に異なっているのです。

3のm乗を2のn乗で割り切れる自然数mとnの組み合わせは存在しないためです。この微妙なずれのことを、ピタゴラスコンマと言います。

ピタゴラスもこの問題に関しては承知していたらしく、この1.01364のずれをなかったことにして強引に1としました。これが後から問題となってくるのですが、ピタゴラスの時代では問題なく使えていたようです。

実際には1オクターブ上の音は元の音の2.02728倍なので、誤差百分率にして1.3%程度高い音になってしまいます。
綺麗な協和音を探してピタゴラス音律は生まれましたが、もっと突き詰めたものが純正律です。いずれも転調の問題が発生することになります。

これによって、最初の音と2倍の高さの音の間に12の音を定義することができました。人間が出せる音は2~3オクターブくらいです。ましてや歌うときには1オクターブ内でのメロディーがほとんどです。1オクターブ内の12音はメロディーやハーモニーを奏でるのに十分な量子化(デジタル化)だったと言えます。

民俗音楽では1オクターブ内に5つの音しかない場合があります。ドレミファソラシドのファ抜き、シ抜きなどです。実際、5つあれば十分に歌えるわけで7音も必要はないとも考えられます。また、インド音楽のように音と音を繋ぐ歌い方もあり、12音に限定することが当たり前というわけではありません。

平均律とピタゴラス音律の12音階の違い

 冒頭で、現在の平均律によるドレミファソラシドの周波数を示しましたが、このうちの12音(ドからシまで)とピタゴラスが導いたものとの違いを見てみましょう。どれくらい違うのでしょうか。

  >rpn 12 -c head <doremi.txt >tmp1
  >rpn 1.5 @n p @n 1 + #n -r 12 | rpn . l 2 l / i 0.5 x p * | sort >tmp2


tmp1には平均律の12音、tmp2にはピタゴラス音律の12音が入っています。ピタゴラスの方は周波数の倍率なので、現代のドの周波数261.626Hzを乗じることで比較ができます。

  >paste tmp1 tmp2 | rpn 261.626 * >tmp
  >type tmp
  261.626 261.626
  277.183 279.383
  293.665 294.329
  311.127 314.307
  329.628 331.122
  349.228 353.595
  369.994 372.508
  391.995 392.439
  415.305 419.075
  440.000 441.494
  466.164 471.458
  493.883 496.681


ほぼ一緒ですが、微妙に違いますね。誤差の平均はそれぞれの周波数の0.6%(最小0.1%から最大1.3%)です。グラフ化してみると次のようになります。

  >rpn 1 -c rownum <tmp | xyp -x,12 -y250,550 -k2 -s1,100 -n -m | npd
  ^y 550
  |
  |                                      +
  |                                  +
  450                                *
  |                               +
  |                            +
  |                         +
  |                     +
  350                +  *
  |               +  *
  |            +  *
  |        +
  |     +                                x
  |  +                                  12
  +251--2--3---4--5--6---7--8--9---10-11->
     ド #  レ #  ミ ファ# ソ #  ラ #  シ ド


"*"が現在の周波数で"+"がピタゴラス時代です。ほんのわずかですがピタゴラス音階のほうが周波数が高いようです。ただ周波数にして0.1%~1.3%の違いなので聞き取れるかどうか分かりませんが、プロはピタゴラス音律でチューニングされたピアノを弾いたときに、違和感を感じるそうです。

440Hzのラを基準としたドとド#の差は15Hzでした。割合にして5%強です。絶対音感の持ち主でも半音の1/4増減が限界でしたから、1.25%くらいです。ピタゴラス音律と平均律の違いでも、最大の1.3%くらいなら音の違いが分かるのかもしれません。

ピタゴラス音階の誕生

 最後にピタゴラス音階を導きましょう。オクターブには8つの音がありますが、先ほどの計算では12の音がありました。そこでピタゴラスは7つの音を選び出して、周波数の低いもの順に並べて、最後に2倍音を加えます。これでオクターブの出来上がりです。

2進数はバイナリ、16進数はヘクサ、8進数はオクトです。

実際に計算してみましょう。まず、7つの音の周波数倍率を計算します。

  >rpn 1.5 @n p @n 1 + #n -r 7 | rpn . l 2 l / i 0.5 x p *
  1
  1.5
  1.125
  1.6875
  1.26563
  1.89844
  1.42382


これは弦の実験を6回繰り返して出来る周波数倍率です。この周波数倍率を昇順に並べ替えると以下のようになります。

  >rpn 1.5 @n p @n 1 + #n -r 7 | rpn . l 2 l / i 0.5 x p * | sort
  1
  1.125
  1.26563
  1.42382
  1.5
  1.6875
  1.89844


この7音に1オクターブ上の周波数倍率の2を加えて、8音としたのがピタゴラス音階になるのです。この周波数で「♪ド~はドーナツのド~」を歌うと2000年前の音階で歌ったことになるわけです。

ピタゴラス音階を現在の音階に置き換えると、ドレミファ#ソラシドになります。ただし、ドが261.626Hzであるとは限りません。ピタゴラスの時代ではオーケストラのように演奏することがなく、A=440Hzのように基準となるものを必要としなかったためです。


        *


 ピタゴラスは心地よい2つの音の響きを求めて、実験を繰り返すことで倍音になるまでの間に12音を導きます。そこから7音を選び出してオクターブとなるのですが、当然それぞれの音の響きは協和音となって美しく奏でられます。

しかし、協和音は2音とは限りません。現代では通常、和音といえば3つの音の合成です。つまり、3和音です。「♪ド・ミ・ソ」ですね。このドミソにも当然、協和音は潜んでいて2:3の整数比からドの1.5倍の周波数が協和音であり、まさにその音がソです。

ただし、ピタゴラスは比率3:2から作ったので協和しない音同士もあります(例えばドとミ)。では、現在主流の平均律は大丈夫かといえばそうではなく、ほぼすべての音の協和がずれています。よく聞くとその和音にはうねりが感じられます。正純律ならうねりはありません(ただし、移調・転調が困難)。
ピタゴラス音律は協和が多いが転調に難点があり、正純律は協和は完璧だが同様に転調問題があります。対して、平均律は完全な協和は望めませんが転調が容易です。現代の音楽(J-POPでは顕著)では曲の中でメロディーの雰囲気を変化させます(イントロ、Aメロ、Bメロ、ブリッジ、サビ、アウトロなど)。その意味では平均律以外の選択肢はないことになります。

音楽とはつまり、メロディーとリズムとハーモニーでした。時代が進むにつれ、不安定な和音も求められたり、新しい和音の探求により、4和音(7th)、5和音(9th)と複雑さを増しています。これらはハーモニーの大切さが時代を超えて、より重要度を増していることの証拠なのかもしれません。

コード(和音)が割り振られた小節内のメロディー(旋律)を構成する全ての音を一定の長さで同時に鳴らせば、ほぼコードと同じように聞こえるはずです(心地よい音の組み合わせを考えて作曲していれば必然に)。結局のところ、メロディーとはコードをアルペジオ(分散和音)のように時間経過とともにリズムを伴って聞かせるものと言えます(タイムラグのある音程≒旋律)。

紀元前の協和音の探求から偶然(必然?)にも12音が定義され、それが2000年経った現代の音楽まで生き続けていることには驚きを禁じ得ないですね。

実践科学アラカルトに戻るLinkIcon

警告rpnプログラムを実行するには、rpn試用版かrpn標準版が必要です(バージョンの違いはこちら)。

情報pasteは講座サポートで公開されています。rownumはカンタン分析パッケージに同梱されています。headはrpnマイスターパッケージに同梱されています。xypとnpdはrpnの姉妹ソフトウェアです。詳しくはプロダクトを参照ください。

科学アラカルト

調べて実験してみよう

※実践コーナーのTOP

紹介 rpnの利用シーンはこちら…

講座初めての人のrpn基礎もどうぞ
講座しっかり学べるrpn入門もどうぞ
講座すぐに使えるdos入門もどうぞ
物語データを見抜くojt物語もどうぞ

実践他の分野への挑戦は実践TOP

応用rpnアプリケーションは応用TOP

part2

調べて実験してみよう

※実践コーナーのTOP

講座初めての人のrpn基礎もどうぞ
講座しっかり学べるrpn入門もどうぞ
講座すぐに使えるdos入門もどうぞ
物語データを見抜くojt物語もどうぞ

実践他の分野への挑戦は実践TOP

応用rpnアプリケーションは応用TOP

書籍紹介

記事に関連した書籍

本ウェブサイトで扱った話題に関連した書物で、スタッフが実際に読了したものを紹介。

書籍数学の書籍
数の世界は思ったよりもエキサイティング。

  • 書籍統計の書籍
  • ビジネスで統計が使えるととっても有利。

書籍投資の書籍
失敗しない投資には広範囲で実践的な知識が必要。

警告バックスラッシュはエンマークに読み替えてください( IEのみ)。
バックスラッシュとエンマーク

警告文字で作られた図表や式が崩れることがあります。ブラウザによっては固定幅フォントをMSゴシックにするときれいに表示されます。それでも崩れる場合は図表や式をメモ帳にコピー後、閲覧下さい。

警告rpn試用版と標準版(2kリビジョン)はダブルクォートで囲ってください。

rpn 1 2 + ⇒ rpn "1 2 +"
rpn 1 -c foo ⇒ rpn "1" -c "foo"

ダブルクォートは省略できることが多いのですが、慣れない間は囲んだほうが無難です。なお、本ウェブサイトの記事ではrpn標準版(98リビジョン)を使用しているため囲っていません。詳しくは技術サポートの「rpn TIPS参照ください。

注意rpnの障害情報はこちら

警告rpn試用版の場合、複雑なプログラムや処理時間のかかるプログラムの一部には動作しないものがあるかもしれません。あくまで無料提供であることを勘案・了承ください。rpn標準版は、すべてのプログラムが動作します。