セント (音楽)
出典: フリー百科事典『ウィキペディア(Wikipedia)』
2014年4月5日 (土) 18:34時点におけるPuckottini (トーク)による版 (→セント値から周波数比へ: #to_rでは厳密すぎて分数になりません。テスト実行はされましたか?サンプルとしてもひどすぎます。そしてEPS値の調整は読者に任せるのが妥当です。)
セントは、1オクターブの1200分の1の音程である。音律を理論的に表示し、わかりやすくするために使われる対数値の一である。イギリスの音響学者・比較音楽学者、エリス Alexander John Ellis(1814年 - 1890年)が提唱した。
すなわち、nセントとは2音間の周波数比が 2n/1200 : 1 であることをいう[1]。つまり、2音の周波数が f0, f1 のときには、f0 から見て f1 は 1200 log2 (f1/f0) セントだけずれていることになる。
これにより、十二平均律の全音は200セント。半音は100セントとなる。ピタゴラス音律の長2度、大全音の音程比9/8は約204セント。音程比からセント値を求めるには、音程比の常用対数を2の常用対数で割って1200を掛ければよい(1200*log音程比/log2)。
同様の用途に使われるものに、ミリオクターブがある。これは1オクターブを1000ミリオクターブとするものである。
単位換算
プログラム
2 音の周波数比(振動数比)とセント値とを換算する Ruby[脚注 1] プログラムを示す。
周波数比からセント値へ
周波数比 5:4 である音程[脚注 2]のセント値を求めるには次のように実行する。
ruby ratio_to_cent.rb 5 4
ratio_to_cent.rb |
#!/usr/bin/ruby
if ARGV.size != 2 then
STDERR.puts "使い方: #{$PROGRAM_NAME} f1 f2"
exit 1
end
def ratio_to_cent(ratio)
return Math.log2(ratio.to_f) * 1200.0
end
ratio = Rational(ARGV[0], ARGV[1])
printf("セント値: %4.3f\n", ratio_to_cent(ratio)) |
セント値から周波数比へ
386 セント離れた 2 音[脚注 2]の周波数比を求めるには、次のように実行する。
ruby cent_to_ratio.rb 386
cent_to_ratio.rb |
#!/usr/bin/ruby
if ARGV.size != 1 then
STDERR.puts "使い方: #{$PROGRAM_NAME} cent"
exit 1
end
EPS = 0.008
def cent_to_ratio(cent)
ratio = 2**(cent.to_f / 1200.0)
return ratio.rationalize(Rational(EPS))
end
cent = ARGV[0].to_f
ratio = cent_to_ratio(cent)
printf("振動数比: %d:%d\n", ratio.numerator, ratio.denominator) |
脚注
出典
テンプレート:Reflist
引用エラー: 「脚注」という名前のグループの <ref>
タグがありますが、対応する <references group="脚注"/>
タグが見つからない、または閉じる </ref>
タグがありません