N88-BASICで音階

2022/4/5(火)
N88-BASICで音階
 
PLAY演奏用のMML(Music macro language)では
ト音記号のラをo4aと表記します
オクターブ:o1~o8
音階:cdefgab(ド~シ)と
シャープ:+または#
フラット:-です
 
o4a = 440Hz (442Hzなど変更可能)として
o1c~o8bの振動数(Hz)を表示します
 
1オクターブに12音階あり
平均律では(他にも色々あるようです)
振動数は2の1/12乗に比例します
c~bをx=0~11とし
o4cの振動数をo4cとすると
振動数fは
f = o4c * 2 ^ (x/12) … (*は掛ける、^は累乗です)
で計算できます
 
o4aを基準とするとc~bをy=-9~2とし
f = o4a * 2 ^ (y/12)で計算できます
 
o2a = o4a * 2 ^ -2
o3a = o4a * 2 ^ -1
o5a = o4a * 2 ^  1
o6a = o4a * 2 ^  2
になります
(1オクターブ上がる毎に2倍の振動数です)
 
 
純正律と平均律の振動数について
 
純正律は各音階の振動数が整数比になっているようですが
詳しくは分からないので、ネットで見つけた
 
https://kozu-osaka.jp/cms/wp-content/uploads/2020/11/5b6cd04faad94f31f51b4652f0a12c76.pdf
 
に書いてある整数比を使用しました
振動数が整数比になっていると
楽器の音色の倍音成分(基音の2,3,4,…倍の
振動数の音)が干渉しにくく
うなりを生じにくいため
綺麗な音に聞こえる様です
和音が一定の音量で鳴ります
 
平均律はo4aを基準とすると
c~bをy=-9~2とし
f = o4a * 2 ^ (y/12)
で計算できますが
角音階の振動数が整数比になっておらず
楽器の音色の倍音成分が干渉して
うなり(音の大小が繰り返えされる)
が生じるようです
和音がわんわん…と「うなり」ますが
 
移調しやすいなど様々な利点があるようです
 
 
平均律と純正律の差をセント単位(100セント=半音)で
表示します
 
x:半音
n:セント
とすると
 
x:1オクターブを12分割(等比分割)
a:基準となる振動数(平均律)
f:比較する振動数
f = a * 2 ^ (x/12)
log f = log {a * 2 ^ (x/12)}
log f = log a + (x/12)log 2
log f - log a = (x/12)log 2
x = 12log(f/a)/log(2)
 
n:1オクターブを1200分割(等比分割)
n(セント) = x/100より
n = 1200log(f/a)/log(2)
 
これで合っているのか不安ですが
結果を表示しました
 
 
NL-BASICとblg~.zip(note001.bas)は
以下のリンクからダウンロードできます

https://ulprojectmail.blogspot.com
Readme.txtを読んで遊んで下さい












 
 

このブログの人気の投稿

NEWS

N88-BASICでゲーム (1回目)