SSブログ

セント計算 [音律]

音律の計算をする時にちょっと面倒なのがセント値の算出です。計算式は,
セント値 = 1200 × log2 (比率)
です。 今回JavaScriptで記述してみましたので,以下のフォームで試してみてください。
/ cent

たとえば,オクターブは比率が2倍ですから,2 / 1として,2と1を各ボックスに(半角)入力して,「計算」ボタンを押すと,下のボックスに,1200と出るはずです。
以下同様に,完全5度は,3 / 2。完全4度は,4 / 3。純正長3度は,5 / 4,純正短3度は6 / 5,などですね。にも書いた通り,
ピタゴラスコンマは,312 / 219 ですから,531441 / 524288
シントニックコンマは,(3 / 2)4 / 5 = 81 / 80
スキスマは両者の比率で,32805 / 32768
ピッチの周波数の比率でたとえば,442 / 440
など,いろんな比率をセント値に換算することが出来ます。四捨五入していませんのでムダにケタが出ますが,倍精度計算出来ているようです。
タグ:JavaScript cent
nice!(5)  コメント(8) 
共通テーマ:音楽

nice! 5

コメント 8

Cecilia

JavaScriptってよくわかりません。
Enriqueさんがこのフォームを作られたのですね?
すごいです!
試してみたいけれど音律の話にまったくついていけてないのでそれができません。
by Cecilia (2011-09-26 15:14) 

Enrique

Ceciliaさん,nice&コメントありがとうございます。
普通に書いた記事はいわば静的な文書ですが,JavaScriptはプログラムですので,入力などに対してそれなりの反応が出来ます。しかしこれは,全く大したものではありません。必要部分に計算式を書き込んだだけです。
お金の100centが1ドルというのと一緒で,100centが平均律の1半音分になっています。オクターブ(2倍)は12半音なので1200centです。
ある音律間で音のずれを言う場合,このセント値で言う場合が多いのですが,電卓では計算が少し面倒なのでワンタッチの計算フォームを作ってみました。
例えば,ハ長調のドを基準(0セント)にした場合,平均律でミの音は4半音上ですから400centですが,純正律やミーントーンでは,この音程の響きを重視して5/4の音高(純正長3度)とします。上のボックスに,「5 」/「4 」と入力して,計算ボタンを押すと,下に「386.3・・・」centと出ます。これが純正長3度のセント値で,13.7centほども平均律より低いです。純正短3度「6 」/「 5」では逆に高くなります。同時に鳴らすと4~5centの差(人によっては2cent以下でも)は結構気になりますので,この十数centのずれは平均律の最も嫌われるところです。
音を出せればいいのですが,ここは単に数値のみです。
by Enrique (2011-09-26 17:02) 

koten

早速使わせていただきました。
なるほど、純正長3度(5/4)は
386セントではなくて、
386.3137138648348セント
なんですね。

で、シントニックコンマ(81/80)は
22セントではなくて、
21.50628959671478セントですか、、こっちは0.5違うので無視できない気がしてきました(汗)

およよ、ピタゴラスコンマは24セントじゃないの!?(大汗)
23.460010384649013セントだって、、、、うううむ。

そういえばREIKOさんがこのまえブログでミーントーンの♯音と異名異音の♭音(例えばG♯とA♭)との音程差が41セントって記述していたけど、この計算機でも計算できるかしら、、、私、上記値についてずっと「42」セントって覚えていたからなぁ(自ブログにもそう書いている可能性大(汗))

by koten (2011-09-26 18:26) 

Enrique

kotenさん,nice&コメントありがとうございます。
早速どうもです。
コマカイ数値言ってもしょうがないのですが,誤差がたまって来て1セントくらいズレが出ることがありますし,ジルバーマンとかはスキスマ8分割でしたっけ!とすると,少数点以下も必要ですよね。円周率をπとしてπ/4とかπ/6とかやるように,s.c./4とかp.c./6の表現が最も良いのでしょうが,実用的な設定はきりの良い数字が便利ですから,確認さえしておけばいいと思いました。

今回は比率のセント換算のみです。ミーントーンの場合,任意の音程の計算には四乗根の計算が必要ですので,新たなフォームが必要ですが,
G♯とA♭だけでしたら,
G♯=5/4×5/4=25/16,
A♭=4/5,
ですから,
A♭/G♯=4/5/25/16=64/125,
オクターブ上げて,128 / 125 を上のフォームに入力しますと,
41.05885840549559centと出ます。

by Enrique (2011-09-26 19:35) 

REIKO

うわ~~!?
いきなり入力フォームが出てきてビックリしました。
ブログでもこんなことができるの!?と思いましたが、ブログも普通のWebサイト同様、HTMLにJavaScript埋め込めば表示される&動くわけですね?
ソース拝見したら10行くらいのプログラムでした、なるほど。(^ ^;)
ブログパーツなんかは大抵JavaScriptなので、本文にも使えて当然かもしれませんが・・・急に勉強して試してみたくなりました。
(ブログの仕様によっては、ダメなとこもあるかな?)

計算機、色々遊んでみました~♪
それで、例えば2:3が2/3なのか3/2なのか良く分からない私なんですが(笑)、先に2を入れて次に3を入れると、マイナス値が出てしまうので、あれれ・・・正の数同士の比から、なぜ負の数が出てくるのか不思議でした。
(対数?とかの意味が分かってないからこうなるんでしょうか?)
そもそも純正五度って、2:3と3:2のどっちが正しいのか(orどちらでもいいのか?)もよく分かってない???
ううう、こんな私でいいのだろうか・・・(汗;)

以下横レス失礼、kotenさんへ
ピタゴラスコンマやシントニックコンマ、ミーントーンの五度などをセント値で書く時は、「約」とか「セント値は概数」などとやっておけば良いですよ。
(私はいつもそう書いています)
本来は「比」で表すのが最も正確で良いらしいですが、それでは値の大きさが直感的に分かりにくいし(私のようなバカもいる・・・笑)、小数にすると何ケタも細かい数字が続くので、これまた難しく感じてしまいます。
なので、ピタゴラスコンマ⇒24セント、シントニックコンマ⇒22セントなどとして音律の基本を勉強するのが現実的で、一般の人にも分かりやすいと思います。
(別に悪いことではない)
実際の調律などで正確な値が必要な場合は、その都度計算すればよいということで。
by REIKO (2011-09-27 16:41) 

Enrique

REIKOさん,驚かせてすみません(笑)。
たしかに,ブログは「囲われの身」ですから,おとなしく文と画像,用意されたパーツを使って書いていれば,ほとんど出来ちゃうわけですが。JavaScriptは殆ど標準のようですから,本文と同様に書けるようです。ダメのところもあるのでしょうか?試したらOKだったのでイタズラしてみました。
〉ソース拝見
最も恐れていたことが(笑)。これは初歩の初歩ですよね。本格的なものを書こうと思うと少しメンドウになります。私はExcelでたいがいの事が出来ることが分かって,プログラムをやめてしまいましたが,ページ上でちょこっと出来れば便利なこともありますね。

セント値は12平均律の子分(1200平均律!)ですから,純正な音律がすべて中途半端な数字で表わされてしまうという問題点がありますネ(Enriqueの提唱する665平均律を使えばほぼ解消するのですが,誰も使わないでしょうね(笑))。少数以下が沢山出てくると数字アレルギーの人はダメでしょうから,四捨五入して,せいぜい小数点1ケタですね。今度やる時は四捨五入関数を使います。

対数をとると,分母と分子が等しい(=1)ところが0ですから,3/2と2/3などの逆数関係は対数をとった数直線上では正負の関係ですね。
3/2は1より完全5度高い≒+702セント
2/3は1より完全5度低い≒-702セント;そのオクターブ上4/3は完全4度高い≒498セント
等でしょうか。釈迦に説法ですね。。。
by Enrique (2011-09-27 18:41) 

アヨアン・イゴカー

面白いですね。このページ早速、登録させて頂きます。
音階や和音については、こういった数字も少しは知っておく必要がありますね。
by アヨアン・イゴカー (2011-10-02 23:45) 

Enrique

アヨアン・イゴカーさん,nice&コメントありがとうございます。
この様なものでも少しツールとなれば幸いです。
細かな数字にこだわると,却って本質を見逃すおそれがあるので,必ずしも本意では有りませんが,(元)技術者のサガで,ついついやってしまいます。
通常の音律の議論でもピタゴラスコンマ24セント,22セントで普通は十分で,セント値は平均律の尺度であり概数であるという事さえ認識しておけば良いと思いました。
by Enrique (2011-10-03 10:04) 

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。